On Tue, Dec 17, 2013 at 09:13:05PM +0000, Iyer, Balaji V wrote:
> @@ -10418,6 +10528,12 @@
> step = c_parser_expression (parser).value;
> mark_exp_read (step);
> step = c_fully_fold (step, false, NULL);
> + if (is_cilk_simd_fn && TREE_CODE (step) == PARM_DECL)
> + {
> + sorry ("using parameters for %<linear%> step is not supported yet "
> + "in this release");
I meant actually
sorry ("using parameters for %<linear%> step is not supported yet");
> @@ -10933,8 +11051,14 @@
> c_name = "aligned";
> break;
> case PRAGMA_OMP_CLAUSE_LINEAR:
> - clauses = c_parser_omp_clause_linear (parser, clauses);
> - c_name = "linear";
> + {
> + bool is_cilk_simd_fn = false;
> + if ((mask & PRAGMA_CILK_CLAUSE_VECTORLENGTH) == 0)
> + is_cilk_simd_fn = true;
I don't think this will work. PRAGMA_CILK_CLAUSE_VECTORLENGTH
is something like 40 I think, so testing whether the mask doesn't
include copyin and default clauses is not what you wanted probably.
What I meant is
if (((mask >> PRAGMA_CILK_CLAUSE_VECTORLENGTH) & 1) != 0)
is_cilk_simd_fn = true;
(note, for 32-bit HWI targets, omp_clause_mask is a class and not
all arithmetic is actually supported on it, so better limit yourself
to forms used elsewhere already).
> @@ -12754,10 +12882,20 @@
> c_finish_omp_declare_simd (c_parser *parser, tree fndecl, tree parms,
> vec<c_token> clauses)
> {
> +
Please remove this extra vertical space.
Otherwise looks good to me, just not sure where do you handle processor
clause (or how Cilk+ simd clones specify the ISA they want to use).
Jakub