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