This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug ipa/80205] New: [5/6/7 Regression] ICE in walk_ssa_copies at ipa-polymorphic-call.c:835
- From: "marxin at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 27 Mar 2017 07:13:45 +0000
- Subject: [Bug ipa/80205] New: [5/6/7 Regression] ICE in walk_ssa_copies at ipa-polymorphic-call.c:835
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80205
Bug ID: 80205
Summary: [5/6/7 Regression] ICE in walk_ssa_copies at
ipa-polymorphic-call.c:835
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: ipa
Assignee: unassigned at gcc dot gnu.org
Reporter: marxin at gcc dot gnu.org
CC: hubicka at ucw dot cz
Target Milestone: ---
Following test-case triggers ICE:
$ cat ice.ii
class a
{
public:
virtual ~a ();
};
class b
{
public:
template <typename c> b (c);
~b () { delete d; }
void
operator= (b e)
{
b (e).f (*this);
}
void
f (b &e)
{
a g;
d = e.d;
e.d = &g;
}
a *d;
};
void
h ()
{
b i = int();
void j ();
i = j;
}
$ g++ -fnon-call-exceptions --param early-inlining-insns=100 -O2
-fdevirtualize ice.ii -c -std=c++14
ice.ii: In function ‘void h()’:
ice.ii:31:1: internal compiler error: Segmentation fault
}
^
0xdf34df crash_signal
../../gcc/toplev.c:337
0x10a3b9d integer_zerop(tree_node const*)
../../gcc/tree.c:2324
0xbf9be1 walk_ssa_copies
../../gcc/ipa-polymorphic-call.c:835
0xbf9f34 ipa_polymorphic_call_context::ipa_polymorphic_call_context(tree_node*,
tree_node*, gimple*, tree_node**)
../../gcc/ipa-polymorphic-call.c:898
0xb6160a possible_polymorphic_call_targets(tree_node*, gimple*, bool*, void**)
../../gcc/ipa-utils.h:126
0xb5f868 gimple_fold_call
../../gcc/gimple-fold.c:3687
0xb5f868 fold_stmt_1
../../gcc/gimple-fold.c:4438
0xe690d6 fold_marked_statements
../../gcc/tree-inline.c:4946
0xe79134 optimize_inline_calls(tree_node*)
../../gcc/tree-inline.c:5026
0x1536681 early_inliner(function*)
../../gcc/ipa-inline.c:2721
It's caused by a PHI node created in:
#1 0x0000000000aa9fd4 in ggc_internal_alloc (size=<optimized out>,
f=<optimized out>, s=0, n=1) at ../../gcc/ggc-page.c:1390
#2 0x00000000010d60c1 in ggc_internal_alloc (s=248) at ../../gcc/ggc.h:134
#3 0x00000000010d685f in allocate_phi_node (len=4) at
../../gcc/tree-phinodes.c:117
#4 0x00000000010d6916 in make_phi_node (var=0x7ffff69ff3a8, len=0) at
../../gcc/tree-phinodes.c:174
#5 0x00000000010d6f04 in create_phi_node (var=0x7ffff69ff3a8,
bb=0x7ffff69f5d00) at ../../gcc/tree-phinodes.c:342
#6 0x000000000108d68d in copy_phis_for_bb (bb=0x7ffff69f5750,
id=0x7fffffffd550) at ../../gcc/tree-inline.c:2347
#7 0x000000000108ef4f in copy_cfg_body (id=0x7fffffffd550, count=0,
frequency_scale=10000, entry_block_map=0x7ffff686d3a8,
exit_block_map=0x7ffff69f5b60, new_entry=0x0) at ../../gcc/tree-inline.c:2796
#8 0x000000000108f7d0 in copy_body (id=0x7fffffffd550, count=0,
frequency_scale=10000, entry_block_map=0x7ffff686d3a8,
exit_block_map=0x7ffff69f5b60, new_entry=0x0) at ../../gcc/tree-inline.c:2982
#9 0x00000000010941a7 in expand_call_inline (bb=0x7ffff686d3a8,
stmt=0x7ffff69ea510, id=0x7fffffffd550) at ../../gcc/tree-inline.c:4725
#10 0x0000000001094a7b in gimple_expand_calls_inline (bb=0x7ffff686d3a8,
id=0x7fffffffd550) at ../../gcc/tree-inline.c:4870
#11 0x0000000001095002 in optimize_inline_calls (fn=0x7ffff69e6700) at
../../gcc/tree-inline.c:5010
#12 0x00000000018b5a62 in early_inliner (fun=0x7ffff69e0580) at
../../gcc/ipa-inline.c:2721
where the PHI looks as follows:
(gdb) p debug_gimple_stmt(phi)
SR.2_19 = PHI <>
$1 = void
I've got patch for that.