diff options
author | Richard Guenther <rguenther@suse.de> | 2011-12-05 08:51:53 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-12-05 08:51:53 +0000 |
commit | 89faf322d87cbfad71c079acc8b96a5a145a60f7 (patch) | |
tree | 06f9d8d603ca3da5bab04e63d6fb3e6ded7f762d /gcc/cgraph.c | |
parent | 5275901c43a4c3f8feb32999af281ae5d009bac6 (diff) | |
download | gcc-89faf322d87cbfad71c079acc8b96a5a145a60f7.zip gcc-89faf322d87cbfad71c079acc8b96a5a145a60f7.tar.gz gcc-89faf322d87cbfad71c079acc8b96a5a145a60f7.tar.bz2 |
cgraph.c (cgraph_create_edge_1): Initialize call_stmt_cannot_inline_p from the stmt if possible.
2011-12-05 Richard Guenther <rguenther@suse.de>
* cgraph.c (cgraph_create_edge_1): Initialize
call_stmt_cannot_inline_p from the stmt if possible.
(cgraph_make_edge_direct): Likewise.
* gimple-streamer-in.c (input_gimple_stmt): Do not
call gimple_call_set_cannot_inline.
* gimple.h (enum gf_mask): Remove GF_CALL_CANNOT_INLINE, shift
values.
(gimple_call_set_cannot_inline): Remove.
(gimple_call_cannot_inline_p): Likewise.
* ipa-inline-analysis.c (initialize_inline_failed): Look
at the edge call_stmt_cannot_inline_p flag.
* ipa-inline.c (can_inline_edge_p): Likewise.
(early_inliner): Only update the edge flag.
* ipa-prop.c (update_indirect_edges_after_inlining): Likewise.
(ipa_modify_call_arguments): Do not call gimple_call_set_cannot_inline.
* cgraphunit.c (assemble_thunk): Likewise.
* gimple-fold.c (gimple_fold_call): Likewise.
* tree.h (CALL_CANNOT_INLINE_P): Remove.
* tree-mudflap.c (mf_xform_statements): Do not modify alloca calls.
* builtins.c (expand_builtin_alloca): With -fmudflap do not expand
alloca calls inline.
* cfgexpand.c (expand_call_stmt): Do not set CALL_CANNOT_INLINE_P.
* gimple.c (gimple_build_call_from_tree): Do not read
CALL_CANNOT_INLINE_P.
* gimplify.c (gimplify_call_expr): Do not copy CALL_CANNOT_INLINE_P.
From-SVN: r182001
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r-- | gcc/cgraph.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c index ac516ab..e65ddef 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -988,8 +988,12 @@ cgraph_create_edge_1 (struct cgraph_node *caller, struct cgraph_node *callee, edge->can_throw_external = call_stmt ? stmt_can_throw_external (call_stmt) : false; pop_cfun (); - edge->call_stmt_cannot_inline_p = - (call_stmt ? gimple_call_cannot_inline_p (call_stmt) : false); + if (call_stmt + && callee && callee->decl + && !gimple_check_call_matching_types (call_stmt, callee->decl)) + edge->call_stmt_cannot_inline_p = true; + else + edge->call_stmt_cannot_inline_p = false; if (call_stmt && caller->call_site_hash) cgraph_add_edge_to_call_site_hash (edge); @@ -1184,12 +1188,9 @@ cgraph_make_edge_direct (struct cgraph_edge *edge, struct cgraph_node *callee) /* Insert to callers list of the new callee. */ cgraph_set_edge_callee (edge, callee); - if (edge->call_stmt - && !gimple_check_call_matching_types (edge->call_stmt, callee->decl)) - { - gimple_call_set_cannot_inline (edge->call_stmt, true); - edge->call_stmt_cannot_inline_p = true; - } + if (edge->call_stmt) + edge->call_stmt_cannot_inline_p + = !gimple_check_call_matching_types (edge->call_stmt, callee->decl); /* We need to re-determine the inlining status of the edge. */ initialize_inline_failed (edge); |