Bug 61540 - internal compiler error in try_make_edge_direct_virtual_call
Summary: internal compiler error in try_make_edge_direct_virtual_call
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: ipa (show other bugs)
Version: 4.9.0
: P3 normal
Target Milestone: ---
Assignee: Martin Jambor
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-06-17 19:53 UTC by Martin Jambor
Modified: 2014-06-20 11:28 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2014-06-18 00:00:00


Attachments
Simple testcase (270 bytes, text/x-c)
2014-06-17 19:53 UTC, Martin Jambor
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Jambor 2014-06-17 19:53:24 UTC
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.
Comment 1 Richard Biener 2014-06-18 07:51:45 UTC
Confirmed.
Comment 2 Martin Jambor 2014-06-18 12:15:42 UTC
I've proposed a fix on the mailing list:

https://gcc.gnu.org/ml/gcc-patches/2014-06/msg01430.html
Comment 3 Martin Jambor 2014-06-20 11:20:18 UTC
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
Comment 4 Martin Jambor 2014-06-20 11:27:14 UTC
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
Comment 5 Martin Jambor 2014-06-20 11:28:20 UTC
Fixed.