Remove clobber_high
[platform/upstream/gcc.git] / gcc / genconfig.c
index a0a834a..6f914b1 100644 (file)
@@ -1,6 +1,6 @@
 /* Generate from machine description:
    - some #define configuration flags.
-   Copyright (C) 1987-2015 Free Software Foundation, Inc.
+   Copyright (C) 1987-2019 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -51,11 +51,6 @@ static int clobbers_seen_this_insn;
 static int dup_operands_seen_this_insn;
 
 static void walk_insn_part (rtx, int, int);
-static void gen_insn (rtx);
-static void gen_expand (rtx);
-static void gen_split (rtx);
-static void gen_peephole (rtx);
-static void gen_peephole2 (rtx);
 
 /* RECOG_P will be nonzero if this pattern was seen in a context where it will
    be used to recognize, rather than just generate an insn.
@@ -88,6 +83,7 @@ walk_insn_part (rtx part, int recog_p, int non_pc_set_src)
     case MATCH_OP_DUP:
     case MATCH_PAR_DUP:
       ++dup_operands_seen_this_insn;
+      /* FALLTHRU */
     case MATCH_SCRATCH:
     case MATCH_PARALLEL:
     case MATCH_OPERATOR:
@@ -98,8 +94,8 @@ walk_insn_part (rtx part, int recog_p, int non_pc_set_src)
       break;
 
     case LABEL_REF:
-      if (GET_CODE (LABEL_REF_LABEL (part)) == MATCH_OPERAND
-         || GET_CODE (LABEL_REF_LABEL (part)) == MATCH_DUP)
+      if (GET_CODE (XEXP (part, 0)) == MATCH_OPERAND
+         || GET_CODE (XEXP (part, 0)) == MATCH_DUP)
        break;
       return;
 
@@ -179,11 +175,12 @@ walk_insn_part (rtx part, int recog_p, int non_pc_set_src)
 }
 
 static void
-gen_insn (rtx insn)
+gen_insn (md_rtx_info *info)
 {
   int i;
 
   /* Walk the insn pattern to gather the #define's status.  */
+  rtx insn = info->def;
   clobbers_seen_this_insn = 0;
   dup_operands_seen_this_insn = 0;
   if (XVEC (insn, 1) != 0)
@@ -199,7 +196,7 @@ gen_insn (rtx insn)
 /* Similar but scan a define_expand.  */
 
 static void
-gen_expand (rtx insn)
+gen_expand (md_rtx_info *info)
 {
   int i;
 
@@ -207,6 +204,7 @@ gen_expand (rtx insn)
 
   /* Note that we don't bother recording the number of MATCH_DUPs
      that occur in a gen_expand, because only reload cares about that.  */
+  rtx insn = info->def;
   if (XVEC (insn, 1) != 0)
     for (i = 0; i < XVECLEN (insn, 1); i++)
       {
@@ -225,12 +223,13 @@ gen_expand (rtx insn)
 /* Similar but scan a define_split.  */
 
 static void
-gen_split (rtx split)
+gen_split (md_rtx_info *info)
 {
   int i;
 
   /* Look through the patterns that are matched
      to compute the maximum operand number.  */
+  rtx split = info->def;
   for (i = 0; i < XVECLEN (split, 0); i++)
     walk_insn_part (XVECEXP (split, 0, i), 1, 0);
   /* Look at the number of insns this insn could split into.  */
@@ -239,23 +238,25 @@ gen_split (rtx split)
 }
 
 static void
-gen_peephole (rtx peep)
+gen_peephole (md_rtx_info *info)
 {
   int i;
 
   /* Look through the patterns that are matched
      to compute the maximum operand number.  */
+  rtx peep = info->def;
   for (i = 0; i < XVECLEN (peep, 0); i++)
     walk_insn_part (XVECEXP (peep, 0, i), 1, 0);
 }
 
 static void
-gen_peephole2 (rtx peep)
+gen_peephole2 (md_rtx_info *info)
 {
   int i, n;
 
   /* Look through the patterns that are matched
      to compute the maximum operand number.  */
+  rtx peep = info->def;
   for (i = XVECLEN (peep, 0) - 1; i >= 0; --i)
     walk_insn_part (XVECEXP (peep, 0, i), 1, 0);
 
@@ -269,10 +270,8 @@ gen_peephole2 (rtx peep)
 }
 
 int
-main (int argc, char **argv)
+main (int argc, const char **argv)
 {
-  rtx desc;
-
   progname = "genconfig";
 
   if (!init_rtx_reader_args (argc, argv))
@@ -291,42 +290,35 @@ main (int argc, char **argv)
 
   /* Read the machine description.  */
 
-  while (1)
-    {
-      int line_no, insn_code_number = 0;
+  md_rtx_info info;
+  while (read_md_rtx (&info))
+    switch (GET_CODE (info.def))
+      {
+      case DEFINE_INSN:
+       gen_insn (&info);
+       break;
 
-      desc = read_md_rtx (&line_no, &insn_code_number);
-      if (desc == NULL)
+      case DEFINE_EXPAND:
+       gen_expand (&info);
        break;
 
-      switch (GET_CODE (desc))
-       {
-         case DEFINE_INSN:
-           gen_insn (desc);
-           break;
-
-         case DEFINE_EXPAND:
-           gen_expand (desc);
-           break;
-
-         case DEFINE_SPLIT:
-           gen_split (desc);
-           break;
-
-         case DEFINE_PEEPHOLE2:
-           have_peephole2_flag = 1;
-           gen_peephole2 (desc);
-           break;
-
-         case DEFINE_PEEPHOLE:
-           have_peephole_flag = 1;
-           gen_peephole (desc);
-           break;
-
-         default:
-           break;
-       }
-    }
+      case DEFINE_SPLIT:
+       gen_split (&info);
+       break;
+
+      case DEFINE_PEEPHOLE2:
+       have_peephole2_flag = 1;
+       gen_peephole2 (&info);
+       break;
+
+      case DEFINE_PEEPHOLE:
+       have_peephole_flag = 1;
+       gen_peephole (&info);
+       break;
+
+      default:
+       break;
+      }
 
   printf ("#define MAX_RECOG_OPERANDS %d\n", max_recog_operands + 1);
   printf ("#define MAX_DUP_OPERANDS %d\n", max_dup_operands);
@@ -357,6 +349,8 @@ main (int argc, char **argv)
 
   if (have_cond_exec_flag)
     printf ("#define HAVE_conditional_execution 1\n");
+  else
+    printf ("#define HAVE_conditional_execution 0\n");
 
   if (have_lo_sum_flag)
     printf ("#define HAVE_lo_sum 1\n");
@@ -379,6 +373,11 @@ main (int argc, char **argv)
       printf ("#define HAVE_peephole2 1\n");
       printf ("#define MAX_INSNS_PER_PEEP2 %d\n", max_insns_per_peep2);
     }
+  else
+    {
+      printf ("#define HAVE_peephole2 0\n");
+      printf ("#define MAX_INSNS_PER_PEEP2 0\n");
+    }
 
   puts ("\n#endif /* GCC_INSN_CONFIG_H */");