]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/cgraphunit.c
* testsuite/g++.dg/ipa/devirt-11.C: Update template.
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 8 Sep 2013 16:42:21 +0000 (16:42 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 8 Sep 2013 16:42:21 +0000 (16:42 +0000)
commite2fa5d74eb579749f3b615135ce6c8abbc76f5cf
tree6aaf6ed20bc90f69bf381f4674ecd79f8abee69c
parent332db80a4abdb5cb51ee7eb226ddef2c26739f02
* testsuite/g++.dg/ipa/devirt-11.C: Update template.
* testsuite/g++.dg/ipa/devirt-16.C: New testcase.
* testsuite/g++.dg/ipa/devirt-17.C: New testcase.
* testsuite/g++.dg/ipa/devirt-18.C: New testcase.

* cgraphunit.c (walk_polymorphic_call_targets): Permit 0 possible
targets and devirtualize to BUILT_IN_UNREACHABLE.
* timevar.def (TV_IPA_UNREACHABLE): New timevar.
* ipa.c (walk_polymorphic_call_targets): New function.
(symtab_remove_unreachable_nodes): Use it; do not keep all virtual
functions; use the new timevar.
* ipa-devirt.c (maybe_record_node): Do not insert static nodes that
was removed from the program.
(record_binfo): If BINFO corresponds to an anonymous namespace, we may
not consider it in the walk when its vtable is dead.
(possible_polymorphic_call_targets_1): Pass anonymous flag to
record_binfo.
(devirt_variable_node_removal_hook): New function.
(possible_polymorphic_call_targets): Also register
devirt_variable_node_removal_hook.
(ipa_devirt): Do not do non-speculative devirtualization.
(gate_ipa_devirt): One execute if devirtualizing speculatively.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@202368 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/cgraphunit.c
gcc/ipa-devirt.c
gcc/ipa.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ipa/devirt-11.C
gcc/testsuite/g++.dg/ipa/devirt-16.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ipa/devirt-17.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ipa/devirt-18.C [new file with mode: 0644]
gcc/timevar.def