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

Jason Merrill jason@redhat.com
Mon Aug 7 14:54:00 GMT 2017


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"?

Jason



More information about the Libstdc++ mailing list