summaryrefslogtreecommitdiff
path: root/gcc/cgraph.h
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2003-03-08 14:26:37 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2003-03-08 13:26:37 +0000
commit18d13f34175f157bc3152afdf48da798452afc1b (patch)
tree8a4f34953d22192851b98b6fb46d7a44532ecfc0 /gcc/cgraph.h
parent4a07c08a47f2a4fbce5634b93834ed824ebafc79 (diff)
downloadgcc-18d13f34175f157bc3152afdf48da798452afc1b.tar.gz
inline-3.c: New test.
* gcc.dg/inline-3.c: New test. * c-decl.c: (finish_function): Update call of tree_inlinable_function_p. * cgraph.h: (cgraph_local_info): Add can_inline_once (cgraph_global_info): Add inline_once. (cgraph_node): Add previous. (cgraph_remove_node): New. * cgraphunit.c (cgraph_mark_functions_to_inline_once): New static function. (cgraph_optimize): Call it. (cgraph_finalize_function): Set inlinable flags. (cgraph_finalize_compilation_unit): Actually remove the reclaimed nodes. (cgraph_mark_functions_to_output): Use new inlining heuristics flags. (cgraph_expand_function): Likewise. * cgraph.c (cgraph_node): Put nodes into doubly linked chain. (cgraph_remove_node): New function. * flags.h (flag_inline_functions_called_once): Declare. * tree-inline.c: Include cgraph.h (inlinable_functions_p): Add extra argument to bypass limits. (expand_call_inline): Obey cgraph flag. * tree-inline.h (tree_inlinable_function_p): Update prototype. From-SVN: r63983
Diffstat (limited to 'gcc/cgraph.h')
-rw-r--r--gcc/cgraph.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 6c8c8afece0..b785e172665 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -30,7 +30,11 @@ struct cgraph_local_info
/* Set when function function is visiable in current compilation unit only
and it's address is never taken. */
bool local;
+ /* Set when function is small enought to be inlinable many times. */
bool inline_many;
+ /* Set when function can be inlined once (false only for functions calling
+ alloca, using varargs and so on). */
+ bool can_inline_once;
};
/* Information about the function that needs to be computed globally
@@ -38,8 +42,8 @@ struct cgraph_local_info
struct cgraph_global_info
{
- /* Empty for the moment. */
- int dummy;
+ /* Set when the function will be inlined exactly once. */
+ bool inline_once;
};
/* Information about the function that is propagated by the RTL backend.
@@ -60,7 +64,7 @@ struct cgraph_node
tree decl;
struct cgraph_edge *callees;
struct cgraph_edge *callers;
- struct cgraph_node *next;
+ struct cgraph_node *next, *previous;
/* For nested functions points to function the node is nested in. */
struct cgraph_node *origin;
/* Points to first nested function, if any. */
@@ -100,6 +104,7 @@ extern bool cgraph_global_info_ready;
/* In cgraph.c */
void dump_cgraph PARAMS ((FILE *));
void cgraph_remove_call PARAMS ((tree, tree));
+void cgraph_remove_node PARAMS ((struct cgraph_node *));
struct cgraph_edge *cgraph_record_call PARAMS ((tree, tree));
struct cgraph_node *cgraph_node PARAMS ((tree decl));
bool cgraph_calls_p PARAMS ((tree, tree));