diff options
Diffstat (limited to 'gcc/cp/parser.c')
-rw-r--r-- | gcc/cp/parser.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 3ee8da7..9bf690a 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -40488,6 +40488,8 @@ cp_parser_omp_context_selector (cp_parser *parser, tree set, bool has_parms_p) else properties = tree_cons (NULL_TREE, t, properties); } + else + return error_mark_node; if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) cp_lexer_consume_token (parser->lexer); @@ -40532,6 +40534,8 @@ cp_parser_omp_context_selector (cp_parser *parser, tree set, bool has_parms_p) else properties = tree_cons (NULL_TREE, t, properties); } + else + return error_mark_node; break; case CTX_PROPERTY_SIMD: if (!has_parms_p) @@ -40541,11 +40545,10 @@ cp_parser_omp_context_selector (cp_parser *parser, tree set, bool has_parms_p) "%<metadirective%>"); return error_mark_node; } - tree c; - c = cp_parser_omp_all_clauses (parser, + properties + = cp_parser_omp_all_clauses (parser, OMP_DECLARE_SIMD_CLAUSE_MASK, "simd", NULL, true, true); - properties = tree_cons (NULL_TREE, c, properties); break; default: gcc_unreachable (); @@ -40662,7 +40665,7 @@ cp_parser_omp_context_selector_specification (cp_parser *parser, } /* Finalize #pragma omp declare variant after a fndecl has been parsed, and put - that into "omp declare variant" attribute. */ + that into "omp declare variant base" attribute. */ static tree cp_finish_omp_declare_variant (cp_parser *parser, cp_token *pragma_tok, @@ -40717,7 +40720,7 @@ cp_finish_omp_declare_variant (cp_parser *parser, cp_token *pragma_tok, ctx = c_omp_check_context_selector (match_loc, ctx); if (ctx != error_mark_node && variant != error_mark_node) { - attrs = tree_cons (get_identifier ("omp declare variant"), + attrs = tree_cons (get_identifier ("omp declare variant base"), build_tree_list (variant, ctx), attrs); if (processing_template_decl) ATTR_IS_DEPENDENT (attrs) = 1; |