* ipa-cp.c (ipa_get_indirect_edge_target_1): Do direct
commit6750de5f4b3af5dec7aef10d88e4af628e36b909
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Feb 2014 03:42:37 +0000 (4 03:42 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Feb 2014 03:42:37 +0000 (4 03:42 +0000)
tree27d5b0441b9bc4563a35749d28be56e44f3e21ec
parentbb737dbf41f5c62aab12909a4a2fe7e57313a0f5
* ipa-cp.c (ipa_get_indirect_edge_target_1): Do direct
lookup via vtable pointer; check for type consistency
and turn inconsitent facts into UNREACHABLE.
* ipa-prop.c (try_make_edge_direct_virtual_call): Likewise.
* gimple-fold.c (gimple_get_virt_method_for_vtable):
Do not ICE on type inconsistent querries; return UNREACHABLE
instead.

* g++.dg/ipa/devirt-25.C: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207447 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/gimple-fold.c
gcc/ipa-cp.c
gcc/ipa-prop.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ipa/devirt-25.C [new file with mode: 0644]