On Wed, Oct 21, 2015 at 03:16:20PM -0400, Nathan Sidwell wrote:
> 2015-10-20 Cesar Philippidis <[email protected]>
> Thomas Schwinge <[email protected]>
> James Norris <[email protected]>
> Joseph Myers <[email protected]>
> Julian Brown <[email protected]>
>
> * c-parser.c (c_parser_oacc_shape_clause): New.
> (c_parser_oacc_simple_clause): New.
> (c_parser_oacc_all_clauses): Add auto, gang, seq, vector, worker.
> (OACC_LOOP_CLAUSE_MASK): Add gang, worker, vector, auto, seq.
Ok, with one nit.
> /* OpenACC:
> + gang [( gang_expr_list )]
> + worker [( expression )]
> + vector [( expression )] */
> +
> +static tree
> +c_parser_oacc_shape_clause (c_parser *parser, pragma_omp_clause c_kind,
> + const char *str, tree list)
I think it would be better to remove the c_kind argument and pass to this
function omp_clause_code kind instead. The callers are already in a big
switch, with a separate call for each of the clauses.
After all, e.g. for c_parser_oacc_simple_clause you already do it that way
too.
> +{
> + omp_clause_code kind;
> + const char *id = "num";
> +
> + switch (c_kind)
> + {
> + default:
> + gcc_unreachable ();
> + case PRAGMA_OACC_CLAUSE_GANG:
> + kind = OMP_CLAUSE_GANG;
> + break;
> + case PRAGMA_OACC_CLAUSE_VECTOR:
> + kind = OMP_CLAUSE_VECTOR;
> + id = "length";
> + break;
> + case PRAGMA_OACC_CLAUSE_WORKER:
> + kind = OMP_CLAUSE_WORKER;
> + break;
> + }
Then you can replace this switch with just if (kind == OMP_CLAUSE_VECTOR)
id = "length";
Jakub