OSDN Git Service

* genattrtab.c (write_eligible_delay): Add new variable
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 28 Mar 1993 21:23:09 +0000 (21:23 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 28 Mar 1993 21:23:09 +0000 (21:23 +0000)
"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

gcc/genattrtab.c

index bd3ee08..13228bb 100644 (file)
@@ -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");