aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2004-06-23 22:21:27 -0700
committerRichard Henderson <rth@gcc.gnu.org>2004-06-23 22:21:27 -0700
commita7cc468aa3453959c3eccafd5e66eb603f69696c (patch)
tree8db696f41a3865f5fe2a7f1fa3e108cfe5267765 /gcc/gimplify.c
parentcfafe9734d14ae63db12d744541da675c68a26bd (diff)
downloadgcc-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.c13
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);