From c0ed0531e5b067d780d4a6444027c5b4a399c027 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Sat, 21 Jun 2008 21:17:40 +0000 Subject: [PATCH] tree.h (enum tree_code): Include all-tree.def, not tree.def. * tree.h (enum tree_code): Include all-tree.def, not tree.def. Define END_OF_BASE_TREE_CODES around inclusion. * tree.c (tree_code_type): New global array. (tree_code_length, tree_code_name): Likewise. * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and $(lang_tree_files). (all-tree.def, s-alltree): New targets. (gencheck.h, s-gencheck): Remove. (tree.o): Depend upon all-tree.def. (build/gencheck.o): Remove gencheck.h dependency. (mostlyclean): Don't remove gencheck.h. * c-common.h (enum c_tree_code): Remove. * c-lang.c (tree_code_type): Remove. (tree_code_length, tree_code_name): Remove. * gencheck.c (tree_codes): Include all-tree.def, rather than tree.def, c-common.def, and gencheck.h. Undefined DEFTREECODE after it is used. * tree-browser.c (tb_tree_codes): Include all-tree.def, rather than tree.def. * cp/cp-tree.h (enum cplus_tree_code): Remove. (operator_name_info): Size to MAX_TREE_CODES. (assignment_operator_name_info): Likewise. * cp/cp-lang.c (tree_code_type): Remove. (tree_code_length, tree_code_name): Remove. * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES. (assignment_operator_name_info): Likewise. * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to MAX_TREE_CODES. * cp/mangle.c (write_expression): Likewise. * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def. * fortran/f95-lang.c (tree_code_type): Remove. (tree_code_length, tree_code_name): Remove. * java/java-tree.h (enum java_tree_code): Remove. * java/lang.c (tree_code_type): Remove. (tree_code_length, tree_code_name): Remove. * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def. * objc/objc-act.h (enum objc_tree_code): Remove. * objc/objc-lang.c (tree_code_type): Remove. (tree_code_length, tree_code_name): Remove. * objcp/objcp-lang.c (tree_code_type): Remove. (tree_code_length, tree_code_name): Remove. * ada/ada-tree.h (enum gnat_tree_code): Remove. * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def. * ada/misc.c (tree_code_type): Remove. (tree_code_length, tree_code_name): Remove. From-SVN: r137006 --- gcc/ChangeLog | 48 ++++++++++++++++++++++++++++++++++++++++++ gcc/Makefile.in | 30 +++++++++++++++----------- gcc/ada/Make-lang.in | 2 +- gcc/ada/ada-tree.h | 9 -------- gcc/ada/misc.c | 39 ---------------------------------- gcc/c-common.h | 10 --------- gcc/c-lang.c | 35 ------------------------------ gcc/cp/Make-lang.in | 2 +- gcc/cp/cp-lang.c | 41 ------------------------------------ gcc/cp/cp-tree.h | 13 ++---------- gcc/cp/decl.c | 2 +- gcc/cp/lex.c | 4 ++-- gcc/cp/mangle.c | 2 +- gcc/fortran/f95-lang.c | 34 ------------------------------ gcc/gencheck.c | 8 ++++--- gcc/java/Make-lang.in | 2 +- gcc/java/java-tree.h | 9 -------- gcc/java/lang.c | 37 -------------------------------- gcc/objc/objc-act.h | 18 ---------------- gcc/objc/objc-lang.c | 42 ------------------------------------ gcc/objcp/objcp-lang.c | 47 ----------------------------------------- gcc/tree-browser.c | 5 ++++- gcc/tree.c | 38 +++++++++++++++++++++++++++++++++ gcc/tree.h | 9 ++++---- 24 files changed, 126 insertions(+), 360 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 19ce2279400..f92bae9d901 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,51 @@ +2008-06-21 Ian Lance Taylor + + * tree.h (enum tree_code): Include all-tree.def, not tree.def. + Define END_OF_BASE_TREE_CODES around inclusion. + * tree.c (tree_code_type): New global array. + (tree_code_length, tree_code_name): Likewise. + * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and + $(lang_tree_files). + (all-tree.def, s-alltree): New targets. + (gencheck.h, s-gencheck): Remove. + (tree.o): Depend upon all-tree.def. + (build/gencheck.o): Remove gencheck.h dependency. + (mostlyclean): Don't remove gencheck.h. + * c-common.h (enum c_tree_code): Remove. + * c-lang.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + * gencheck.c (tree_codes): Include all-tree.def, rather than + tree.def, c-common.def, and gencheck.h. Undefined DEFTREECODE + after it is used. + * tree-browser.c (tb_tree_codes): Include all-tree.def, rather + than tree.def. + * cp/cp-tree.h (enum cplus_tree_code): Remove. + (operator_name_info): Size to MAX_TREE_CODES. + (assignment_operator_name_info): Likewise. + * cp/cp-lang.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES. + (assignment_operator_name_info): Likewise. + * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to + MAX_TREE_CODES. + * cp/mangle.c (write_expression): Likewise. + * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def. + * fortran/f95-lang.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + * java/java-tree.h (enum java_tree_code): Remove. + * java/lang.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def. + * objc/objc-act.h (enum objc_tree_code): Remove. + * objc/objc-lang.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + * objcp/objcp-lang.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + * ada/ada-tree.h (enum gnat_tree_code): Remove. + * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def. + * ada/misc.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + 2008-06-21 Bernhard Fischer * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 5b4e458ecae..fc960c32f52 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -772,7 +772,8 @@ RTL_BASE_H = rtl.h rtl.def $(MACHMODE_H) reg-notes.def insn-notes.def \ RTL_H = $(RTL_BASE_H) genrtl.h PARAMS_H = params.h params.def BUILTINS_DEF = builtins.def sync-builtins.def omp-builtins.def -TREE_H = tree.h tree.def $(MACHMODE_H) tree-check.h $(BUILTINS_DEF) \ +TREE_H = tree.h all-tree.def tree.def c-common.def $(lang_tree_files) \ + $(MACHMODE_H) tree-check.h $(BUILTINS_DEF) \ input.h statistics.h vec.h treestruct.def $(HASHTAB_H) \ double-int.h alias.h BASIC_BLOCK_H = basic-block.h bitmap.h sbitmap.h varray.h $(PARTITION_H) \ @@ -1376,6 +1377,19 @@ ifneq ($(xmake_file),) include $(xmake_file) endif +# all-tree.def includes all the tree.def files. +all-tree.def: s-alltree; @true +s-alltree: Makefile + rm -f tmp-all-tree.def + echo '#include "tree.def"' > tmp-all-tree.def + echo 'END_OF_BASE_TREE_CODES' >> tmp-all-tree.def + echo '#include "c-common.def"' >> tmp-all-tree.def + ltf="$(lang_tree_files)"; for f in $$ltf; do \ + echo "#include \"$$f\""; \ + done | sed 's|$(srcdir)/||' >> tmp-all-tree.def + $(SHELL) $(srcdir)/../move-if-change tmp-all-tree.def all-tree.def + $(STAMP) s-alltree + # # ----------------------------- @@ -1895,14 +1909,6 @@ gccspec.o: gccspec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) cppspec.o: cppspec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) -gencheck.h : s-gencheck ; @true -s-gencheck : Makefile - ltf="$(lang_tree_files)"; for f in $$ltf; do \ - echo "#include \"$$f\""; \ - done | sed 's|$(srcdir)/||' > tmp-gencheck.h - $(SHELL) $(srcdir)/../move-if-change tmp-gencheck.h gencheck.h - $(STAMP) s-gencheck - specs.h : s-specs ; @true s-specs : Makefile lsf="$(lang_specs_files)"; for f in $$lsf; do \ @@ -1984,7 +1990,7 @@ langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ langhooks.h $(LANGHOOKS_DEF_H) $(FLAGS_H) $(GGC_H) $(DIAGNOSTIC_H) intl.h \ $(TREE_GIMPLE_H) tree.o : tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ - $(FLAGS_H) $(FUNCTION_H) $(PARAMS_H) \ + all-tree.def $(FLAGS_H) $(FUNCTION_H) $(PARAMS_H) \ toplev.h $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H) langhooks.h \ $(REAL_H) gt-tree.h tree-iterator.h $(BASIC_BLOCK_H) $(TREE_FLOW_H) \ $(OBSTACK_H) pointer-set.h fixed-value.h @@ -3239,7 +3245,7 @@ build/genattrtab.o : genattrtab.c $(RTL_BASE_H) $(OBSTACK_H) \ build/genautomata.o : genautomata.c $(RTL_BASE_H) $(OBSTACK_H) \ $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) errors.h vec.h \ $(HASHTAB_H) gensupport.h -build/gencheck.o : gencheck.c gencheck.h tree.def $(BCONFIG_H) $(GTM_H) \ +build/gencheck.o : gencheck.c tree.def $(BCONFIG_H) $(GTM_H) \ $(SYSTEM_H) coretypes.h $(lang_tree_files) build/genchecksum.o : genchecksum.c $(BCONFIG_H) $(SYSTEM_H) $(MD5_H) build/gencodes.o : gencodes.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ @@ -3863,7 +3869,7 @@ mostlyclean: lang.mostlyclean -rm -f mddeps.mk # Delete other built files. -rm -f xsys-protos.hT - -rm -f specs.h gencheck.h options.c options.h + -rm -f specs.h options.c options.h # Delete the stamp and temporary files. -rm -f s-* tmp-* stamp-* stmp-* -rm -f */stamp-* */tmp-* diff --git a/gcc/ada/Make-lang.in b/gcc/ada/Make-lang.in index 4b9c91ba78d..4136ebe5dca 100644 --- a/gcc/ada/Make-lang.in +++ b/gcc/ada/Make-lang.in @@ -980,7 +980,7 @@ ada/sdefault.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \ ada/s-wchcon.ads ada/system.ads ada/table.adb ada/table.ads ada/tree_io.ads \ ada/types.ads ada/unchdeal.ads ada/unchconv.ads -ADA_TREE_H = ada/ada-tree.h ada/ada-tree.def +ADA_TREE_H = ada/ada-tree.h # force debugging information on s-tasdeb.o so that it is always # possible to set conditional breakpoints on tasks. diff --git a/gcc/ada/ada-tree.h b/gcc/ada/ada-tree.h index 3d585b5b788..008a5a496e5 100644 --- a/gcc/ada/ada-tree.h +++ b/gcc/ada/ada-tree.h @@ -23,15 +23,6 @@ * * ****************************************************************************/ -/* Ada language-specific GC tree codes. */ -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM, -enum gnat_tree_code { - __DUMMY = LAST_AND_UNUSED_TREE_CODE, -#include "ada-tree.def" - LAST_GNAT_TREE_CODE -}; -#undef DEFTREECODE - /* Ada uses the lang_decl and lang_type fields to hold a tree. */ union lang_tree_node GTY((desc ("0"), diff --git a/gcc/ada/misc.c b/gcc/ada/misc.c index 9ee90dd0c9d..f8137242175 100644 --- a/gcc/ada/misc.c +++ b/gcc/ada/misc.c @@ -160,45 +160,6 @@ static tree gnat_type_max_size (const_tree); const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; -/* Tables describing GCC tree codes used only by GNAT. - - Table indexed by tree code giving a string containing a character - classifying the tree code. Possibilities are - t, d, s, c, r, <, 1 and 2. See cp-tree.def for details. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, - -const enum tree_code_class tree_code_type[] = { -#include "tree.def" - tcc_exceptional, -#include "ada-tree.def" -}; -#undef DEFTREECODE - -/* Table indexed by tree code giving number of expression - operands beyond the fixed part of the node structure. - Not used for types or decls. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, - -const unsigned char tree_code_length[] = { -#include "tree.def" - 0, -#include "ada-tree.def" -}; -#undef DEFTREECODE - -/* Names of tree components. - Used for printing out the tree and error messages. */ -#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME, - -const char *const tree_code_name[] = { -#include "tree.def" - "@@dummy", -#include "ada-tree.def" -}; -#undef DEFTREECODE - /* How much we want of our DWARF extensions. Some of our dwarf+ extensions are incompatible with regular GDB versions, so we must make sure to only produce them on explicit request. This is eventually reflected into the diff --git a/gcc/c-common.h b/gcc/c-common.h index 82c018b559f..000936969a3 100644 --- a/gcc/c-common.h +++ b/gcc/c-common.h @@ -763,16 +763,6 @@ extern void finish_file (void); #define COMPOUND_LITERAL_EXPR_DECL(NODE) \ DECL_EXPR_DECL (COMPOUND_LITERAL_EXPR_DECL_STMT (NODE)) -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM, - -enum c_tree_code { - C_DUMMY_TREE_CODE = LAST_AND_UNUSED_TREE_CODE, -#include "c-common.def" - LAST_C_TREE_CODE -}; - -#undef DEFTREECODE - extern int anon_aggr_type_p (const_tree); /* For a VAR_DECL that is an anonymous union, these are the various diff --git a/gcc/c-lang.c b/gcc/c-lang.c index 101860ecf99..50781e8ce30 100644 --- a/gcc/c-lang.c +++ b/gcc/c-lang.c @@ -47,41 +47,6 @@ enum c_language_kind c_language = clk_c; /* Each front end provides its own lang hook initializer. */ const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; -/* Tree code classes. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, - -const enum tree_code_class tree_code_type[] = { -#include "tree.def" - tcc_exceptional, -#include "c-common.def" -}; -#undef DEFTREECODE - -/* Table indexed by tree code giving number of expression - operands beyond the fixed part of the node structure. - Not used for types or decls. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, - -const unsigned char tree_code_length[] = { -#include "tree.def" - 0, -#include "c-common.def" -}; -#undef DEFTREECODE - -/* Names of tree components. - Used for printing out the tree and error messages. */ -#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME, - -const char *const tree_code_name[] = { -#include "tree.def" - "@@dummy", -#include "c-common.def" -}; -#undef DEFTREECODE - /* Final processing of file-scope data. The Objective-C version of this function still does something. */ void diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index c1336df2e8e..3831bb9f91f 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -222,7 +222,7 @@ c++.stagefeedback: stagefeedback-start # # .o: .h dependencies. CXX_TREE_H = $(TREE_H) cp/name-lookup.h cp/cp-tree.h $(C_COMMON_H) \ - cp/cp-tree.def c-common.def $(FUNCTION_H) $(VARRAY_H) \ + c-common.def $(FUNCTION_H) $(VARRAY_H) \ $(SYSTEM_H) coretypes.h $(CONFIG_H) $(TARGET_H) $(GGC_H) \ $(srcdir)/../include/hashtab.h $(srcdir)/../include/splay-tree.h diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c index 70709298e9a..b30ad81cd04 100644 --- a/gcc/cp/cp-lang.c +++ b/gcc/cp/cp-lang.c @@ -61,47 +61,6 @@ static enum classify_record cp_classify_record (tree type); /* Each front end provides its own lang hook initializer. */ const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; -/* Tree code classes. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, - -const enum tree_code_class tree_code_type[] = { -#include "tree.def" - tcc_exceptional, -#include "c-common.def" - tcc_exceptional, -#include "cp-tree.def" -}; -#undef DEFTREECODE - -/* Table indexed by tree code giving number of expression - operands beyond the fixed part of the node structure. - Not used for types or decls. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, - -const unsigned char tree_code_length[] = { -#include "tree.def" - 0, -#include "c-common.def" - 0, -#include "cp-tree.def" -}; -#undef DEFTREECODE - -/* Names of tree components. - Used for printing out the tree and error messages. */ -#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME, - -const char *const tree_code_name[] = { -#include "tree.def" - "@@dummy", -#include "c-common.def" - "@@dummy", -#include "cp-tree.def" -}; -#undef DEFTREECODE - /* Lang hook routines common to C++ and ObjC++ appear in cp/cp-objcp-common.c; there should be very few routines below. */ diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 8ad4fe34b9e..d090d8ff0e2 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -926,15 +926,6 @@ struct language_function GTY(()) ((NODE) == error_mark_node \ || ((NODE) && TREE_TYPE ((NODE)) == error_mark_node)) -/* C++ language-specific tree codes. */ -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM, -enum cplus_tree_code { - CP_DUMMY_TREE_CODE = LAST_C_TREE_CODE, -#include "cp-tree.def" - LAST_CPLUS_TREE_CODE -}; -#undef DEFTREECODE - /* TRUE if a tree code represents a statement. */ extern bool statement_code_p[MAX_TREE_CODES]; @@ -3865,10 +3856,10 @@ typedef struct operator_name_info_t GTY(()) /* A mapping from tree codes to operator name information. */ extern GTY(()) operator_name_info_t operator_name_info - [(int) LAST_CPLUS_TREE_CODE]; + [(int) MAX_TREE_CODES]; /* Similar, but for assignment operators. */ extern GTY(()) operator_name_info_t assignment_operator_name_info - [(int) LAST_CPLUS_TREE_CODE]; + [(int) MAX_TREE_CODES]; /* A type-qualifier, or bitmask therefore, using the TYPE_QUAL constants. */ diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 8b4e2e9d410..32be05cc7c3 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -9773,7 +9773,7 @@ grok_op_properties (tree decl, bool complain) gcc_unreachable (); } while (0); - gcc_assert (operator_code != LAST_CPLUS_TREE_CODE); + gcc_assert (operator_code != MAX_TREE_CODES); SET_OVERLOADED_OPERATOR_CODE (decl, operator_code); if (class_type) diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index 8484a4b3391..c2744c9f8fd 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -89,9 +89,9 @@ cxx_finish (void) } /* A mapping from tree codes to operator name information. */ -operator_name_info_t operator_name_info[(int) LAST_CPLUS_TREE_CODE]; +operator_name_info_t operator_name_info[(int) MAX_TREE_CODES]; /* Similar, but for assignment operators. */ -operator_name_info_t assignment_operator_name_info[(int) LAST_CPLUS_TREE_CODE]; +operator_name_info_t assignment_operator_name_info[(int) MAX_TREE_CODES]; /* Initialize data structures that keep track of operator names. */ diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index b23e781e99d..b27b2db9b3a 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -2108,7 +2108,7 @@ write_expression (tree expr) /* Unfortunately, there is no easy way to go from the name of the operator back to the corresponding tree code. */ - for (i = 0; i < LAST_CPLUS_TREE_CODE; ++i) + for (i = 0; i < MAX_TREE_CODES; ++i) if (operator_name_info[i].identifier == member) { /* The ABI says that we prefer binary operator diff --git a/gcc/fortran/f95-lang.c b/gcc/fortran/f95-lang.c index 42ab57a9606..794cc41a2d0 100644 --- a/gcc/fortran/f95-lang.c +++ b/gcc/fortran/f95-lang.c @@ -154,40 +154,6 @@ static alias_set_type gfc_get_alias_set (tree); const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; -/* A list (chain of TREE_LIST nodes) of all LABEL_DECLs in the function - that have names. Here so we can clear out their names' definitions - at the end of the function. */ - -/* Tree code classes. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, - -const enum tree_code_class tree_code_type[] = { -#include "tree.def" -}; -#undef DEFTREECODE - -/* Table indexed by tree code giving number of expression - operands beyond the fixed part of the node structure. - Not used for types or decls. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, - -const unsigned char tree_code_length[] = { -#include "tree.def" -}; -#undef DEFTREECODE - -/* Names of tree components. - Used for printing out the tree and error messages. */ -#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME, - -const char *const tree_code_name[] = { -#include "tree.def" -}; -#undef DEFTREECODE - - #define NULL_BINDING_LEVEL (struct binding_level *) NULL /* A chain of binding_level structures awaiting reuse. */ diff --git a/gcc/gencheck.c b/gcc/gencheck.c index f8b591e875d..7fc69142b5d 100644 --- a/gcc/gencheck.c +++ b/gcc/gencheck.c @@ -24,14 +24,16 @@ along with GCC; see the file COPYING3. If not see #include "tm.h" #define DEFTREECODE(SYM, NAME, TYPE, LEN) #SYM, +#define END_OF_BASE_TREE_CODES static const char *const tree_codes[] = { -#include "tree.def" -#include "c-common.def" -#include "gencheck.h" +#include "all-tree.def" (char*) 0 }; +#undef DEFTREECODE +#undef END_OF_BASE_TREE_CODES + static void usage (void); static void diff --git a/gcc/java/Make-lang.in b/gcc/java/Make-lang.in index e96ca14d868..d1201cd7034 100644 --- a/gcc/java/Make-lang.in +++ b/gcc/java/Make-lang.in @@ -242,7 +242,7 @@ java.stagefeedback: stageprofile-start # # .o:.h dependencies. -JAVA_TREE_H = $(TREE_H) $(HASHTAB_H) java/java-tree.h java/java-tree.def +JAVA_TREE_H = $(TREE_H) $(HASHTAB_H) java/java-tree.h java/jcf-dump.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(JAVA_TREE_H) \ java/jcf-dump.c java/jcf-reader.c java/jcf.h java/javaop.h java/javaop.def \ diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h index 65a758946a1..a046a0f450a 100644 --- a/gcc/java/java-tree.h +++ b/gcc/java/java-tree.h @@ -30,15 +30,6 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */ #include "hashtab.h" -/* Java language-specific tree codes. */ -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM, -enum java_tree_code { - __DUMMY = LAST_AND_UNUSED_TREE_CODE, -#include "java-tree.def" - LAST_JAVA_TREE_CODE -}; -#undef DEFTREECODE - struct JCF; /* Usage of TREE_LANG_FLAG_?: diff --git a/gcc/java/lang.c b/gcc/java/lang.c index 71f24789123..c259da4f484 100644 --- a/gcc/java/lang.c +++ b/gcc/java/lang.c @@ -69,43 +69,6 @@ static enum classify_record java_classify_record (tree type); # define TARGET_OBJECT_SUFFIX ".o" #endif -/* Table indexed by tree code giving a string containing a character - classifying the tree code. Possibilities are - t, d, s, c, r, <, 1 and 2. See java/java-tree.def for details. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, - -const enum tree_code_class tree_code_type[] = { -#include "tree.def" - tcc_exceptional, -#include "java-tree.def" -}; -#undef DEFTREECODE - -/* Table indexed by tree code giving number of expression - operands beyond the fixed part of the node structure. - Not used for types or decls. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, - -const unsigned char tree_code_length[] = { -#include "tree.def" - 0, -#include "java-tree.def" -}; -#undef DEFTREECODE - -/* Names of tree components. - Used for printing out the tree and error messages. */ -#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME, - -const char *const tree_code_name[] = { -#include "tree.def" - "@@dummy", -#include "java-tree.def" -}; -#undef DEFTREECODE - /* Table of machine-independent attributes. */ const struct attribute_spec java_attribute_table[] = { diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h index 6f1ac8559c6..e4b8a93bf39 100644 --- a/gcc/objc/objc-act.h +++ b/gcc/objc/objc-act.h @@ -122,24 +122,6 @@ enum gimplify_status objc_gimplify_expr (tree *, tree *, tree *); #define OBJC_TYPE_NAME(TYPE) TYPE_NAME(TYPE) #define OBJC_SET_TYPE_NAME(TYPE, NAME) (TYPE_NAME (TYPE) = NAME) -/* Define the Objective-C or Objective-C++ language-specific tree codes. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM, -enum objc_tree_code { -#if defined (GCC_CP_TREE_H) - LAST_BASE_TREE_CODE = LAST_CPLUS_TREE_CODE, -#else -#if defined (GCC_C_TREE_H) - LAST_BASE_TREE_CODE = LAST_C_TREE_CODE, -#else - #error You must include or before -#endif -#endif -#include "objc-tree.def" - LAST_OBJC_TREE_CODE -}; -#undef DEFTREECODE - /* Hash tables to manage the global pool of method prototypes. */ typedef struct hashed_entry *hash; diff --git a/gcc/objc/objc-lang.c b/gcc/objc/objc-lang.c index 53d3259dfe7..11ba6ac462c 100644 --- a/gcc/objc/objc-lang.c +++ b/gcc/objc/objc-lang.c @@ -56,48 +56,6 @@ static void objc_init_ts (void); /* Each front end provides its own lang hook initializer. */ const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; -/* Table indexed by tree code giving a string containing a character - classifying the tree code. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, - -const enum tree_code_class tree_code_type[] = { -#include "tree.def" - tcc_exceptional, -#include "c-common.def" - tcc_exceptional, -#include "objc-tree.def" -}; -#undef DEFTREECODE - -/* Table indexed by tree code giving number of expression - operands beyond the fixed part of the node structure. - Not used for types or decls. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, - -const unsigned char tree_code_length[] = { -#include "tree.def" - 0, -#include "c-common.def" - 0, -#include "objc-tree.def" -}; -#undef DEFTREECODE - -/* Names of tree components. - Used for printing out the tree and error messages. */ -#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME, - -const char * const tree_code_name[] = { -#include "tree.def" - "@@dummy", -#include "c-common.def" - "@@dummy", -#include "objc-tree.def" -}; -#undef DEFTREECODE - /* Lang hook routines common to C and ObjC appear in c-objc-common.c; there should be very few (if any) routines below. */ diff --git a/gcc/objcp/objcp-lang.c b/gcc/objcp/objcp-lang.c index f8716c3b0ed..d595ba22cd7 100644 --- a/gcc/objcp/objcp-lang.c +++ b/gcc/objcp/objcp-lang.c @@ -56,53 +56,6 @@ static void objcxx_init_ts (void); /* Each front end provides its own lang hook initializer. */ const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; -/* Tree code classes. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, - -const enum tree_code_class tree_code_type[] = { -#include "tree.def" - tcc_exceptional, -#include "c-common.def" - tcc_exceptional, -#include "cp-tree.def" - tcc_exceptional, -#include "objc-tree.def" -}; -#undef DEFTREECODE - -/* Table indexed by tree code giving number of expression - operands beyond the fixed part of the node structure. - Not used for types or decls. */ - -#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, - -const unsigned char tree_code_length[] = { -#include "tree.def" - 0, -#include "c-common.def" - 0, -#include "cp-tree.def" - 0, -#include "objc-tree.def" -}; -#undef DEFTREECODE - -/* Names of tree components. - Used for printing out the tree and error messages. */ -#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME, - -const char *const tree_code_name[] = { -#include "tree.def" - "@@dummy", -#include "c-common.def" - "@@dummy", -#include "cp-tree.def" - "@@dummy", -#include "objc-tree.def" -}; -#undef DEFTREECODE - /* Lang hook routines common to C++ and ObjC++ appear in cp/cp-objcp-common.c; there should be very few (if any) routines below. */ diff --git a/gcc/tree-browser.c b/gcc/tree-browser.c index 89c3bf3a307..ae3d270843d 100644 --- a/gcc/tree-browser.c +++ b/gcc/tree-browser.c @@ -71,11 +71,14 @@ struct tb_tree_code { }; #define DEFTREECODE(SYM, STRING, TYPE, NARGS) { SYM, STRING, sizeof (STRING) - 1 }, +#define END_OF_BASE_TREE_CODES \ + { LAST_AND_UNUSED_TREE_CODE, "@dummy", sizeof ("@dummy") - 1 }, static const struct tb_tree_code tb_tree_codes[] = { -#include "tree.def" +#include "all-tree.def" }; #undef DEFTREECODE +#undef END_OF_BASE_TREE_CODES #define TB_TREE_CODE(N) (tb_tree_codes[N].code) #define TB_TREE_CODE_TEXT(N) (tb_tree_codes[N].code_string) diff --git a/gcc/tree.c b/gcc/tree.c index 469555a8739..91b2ec5c0a4 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -52,6 +52,44 @@ along with GCC; see the file COPYING3. If not see #include "pointer-set.h" #include "fixed-value.h" +/* Tree code classes. */ + +#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, +#define END_OF_BASE_TREE_CODES tcc_exceptional, + +const enum tree_code_class tree_code_type[] = { +#include "all-tree.def" +}; + +#undef DEFTREECODE +#undef END_OF_BASE_TREE_CODES + +/* Table indexed by tree code giving number of expression + operands beyond the fixed part of the node structure. + Not used for types or decls. */ + +#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, +#define END_OF_BASE_TREE_CODES 0, + +const unsigned char tree_code_length[] = { +#include "all-tree.def" +}; + +#undef DEFTREECODE +#undef END_OF_BASE_TREE_CODES + +/* Names of tree components. + Used for printing out the tree and error messages. */ +#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME, +#define END_OF_BASE_TREE_CODES "@dummy", + +const char *const tree_code_name[] = { +#include "all-tree.def" +}; + +#undef DEFTREECODE +#undef END_OF_BASE_TREE_CODES + /* Each tree code class has an associated string representation. These must correspond to the tree_code_class entries. */ diff --git a/gcc/tree.h b/gcc/tree.h index c3d2abe6978..9c7fff97cea 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -33,17 +33,16 @@ along with GCC; see the file COPYING3. If not see /* Codes of tree nodes */ #define DEFTREECODE(SYM, STRING, TYPE, NARGS) SYM, +#define END_OF_BASE_TREE_CODES LAST_AND_UNUSED_TREE_CODE, enum tree_code { -#include "tree.def" - - LAST_AND_UNUSED_TREE_CODE /* A convenient way to get a value for - NUM_TREE_CODES. */ +#include "all-tree.def" +MAX_TREE_CODES }; #undef DEFTREECODE +#undef END_OF_BASE_TREE_CODES -#define MAX_TREE_CODES 512 extern unsigned char tree_contains_struct[MAX_TREE_CODES][64]; #define CODE_CONTAINS_STRUCT(CODE, STRUCT) (tree_contains_struct[(CODE)][(STRUCT)]) -- 2.30.2