diff options
author | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-11-06 21:12:14 +0000 |
---|---|---|
committer | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-11-06 21:12:14 +0000 |
commit | b0278d393b70b39b817e56d8d4f03b868ccf2205 (patch) | |
tree | e218294f121610ce23014b4b8954bac5d7230fd8 | |
parent | d2f9c91d76788a0f824afea4ac3270a0d39543d8 (diff) | |
download | gcc-b0278d393b70b39b817e56d8d4f03b868ccf2205.tar.gz |
* alias.c:: Include langhooks.h.
* emit-rtl.c: Similarly.
* toplev.c: Similarly.
* tree-inline.c: Similarly.
* langhooks-def.h: New, the old langhooks.h. Give the default
hooks a common prefix.
* langhooks.h: Contents extracted from toplev.h.
* toplev.h: Move langhook stuff to langhooks.h.
* langhooks.c: Give default hooks a common prefix.
* c-lang.c: Include langhooks-def.h.
* ada/misc.c: Similarly.
* cp/cp-lang.c: Similarly.
* f/com.c: Similarly.
* java/lang.c: Similarly.
* objc/objc-act.c: Similarly.
* Makefile.in: Update.
* ada/Makefile.in: Similarly.
* cp/Make-lang.in: Similarly.
* f/Make-lang.in: Similarly.
* java/Make-lang.in: Similarly.
* objc/Make-lang.in: Similarly.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46813 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 17 | ||||
-rw-r--r-- | gcc/Makefile.in | 14 | ||||
-rw-r--r-- | gcc/ada/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ada/Makefile.in | 2 | ||||
-rw-r--r-- | gcc/ada/misc.c | 3 | ||||
-rw-r--r-- | gcc/alias.c | 1 | ||||
-rw-r--r-- | gcc/c-lang.c | 1 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/Make-lang.in | 2 | ||||
-rw-r--r-- | gcc/cp/cp-lang.c | 1 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 1 | ||||
-rw-r--r-- | gcc/f/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/f/Make-lang.in | 2 | ||||
-rw-r--r-- | gcc/f/com.c | 1 | ||||
-rw-r--r-- | gcc/java/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/java/Make-lang.in | 3 | ||||
-rw-r--r-- | gcc/java/lang.c | 1 | ||||
-rw-r--r-- | gcc/langhooks-def.h | 109 | ||||
-rw-r--r-- | gcc/langhooks.c | 27 | ||||
-rw-r--r-- | gcc/langhooks.h | 158 | ||||
-rw-r--r-- | gcc/objc/Make-lang.in | 3 | ||||
-rw-r--r-- | gcc/objc/objc-act.c | 1 | ||||
-rw-r--r-- | gcc/toplev.c | 1 | ||||
-rw-r--r-- | gcc/toplev.h | 69 | ||||
-rw-r--r-- | gcc/tree-inline.c | 1 |
25 files changed, 255 insertions, 183 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 29e3fa14aeb..3c88f247d6a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,20 @@ +2001-11-06 Neil Booth <neil@cat.daikokuya.demon.co.uk> + + * alias.c:: Include langhooks.h. + * emit-rtl.c: Similarly. + * toplev.c: Similarly. + * tree-inline.c: Similarly. + * langhooks-def.h: New, the old langhooks.h. Give the default + hooks a common prefix. + * langhooks.h: Contents extracted from toplev.h. + * toplev.h: Move langhook stuff to langhooks.h. + * langhooks.c: Give default hooks a common prefix. + + * c-lang.c: Include langhooks-def.h. + * objc/objc-act.c: Similarly. + * Makefile.in: Update. + * objc/Make-lang.in: Update. + 2001-11-06 Joseph S. Myers <jsm28@cam.ac.uk> * doc/install.texi: Document that configure options not listed in diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 4ed39201da4..73596948bb9 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1168,7 +1168,8 @@ c-typeck.o : c-typeck.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \ $(TARGET_H) flags.h intl.h output.h $(EXPR_H) $(RTL_H) toplev.h $(TM_P_H) c-lang.o : c-lang.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \ $(GGC_H) c-lex.h toplev.h diagnostic.h output.h function.h \ - $(RTL_H) $(EXPR_H) tree-inline.h insn-config.h integrate.h langhooks.h + $(RTL_H) $(EXPR_H) tree-inline.h insn-config.h integrate.h langhooks.h \ + langhooks-def.h c-lex.o : c-lex.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) c-lex.h \ debug.h $(C_TREE_H) \ c-pragma.h input.h intl.h flags.h toplev.h output.h \ @@ -1344,12 +1345,12 @@ prefix.o: prefix.c $(CONFIG_H) $(SYSTEM_H) Makefile prefix.h convert.o: convert.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h convert.h toplev.h langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) toplev.h \ - tree-inline.h $(RTL_H) insn-config.h integrate.h langhooks.h + tree-inline.h $(RTL_H) insn-config.h integrate.h langhooks.h langhooks-def.h tree.o : tree.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h function.h toplev.h \ $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H) tree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) \ expr.h flags.h params.h input.h insn-config.h $(INTEGRATE_H) \ - $(VARRAY_H) $(HASHTAB_H) $(SPLAY_TREE_H) toplev.h \ + $(VARRAY_H) $(HASHTAB_H) $(SPLAY_TREE_H) toplev.h langhooks.h \ $(C_COMMON_H) tree-inline.h print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(GGC_H) stor-layout.o : stor-layout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h \ @@ -1364,7 +1365,8 @@ toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) function.h \ debug.h insn-config.h intl.h $(RECOG_H) Makefile toplev.h \ dwarf2out.h sdbout.h dbxout.h $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) \ graph.h $(LOOP_H) except.h $(REGS_H) $(TIMEVAR_H) $(lang_options_files) \ - ssa.h $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) halfpic.h + ssa.h $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) halfpic.h \ + langhooks.h $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ -DTARGET_NAME=\"$(target_alias)\" \ -c $(srcdir)/toplev.c @@ -1439,7 +1441,7 @@ xcoffout.o : xcoffout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) xcoffout.h \ emit-rtl.o : emit-rtl.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ function.h $(REGS_H) insn-config.h $(RECOG_H) real.h $(GGC_H) \ $(EXPR_H) $(srcdir)/../include/obstack.h hard-reg-set.h bitmap.h toplev.h \ - $(HASHTAB_H) $(TM_P_H) debug.h + $(HASHTAB_H) $(TM_P_H) debug.h langhooks.h real.o : real.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) toplev.h $(TM_P_H) integrate.o : integrate.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ debug.h $(INTEGRATE_H) insn-config.h $(EXPR_H) real.h $(REGS_H) \ @@ -1545,7 +1547,7 @@ reorg.o : reorg.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) conditions.h hard-reg-set.h \ $(RECOG_H) function.h flags.h output.h $(EXPR_H) toplev.h $(PARAMS_H) $(TM_P_H) alias.o : alias.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h hard-reg-set.h \ $(BASIC_BLOCK_H) $(REGS_H) toplev.h output.h $(EXPR_H) \ - $(GGC_H) function.h cselib.h $(TREE_H) $(TM_P_H) + $(GGC_H) function.h cselib.h $(TREE_H) $(TM_P_H) langhooks.h regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h \ $(RECOG_H) output.h $(REGS_H) hard-reg-set.h flags.h function.h \ $(EXPR_H) $(BASIC_BLOCK_H) toplev.h $(TM_P_H) except.h reload.h diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 61a26357670..b7c2e6e71f1 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2001-11-06 Neil Booth <neil@cat.daikokuya.demon.co.uk> + + * misc.c: Include langhooks-def.h. + * Makefile.in: Update. + 2001-10-30 Robert Dewar <dewar@gnat.com> * style.adb: diff --git a/gcc/ada/Makefile.in b/gcc/ada/Makefile.in index 86d1c47bfa3..4bd750d94a5 100644 --- a/gcc/ada/Makefile.in +++ b/gcc/ada/Makefile.in @@ -2587,7 +2587,7 @@ misc.o : misc.c $(CONFIG_H) $(TREE_H) $(RTL_H) $(srcdir)/../expr.h \ $(srcdir)/../flags.h $(srcdir)/../diagnostic.h $(srcdir)/../output.h \ $(srcdir)/../except.h ../tm_p.h ../langhooks.h ada.h types.h atree.h \ nlists.h elists.h sinfo.h einfo.h namet.h stringt.h uintp.h fe.h \ - $(ADA_TREE_H) gigi.h + $(ADA_TREE_H) gigi.h ../langhooks-def.h targtyps.o : targtyps.c $(CONFIG_H) ada.h types.h atree.h nlists.h elists.h \ uintp.h sinfo.h einfo.h namet.h snames.h stringt.h urealp.h fe.h \ diff --git a/gcc/ada/misc.c b/gcc/ada/misc.c index 5d1c398f5f5..8ef1063c2fa 100644 --- a/gcc/ada/misc.c +++ b/gcc/ada/misc.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * $Revision$ + * $Revision: 1.8 $ * * * Copyright (C) 1992-2001 Free Software Foundation, Inc. * * * @@ -53,6 +53,7 @@ #include "except.h" #include "tm_p.h" #include "langhooks.h" +#include "langhooks-def.h" #include "ada.h" #include "types.h" diff --git a/gcc/alias.c b/gcc/alias.c index 68b80b8d6d3..84fbdc9ee0b 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -35,6 +35,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "cselib.h" #include "splay-tree.h" #include "ggc.h" +#include "langhooks.h" /* The alias sets assigned to MEMs assist the back-end in determining which MEMs can alias which other MEMs. In general, two MEMs in diff --git a/gcc/c-lang.c b/gcc/c-lang.c index 59e8d5c040a..5f8f43ac094 100644 --- a/gcc/c-lang.c +++ b/gcc/c-lang.c @@ -39,6 +39,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "insn-config.h" #include "integrate.h" #include "langhooks.h" +#include "langhooks-def.h" static int c_tree_printer PARAMS ((output_buffer *)); static int c_missing_noreturn_ok_p PARAMS ((tree)); diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e566e303444..a36f3e4a09b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2001-11-06 Neil Booth <neil@cat.daikokuya.demon.co.uk> + + * Make-lang.in: Update. + * cp-lang.c: Include langhooks-def.h. + 2001-11-04 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> * pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR. diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index 9b2d7ee4ac5..c57cbe523ed 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -241,7 +241,7 @@ cp/spew.o: cp/spew.c $(CXX_TREE_H) cp/parse.h flags.h cp/lex.h toplev.h cp/lex.o: cp/lex.c $(CXX_TREE_H) cp/parse.h flags.h cp/lex.h c-pragma.h \ toplev.h output.h mbchar.h $(GGC_H) input.h diagnostic.h cp/operators.def \ $(TM_P_H) -cp/cp-lang.o: cp/cp-lang.c $(CXX_TREE_H) toplev.h langhooks.h +cp/cp-lang.o: cp/cp-lang.c $(CXX_TREE_H) toplev.h langhooks.h langhooks-def.h cp/decl.o: cp/decl.c $(CXX_TREE_H) flags.h cp/lex.h cp/decl.h stack.h \ output.h $(EXPR_H) except.h toplev.h hash.h $(GGC_H) $(RTL_H) \ cp/operators.def $(TM_P_H) tree-inline.h diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c index 4ff47af990a..fa3d766e635 100644 --- a/gcc/cp/cp-lang.c +++ b/gcc/cp/cp-lang.c @@ -25,6 +25,7 @@ Boston, MA 02111-1307, USA. */ #include "cp-tree.h" #include "toplev.h" #include "langhooks.h" +#include "langhooks-def.h" static HOST_WIDE_INT cxx_get_alias_set PARAMS ((tree)); diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 657e0b612cb..9bbaee4432b 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -55,6 +55,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "basic-block.h" #include "ggc.h" #include "debug.h" +#include "langhooks.h" /* Commonly used modes. */ diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 725ba35a250..cc346bd7b6b 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,8 @@ +Tue Nov 6 21:17:47 2001 Neil Booth <neil@cat.daikokuya.demon.co.uk> + + * com.c: Include langhooks-def.h. + * Make-lang.in: Update. + 2001-11-04 Toon Moene <toon@moene.indiv.nluug.nl> * g77.texi: Split off invoke.texi (preliminary to using it diff --git a/gcc/f/Make-lang.in b/gcc/f/Make-lang.in index 889495861a6..464c75ed81d 100644 --- a/gcc/f/Make-lang.in +++ b/gcc/f/Make-lang.in @@ -423,7 +423,7 @@ f/com.o: f/com.c f/proj.h $(CONFIG_H) $(SYSTEM_H) flags.h $(RTL_H) $(TREE_H) \ f/bad.def f/where.h glimits.h f/top.h f/lex.h f/type.h f/intrin.h \ f/intrin.def f/lab.h f/symbol.h f/symbol.def f/equiv.h f/storag.h f/global.h \ f/name.h f/expr.h f/implic.h f/src.h f/st.h $(GGC_H) toplev.h diagnostic.h \ - langhooks.h + langhooks.h langhooks-def.h f/data.o: f/data.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/data.h f/bld.h f/bld-op.def \ f/bit.h f/malloc.h f/com.h f/com-rt.def $(TREE_H) f/info.h f/info-b.def \ f/info-k.def f/info-w.def f/target.h f/bad.h f/bad.def f/where.h glimits.h \ diff --git a/gcc/f/com.c b/gcc/f/com.c index 3ed77c7bef1..428458b8c61 100644 --- a/gcc/f/com.c +++ b/gcc/f/com.c @@ -90,6 +90,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "ggc.h" #include "diagnostic.h" #include "langhooks.h" +#include "langhooks-def.h" /* VMS-specific definitions */ #ifdef VMS diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 3a73e7a014e..ae4fcb0af3a 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2001-11-06 Neil Booth <neil@cat.daikokuya.demon.co.uk> + + * lang.c: Include langhooks-def.h. + * Make-lang.in: Update. + 2001-10-31 Zack Weinberg <zack@codesourcery.com> * Make-lang.in: Replace $(INTL_TARGETS) with po-generated. diff --git a/gcc/java/Make-lang.in b/gcc/java/Make-lang.in index e049f22ebc6..7186aed918d 100644 --- a/gcc/java/Make-lang.in +++ b/gcc/java/Make-lang.in @@ -268,7 +268,8 @@ java/jcf-write.o: java/jcf-write.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h \ java/jv-scan.o: java/jv-scan.c $(CONFIG_H) $(SYSTEM_H) version.h java/jvgenmain.o: java/jvgenmain.c $(CONFIG_H) $(JAVA_TREE_H) $(SYSTEM_H) java/lang.o: java/lang.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h input.h \ - toplev.h $(SYSTEM_H) $(RTL_H) $(EXPR_H) diagnostic.h langhooks.h + toplev.h $(SYSTEM_H) $(RTL_H) $(EXPR_H) diagnostic.h langhooks.h \ + langhooks-def.h java/mangle.o: java/mangle.c $(CONFIG_H) java/jcf.h $(JAVA_TREE_H) $(SYSTEM_H) \ toplev.h $(GGC_H) java/mangle_name.o: java/mangle_name.c $(CONFIG_H) java/jcf.h $(JAVA_TREE_H) \ diff --git a/gcc/java/lang.c b/gcc/java/lang.c index ff1fce58252..91114b19e1f 100644 --- a/gcc/java/lang.c +++ b/gcc/java/lang.c @@ -35,6 +35,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */ #include "jcf.h" #include "toplev.h" #include "langhooks.h" +#include "langhooks-def.h" #include "flags.h" #include "xref.h" #include "ggc.h" diff --git a/gcc/langhooks-def.h b/gcc/langhooks-def.h new file mode 100644 index 00000000000..0e615cb5bca --- /dev/null +++ b/gcc/langhooks-def.h @@ -0,0 +1,109 @@ +/* Default macros to initialize the lang_hooks data structure. + Copyright 2001 Free Software Foundation, Inc. + Contributed by Alexandre Oliva <aoliva@redhat.com> + +This file is part of GNU CC. + +GNU CC 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 2, or (at your option) +any later version. + +GNU CC 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 GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#ifndef GCC_LANG_HOOKS_DEF_H +#define GCC_LANG_HOOKS_DEF_H + +/* Provide a hook routine for alias sets that always returns 1. This is + used by languages that haven't deal with alias sets yet. */ +extern HOST_WIDE_INT hook_get_alias_set_0 PARAMS ((tree)); + +/* Note to creators of new hooks: + + The macros in this file should NOT be surrounded by a + #ifdef...#endif pair, since this file declares the defaults. Each + front end overrides any hooks it wishes to, in the file containing + its struct lang_hooks, AFTER including this file. + + Prefix all default hooks with "lhd_". */ + +/* See langhooks.h for the definition and documentation of each hook. */ + +extern void lhd_do_nothing PARAMS ((void)); +extern int lhd_decode_option PARAMS ((int, char **)); +extern HOST_WIDE_INT lhd_get_alias_set PARAMS ((tree)); +extern void lhd_clear_binding_stack PARAMS ((void)); + +/* Declarations of default tree inlining hooks. */ +tree lhd_tree_inlining_walk_subtrees PARAMS ((tree *, int *, + walk_tree_fn, + void *, void *)); +int lhd_tree_inlining_cannot_inline_tree_fn PARAMS ((tree *)); +int lhd_tree_inlining_disregard_inline_limits PARAMS ((tree)); +tree lhd_tree_inlining_add_pending_fn_decls PARAMS ((void *, tree)); +int lhd_tree_inlining_tree_chain_matters_p PARAMS ((tree)); +int lhd_tree_inlining_auto_var_in_fn_p PARAMS ((tree, tree)); +tree lhd_tree_inlining_copy_res_decl_for_inlining PARAMS ((tree, tree, + tree, void *, + int *, void *)); +int lhd_tree_inlining_anon_aggr_type_p PARAMS ((tree)); + +#define LANG_HOOKS_INIT lhd_do_nothing +#define LANG_HOOKS_FINISH lhd_do_nothing +#define LANG_HOOKS_CLEAR_BINDING_STACK lhd_clear_binding_stack +#define LANG_HOOKS_INIT_OPTIONS lhd_do_nothing +#define LANG_HOOKS_DECODE_OPTION lhd_decode_option +#define LANG_HOOKS_POST_OPTIONS lhd_do_nothing +#define LANG_HOOKS_GET_ALIAS_SET lhd_get_alias_set +#define LANG_HOOKS_HONOR_READONLY false + +/* Tree inlining hooks. */ +#define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES lhd_tree_inlining_walk_subtrees +#define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \ + lhd_tree_inlining_cannot_inline_tree_fn +#define LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS \ + lhd_tree_inlining_disregard_inline_limits +#define LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS \ + lhd_tree_inlining_add_pending_fn_decls +#define LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P \ + lhd_tree_inlining_tree_chain_matters_p +#define LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P \ + lhd_tree_inlining_auto_var_in_fn_p +#define LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING \ + lhd_tree_inlining_copy_res_decl_for_inlining +#define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \ + lhd_tree_inlining_anon_aggr_type_p + +#define LANG_HOOKS_TREE_INLINING_INITIALIZER { \ + LANG_HOOKS_TREE_INLINING_WALK_SUBTREES, \ + LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN, \ + LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS, \ + LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS, \ + LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P, \ + LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P, \ + LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING, \ + LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \ +} \ + +/* The whole thing. The structure is defined in toplev.h. */ +#define LANG_HOOKS_INITIALIZER { \ + LANG_HOOKS_INIT, \ + LANG_HOOKS_FINISH, \ + LANG_HOOKS_CLEAR_BINDING_STACK, \ + LANG_HOOKS_INIT_OPTIONS, \ + LANG_HOOKS_DECODE_OPTION, \ + LANG_HOOKS_POST_OPTIONS, \ + LANG_HOOKS_GET_ALIAS_SET, \ + LANG_HOOKS_HONOR_READONLY, \ + LANG_HOOKS_TREE_INLINING_INITIALIZER \ +} + +#endif /* GCC_LANG_HOOKS_DEF_H */ diff --git a/gcc/langhooks.c b/gcc/langhooks.c index 40a041fcece..a253af372a2 100644 --- a/gcc/langhooks.c +++ b/gcc/langhooks.c @@ -28,18 +28,19 @@ Boston, MA 02111-1307, USA. */ #include "insn-config.h" #include "integrate.h" #include "langhooks.h" +#include "langhooks-def.h" /* Do nothing; in many cases the default hook. */ void -lang_hook_default_do_nothing () +lhd_do_nothing () { } /* Do nothing; the default hook to decode an option. */ int -lang_hook_default_decode_option (argc, argv) +lhd_decode_option (argc, argv) int argc ATTRIBUTE_UNUSED; char **argv ATTRIBUTE_UNUSED; { @@ -49,7 +50,7 @@ lang_hook_default_decode_option (argc, argv) /* Provide a default routine to clear the binding stack. This is used by languages that don't need to do anything special. */ void -lang_hook_default_clear_binding_stack () +lhd_clear_binding_stack () { while (! global_bindings_p ()) poplevel (0, 0, 0); @@ -59,7 +60,7 @@ lang_hook_default_clear_binding_stack () is used by languages that don't need to do anything special. */ HOST_WIDE_INT -lang_hook_default_get_alias_set (t) +lhd_get_alias_set (t) tree t ATTRIBUTE_UNUSED; { return -1; @@ -87,7 +88,7 @@ hook_get_alias_set_0 (t) when the function is called. */ tree -tree_inlining_default_hook_walk_subtrees (tp,subtrees,func,data,htab) +lhd_tree_inlining_walk_subtrees (tp,subtrees,func,data,htab) tree *tp ATTRIBUTE_UNUSED; int *subtrees ATTRIBUTE_UNUSED; walk_tree_fn func ATTRIBUTE_UNUSED; @@ -102,7 +103,7 @@ tree_inlining_default_hook_walk_subtrees (tp,subtrees,func,data,htab) inlining a given function. */ int -tree_inlining_default_hook_cannot_inline_tree_fn (fnp) +lhd_tree_inlining_cannot_inline_tree_fn (fnp) tree *fnp ATTRIBUTE_UNUSED; { return 0; @@ -113,7 +114,7 @@ tree_inlining_default_hook_cannot_inline_tree_fn (fnp) if it would exceed inlining limits. */ int -tree_inlining_default_hook_disregard_inline_limits (fn) +lhd_tree_inlining_disregard_inline_limits (fn) tree fn ATTRIBUTE_UNUSED; { return 0; @@ -127,7 +128,7 @@ tree_inlining_default_hook_disregard_inline_limits (fn) returned. */ tree -tree_inlining_default_hook_add_pending_fn_decls (vafnp, pfn) +lhd_tree_inlining_add_pending_fn_decls (vafnp, pfn) void *vafnp ATTRIBUTE_UNUSED; tree pfn; { @@ -139,7 +140,7 @@ tree_inlining_default_hook_add_pending_fn_decls (vafnp, pfn) whether it should be walked, copied and preserved across copies. */ int -tree_inlining_default_hook_tree_chain_matters_p (t) +lhd_tree_inlining_tree_chain_matters_p (t) tree t ATTRIBUTE_UNUSED; { return 0; @@ -149,7 +150,7 @@ tree_inlining_default_hook_tree_chain_matters_p (t) whether VT is an automatic variable defined in function FT. */ int -tree_inlining_default_hook_auto_var_in_fn_p (var, fn) +lhd_tree_inlining_auto_var_in_fn_p (var, fn) tree var, fn; { return (DECL_P (var) && DECL_CONTEXT (var) == fn @@ -169,8 +170,8 @@ tree_inlining_default_hook_auto_var_in_fn_p (var, fn) match RES. */ tree -tree_inlining_default_hook_copy_res_decl_for_inlining (res, fn, caller, - dm, ndp, texps) +lhd_tree_inlining_copy_res_decl_for_inlining (res, fn, caller, + dm, ndp, texps) tree res, fn, caller; void *dm ATTRIBUTE_UNUSED; int *ndp ATTRIBUTE_UNUSED; @@ -184,7 +185,7 @@ tree_inlining_default_hook_copy_res_decl_for_inlining (res, fn, caller, i.e., one whose members are in the same scope as the union itself. */ int -tree_inlining_default_hook_anon_aggr_type_p (t) +lhd_tree_inlining_anon_aggr_type_p (t) tree t ATTRIBUTE_UNUSED; { return 0; diff --git a/gcc/langhooks.h b/gcc/langhooks.h index d844cdb9414..2f97b7ae491 100644 --- a/gcc/langhooks.h +++ b/gcc/langhooks.h @@ -1,6 +1,5 @@ -/* Default macros to initialize the lang_hooks data structure. +/* The lang_hooks data structure. Copyright 2001 Free Software Foundation, Inc. - Contributed by Alexandre Oliva <aoliva@redhat.com> This file is part of GNU CC. @@ -22,92 +21,73 @@ Boston, MA 02111-1307, USA. */ #ifndef GCC_LANG_HOOKS_H #define GCC_LANG_HOOKS_H -/* Provide a hook routine for alias sets that always returns 1. This is - used by languages that haven't deal with alias sets yet. */ -extern HOST_WIDE_INT hook_get_alias_set_0 PARAMS ((tree)); - -/* Note to creators of new hooks: - - The macros in this file should NOT be surrounded by a - #ifdef...#endif pair, since this file declares the defaults. Each - front end overrides any hooks it wishes to, in the file containing - its struct lang_hooks, AFTER including this file. */ - -/* See toplev.h for the definition and documentation of each hook. */ - -extern void lang_hook_default_do_nothing PARAMS ((void)); -extern int lang_hook_default_decode_option PARAMS ((int, char **)); -extern HOST_WIDE_INT lang_hook_default_get_alias_set PARAMS ((tree)); -extern void lang_hook_default_clear_binding_stack PARAMS ((void)); - -#define LANG_HOOKS_INIT lang_hook_default_do_nothing -#define LANG_HOOKS_FINISH lang_hook_default_do_nothing -#define LANG_HOOKS_CLEAR_BINDING_STACK lang_hook_default_clear_binding_stack -#define LANG_HOOKS_INIT_OPTIONS lang_hook_default_do_nothing -#define LANG_HOOKS_DECODE_OPTION lang_hook_default_decode_option -#define LANG_HOOKS_POST_OPTIONS lang_hook_default_do_nothing -#define LANG_HOOKS_GET_ALIAS_SET lang_hook_default_get_alias_set - -#define LANG_HOOKS_HONOR_READONLY false - -/* Declarations of default tree inlining hooks. */ -tree tree_inlining_default_hook_walk_subtrees PARAMS ((tree *, int *, - walk_tree_fn, - void *, - void *)); -int tree_inlining_default_hook_cannot_inline_tree_fn PARAMS ((tree *)); -int tree_inlining_default_hook_disregard_inline_limits PARAMS ((tree)); -tree tree_inlining_default_hook_add_pending_fn_decls PARAMS ((void *, - tree)); -int tree_inlining_default_hook_tree_chain_matters_p PARAMS ((tree)); -int tree_inlining_default_hook_auto_var_in_fn_p PARAMS ((tree, tree)); -tree tree_inlining_default_hook_copy_res_decl_for_inlining PARAMS ((tree, tree, - tree, - void *, - int *, - void *)); -int tree_inlining_default_hook_anon_aggr_type_p PARAMS ((tree)); - -/* Tree inlining hooks. */ -#define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES \ - tree_inlining_default_hook_walk_subtrees -#define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \ - tree_inlining_default_hook_cannot_inline_tree_fn -#define LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS \ - tree_inlining_default_hook_disregard_inline_limits -#define LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS \ - tree_inlining_default_hook_add_pending_fn_decls -#define LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P \ - tree_inlining_default_hook_tree_chain_matters_p -#define LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P \ - tree_inlining_default_hook_auto_var_in_fn_p -#define LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING \ - tree_inlining_default_hook_copy_res_decl_for_inlining -#define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \ - tree_inlining_default_hook_anon_aggr_type_p - -#define LANG_HOOKS_TREE_INLINING_INITIALIZER { \ - LANG_HOOKS_TREE_INLINING_WALK_SUBTREES, \ - LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN, \ - LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS, \ - LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS, \ - LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P, \ - LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P, \ - LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING, \ - LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \ -} \ - -/* The whole thing. The structure is defined in toplev.h. */ -#define LANG_HOOKS_INITIALIZER { \ - LANG_HOOKS_INIT, \ - LANG_HOOKS_FINISH, \ - LANG_HOOKS_CLEAR_BINDING_STACK, \ - LANG_HOOKS_INIT_OPTIONS, \ - LANG_HOOKS_DECODE_OPTION, \ - LANG_HOOKS_POST_OPTIONS, \ - LANG_HOOKS_GET_ALIAS_SET, \ - LANG_HOOKS_HONOR_READONLY, \ - LANG_HOOKS_TREE_INLINING_INITIALIZER \ -} +/* The following hooks are documented in langhooks.c. Must not be + NULL. */ + +struct lang_hooks_for_tree_inlining +{ + union tree_node *(*walk_subtrees) PARAMS ((union tree_node **, int *, + union tree_node *(*) + (union tree_node **, + int *, void *), + void *, void *)); + int (*cannot_inline_tree_fn) PARAMS ((union tree_node **)); + int (*disregard_inline_limits) PARAMS ((union tree_node *)); + union tree_node *(*add_pending_fn_decls) PARAMS ((void *, + union tree_node *)); + int (*tree_chain_matters_p) PARAMS ((union tree_node *)); + int (*auto_var_in_fn_p) PARAMS ((union tree_node *, union tree_node *)); + union tree_node *(*copy_res_decl_for_inlining) PARAMS ((union tree_node *, + union tree_node *, + union tree_node *, + void *, int *, + void *)); + int (*anon_aggr_type_p) PARAMS ((union tree_node *)); +}; + +/* Language-specific hooks. See langhooks-def.h for defaults. */ + +struct lang_hooks +{ + /* Called first, to initialize the front end. */ + void (*init) PARAMS ((void)); + + /* Called last, as a finalizer. */ + void (*finish) PARAMS ((void)); + + /* Called immediately after parsing to clear the binding stack. */ + void (*clear_binding_stack) PARAMS ((void)); + + /* Called to initialize options, before any calls to decode_option. */ + void (*init_options) PARAMS ((void)); + + /* Function called with an option vector as argument, to decode a + single option (typically starting with -f or -W or +). It should + return the number of command-line arguments it uses if it handles + the option, or 0 and not complain if it does not recognise the + option. If this function returns a negative number, then its + absolute value is the number of command-line arguments used, but, + in addition, no language-independent option processing should be + done for this option. */ + int (*decode_option) PARAMS ((int, char **)); + + /* Called when all command line options have been processed. */ + void (*post_options) PARAMS ((void)); + + /* Called to obtain the alias set to be used for an expression or type. + Returns -1 if the language does nothing special for it. */ + HOST_WIDE_INT (*get_alias_set) PARAMS ((tree)); + + /* Nonzero if TYPE_READONLY and TREE_READONLY should always be honored. */ + bool honor_readonly; + + struct lang_hooks_for_tree_inlining tree_inlining; + + /* Whenever you add entries here, make sure you adjust langhooks.h + and langhooks.c accordingly. */ +}; + +/* Each front end provides its own. */ +extern struct lang_hooks lang_hooks; #endif /* GCC_LANG_HOOKS_H */ diff --git a/gcc/objc/Make-lang.in b/gcc/objc/Make-lang.in index a60ed793f4a..9b777d4289d 100644 --- a/gcc/objc/Make-lang.in +++ b/gcc/objc/Make-lang.in @@ -80,7 +80,8 @@ objc-act.o : $(srcdir)/objc/objc-act.c \ $(CONFIG_H) $(TREE_H) $(RTL_H) $(SYSTEM_H) $(EXPR_H) $(TARGET_H) \ $(srcdir)/c-tree.h $(srcdir)/c-common.h $(srcdir)/c-lex.h \ $(srcdir)/toplev.h $(srcdir)/flags.h $(srcdir)/objc/objc-act.h \ - $(srcdir)/input.h $(srcdir)/function.h $(srcdir)/output.h $(srcdir)/debug.h + $(srcdir)/input.h $(srcdir)/function.h $(srcdir)/output.h $(srcdir)/debug.h \ + $(srcdir)/langhooks.h $(srcdir)/langhooks-def.h $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -I$(srcdir)/objc \ -c $(srcdir)/objc/objc-act.c diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index c78e00c8f3f..4e1c48de2a6 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -59,6 +59,7 @@ Boston, MA 02111-1307, USA. */ #include "debug.h" #include "target.h" #include "langhooks.h" +#include "langhooks-def.h" /* This is the default way of generating a method name. */ /* I am not sure it is really correct. diff --git a/gcc/toplev.c b/gcc/toplev.c index ad23683f45e..2451aced5a6 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -68,6 +68,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "integrate.h" #include "debug.h" #include "target.h" +#include "langhooks.h" #if defined (DWARF2_UNWIND_INFO) || defined (DWARF2_DEBUGGING_INFO) #include "dwarf2out.h" diff --git a/gcc/toplev.h b/gcc/toplev.h index 8f21b031baf..74fef17f459 100644 --- a/gcc/toplev.h +++ b/gcc/toplev.h @@ -115,75 +115,6 @@ extern void check_global_declarations PARAMS ((union tree_node **, int)); extern const char *progname; extern const char *dump_base_name; -/* The following hooks are documented in langhooks.c. Must not be - NULL. */ - -struct lang_hooks_for_tree_inlining -{ - union tree_node *(*walk_subtrees) PARAMS ((union tree_node **, int *, - union tree_node *(*) - (union tree_node **, - int *, void *), - void *, void *)); - int (*cannot_inline_tree_fn) PARAMS ((union tree_node **)); - int (*disregard_inline_limits) PARAMS ((union tree_node *)); - union tree_node *(*add_pending_fn_decls) PARAMS ((void *, - union tree_node *)); - int (*tree_chain_matters_p) PARAMS ((union tree_node *)); - int (*auto_var_in_fn_p) PARAMS ((union tree_node *, union tree_node *)); - union tree_node *(*copy_res_decl_for_inlining) PARAMS ((union tree_node *, - union tree_node *, - union tree_node *, - void *, int *, - void *)); - int (*anon_aggr_type_p) PARAMS ((union tree_node *)); -}; - -/* Language-specific hooks. See langhooks.h for defaults. */ - -struct lang_hooks -{ - /* Called first, to initialize the front end. */ - void (*init) PARAMS ((void)); - - /* Called last, as a finalizer. */ - void (*finish) PARAMS ((void)); - - /* Called immediately after parsing to clear the binding stack. */ - void (*clear_binding_stack) PARAMS ((void)); - - /* Called to initialize options, before any calls to decode_option. */ - void (*init_options) PARAMS ((void)); - - /* Function called with an option vector as argument, to decode a - single option (typically starting with -f or -W or +). It should - return the number of command-line arguments it uses if it handles - the option, or 0 and not complain if it does not recognise the - option. If this function returns a negative number, then its - absolute value is the number of command-line arguments used, but, - in addition, no language-independent option processing should be - done for this option. */ - int (*decode_option) PARAMS ((int, char **)); - - /* Called when all command line options have been processed. */ - void (*post_options) PARAMS ((void)); - - /* Called to obtain the alias set to be used for an expression or type. - Returns -1 if the language does nothing special for it. */ - HOST_WIDE_INT (*get_alias_set) PARAMS ((tree)); - - /* Nonzero if TYPE_READONLY and TREE_READONLY should always be honored. */ - bool honor_readonly; - - struct lang_hooks_for_tree_inlining tree_inlining; - - /* Whenever you add entries here, make sure you adjust langhooks.h - and langhooks.c accordingly. */ -}; - -/* Each front end provides its own. */ -extern struct lang_hooks lang_hooks; - /* The hashtable, so that the C front ends can pass it to cpplib. */ extern struct ht *ident_hash; diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 865ec234caa..a4f483ae3e4 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -34,6 +34,7 @@ Boston, MA 02111-1307, USA. */ #include "varray.h" #include "hashtab.h" #include "splay-tree.h" +#include "langhooks.h" /* This should be eventually be generalized to other languages, but this would require a shared function-as-trees infrastructure. */ |