* ipa-cp.c (ipa_get_indirect_edge_target_1): Do direct
commit54176a576e3ab9dd6294a841d78d36f4e6d5aadc
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Feb 2014 05:40:21 +0000 (4 05:40 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Feb 2014 05:40:21 +0000 (4 05:40 +0000)
treec78cc4b81e9fffb8c0810f34976aecfcf20b5c3d
parent6750de5f4b3af5dec7aef10d88e4af628e36b909
* 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.

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

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