aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraph.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cgraph.h')
-rw-r--r--gcc/cgraph.h31
1 files changed, 26 insertions, 5 deletions
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 7650326..0a8a2d0 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -30,13 +30,15 @@ struct cgraph_local_info GTY(())
/* Set when function function is visible in current compilation unit only
and it's address is never taken. */
bool local;
- /* Set when function is small enough 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;
/* Set once it has been finalized so we consider it to be output. */
bool finalized;
+
+ /* False when there is something making inlining impossible (such as va_arg) */
+ bool inlinable;
+ /* True when function should be inlined independently on it's size. */
+ bool disgread_inline_limits;
+ /* Size of the function before inlining. */
+ int self_insns;
};
/* Information about the function that needs to be computed globally
@@ -46,6 +48,20 @@ struct cgraph_global_info GTY(())
{
/* Set when the function will be inlined exactly once. */
bool inline_once;
+
+ /* Estimated size of the function after inlining. */
+ int insns;
+
+ /* Number of direct calls not inlined into the function body. */
+ int calls;
+
+ /* Number of times given function will be cloned during output. */
+ int cloned_times;
+
+ /* Set to true for all reachable functions before inlining is decided.
+ Once we inline all calls to the function and the function is local,
+ it is set to false. */
+ bool will_be_output;
};
/* Information about the function that is propagated by the RTL backend.
@@ -77,6 +93,8 @@ struct cgraph_node GTY((chain_next ("%h.next"), chain_prev ("%h.previous")))
struct cgraph_node *next_nested;
/* Pointer to the next function in cgraph_nodes_queue. */
struct cgraph_node *next_needed;
+ /* Unique id of the node. */
+ int uid;
PTR GTY ((skip (""))) aux;
/* Set when function must be output - it is externally visible
@@ -102,6 +120,7 @@ struct cgraph_edge GTY(())
struct cgraph_node *callee;
struct cgraph_edge *next_caller;
struct cgraph_edge *next_callee;
+ bool inline_call;
};
/* The cgraph_varpool data strutcture.
@@ -124,6 +143,7 @@ struct cgraph_varpool_node GTY(())
extern GTY(()) struct cgraph_node *cgraph_nodes;
extern GTY(()) int cgraph_n_nodes;
+extern GTY(()) int cgraph_max_uid;
extern bool cgraph_global_info_ready;
extern GTY(()) struct cgraph_node *cgraph_nodes_queue;
extern FILE *cgraph_dump_file;
@@ -157,5 +177,6 @@ void cgraph_finalize_compilation_unit PARAMS ((void));
void cgraph_create_edges PARAMS ((tree, tree));
void cgraph_optimize PARAMS ((void));
void cgraph_mark_needed_node PARAMS ((struct cgraph_node *, int));
+bool cgraph_inline_p PARAMS ((tree, tree));
#endif /* GCC_CGRAPH_H */