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 <ce...@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);