On 12/03/2015 12:36 AM, Thomas Schwinge wrote: >> Here's the updated patch. > > ENOPATCH.
Here it is. >> The test cases were written in a way such that >> none of them needed to be updated with these changes. > > ... which potentially means they'd match for all kinds of "random" > diagnostics. ;-) They were supposed to be generic enough so that they work both in c and c++. But, yeah, that randomness is likely. >> I'm tempted to commit this as obvious, but I want to make sure you're ok >> with these new messages. > > I don't care very much, as long as it's understandable for a user. I > just tripped over this because of mismatches between C and C++ as well as > different C++ diagnostic variants. > >> The major change is to report these errors as >> "pragma acc routine not followed by a function declaration or >> definition". I think that's more descriptive then "not followed by a >> single function". That said, it looks like the c front end uses the >> latter error message. > > (In the C front end, the "a" is missing: "not followed by single > function"; that should be fixed up as well.) > >> Is this OK or do you prefer the "not followed by a single function" message? > > "not followed by a function declaration or definition" sounds good to me. Ok, I'll apply this patch in a couple of hours. Cesar
2015-12-02 Cesar Philippidis <ce...@codesourcery.com> gcc/cp/ * parser.c (cp_ensure_no_oacc_routine): Update error message. (cp_parser_oacc_routine): Likewise. (cp_parser_late_parsing_oacc_routine): Likewise. Update comment describing this function. (cp_finalize_oacc_routine): Update error message. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index b4ecac7..1c14354 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -1329,7 +1329,7 @@ cp_ensure_no_oacc_routine (cp_parser *parser) tree clauses = parser->oacc_routine->clauses; location_t loc = OMP_CLAUSE_LOCATION (TREE_PURPOSE (clauses)); - error_at (loc, "%<#pragma oacc routine%> not followed by function " + error_at (loc, "%<#pragma acc routine%> not followed by a function " "declaration or definition"); parser->oacc_routine = NULL; } @@ -35857,7 +35857,7 @@ cp_parser_oacc_routine (cp_parser *parser, cp_token *pragma_tok, cp_parser_require_pragma_eol (parser, pragma_tok); error_at (OMP_CLAUSE_LOCATION (parser->oacc_routine->clauses), - "%<#pragma oacc routine%> not followed by a single " + "%<#pragma acc routine%> not followed by a " "function declaration or definition"); parser->oacc_routine->error_seen = true; @@ -35962,7 +35962,7 @@ cp_parser_oacc_routine (cp_parser *parser, cp_token *pragma_tok, if (parser->oacc_routine && !parser->oacc_routine->error_seen && !parser->oacc_routine->fndecl_seen) - error_at (loc, "%<#pragma acc routine%> not followed by " + error_at (loc, "%<#pragma acc routine%> not followed by a " "function declaration or definition"); data.tokens.release (); @@ -35972,7 +35972,7 @@ cp_parser_oacc_routine (cp_parser *parser, cp_token *pragma_tok, } /* Finalize #pragma acc routine clauses after direct declarator has - been parsed, and put that into "oacc routine" attribute. */ + been parsed, and put that into "oacc function" attribute. */ static tree cp_parser_late_parsing_oacc_routine (cp_parser *parser, tree attrs) @@ -35987,7 +35987,7 @@ cp_parser_late_parsing_oacc_routine (cp_parser *parser, tree attrs) if ((!data->error_seen && data->fndecl_seen) || data->tokens.length () != 1) { - error_at (loc, "%<#pragma oacc routine%> not followed by a single " + error_at (loc, "%<#pragma acc routine%> not followed by a " "function declaration or definition"); data->error_seen = true; return attrs; @@ -36003,7 +36003,7 @@ cp_parser_late_parsing_oacc_routine (cp_parser *parser, tree attrs) cp_token *pragma_tok = cp_lexer_consume_token (parser->lexer); cl = cp_parser_oacc_all_clauses (parser, OACC_ROUTINE_CLAUSE_MASK, - "#pragma oacc routine", pragma_tok); + "#pragma acc routine", pragma_tok); cp_parser_pop_lexer (parser); tree c_head = build_omp_clause (loc, OMP_CLAUSE_SEQ); @@ -36044,7 +36044,8 @@ cp_finalize_oacc_routine (cp_parser *parser, tree fndecl, bool is_defn) if (!fndecl || TREE_CODE (fndecl) != FUNCTION_DECL) { error_at (loc, - "%<#pragma acc routine%> not followed by single function"); + "%<#pragma acc routine%> not followed by a function " + "declaration or definition"); parser->oacc_routine = NULL; }