summaryrefslogtreecommitdiff
path: root/gcc/genattrtab.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1993-03-28 21:23:09 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1993-03-28 21:23:09 +0000
commitb37fffc631cd9e9699410118f576a49ff0bc26d4 (patch)
treef9996095f9a6d390fe9822357537c5bcf7199f9c /gcc/genattrtab.c
parent223e6919ffe68a06e494b8ac55401cf1d2a313f9 (diff)
downloadgcc-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.c19
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");