On Fri, Aug 13, 2021 at 11:14 AM Martin Liška <mli...@suse.cz> wrote:
>
> Hi.
>
> This is a first part fixing the PR. It makes sense making "naked" functions 
> "noipa".
> What's missing is IPA MOD pass support where the pass should not optimize fns
> with "noipa" attributes.
>
> @Honza: Can you please implement that?
>
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
>
> Ready to be installed?
> Thanks,
> Martin
>
>         PR ipa/101354
>
> gcc/ChangeLog:
>
>         * attribs.c (decl_attributes): Make naked functions "noipa"
>           functions.
> ---
>   gcc/attribs.c | 11 +++--------
>   1 file changed, 3 insertions(+), 8 deletions(-)
>
> diff --git a/gcc/attribs.c b/gcc/attribs.c
> index afa485ed37d..e149f5b66dd 100644
> --- a/gcc/attribs.c
> +++ b/gcc/attribs.c
> @@ -517,14 +517,9 @@ decl_attributes (tree *node, tree attributes, int flags,
>     if (TREE_CODE (*node) == FUNCTION_DECL
>         && attributes
>         && lookup_attribute ("naked", attributes) != NULL
> -      && lookup_attribute_spec (get_identifier ("naked")))
> -    {
> -      if (lookup_attribute ("noinline", attributes) == NULL)
> -       attributes = tree_cons (get_identifier ("noinline"), NULL, 
> attributes);
> -
> -      if (lookup_attribute ("noclone", attributes) == NULL)
> -       attributes = tree_cons (get_identifier ("noclone"),  NULL, 
> attributes);
> -    }
> +      && lookup_attribute_spec (get_identifier ("naked"))
> +      &&(lookup_attribute ("noipa", attributes) == NULL))
> +       attributes = tree_cons (get_identifier ("noipa"), NULL, attributes);

that adds noipa only for the purpose of "decomposing" it below.

>     /* A "noipa" function attribute implies "noinline", "noclone" and "no_icf"
>        for those targets that support it.  */
> --
> 2.32.0
>

Reply via email to