aboutsummaryrefslogtreecommitdiff
path: root/gcc/langhooks.h
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2001-10-08 20:54:07 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2001-10-08 20:54:07 +0000
commit69dcadffbabaf5fd3b0fa3f14b5de097c40a2751 (patch)
treef37df892d870d138dc0e3460f96264fd2648883e /gcc/langhooks.h
parent19551f2985c293a1041a0e7755627e87eb1559b7 (diff)
downloadgcc-69dcadffbabaf5fd3b0fa3f14b5de097c40a2751.zip
gcc-69dcadffbabaf5fd3b0fa3f14b5de097c40a2751.tar.gz
gcc-69dcadffbabaf5fd3b0fa3f14b5de097c40a2751.tar.bz2
langhooks.h: New file.
* langhooks.h: New file. * Makefile.in (OBJS): Added langhooks.o. (c-lang.o): Depend on langhooks.h. (c-common.o): Don't depend on tree-inline.h. (tree-inline.o): Depend on toplev.h. (langhooks.o): New rule. * c-common.c: Don't include tree-inline.h. (c_mark_lang_decl): Mark argument c as unused. (c_common_lang_init): Don't initialize hooks here. * c-lang.c: Include langhooks.h, then override some macros. (lang_hooks): Initialize with macros in langhooks.h. (c_init): Don't initialize hooks here. * toplev.c (struct lang_hooks_for_tree_inlining): New struct. (struct lang_hooks): Add tree_inlining. Refer to langhooks.h. * tree-inline.c: Include toplev.h. Don't define hook variables. * tree-inline.h: Don't define hook types nor declare hook variables. Move macros to... * langhooks.c: ... new file, as functions. Adjust all callers. From-SVN: r46096
Diffstat (limited to 'gcc/langhooks.h')
-rw-r--r--gcc/langhooks.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/gcc/langhooks.h b/gcc/langhooks.h
new file mode 100644
index 0000000..43335fa
--- /dev/null
+++ b/gcc/langhooks.h
@@ -0,0 +1,114 @@
+/* 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_H
+#define GCC_LANG_HOOKS_H
+
+/* Older hooks, that don't go in sub-structures for backward
+ compatibility. */
+#ifndef LANG_HOOKS_INIT
+#define LANG_HOOKS_INIT NULL
+#endif
+#ifndef LANG_HOOKS_FINISH
+#define LANG_HOOKS_FINISH NULL
+#endif
+#ifndef LANG_HOOKS_INIT_OPTIONS
+#define LANG_HOOKS_INIT_OPTIONS NULL
+#endif
+#ifndef LANG_HOOKS_DECODE_OPTION
+#define LANG_HOOKS_DECODE_OPTION NULL
+#endif
+#ifndef LANG_HOOKS_POST_OPTIONS
+#define LANG_HOOKS_POST_OPTIONS NULL
+#endif
+
+/* 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. */
+#ifndef LANG_HOOKS_TREE_INLINING_WALK_SUBTREES
+#define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES \
+ tree_inlining_default_hook_walk_subtrees
+#endif
+#ifndef LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN
+#define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \
+ tree_inlining_default_hook_cannot_inline_tree_fn
+#endif
+#ifndef LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS
+#define LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS \
+ tree_inlining_default_hook_disregard_inline_limits
+#endif
+#ifndef LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS
+#define LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS \
+ tree_inlining_default_hook_add_pending_fn_decls
+#endif
+#ifndef LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P
+#define LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P \
+ tree_inlining_default_hook_tree_chain_matters_p
+#endif
+#ifndef LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P
+#define LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P \
+ tree_inlining_default_hook_auto_var_in_fn_p
+#endif
+#ifndef LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING
+#define LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING \
+ tree_inlining_default_hook_copy_res_decl_for_inlining
+#endif
+#ifndef LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P
+#define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \
+ tree_inlining_default_hook_anon_aggr_type_p
+#endif
+
+#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_INIT_OPTIONS, \
+ LANG_HOOKS_DECODE_OPTION, \
+ LANG_HOOKS_POST_OPTIONS, \
+ LANG_HOOKS_TREE_INLINING_INITIALIZER \
+}
+
+#endif /* GCC_LANG_HOOKS_H */