[gomp4] c++ delete clause

Cesar Philippidis cesar@codesourcery.com
Mon Oct 20 20:27:00 GMT 2014


On 10/20/2014 01:18 PM, Jakub Jelinek wrote:
> On Mon, Oct 20, 2014 at 01:12:08PM -0700, Cesar Philippidis wrote:
>> The OpenACC delete clause isn't detected in the c++ front end because
>> the lexer classifies it as a keyword, which it is. This patch makes the
>> openacc pragma parser aware of that.
>>
>> I've committed this patch to gomp-4_0-branch. A test case will be
>> included in a follow up patch along with support for the acc enter/exit
>> data directive.
>>
>> Cesar
> 
>> 2014-10-20  Cesar Philippidis  <cesar@codesourcery.com>
>>
>> 	gcc/cp/
>> 	* parser.c (cp_parser_omp_clause_name): Also consider CPP_KEYWORD
>> 	typed tokens as clauses for delete.
>>
>>
>> diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
>> index 8fd470a..19cbf37 100644
>> --- a/gcc/cp/parser.c
>> +++ b/gcc/cp/parser.c
>> @@ -27321,7 +27321,9 @@ cp_parser_omp_clause_name (cp_parser *parser)
>>      result = PRAGMA_OMP_CLAUSE_PRIVATE;
>>    else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_FOR))
>>      result = PRAGMA_OMP_CLAUSE_FOR;
>> -  else if (cp_lexer_next_token_is (parser->lexer, CPP_NAME))
>> +  /* The lexer classifies "delete" as a keyword.  */
>> +  else if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)
>> +	   || cp_lexer_next_token_is (parser->lexer, CPP_KEYWORD))
>>      {
>>        tree id = cp_lexer_peek_token (parser->lexer)->u.value;
>>        const char *p = IDENTIFIER_POINTER (id);
> 
> See how private or for clauses are handled earlier, you should
> not need to parse identifier to handle RID_DELETE as
> PRAGMA_OACC_CLAUSE_DELETE.

I forgot about private being a keyword in c++. Thanks for the pointer!
I'll fix the handling of delete accordingly.

Thanks,
Cesar



More information about the Gcc-patches mailing list