https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82060
Bug ID: 82060
Summary: [7/8 Regression] ICE in refs_may_alias_p_1 with
devirtualization enabled
Product: gcc
Version: 7.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: wielkiegie at gmail dot com
Target Milestone: ---
Created attachment 42095
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42095&action=edit
Annotated test case used in order to reproduce the bug
Attached is a minimal test case that triggers an Internal Compiler Error in
refs_may_alias_p_1 when compiling at least with -O1 -fdevirtualize. The bug
occurs on gcc 7 and the current snapshot (tested on godbolt).
I have tried to check which -O1 optimization is needed alongside -fdevirtualize
in order to trigger this bug, but when I replaced -O1 with a list of -f options
from the gcc manual the bug went away. I also tried to list the -O1
optimizations using `-Q --help=optimizers', but it didn't help. It might be
something not listed there or otherwise hidden inside the -O1 setting.
Comments in the test case show what is needed in order to encounter this bug.
Some of these might be erroneous, but if I tried to simplify/change any of
these, the bug goes away.
$ g++ -O1 -fdevirtualize testcase.cpp
testcase.cpp: In function ‘void foo(D&)’:
testcase.cpp:30:1: internal compiler error: in refs_may_alias_p_1, at
tree-ssa-alias.c:1538
}
^
0xbd1e49 refs_may_alias_p_1(ao_ref*, ao_ref*, bool)
../../gcc/tree-ssa-alias.c:1538
0xbd3369 stmt_may_clobber_ref_p_1(gimple*, ao_ref*)
../../gcc/tree-ssa-alias.c:2289
0xbd3b0a walk_aliased_vdefs_1
../../gcc/tree-ssa-alias.c:2947
0xbd3b9d walk_aliased_vdefs_1
../../gcc/tree-ssa-alias.c:2934
0xbd3c41 walk_aliased_vdefs(ao_ref*, tree_node*, bool (*)(ao_ref*, tree_node*,
void*), void*, bitmap_head**, bool*, unsigned int)
../../gcc/tree-ssa-alias.c:2970
0x96d2ec ipa_polymorphic_call_context::get_dynamic_type(tree_node*, tree_node*,
tree_node*, gimple*)
../../gcc/ipa-polymorphic-call.c:1680
0xc43392 eliminate_dom_walker::before_dom_children(basic_block_def*)
../../gcc/tree-ssa-pre.c:4604
0x10fe12a dom_walker::walk(basic_block_def*)
../../gcc/domwalk.c:265
0xc42c01 eliminate
../../gcc/tree-ssa-pre.c:4773
0xc42f44 execute
../../gcc/tree-ssa-pre.c:5207
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.