OSDN Git Service

(tablejump_internal4+1): Fix typo in condition.
[pf3gnuchains/gcc-fork.git] / gcc / genattr.c
index cf9bd3c..c351fc5 100644 (file)
@@ -1,6 +1,6 @@
 /* Generate attribute information (insn-attr.h) from machine description.
-   Copyright (C) 1991 Free Software Foundation, Inc.
-   Contributed by Richard Kenner (kenner@nyu.edu)
+   Copyright (C) 1991, 1994, 1996 Free Software Foundation, Inc.
+   Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
 
 This file is part of GNU CC.
 
@@ -16,11 +16,12 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU CC; see the file COPYING.  If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
 
 
 #include <stdio.h>
-#include "config.h"
+#include "hconfig.h"
 #include "rtl.h"
 #include "obstack.h"
 
@@ -30,13 +31,12 @@ struct obstack *rtl_obstack = &obstack;
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free free
 
-extern void free ();
-extern int atoi ();
-extern rtx read_rtx ();
+extern void free PROTO((void *));
+extern rtx read_rtx PROTO((FILE *));
 
-char *xmalloc ();
+char *xmalloc PROTO((unsigned));
 static void fatal ();
-void fancy_abort ();
+void fancy_abort PROTO((void));
 
 /* A range of values.  */
 
@@ -130,10 +130,10 @@ gen_attr (attr)
   if (! strcmp (XSTR (attr, 0), "length"))
     {
       printf ("extern void init_lengths ();\n");
-      printf ("extern void shorten_branches ();\n");
-      printf ("extern int insn_default_length ();\n");
-      printf ("extern int insn_variable_length_p ();\n");
-      printf ("extern int insn_current_length ();\n\n");
+      printf ("extern void shorten_branches PROTO((rtx));\n");
+      printf ("extern int insn_default_length PROTO((rtx));\n");
+      printf ("extern int insn_variable_length_p PROTO((rtx));\n");
+      printf ("extern int insn_current_length PROTO((rtx));\n\n");
       printf ("extern int *insn_addresses;\n");
       printf ("extern int insn_current_address;\n\n");
     }
@@ -152,8 +152,8 @@ write_units (num_units, multiplicity, simultaneity,
   int i, q_size;
 
   printf ("#define INSN_SCHEDULING\n\n");
-  printf ("extern int result_ready_cost ();\n");
-  printf ("extern int function_units_used ();\n\n");
+  printf ("extern int result_ready_cost PROTO((rtx));\n");
+  printf ("extern int function_units_used PROTO((rtx));\n\n");
   printf ("extern struct function_unit_desc\n");
   printf ("{\n");
   printf ("  char *name;\n");
@@ -296,8 +296,9 @@ from the machine description file `md'.  */\n\n");
          if (! have_delay)
            {
              printf ("#define DELAY_SLOTS\n");
-             printf ("extern int num_delay_slots ();\n");
-             printf ("extern int eligible_for_delay ();\n\n");
+             printf ("extern int num_delay_slots PROTO((rtx));\n");
+             printf ("extern int eligible_for_delay PROTO((rtx, int, rtx, int));\n\n");
+             printf ("extern int const_num_delay_slots PROTO((rtx));\n\n");
              have_delay = 1;
            }
 
@@ -382,7 +383,6 @@ from the machine description file `md'.  */\n\n");
       for (unit = units; unit; unit = unit->next)
        {
          struct range blockage;
-         int max_issue_time = MAX (unit->issue_delay.max, 1);
 
          blockage = unit->issue_delay;
          blockage.max = MAX (unit->ready_cost.max
@@ -406,6 +406,17 @@ from the machine description file `md'.  */\n\n");
                   &all_ready_cost, &all_issue_delay, &all_blockage);
     }
 
+  /* Output flag masks for use by reorg.  
+
+     Flags are used to hold branch direction and prediction information
+     for use by eligible_for_...  */
+  printf("\n#define ATTR_FLAG_forward\t0x1\n");
+  printf("#define ATTR_FLAG_backward\t0x2\n");
+  printf("#define ATTR_FLAG_likely\t0x4\n");
+  printf("#define ATTR_FLAG_very_likely\t0x8\n");
+  printf("#define ATTR_FLAG_unlikely\t0x10\n");
+  printf("#define ATTR_FLAG_very_unlikely\t0x20\n");
+
   fflush (stdout);
   exit (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
   /* NOTREACHED */