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

Reply via email to