diff options
author | Jan Hubicka <jh@suse.cz> | 2014-02-04 06:40:21 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-02-04 05:40:21 +0000 |
commit | 5bccb77a773b916d4824688e9138921f93c35039 (patch) | |
tree | c78cc4b81e9fffb8c0810f34976aecfcf20b5c3d /gcc/ipa-utils.h | |
parent | 9de2f554ec689296676dee4f4482e059438a5991 (diff) | |
download | gcc-5bccb77a773b916d4824688e9138921f93c35039.zip gcc-5bccb77a773b916d4824688e9138921f93c35039.tar.gz gcc-5bccb77a773b916d4824688e9138921f93c35039.tar.bz2 |
ipa-cp.c (ipa_get_indirect_edge_target_1): Do direct lookup via vtable pointer...
* 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.
From-SVN: r207448
Diffstat (limited to 'gcc/ipa-utils.h')
-rw-r--r-- | gcc/ipa-utils.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/ipa-utils.h b/gcc/ipa-utils.h index 3f9be17..d595e8a 100644 --- a/gcc/ipa-utils.h +++ b/gcc/ipa-utils.h @@ -87,6 +87,8 @@ tree method_class_type (tree); tree get_polymorphic_call_info (tree, tree, tree *, HOST_WIDE_INT *, ipa_polymorphic_call_context *); +bool get_polymorphic_call_info_from_invariant (ipa_polymorphic_call_context *, + tree, tree, HOST_WIDE_INT); tree vtable_pointer_value_to_binfo (tree t); bool vtable_pointer_value_to_vtable (tree, tree *, unsigned HOST_WIDE_INT *); |