Created attachment 32958 [details] Simple testcase $ ~/gcc/trunk/inst/bin/g++ pr.C -O3 -fno-early-inlining -S pr.C:38:1: internal compiler error: in try_make_edge_direct_virtual_call, at ipa-prop.c:3007 } ^ 0xa39460 try_make_edge_direct_virtual_call /home/mjambor/gcc/trunk/src/gcc/ipa-prop.c:3006 0xa39460 update_indirect_edges_after_inlining /home/mjambor/gcc/trunk/src/gcc/ipa-prop.c:3062 0xa39460 propagate_info_to_inlined_callees /home/mjambor/gcc/trunk/src/gcc/ipa-prop.c:3138 0xa38e1e propagate_info_to_inlined_callees /home/mjambor/gcc/trunk/src/gcc/ipa-prop.c:3142 0x10dd48c inline_call(cgraph_edge*, bool, vec<cgraph_edge*, va_heap, vl_ptr>*, int*, bool, bool*) /home/mjambor/gcc/trunk/src/gcc/ipa-inline-transform.c:282 0x10da041 recursive_inlining /home/mjambor/gcc/trunk/src/gcc/ipa-inline.c:1401 0x10da041 inline_small_functions /home/mjambor/gcc/trunk/src/gcc/ipa-inline.c:1773 0x10da041 ipa_inline /home/mjambor/gcc/trunk/src/gcc/ipa-inline.c:2190 0x10da041 execute /home/mjambor/gcc/trunk/src/gcc/ipa-inline.c:2552 The testcase does invoke undefined behavior but the assert triggering this should emit a builtin_unreachable instead.
Confirmed.
I've proposed a fix on the mailing list: https://gcc.gnu.org/ml/gcc-patches/2014-06/msg01430.html
Author: jamborm Date: Fri Jun 20 11:19:46 2014 New Revision: 211847 URL: https://gcc.gnu.org/viewcvs?rev=211847&root=gcc&view=rev Log: 2014-06-20 Martin Jambor <mjambor@suse.cz> PR ipa/61540 * ipa-prop.c (impossible_devirt_target): New function. (try_make_edge_direct_virtual_call): Use it, also instead of asserting. testsuite/ * g++.dg/ipa/pr61540.C: New test. Added: trunk/gcc/testsuite/g++.dg/ipa/pr61540.C Modified: trunk/gcc/ChangeLog trunk/gcc/ipa-prop.c trunk/gcc/testsuite/ChangeLog
Author: jamborm Date: Fri Jun 20 11:26:42 2014 New Revision: 211848 URL: https://gcc.gnu.org/viewcvs?rev=211848&root=gcc&view=rev Log: 2014-06-20 Martin Jambor <mjambor@suse.cz> PR ipa/61540 * ipa-prop.c (impossible_devirt_target): New function. (try_make_edge_direct_virtual_call): Use it, also instead of asserting. testsuite/ * g++.dg/ipa/pr61540.C: New test. Added: branches/gcc-4_9-branch/gcc/testsuite/g++.dg/ipa/pr61540.C Modified: branches/gcc-4_9-branch/gcc/ChangeLog branches/gcc-4_9-branch/gcc/ipa-prop.c branches/gcc-4_9-branch/gcc/testsuite/ChangeLog
Fixed.