[PATCH] Fix rs6000 predicates.md use of decl_replaceable_p

Jan Hubicka hubicka@kam.mff.cuni.cz
Thu Nov 18 19:07:08 GMT 2021


> --- a/gcc/config/rs6000/predicates.md
> +++ b/gcc/config/rs6000/predicates.md
> @@ -1086,7 +1086,9 @@ (define_predicate "current_file_function_operand"
>         (match_test "(DEFAULT_ABI != ABI_AIX || SYMBOL_REF_FUNCTION_P (op))
>                     && (SYMBOL_REF_LOCAL_P (op)
>                         || (op == XEXP (DECL_RTL (current_function_decl), 0)
> -                           && !decl_replaceable_p (current_function_decl)))
> +                           && !decl_replaceable_p (current_function_decl,
> +                                                   opt_for_fn
> (current_function_decl,
> +
> flag_semantic_interposition))))

Thanks, missed the use of the predicate here.
However it is not clear to me why one would care about semantic
interposition at this level.  It seems to me that one more cares whether
the symbol must be always resolved locally.  In this case
cgraph_node::get (current_function_decl)->binds_to_current_def_p (cgraph_node::get (current_function_decl))
would give right answer (and work for cases like functions in comdat groups)

Honza
>                     && !((DEFAULT_ABI == ABI_AIX
>                           || DEFAULT_ABI == ABI_ELFv2)
>                          && (SYMBOL_REF_EXTERNAL_P (op)


More information about the Gcc-patches mailing list