diff options
author | Richard Guenther <rguenther@suse.de> | 2010-11-04 14:07:48 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-11-04 14:07:48 +0000 |
commit | 844d5fca1fcf3c1adf83b7c0b8e0d8e4141b5c33 (patch) | |
tree | 9dfb1a2c2186d79896700632d2853ce4acacea9e /gcc/gimplify.c | |
parent | e9fcdd9fdfccb59cf22574bb091575f9e5b38ff2 (diff) | |
download | gcc-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.c | 6 |
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); |