aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2013-12-14 19:28:22 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2013-12-14 18:28:22 +0000
commite57872ee8ed5a74c52a208355a2585e8670c5f5a (patch)
treed1f60e9539e3328cda6ef52af8af6095c5e5362f
parent156c01601daa73cb19b7a77b630ad49424c9bcf7 (diff)
downloadgcc-e57872ee8ed5a74c52a208355a2585e8670c5f5a.zip
gcc-e57872ee8ed5a74c52a208355a2585e8670c5f5a.tar.gz
gcc-e57872ee8ed5a74c52a208355a2585e8670c5f5a.tar.bz2
re PR c++/58477 (ice in cgraph_speculative_call_info)
PR middle-end/58477 * cgraphclones.c (cgraph_clone_edge): Do not resolve speculative edges. From-SVN: r205991
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cgraphclones.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4c68beb..ab586ff 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2013-12-14 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/58477
+ * cgraphclones.c (cgraph_clone_edge): Do not resolve speculative edges.
+
2013-12-14 H.J. Lu <hongjiu.lu@intel.com>
PR target/59492
diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
index 90ef901..80ed170 100644
--- a/gcc/cgraphclones.c
+++ b/gcc/cgraphclones.c
@@ -123,7 +123,10 @@ cgraph_clone_edge (struct cgraph_edge *e, struct cgraph_node *n,
{
tree decl;
- if (call_stmt && (decl = gimple_call_fndecl (call_stmt)))
+ if (call_stmt && (decl = gimple_call_fndecl (call_stmt))
+ /* When the call is speculative, we need to resolve it
+ via cgraph_resolve_speculation and not here. */
+ && !e->speculative)
{
struct cgraph_node *callee = cgraph_get_node (decl);
gcc_checking_assert (callee);