diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1993-03-28 21:23:09 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1993-03-28 21:23:09 +0000 |
commit | b37fffc631cd9e9699410118f576a49ff0bc26d4 (patch) | |
tree | f9996095f9a6d390fe9822357537c5bcf7199f9c /gcc/genattrtab.c | |
parent | 223e6919ffe68a06e494b8ac55401cf1d2a313f9 (diff) | |
download | gcc-b37fffc631cd9e9699410118f576a49ff0bc26d4.tar.gz |
* genattrtab.c (write_eligible_delay): Add new variable
"flags" to the generated functions. All callers changed.
(check_attr_test): Handle ATTR_FLAG.
(clear_struct_flag): Likewise.
(count_sub_rtxs): Likewise.
(write_test_expr): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@3903 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/genattrtab.c')
-rw-r--r-- | gcc/genattrtab.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c index bd3ee08a8d6..13228bbd1a9 100644 --- a/gcc/genattrtab.c +++ b/gcc/genattrtab.c @@ -994,6 +994,9 @@ check_attr_test (exp, is_const) } break; + case ATTR_FLAG: + break; + case CONST_INT: /* Either TRUE or FALSE. */ if (XWINT (exp, 0)) @@ -3855,6 +3858,7 @@ clear_struct_flag (x) case PC: case CC0: case EQ_ATTR: + case ATTR_FLAG: return; } @@ -3905,6 +3909,7 @@ count_sub_rtxs (x, max) case PC: case CC0: case EQ_ATTR: + case ATTR_FLAG: return 1; } @@ -4410,6 +4415,13 @@ write_test_expr (exp, in_comparison) } break; + /* Comparison test of flags for define_delays. */ + case ATTR_FLAG: + if (in_comparison) + fatal ("ATTR_FLAG not valid inside comparison"); + printf ("(flags & ATTR_FLAG_%s) != 0", XSTR (exp, 0)); + break; + /* See if an operand matches a predicate. */ case MATCH_OPERAND: /* If only a mode is given, just ensure the mode matches the operand. @@ -4551,6 +4563,9 @@ walk_attr_value (exp) case PC: address_used = 1; return; + + case ATTR_FLAG: + return; } for (i = 0, fmt = GET_RTX_FORMAT (code); i < GET_RTX_LENGTH (code); i++) @@ -4919,10 +4934,12 @@ write_eligible_delay (kind) /* Write function prelude. */ printf ("int\n"); - printf ("eligible_for_%s (delay_insn, slot, candidate_insn)\n", kind); + printf ("eligible_for_%s (delay_insn, slot, candidate_insn, flags)\n", + kind); printf (" rtx delay_insn;\n"); printf (" int slot;\n"); printf (" rtx candidate_insn;\n"); + printf (" int flags;\n"); printf ("{\n"); printf (" rtx insn;\n"); printf ("\n"); |