Commit a7cc468a by Richard Henderson Committed by Richard Henderson

gimplify.c (gimplify_compound_lval): Don't set ARRAY_REF or COMPONENT_REF…

gimplify.c (gimplify_compound_lval): Don't set ARRAY_REF or COMPONENT_REF variable fields unless they're non-constant.

        * gimplify.c (gimplify_compound_lval): Don't set ARRAY_REF or
        COMPONENT_REF variable fields unless they're non-constant.

From-SVN: r83578
parent cfafe973
2004-06-23 Richard Henderson <rth@redhat.com>
* gimplify.c (gimplify_compound_lval): Don't set ARRAY_REF or
COMPONENT_REF variable fields unless they're non-constant.
2004-06-23 Robert Millan <robertmh@gnu.org> 2004-06-23 Robert Millan <robertmh@gnu.org>
* config.gcc: Merge kfreebsd*-gnu with linux* and add knetbsd*-gnu. * config.gcc: Merge kfreebsd*-gnu with linux* and add knetbsd*-gnu.
......
...@@ -1948,9 +1948,10 @@ gimplify_compound_lval (tree *expr_p, tree *pre_p, ...@@ -1948,9 +1948,10 @@ gimplify_compound_lval (tree *expr_p, tree *pre_p,
gimplified. */ gimplified. */
if (!TREE_OPERAND (t, 2)) if (!TREE_OPERAND (t, 2))
{ {
TREE_OPERAND (t, 2) = unshare_expr (array_ref_low_bound (t)); tree low = unshare_expr (array_ref_low_bound (t));
if (!is_gimple_min_invariant (TREE_OPERAND (t, 2))) if (!is_gimple_min_invariant (low))
{ {
TREE_OPERAND (t, 2) = low;
tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p, tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p,
is_gimple_tmp_var, fb_rvalue); is_gimple_tmp_var, fb_rvalue);
ret = MIN (ret, tret); ret = MIN (ret, tret);
...@@ -1967,9 +1968,9 @@ gimplify_compound_lval (tree *expr_p, tree *pre_p, ...@@ -1967,9 +1968,9 @@ gimplify_compound_lval (tree *expr_p, tree *pre_p,
type (above). */ type (above). */
elmt_size = size_binop (EXACT_DIV_EXPR, elmt_size, factor); elmt_size = size_binop (EXACT_DIV_EXPR, elmt_size, factor);
TREE_OPERAND (t, 3) = elmt_size; if (!is_gimple_min_invariant (elmt_size))
if (!is_gimple_min_invariant (TREE_OPERAND (t, 3)))
{ {
TREE_OPERAND (t, 3) = elmt_size;
tret = gimplify_expr (&TREE_OPERAND (t, 3), pre_p, post_p, tret = gimplify_expr (&TREE_OPERAND (t, 3), pre_p, post_p,
is_gimple_tmp_var, fb_rvalue); is_gimple_tmp_var, fb_rvalue);
ret = MIN (ret, tret); ret = MIN (ret, tret);
...@@ -1989,9 +1990,9 @@ gimplify_compound_lval (tree *expr_p, tree *pre_p, ...@@ -1989,9 +1990,9 @@ gimplify_compound_lval (tree *expr_p, tree *pre_p,
/* Divide the offset by its alignment. */ /* Divide the offset by its alignment. */
offset = size_binop (EXACT_DIV_EXPR, offset, factor); offset = size_binop (EXACT_DIV_EXPR, offset, factor);
TREE_OPERAND (t, 2) = offset; if (!is_gimple_min_invariant (offset))
if (!is_gimple_min_invariant (TREE_OPERAND (t, 2)))
{ {
TREE_OPERAND (t, 2) = offset;
tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p, tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p,
is_gimple_tmp_var, fb_rvalue); is_gimple_tmp_var, fb_rvalue);
ret = MIN (ret, tret); ret = MIN (ret, tret);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment