> +/* Returns true if there is a length mismatch among exprssions that are at 
> the
> +   same dimension and one the same side of the equal sign.  The Array 
> notation
> +   lengths (LIST) is passed in as a 2D vector of trees.  */
> +
> +static bool
> +cp_length_mismatch_in_expr_p (location_t loc, vec<vec<tree> >list)

Other than working on a vec<>, how does this differ from the

  length_mismatch_in_expr_p (location_t loc, tree **list, size_t x, size_t y)

in c-family?

> +static inline void
> +clear_all_an_vectors (vec <vec<tree> > *value, vec<vec<tree> > *start,
> +                   vec <vec<tree> > *length, vec<vec<tree> > *stride,
> +                   vec<vec<bool> > *is_vector, vec<vec<bool> > *count_down,
> +                   vec<tree> *incr, vec<tree> *cmp, vec<tree> *ind_init,
> +                   vec<tree> *var)
> +{
> +  value->release ();
> +  start->release ();
> +  length->release ();
> +  stride->release ();
> +  is_vector->release ();
> +  count_down->release ();
> +  incr->release ();
> +  cmp->release ();
> +  ind_init->release ();
> +  var->release ();
> +}

10 arrays kept in sync?  It's at this point that we should realize that there's
a mistake in how we're arranging the data.  This should be one array, with the
element being a structure.

That should significantly improve quite a lot of the functions in this file.

> +      init = ARITHMETIC_TYPE_P (new_var_type) ? build_zero_cst (new_var_type)
> +     : integer_zero_node;

Why the test for ARITHMETIC_TYPE_P?  Surely we always want something of
new_var_type.

> +  if (an_type == BUILT_IN_CILKPLUS_SEC_REDUCE_ADD
> +      || an_type == BUILT_IN_CILKPLUS_SEC_REDUCE_MUL)
> +    new_expr = build_x_modify_expr (location, *new_var, code, func_parm,
> +                                 tf_warning_or_error);
> +  if (an_type == BUILT_IN_CILKPLUS_SEC_REDUCE_ALL_ZERO
> +      || an_type == BUILT_IN_CILKPLUS_SEC_REDUCE_ALL_NONZERO
> +      || an_type == BUILT_IN_CILKPLUS_SEC_REDUCE_ANY_ZERO
> +      || an_type == BUILT_IN_CILKPLUS_SEC_REDUCE_ANY_NONZERO)

Why not another switch statement here?


r~

Reply via email to