Rework C/C++ OpenACC routine parsing (was: C/C++: Simplify handling of location information for OpenACC routine directives)

Jakub Jelinek jakub@redhat.com
Fri Jul 22 14:22:00 GMT 2016


On Wed, Jul 13, 2016 at 04:10:31PM +0200, Thomas Schwinge wrote:
> @@ -14029,29 +14032,32 @@ c_parser_oacc_kernels_parallel (location_t loc, c_parser *parser,
>  static void
>  c_parser_oacc_routine (c_parser *parser, enum pragma_context context)
>  {
> -  tree decl = NULL_TREE;
> +  gcc_checking_assert (context == pragma_external);
> +
>    oacc_routine_data data;
> +  data.error_seen = false;
> +  data.fndecl_seen = false;
>    data.clauses = NULL_TREE;
>    data.loc = c_parser_peek_token (parser)->location;
> -  
> -  if (context != pragma_external)
> -    c_parser_error (parser, "%<#pragma acc routine%> not at file scope");
>  
>    c_parser_consume_pragma (parser);
>  
> -  /* Scan for optional '( name )'.  */
> +  /* Look for optional '( name )'.  */
>    if (c_parser_peek_token (parser)->type == CPP_OPEN_PAREN)

Can you please change this to
  if (c_parser_next_token_is (parser, CPP_OPEN_PAREN))
?
Ok for trunk with that change.

	Jakub



More information about the Gcc-patches mailing list