]> gcc.gnu.org Git - gcc.git/commit - gcc/ipa-devirt.c
devirt-11.C: Update template.
authorJan Hubicka <jh@suse.cz>
Sun, 8 Sep 2013 16:42:21 +0000 (18:42 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sun, 8 Sep 2013 16:42:21 +0000 (16:42 +0000)
commit3462aa02a699dc716bd366fee8fc1c85f7f94541
tree6aaf6ed20bc90f69bf381f4674ecd79f8abee69c
parent26e5b0fd2818c746fcd016bd1b6fa434204a5d72
devirt-11.C: Update template.

* 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.

From-SVN: r202368
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
This page took 0.060981 seconds and 5 git commands to generate.