diff options
author | Richard Henderson <rth@redhat.com> | 2004-06-23 22:21:27 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-06-23 22:21:27 -0700 |
commit | a7cc468aa3453959c3eccafd5e66eb603f69696c (patch) | |
tree | 8db696f41a3865f5fe2a7f1fa3e108cfe5267765 /gcc/gimplify.c | |
parent | cfafe9734d14ae63db12d744541da675c68a26bd (diff) | |
download | gcc-a7cc468aa3453959c3eccafd5e66eb603f69696c.zip gcc-a7cc468aa3453959c3eccafd5e66eb603f69696c.tar.gz gcc-a7cc468aa3453959c3eccafd5e66eb603f69696c.tar.bz2 |
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
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r-- | gcc/gimplify.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c index a4baa1e..480b8eb 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1948,9 +1948,10 @@ gimplify_compound_lval (tree *expr_p, tree *pre_p, gimplified. */ if (!TREE_OPERAND (t, 2)) { - TREE_OPERAND (t, 2) = unshare_expr (array_ref_low_bound (t)); - if (!is_gimple_min_invariant (TREE_OPERAND (t, 2))) + tree low = unshare_expr (array_ref_low_bound (t)); + if (!is_gimple_min_invariant (low)) { + TREE_OPERAND (t, 2) = low; tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p, is_gimple_tmp_var, fb_rvalue); ret = MIN (ret, tret); @@ -1967,9 +1968,9 @@ gimplify_compound_lval (tree *expr_p, tree *pre_p, type (above). */ elmt_size = size_binop (EXACT_DIV_EXPR, elmt_size, factor); - TREE_OPERAND (t, 3) = elmt_size; - if (!is_gimple_min_invariant (TREE_OPERAND (t, 3))) + if (!is_gimple_min_invariant (elmt_size)) { + TREE_OPERAND (t, 3) = elmt_size; tret = gimplify_expr (&TREE_OPERAND (t, 3), pre_p, post_p, is_gimple_tmp_var, fb_rvalue); ret = MIN (ret, tret); @@ -1989,9 +1990,9 @@ gimplify_compound_lval (tree *expr_p, tree *pre_p, /* Divide the offset by its alignment. */ offset = size_binop (EXACT_DIV_EXPR, offset, factor); - TREE_OPERAND (t, 2) = offset; - if (!is_gimple_min_invariant (TREE_OPERAND (t, 2))) + if (!is_gimple_min_invariant (offset)) { + TREE_OPERAND (t, 2) = offset; tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p, is_gimple_tmp_var, fb_rvalue); ret = MIN (ret, tret); |