genattr-common.c: New.
authorJoseph Myers <joseph@codesourcery.com>
Tue, 28 Jun 2011 10:28:09 +0000 (11:28 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Tue, 28 Jun 2011 10:28:09 +0000 (11:28 +0100)
* genattr-common.c: New.  Based on genattr.c.
* Makefile.in (INSN_ATTR_H): Include insn-attr-common.h.
(MOSTLYCLEANFILES): Add insn-attr-common.h.
(opts.o): Update dependencies.
(.PRECIOUS): Add insn-attr-common.h.
(simple_rtl_generated_h): Add insn-attr-common.h.
(build/genattr-common.o): New.
(genprogrtl): Add attr-common.
* genattr.c (main): Include insn-attr-common.h.  Don't generate
definitions of DELAY_SLOTS or INSN_SCHEDULING.
* opts.c: Include insn-attr-common.h instead of rtl.h and
insn-attr.h.

From-SVN: r175579

gcc/ChangeLog
gcc/Makefile.in
gcc/genattr-common.c [new file with mode: 0644]
gcc/genattr.c
gcc/opts.c

index dbe0762455f507089009aa89131f8eda7767c046..2e744e891688b9bcb21e53cddde4b12a951625c6 100644 (file)
@@ -1,3 +1,18 @@
+2011-06-28  Joseph Myers  <joseph@codesourcery.com>
+
+       * genattr-common.c: New.  Based on genattr.c.
+       * Makefile.in (INSN_ATTR_H): Include insn-attr-common.h.
+       (MOSTLYCLEANFILES): Add insn-attr-common.h.
+       (opts.o): Update dependencies.
+       (.PRECIOUS): Add insn-attr-common.h.
+       (simple_rtl_generated_h): Add insn-attr-common.h.
+       (build/genattr-common.o): New.
+       (genprogrtl): Add attr-common.
+       * genattr.c (main): Include insn-attr-common.h.  Don't generate
+       definitions of DELAY_SLOTS or INSN_SCHEDULING.
+       * opts.c: Include insn-attr-common.h instead of rtl.h and
+       insn-attr.h.
+
 2011-06-28  Georg-Johann Lay  <avr@gjlay.de>
 
        * config.gcc (tm_file): Add elfos.h and avr/elf.h for 
index 968588016b74431575041edd2bfeb3287ed63ffb..0a2d9275ad60a80e6ee1d05842f742f85d7f89d2 100644 (file)
@@ -965,7 +965,7 @@ GCC_H = gcc.h version.h $(DIAGNOSTIC_CORE_H)
 GGC_H = ggc.h gtype-desc.h statistics.h
 GGC_INTERNAL_H = ggc-internal.h $(GGC_H)
 TIMEVAR_H = timevar.h timevar.def
-INSN_ATTR_H = insn-attr.h $(INSN_ADDR_H)
+INSN_ATTR_H = insn-attr.h insn-attr-common.h $(INSN_ADDR_H)
 INSN_ADDR_H = $(srcdir)/insn-addr.h vecprim.h
 C_COMMON_H = c-family/c-common.h c-family/c-common.def \
        $(SPLAY_TREE_H) $(CPPLIB_H) $(GGC_H) $(DIAGNOSTIC_CORE_H)
@@ -1524,7 +1524,8 @@ BACKEND = main.o @TREEBROWSER@ libbackend.a libcommon-target.a libcommon.a \
 
 MOSTLYCLEANFILES = insn-flags.h insn-config.h insn-codes.h \
  insn-output.c insn-recog.c insn-emit.c insn-extract.c insn-peep.c \
- insn-attr.h insn-attrtab.c insn-opinit.c insn-preds.c insn-constants.h \
+ insn-attr.h insn-attr-common.h insn-attrtab.c insn-opinit.c \
+ insn-preds.c insn-constants.h \
  tm-preds.h tm-constrs.h checksum-options \
  tree-check.h min-insn-modes.c insn-modes.c insn-modes.h \
  genrtl.h gt-*.h gtype-*.h gtype-desc.c gtyp-input.list \
@@ -2848,8 +2849,8 @@ fold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
 diagnostic.o : diagnostic.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
    version.h $(INPUT_H) intl.h $(DIAGNOSTIC_H) diagnostic.def
 opts.o : opts.c $(OPTS_H) $(OPTIONS_H) $(DIAGNOSTIC_CORE_H) $(CONFIG_H) $(SYSTEM_H) \
-   coretypes.h $(TM_H) $(RTL_H) \
-   $(DIAGNOSTIC_H) $(INSN_ATTR_H) intl.h $(COMMON_TARGET_H) \
+   coretypes.h $(TM_H) \
+   $(DIAGNOSTIC_H) insn-attr-common.h intl.h $(COMMON_TARGET_H) \
    $(FLAGS_H) $(PARAMS_H) opts-diagnostic.h
 opts-global.o : opts-global.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
    $(DIAGNOSTIC_H) $(OPTS_H) $(FLAGS_H) $(GGC_H) $(TREE_H) langhooks.h \
@@ -3589,7 +3590,7 @@ mips-tdump.o : mips-tdump.c $(CONFIG_H) $(SYSTEM_H) \
 
 .PRECIOUS: insn-config.h insn-flags.h insn-codes.h insn-constants.h \
   insn-emit.c insn-recog.c insn-extract.c insn-output.c insn-peep.c \
-  insn-attr.h insn-attrtab.c insn-preds.c
+  insn-attr.h insn-attr-common.h insn-attrtab.c insn-preds.c
 
 # Dependencies for the md file.  The first time through, we just assume
 # the md file itself and the generated dependency file (in order to get
@@ -3646,7 +3647,8 @@ insn-recog.o : insn-recog.c $(CONFIG_H) $(SYSTEM_H) coretypes.h           \
 # The "; @true" construct forces Make to recheck the timestamp on
 # the target file.
 
-simple_rtl_generated_h = insn-attr.h insn-codes.h insn-config.h insn-flags.h
+simple_rtl_generated_h = insn-attr.h insn-attr-common.h insn-codes.h \
+                         insn-config.h insn-flags.h
 
 simple_rtl_generated_c = insn-attrtab.c insn-automata.c insn-emit.c \
                          insn-extract.c insn-opinit.c insn-output.c \
@@ -3962,6 +3964,8 @@ build/gencondmd.o : \
 # ...these are the programs themselves.
 build/genattr.o : genattr.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)     \
   coretypes.h $(GTM_H) errors.h $(READ_MD_H) gensupport.h
+build/genattr-common.o : genattr-common.c $(RTL_BASE_H) $(BCONFIG_H)   \
+  $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(READ_MD_H) gensupport.h
 build/genattrtab.o : genattrtab.c $(RTL_BASE_H) $(OBSTACK_H)           \
   $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(GGC_H)      \
   $(READ_MD_H) gensupport.h vecprim.h
@@ -4021,7 +4025,7 @@ build/genhooks.o : genhooks.c $(TARGET_DEF) $(C_TARGET_DEF)               \
 # even if GCC is being compiled to run on some other machine.
 
 # All these programs use the RTL reader ($(BUILD_RTL)).
-genprogrtl = attr attrtab automata codes conditions config emit \
+genprogrtl = attr attr-common attrtab automata codes conditions config emit \
             extract flags opinit output peep preds recog
 $(genprogrtl:%=build/gen%$(build_exeext)): $(BUILD_RTL)
 
diff --git a/gcc/genattr-common.c b/gcc/genattr-common.c
new file mode 100644 (file)
index 0000000..bc7e1bb
--- /dev/null
@@ -0,0 +1,83 @@
+/* Generate attribute information shared between driver and core
+   compilers (insn-attr-common.h) from machine description.  Split out
+   of genattr.c.
+   Copyright (C) 1991, 1994, 1996, 1998, 1999, 2000, 2003, 2004, 2007, 2008,
+   2010, 2011  Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+
+#include "bconfig.h"
+#include "system.h"
+#include "coretypes.h"
+#include "tm.h"
+#include "rtl.h"
+#include "errors.h"
+#include "read-md.h"
+#include "gensupport.h"
+
+int
+main (int argc, char **argv)
+{
+  rtx desc;
+  bool have_delay = false;
+  bool have_sched = false;
+
+  progname = "genattr-common";
+
+  if (!init_rtx_reader_args (argc, argv))
+    return (FATAL_EXIT_CODE);
+
+  puts ("/* Generated automatically by the program `genattr-common'");
+  puts ("   from the machine description file `md'.  */\n");
+  puts ("#ifndef GCC_INSN_ATTR_COMMON_H");
+  puts ("#define GCC_INSN_ATTR_COMMON_H\n");
+
+  /* Read the machine description.  */
+
+  while (1)
+    {
+      int line_no, insn_code_number;
+
+      desc = read_md_rtx (&line_no, &insn_code_number);
+      if (desc == NULL)
+       break;
+
+      if (GET_CODE (desc) == DEFINE_DELAY)
+        {
+         if (!have_delay)
+           {
+             printf ("#define DELAY_SLOTS\n");
+             have_delay = true;
+           }
+       }
+      else if (GET_CODE (desc) == DEFINE_INSN_RESERVATION)
+       {
+         if (!have_sched)
+           {
+             printf ("#define INSN_SCHEDULING\n");
+             have_sched = true;
+           }
+       }
+    }
+  puts ("\n#endif /* GCC_INSN_ATTR_COMMON_H */");
+
+  if (ferror (stdout) || fflush (stdout) || fclose (stdout))
+    return FATAL_EXIT_CODE;
+
+  return SUCCESS_EXIT_CODE;
+}
index acb3a382588e37ecb348c918920e956f3e17ebf8..5df138ff8b0128bca9c787265f5507c8cf31cca6 100644 (file)
@@ -1,6 +1,6 @@
 /* Generate attribute information (insn-attr.h) from machine description.
    Copyright (C) 1991, 1994, 1996, 1998, 1999, 2000, 2003, 2004, 2007, 2008,
-   2010  Free Software Foundation, Inc.
+   2010, 2011  Free Software Foundation, Inc.
    Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
 
 This file is part of GCC.
@@ -180,6 +180,8 @@ main (int argc, char **argv)
   puts ("#ifndef GCC_INSN_ATTR_H");
   puts ("#define GCC_INSN_ATTR_H\n");
 
+  puts ("#include \"insn-attr-common.h\"\n");
+
   /* For compatibility, define the attribute `alternative', which is just
      a reference to the variable `which_alternative'.  */
 
@@ -204,7 +206,6 @@ main (int argc, char **argv)
         {
          if (! have_delay)
            {
-             printf ("#define DELAY_SLOTS\n");
              printf ("extern int num_delay_slots (rtx);\n");
              printf ("extern int eligible_for_delay (rtx, int, rtx, int);\n\n");
              printf ("extern int const_num_delay_slots (rtx);\n\n");
@@ -242,7 +243,6 @@ main (int argc, char **argv)
        = find_tune_attr (XEXP (VEC_index (rtx, reservations, 0), 2));
       /* Output interface for pipeline hazards recognition based on
         DFA (deterministic finite state automata.  */
-      printf ("\n#define INSN_SCHEDULING\n");
       printf ("\n/* DFA based pipeline interface.  */");
       printf ("\n#ifndef AUTOMATON_ALTS\n");
       printf ("#define AUTOMATON_ALTS 0\n");
index 18bbe4315e918f93671a7b8ab889af929f7cc879..c3e7bc7e3e1b16df72041183a5c07ab479361f42 100644 (file)
@@ -23,17 +23,16 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "intl.h"
 #include "coretypes.h"
-#include "tm.h" /* Needed by rtl.h and used for STACK_CHECK_BUILTIN,
+#include "tm.h" /* For STACK_CHECK_BUILTIN,
                   STACK_CHECK_STATIC_BUILTIN, DEFAULT_GDB_EXTENSIONS,
                   DWARF2_DEBUGGING_INFO and DBX_DEBUGGING_INFO.  */
-#include "rtl.h" /* Needed by insn-attr.h.  */
 #include "opts.h"
 #include "options.h"
 #include "flags.h"
 #include "params.h"
 #include "diagnostic.h"
 #include "opts-diagnostic.h"
-#include "insn-attr.h"         /* For INSN_SCHEDULING and DELAY_SLOTS.  */
+#include "insn-attr-common.h"
 #include "common/common-target.h"
 
 /* Parse the -femit-struct-debug-detailed option value