aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraph.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@gcc.gnu.org>2011-01-26 14:06:20 +0000
committerJan Hubicka <hubicka@gcc.gnu.org>2011-01-26 14:06:20 +0000
commit61e03ffc6b8284abe34837fc85a82566ee4552ee (patch)
tree4e831ce4ac2924d53233e6215470e4dbd88eea9a /gcc/cgraph.c
parent980ca89173da230e449a8e8017f0b2c2b46a374a (diff)
downloadgcc-61e03ffc6b8284abe34837fc85a82566ee4552ee.zip
gcc-61e03ffc6b8284abe34837fc85a82566ee4552ee.tar.gz
gcc-61e03ffc6b8284abe34837fc85a82566ee4552ee.tar.bz2
re PR tree-optimization/47237 (builtin_apply_args broken WRT local ABI changes.)
PR target/47237 * cgraph.h (cgraph_local_info): New field can_change_signature. * ipa-cp.c (ipcp_update_callgraph): Only compute args_to_skip if callee signature can change. (ipcp_estimate_growth): Call sequence simplify only if calle signature can change. (ipcp_insert_stage): Only compute args_to_skip if signature can change. (cgraph_function_versioning): We can not change signature of functions that don't allow that. * lto-cgraph.c (lto_output_node): Stream local.can_change_signature. (lto_input_node): Likewise. * ipa-inline.c (compute_inline_parameters): Compute local.can_change_signature. * ipa-split.c (visit_bb): Never split away APPLY_ARGS. * tree-sra.c (ipa_sra_preliminary_function_checks): Give up on functions that can not change signature. * i386.c (ix86_function_regparm, ix86_function_sseregparm, init_cumulative_args): Do not use local calling conventions for functions that can not change signature. From-SVN: r169290
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r--gcc/cgraph.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index c8f9b04..6176b4d 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -2300,6 +2300,8 @@ cgraph_create_virtual_clone (struct cgraph_node *old_node,
if (!flag_wpa)
gcc_checking_assert (tree_versionable_function_p (old_decl));
+ gcc_assert (old_node->local.can_change_signature || !args_to_skip);
+
/* Make a new FUNCTION_DECL tree node */
if (!args_to_skip)
new_decl = copy_node (old_decl);