aboutsummaryrefslogtreecommitdiff
path: root/gcc/fold-const.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-06-06 18:21:16 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1996-06-06 18:21:16 -0400
commit5fd7f37d2ea02f34575b9c9d9fc1ca28cda7e2f7 (patch)
treeacae317ba33ce0031fc50c39e5e7e7b53f445cc0 /gcc/fold-const.c
parent6db59ad5add2899f4b8332753658e3919e83259b (diff)
downloadgcc-5fd7f37d2ea02f34575b9c9d9fc1ca28cda7e2f7.zip
gcc-5fd7f37d2ea02f34575b9c9d9fc1ca28cda7e2f7.tar.gz
gcc-5fd7f37d2ea02f34575b9c9d9fc1ca28cda7e2f7.tar.bz2
(fold): Don't do anything with evaluated SAVE_EXPR.
From-SVN: r12185
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r--gcc/fold-const.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 82e51c0..b5a3d39 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -3100,8 +3100,9 @@ fold (expr)
int wins = 1;
- /* Don't try to process an RTL_EXPR since its operands aren't trees. */
- if (code == RTL_EXPR)
+ /* Don't try to process an RTL_EXPR since its operands aren't trees.
+ Likewise for a SAVE_EXPR that's already been evaluated. */
+ if (code == RTL_EXPR || (code == SAVE_EXPR && SAVE_EXPR_RTL (t)) != 0)
return t;
/* Return right away if already constant. */