aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-inline-analysis.c
diff options
context:
space:
mode:
authorIlya Enkovich <ilya.enkovich@intel.com>2016-07-07 11:45:11 +0000
committerIlya Enkovich <ienkovich@gcc.gnu.org>2016-07-07 11:45:11 +0000
commit275792f2ebb69bc081c4ea764c75ddfd565f640c (patch)
treeee363588dac70285eea3b1c51b085ed21c71a0a8 /gcc/ipa-inline-analysis.c
parent33427b4642f75e0231a329336430d5dd1924f566 (diff)
downloadgcc-275792f2ebb69bc081c4ea764c75ddfd565f640c.zip
gcc-275792f2ebb69bc081c4ea764c75ddfd565f640c.tar.gz
gcc-275792f2ebb69bc081c4ea764c75ddfd565f640c.tar.bz2
re PR ipa/71624 ([CHKP] internal compiler error: in duplicate_thunk_for_node)
gcc/ PR ipa/71624 * ipa-inline-analysis.c (compute_inline_parameters): Set local.can_change_signature to false for intrumentation thunk callees. gcc/testsuite/ PR ipa/71624 * g++.dg/pr71624.C: New test. From-SVN: r238086
Diffstat (limited to 'gcc/ipa-inline-analysis.c')
-rw-r--r--gcc/ipa-inline-analysis.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index 5d67218..da29d22 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -3017,6 +3017,16 @@ compute_inline_parameters (struct cgraph_node *node, bool early)
node->local.can_change_signature = !e;
}
}
+ /* Functions called by instrumentation thunk can't change signature
+ because instrumentation thunk modification is not supported. */
+ if (node->local.can_change_signature)
+ for (e = node->callers; e; e = e->next_caller)
+ if (e->caller->thunk.thunk_p
+ && e->caller->thunk.add_pointer_bounds_args)
+ {
+ node->local.can_change_signature = false;
+ break;
+ }
estimate_function_body_sizes (node, early);
pop_cfun ();
}