This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Improve -Ofast vectorization of std::sin etc. (PR libstdc++/81706)


On Mon, Aug 07, 2017 at 10:54:18AM -0400, Jason Merrill wrote:
> On 08/07/2017 05:08 AM, Jakub Jelinek wrote:
> > +		  tree s = lookup_attribute ("omp declare simd",
> > +					     DECL_ATTRIBUTES (newdecl));
> > +		  if (s)
> > +		    {
> > +		      tree b
> > +			= builtin_decl_explicit (DECL_FUNCTION_CODE (newdecl));
> > +		      if (b)
> > +			{
> > +			  tree s2 = lookup_attribute ("omp declare simd",
> > +						      DECL_ATTRIBUTES (b));
> > +			  while (s)
> > +			    {
> > +			      tree s3;
> > +			      for (s3 = s2; s3;
> > +				   s3 = lookup_attribute ("omp declare simd",
> > +							  TREE_CHAIN (s3)))
> > +				if (attribute_value_equal (s, s3))
> > +				  break;
> > +			      if (!s3)
> > +				{
> > +				  s3 = copy_node (s);
> > +				  TREE_CHAIN (s3) = DECL_ATTRIBUTES (b);
> > +				  DECL_ATTRIBUTES (b) = s3;
> > +				}
> > +			      s = lookup_attribute ("omp declare simd",
> > +						    TREE_CHAIN (s));
> > +			    }
> > +			}
> > +		    }
> 
> This should really be a separate function.  Perhaps "merge_one_attribute"?

If it is outlined without the first 7 lines, i.e. just the body of if (b),
then it could be duplicate_one_attribute (tree *, tree, const char *);
called like if (b) duplicate_one_attribute (&DECL_ATTRIBUTES (b), s, "omp declare simd");
If it is duplicated as whole, it should be called
duplicate_one_attr_to_builtin or something similar.
In any case, it could be in tree.c or attribs.c.

The primary question is if we want this behavior, or if we should go the
libstdc++ patch routine (and for Jonathan the question is if he knows
why __builtin_XXXf has been used there rather than the ::XXXf).

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]