diff options
author | Jan Hubicka <jh@suse.cz> | 2003-03-08 14:26:37 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2003-03-08 13:26:37 +0000 |
commit | 18d13f34175f157bc3152afdf48da798452afc1b (patch) | |
tree | 8a4f34953d22192851b98b6fb46d7a44532ecfc0 /gcc/cgraph.h | |
parent | 4a07c08a47f2a4fbce5634b93834ed824ebafc79 (diff) | |
download | gcc-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.h | 11 |
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)); |