[PATCH] Fix rs6000 predicates.md use of decl_replaceable_p

David Edelsohn dje.gcc@gmail.com
Thu Nov 18 19:13:29 GMT 2021


On Thu, Nov 18, 2021 at 2:07 PM Jan Hubicka <hubicka@kam.mff.cuni.cz> wrote:
>
> > --- 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)

Hi, Honza

I was trying to fix bootstrap as quickly as possible and used the best
example that I could find.  It definitely can be refined.

Thanks for suggesting a better design. I'll test it.

Thanks, David

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


More information about the Gcc-patches mailing list