aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGeert Bosch <bosch@adacore.com>2008-11-15 14:11:58 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2008-11-15 14:11:58 +0000
commit7348f18cb1d809fa58aff195d9780e683c60b6ce (patch)
treecae7485d6978a41267b90bf1bcf27f1ea454139b /gcc
parent708bceb76e088c312d252f394a8585c1e74056e9 (diff)
downloadgcc-7348f18cb1d809fa58aff195d9780e683c60b6ce.zip
gcc-7348f18cb1d809fa58aff195d9780e683c60b6ce.tar.gz
gcc-7348f18cb1d809fa58aff195d9780e683c60b6ce.tar.bz2
trans.c (emit_check): Put back a final save_expr to prevent exponential expansion during gimplification.
* gcc-interface/trans.c (emit_check): Put back a final save_expr to prevent exponential expansion during gimplification. From-SVN: r141885
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gcc-interface/trans.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index adbc571..ec605ab 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2008-11-15 Geert Bosch <bosch@adacore.com>
+
+ * gcc-interface/trans.c (emit_check): Put back a final save_expr
+ to prevent exponential expansion during gimplification.
+
2008-11-15 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/lang-specs.h: Expand -coverage and reorder switches.
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index 8ededaa..51d20d2 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -6289,7 +6289,10 @@ emit_check (tree gnu_cond, tree gnu_expr, int reason)
we don't need to evaluate it just for the check. */
TREE_SIDE_EFFECTS (gnu_result) = TREE_SIDE_EFFECTS (gnu_expr);
- return gnu_result;
+ /* ??? Unfortunately, if we don't put a SAVE_EXPR around this whole thing,
+ we will repeatedly do the test and, at compile time, we will repeatedly
+ visit it during unsharing, which leads to an exponential explosion. */
+ return save_expr (gnu_result);
}
/* Return an expression that converts GNU_EXPR to GNAT_TYPE, doing