aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-11-04 14:07:48 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-11-04 14:07:48 +0000
commit844d5fca1fcf3c1adf83b7c0b8e0d8e4141b5c33 (patch)
tree9dfb1a2c2186d79896700632d2853ce4acacea9e /gcc/gimplify.c
parente9fcdd9fdfccb59cf22574bb091575f9e5b38ff2 (diff)
downloadgcc-844d5fca1fcf3c1adf83b7c0b8e0d8e4141b5c33.zip
gcc-844d5fca1fcf3c1adf83b7c0b8e0d8e4141b5c33.tar.gz
gcc-844d5fca1fcf3c1adf83b7c0b8e0d8e4141b5c33.tar.bz2
re PR tree-optimization/45991 (ICE: verify_stmts failed: Invalid address operand in in TARGET_MEM_REF. with -fstrict-overflow)
2010-11-04 Richard Guenther <rguenther@suse.de> PR tree-optimization/45991 * gimplify.c (force_gimple_operand_1): Use the provded test function in the initial test. * gcc.dg/pr45991.c: New testcase. From-SVN: r166312
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index d5a633c..f490349 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -8047,7 +8047,11 @@ force_gimple_operand_1 (tree expr, gimple_seq *stmts,
*stmts = NULL;
- if (is_gimple_val (expr))
+ /* gimple_test_f might be more strict than is_gimple_val, make
+ sure we pass both. Just checking gimple_test_f doesn't work
+ because most gimple predicates do not work recursively. */
+ if (is_gimple_val (expr)
+ && (*gimple_test_f) (expr))
return expr;
push_gimplify_context (&gctx);