+2015-12-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/68645
+ * parser.c (cp_parser_direct_declarator)
+ (cp_parser_late_return_type_opt): Put Cilk+ attributes on
+ declarator->attributes, not std_attributes.
+
2015-12-04 David Malcolm <dmalcolm@redhat.com>
* cp-tree.h (class cp_expr): New class.
/* In here, we handle cases where attribute is used after
the function declaration. For example:
void func (int x) __attribute__((vector(..))); */
+ tree gnu_attrs = NULL_TREE;
if (flag_cilkplus
&& cp_next_tokens_can_be_gnu_attribute_p (parser))
{
else if (!cp_parser_parse_definitely (parser))
;
else
- attrs = chainon (attr, attrs);
+ gnu_attrs = attr;
}
tree requires_clause = NULL_TREE;
late_return = (cp_parser_late_return_type_opt
late_return,
requires_clause);
declarator->std_attributes = attrs;
+ declarator->attributes = gnu_attrs;
/* Any subsequent parameter lists are to do with
return type, so are not those of the declared
function. */
requires_clause = cp_parser_requires_clause_opt (parser);
if (cilk_simd_fn_vector_p)
- declarator->std_attributes
+ declarator->attributes
= cp_parser_late_parsing_cilk_simd_fn_info (parser,
- declarator->std_attributes);
+ declarator->attributes);
if (declare_simd_p)
- declarator->std_attributes
+ declarator->attributes
= cp_parser_late_parsing_omp_declare_simd (parser,
- declarator->std_attributes);
+ declarator->attributes);
if (oacc_routine_p)
- declarator->std_attributes
+ declarator->attributes
= cp_parser_late_parsing_oacc_routine (parser,
- declarator->std_attributes);
+ declarator->attributes);
if (quals >= 0)
{
/* { dg-options "-fcilkplus" } */
/* { dg-prune-output "undeclared here \\(not in a function\\)|\[^\n\r\]* was not declared in this scope" } */
-void f () __attribute__((__simd__, __vector__)); /* { dg-error "in the same function marked as a Cilk Plus" "PR68158" { xfail c++ } } */
+void f () __attribute__((__simd__, __vector__)); /* { dg-error "in the same function marked as a Cilk Plus" "PR68158" } */