[patch] tree-ssa-ccp.c: Fold references into constant aggregates.
Richard Henderson
rth@redhat.com
Sat May 7 22:52:00 GMT 2005
On Sat, May 07, 2005 at 05:34:17PM -0400, Kazu Hirata wrote:
> Richard Henderson said that the TREE_SIDE_EFFECTS check in Steven's
> original patch was useless, but expr.c:6945 checks
> TREE_SIDE_EFFECTS. Could that be a problem?
I might guess that the expr.c check is there for cases that can't
happen anymore. You could assert no side effects if you like. Or
I guess just leave it alone for now.
> 1. replace X and Y with constants.
> 2. pass the expression to fold or fold_stmt
> 3. if folding is unsuccessful, put X and Y back.
>
> I felt this was a bit tedious. I guess one could use
> FOR_EACH_SSA_USE_OPERAND and SET_USE.
Ok.
> + if (compare_tree_int (idx, list_length (CONSTRUCTOR_ELTS (ctor))) < 0)
> + {
> + /* Whoo-hoo! I'll fold ya baby. Yeah! */
> + HOST_WIDE_INT i;
> +
> + for (elt = CONSTRUCTOR_ELTS (ctor), i = TREE_INT_CST_LOW (idx);
> + elt != 0 && i != 0;
> + i--, elt = TREE_CHAIN (elt))
> + /* Find that element. */
> + ;
You're traversing the list twice here. Plus I believe you'll have to
deal with RANGE_EXPRs from the C++ front end. So there is not in fact
a 1-1 mapping for indicies.
Otherwise it looks ok.
r~
More information about the Gcc-patches
mailing list