Hi Cesar! I noticed while working on other test cases:
On Wed, 18 Nov 2015 11:02:01 -0800, Cesar Philippidis <ce...@codesourcery.com> wrote: > --- a/gcc/cp/parser.c > +++ b/gcc/cp/parser.c > @@ -1318,13 +1318,21 @@ cp_finalize_omp_declare_simd (cp_parser *parser, tree > fndecl) > } > } > > -/* Diagnose if #pragma omp routine isn't followed immediately > - by function declaration or definition. */ > +/* Diagnose if #pragma acc routine isn't followed immediately by function > + declaration or definition. */ > > static inline void > cp_ensure_no_oacc_routine (cp_parser *parser) > { > - cp_finalize_oacc_routine (parser, NULL_TREE, false, true); > + if (parser->oacc_routine && !parser->oacc_routine->error_seen) > + { > + 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 " > + "declaration or definition"); > + parser->oacc_routine = NULL; > + } > } "#pragma acc routine", not "oacc". Also in a few other places. Next, in the function quoted above, you use "not followed by function declaration or definition", but you use "not followed by a single function declaration or definition" in a lot of (but not all) other places -- is that intentional? For example: > cp_parser_oacc_routine (cp_parser *parser, cp_token *pragma_tok, > enum pragma_context context) > { > [...] > + error_at (OMP_CLAUSE_LOCATION (parser->oacc_routine->clauses), > + "%<#pragma oacc routine%> not followed by a single " > + "function declaration or definition"); "a single". > [...] > + if (parser->oacc_routine > + && !parser->oacc_routine->error_seen > + && !parser->oacc_routine->fndecl_seen) > + error_at (loc, "%<#pragma acc routine%> not followed by " > + "function declaration or definition"); Not "a single". > + > + data.tokens.release (); > + parser->oacc_routine = NULL; > + } > + } > +} > + > +/* Finalize #pragma acc routine clauses after direct declarator has > + been parsed, and put that into "oacc routine" attribute. */ There is no "oacc routine" attribute (anymore)? > +static tree > +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 " > + "function declaration or definition"); "a single". (I have not verified all of the parser(s) source code.) Grüße Thomas
signature.asc
Description: PGP signature