On Fri, 2 Mar 2018, Jakub Jelinek wrote:

> Hi!
> 
> If we need to use thunks for ICF to functions with warning or error
> attribute, their expansion will warn or error.  This patch just punts
> in those cases instead.
> 
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

Looks ok but I wonder if marking the call in the thunk with no-warning
would work as well?

Richard.

> 2018-03-02  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR ipa/84628
>       * ipa-icf.c (sem_function::merge): Don't create wrappers for
>       functions with warning or error attributes.
> 
>       * gcc.dg/pr84628.c: New test.
> 
> --- gcc/ipa-icf.c.jj  2018-01-04 12:37:25.365487352 +0100
> +++ gcc/ipa-icf.c     2018-03-01 11:48:54.023107823 +0100
> @@ -1213,6 +1213,15 @@ sem_function::merge (sem_item *alias_ite
>         if (dump_file)
>           fprintf (dump_file, "Wrappers are not created for noinline.\n");
>       }
> +      /* Calls in the thunks would warn or error if we create a wrapper
> +      for functions with warning or error attribute.  */
> +      else if (lookup_attribute ("warning", DECL_ATTRIBUTES (original->decl))
> +            || lookup_attribute ("error", DECL_ATTRIBUTES (original->decl)))
> +     {
> +       if (dump_file)
> +         fprintf (dump_file, "Wrappers are not created for error/warning "
> +                             "attribute.\n");
> +     }
>        else
>          create_wrapper = true;
>  
> --- gcc/testsuite/gcc.dg/pr84628.c.jj 2018-03-01 11:30:39.121021498 +0100
> +++ gcc/testsuite/gcc.dg/pr84628.c    2018-03-01 11:28:41.383127588 +0100
> @@ -0,0 +1,8 @@
> +/* PR ipa/84628 */
> +/* { dg-do compile } */
> +/* { dg-options "-O2" } */
> +
> +int f0 (void);
> +__attribute__((error ("err"))) void f1 (void) { f0 (); f0 (); }
> +__attribute__((error ("err"))) void f2 (void) { f0 (); f0 (); }
> +/* { dg-bogus "declared with attribute error" "" { target *-*-* } 0 } */
> 
>       Jakub
> 
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 
21284 (AG Nuernberg)

Reply via email to