diff mbox series

testsuite: Use noipa and noinline attributes for pr95115 test

Message ID 20230127114627.243812-1-xry111@xry111.site
State New
Headers show
Series testsuite: Use noipa and noinline attributes for pr95115 test | expand

Commit Message

Xi Ruoyao Jan. 27, 2023, 11:46 a.m. UTC
They prevent the compiler from deeming the NaN result "unused" and
remove the calculation raising INVALID exception. See the discussion
in PR107608 for details.

Tested on x86_64-linux-gnu where the change fixes the test failure.
Ok for trunk?

gcc/testsuite/ChangeLog:

	* gcc.dg/pr95115.c (x): Add noipa and noinline attributes.
---
 gcc/testsuite/gcc.dg/pr95115.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jakub Jelinek Jan. 27, 2023, 11:50 a.m. UTC | #1
On Fri, Jan 27, 2023 at 07:46:27PM +0800, Xi Ruoyao wrote:
> They prevent the compiler from deeming the NaN result "unused" and
> remove the calculation raising INVALID exception. See the discussion
> in PR107608 for details.
> 
> Tested on x86_64-linux-gnu where the change fixes the test failure.
> Ok for trunk?
> 
> gcc/testsuite/ChangeLog:
> 
> 	* gcc.dg/pr95115.c (x): Add noipa and noinline attributes.

noipa implies noinline, so unless one targets both very old gcc versions
which didn't have noipa attribute in addition to current ones, it is
sufficient to specify just noipa.

Otherwise LGTM.

> diff --git a/gcc/testsuite/gcc.dg/pr95115.c b/gcc/testsuite/gcc.dg/pr95115.c
> index 69c4f83250c..11620acccae 100644
> --- a/gcc/testsuite/gcc.dg/pr95115.c
> +++ b/gcc/testsuite/gcc.dg/pr95115.c
> @@ -6,7 +6,7 @@
>  #include <fenv.h>
>  #include <stdlib.h>
>  
> -double
> +__attribute__ ((noipa, noinline)) double
>  x (void)
>  {
>    double d = __builtin_inf ();
> -- 
> 2.39.1

	Jakub
Xi Ruoyao Jan. 27, 2023, 12:08 p.m. UTC | #2
On Fri, 2023-01-27 at 12:50 +0100, Jakub Jelinek wrote:
> On Fri, Jan 27, 2023 at 07:46:27PM +0800, Xi Ruoyao wrote:
> > They prevent the compiler from deeming the NaN result "unused" and
> > remove the calculation raising INVALID exception. See the discussion
> > in PR107608 for details.
> > 
> > Tested on x86_64-linux-gnu where the change fixes the test failure.
> > Ok for trunk?
> > 
> > gcc/testsuite/ChangeLog:
> > 
> >         * gcc.dg/pr95115.c (x): Add noipa and noinline attributes.
> 
> noipa implies noinline, so unless one targets both very old gcc
> versions
> which didn't have noipa attribute in addition to current ones, it is
> sufficient to specify just noipa.
> 
> Otherwise LGTM.

Pushed with only noipa.  I must have some flawed memory abort the
interaction between noipa and noinline.  Thanks for pointing that out!
Jakub Jelinek Jan. 27, 2023, 12:14 p.m. UTC | #3
On Fri, Jan 27, 2023 at 08:08:26PM +0800, Xi Ruoyao via Gcc-patches wrote:
> On Fri, 2023-01-27 at 12:50 +0100, Jakub Jelinek wrote:
> > On Fri, Jan 27, 2023 at 07:46:27PM +0800, Xi Ruoyao wrote:
> > > They prevent the compiler from deeming the NaN result "unused" and
> > > remove the calculation raising INVALID exception. See the discussion
> > > in PR107608 for details.
> > > 
> > > Tested on x86_64-linux-gnu where the change fixes the test failure.
> > > Ok for trunk?
> > > 
> > > gcc/testsuite/ChangeLog:
> > > 
> > >         * gcc.dg/pr95115.c (x): Add noipa and noinline attributes.
> > 
> > noipa implies noinline, so unless one targets both very old gcc
> > versions
> > which didn't have noipa attribute in addition to current ones, it is
> > sufficient to specify just noipa.
> > 
> > Otherwise LGTM.
> 
> Pushed with only noipa.  I must have some flawed memory abort the
> interaction between noipa and noinline.  Thanks for pointing that out!

  /* A "noipa" function attribute implies "noinline", "noclone" and "no_icf"
     for those targets that support it.  */
  if (TREE_CODE (*node) == FUNCTION_DECL
      && attributes
      && lookup_attribute ("noipa", attributes) != NULL
      && lookup_attribute_spec (get_identifier ("noipa")))
    {
      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);

      if (lookup_attribute ("no_icf", attributes) == NULL)
        attributes = tree_cons (get_identifier ("no_icf"),  NULL, attributes);
    }

plus various spots check just for "noipa", so noipa isn't just equivalent to
noinline, noclone, no_icf.

	Jakub
diff mbox series

Patch

diff --git a/gcc/testsuite/gcc.dg/pr95115.c b/gcc/testsuite/gcc.dg/pr95115.c
index 69c4f83250c..11620acccae 100644
--- a/gcc/testsuite/gcc.dg/pr95115.c
+++ b/gcc/testsuite/gcc.dg/pr95115.c
@@ -6,7 +6,7 @@ 
 #include <fenv.h>
 #include <stdlib.h>
 
-double
+__attribute__ ((noipa, noinline)) double
 x (void)
 {
   double d = __builtin_inf ();