+2015-02-20 Jakub Jelinek <jakub@redhat.com>
+ Martin Liska <mliska@suse.cz>
+
+ PR target/63892
+ * ipa-icf.c (sem_function::merge): If DECL_COMDAT_GROUP (alias->decl),
+ don't try to create_thunk if stdarg_p. If
+ !sem_item::target_supports_symbol_aliases_p (), similarly, and try to
+ redirect_callers if possible.
+ (sem_item_optimizer::execute): Call unregister_hooks here...
+ (ipa_icf_driver): ... instead of here.
+
2015-02-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/aarch64.md (*aarch64_lshr_sisd_or_int_<mode>3):
section (or we risk link failures when section is discarded). */
if ((original_address_matters
&& alias_address_matters)
- || original_discardable)
+ || original_discardable
+ || DECL_COMDAT_GROUP (alias->decl)
+ || !sem_item::target_supports_symbol_aliases_p ())
{
create_thunk = !stdarg_p (TREE_TYPE (alias->decl));
create_alias = false;
the extra thunk wrapper for direct calls. */
redirect_callers
= (!original_discardable
+ && !DECL_COMDAT_GROUP (alias->decl)
&& alias->get_availability () > AVAIL_INTERPOSABLE
&& original->get_availability () > AVAIL_INTERPOSABLE
&& !alias->instrumented_version);
redirect_callers = false;
}
- if (create_alias && (DECL_COMDAT_GROUP (alias->decl)
- || !sem_item::target_supports_symbol_aliases_p ()))
- {
- create_alias = false;
- create_thunk = true;
- }
-
/* We want thunk to always jump to the local function body
unless the body is comdat and may be optimized out. */
if ((create_thunk || redirect_callers)
sem_item_optimizer::execute (void)
{
filter_removed_items ();
+ unregister_hooks ();
+
build_hash_based_classes ();
if (dump_file)
gcc_assert (optimizer);
optimizer->execute ();
- optimizer->unregister_hooks ();
delete optimizer;
optimizer = NULL;