Thanks for fixing everything. This looks much better.
I don't have much, just small typos. It's up to Jason and Richard to
take it from here.
Aldy
----
+ else
+ {
+ val = convert_like_with_context (conv, arg, fn, i-is_method,
+ conversion_warning
+ ? complain
+ : complain & (~tf_warning));
s/i-is_method/i - is_method/
I know this isn't your fault, since the original code had this, but if
you're going to copy over, might as well fix small formatting errors :).
+/* Extracts all the array notation triplet information from LIST and stores
them
+ in a 2-D arrays (size x rank) of START, LENGTH and STRIDE, holding the
s/2-D arrays/2-D array/
+ For example: For an array notation A[5:10:2], the vector start will be
Extra space after start.
+ /* We need to do this because we are "faking" the builtin function types,
+ so the compiler does a bunch of typecasts and this will get rid of
+ all that! */
+ while (TREE_CODE (call_fn) == CONVERT_EXPR
+ || TREE_CODE (call_fn) == NOP_EXPR)
+ call_fn = TREE_OPERAND (call_fn, 0);
We already have an automated way of doing this. Will this work for you?:
/* Given an expression as a tree, strip any conversion that generates
no instruction. Accepts both tree and const_tree arguments since
we are not modifying the tree itself. */
#define STRIP_NOPS(EXP) \
(EXP) = tree_strip_nop_conversions (CONST_CAST_TREE (EXP))
Similarly elsewhere.
+/* Helper function for expand_conditonal_array_notations. Encloses the
Two spaces after "."
+static tree
+expand_return_expr (tree expr)
+{
+ tree new_mod_list, new_var, new_mod, retval_expr;
+ location_t loc = EXPR_LOCATION (expr);
+
+ if (TREE_CODE (expr) != RETURN_EXPR)
+ return expr;
Well, since we're using C++, might as well move the comparison with
RETURN_EXPR earlier, to avoid setting loc.
+ /* Skip empty subtrees. */
+ if (!t)
+ return t;
No need to document the obvious.
+ case ARRAY_NOTATION_REF:
+ {
+ tree start_index, length, stride;
+ op1 = tsubst_non_call_postfix_expression (ARRAY_NOTATION_ARRAY (t),
+ args, complain, in_decl);
+ start_index = RECUR (ARRAY_NOTATION_START (t));
+ length = RECUR (ARRAY_NOTATION_LENGTH (t));
+ stride = RECUR (ARRAY_NOTATION_STRIDE (t));
+ if (!cilkplus_an_triplet_types_ok_p (loc, start_index, length, stride,
+ TREE_TYPE (op1)))
+ RETURN (error_mark_node);
+ RETURN (build_array_notation_ref (EXPR_LOCATION (t), op1, start_index,
+ length, stride, TREE_TYPE (op1)));
Indentation of RETURN is wrong.
+ /* If the return expression contains array notatinos, then flag it as
s/notatinos/notations. Though I like the sound of "notatinos" :-).
+ /* If find_rank returns false, then it should have reported an error,
s/ then/then
+ to convert them. They will be broken up into modify exprs in future,
Two spaces after period.