diff options
author | Roger Sayle <roger@eyesopen.com> | 2003-07-03 13:08:10 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2003-07-03 13:08:10 +0000 |
commit | a11c61d20b95777d95db0ae12c550d39bba89d95 (patch) | |
tree | 90ec82e089b4e9a934a87786055ab19202f526fc /gcc/fold-const.c | |
parent | dab66575b48e837d71b2d2363c1b8aea1eb268a1 (diff) | |
download | gcc-a11c61d20b95777d95db0ae12c550d39bba89d95.zip gcc-a11c61d20b95777d95db0ae12c550d39bba89d95.tar.gz gcc-a11c61d20b95777d95db0ae12c550d39bba89d95.tar.bz2 |
re PR target/10700 (ICE in copy_to_mode_reg on 64-bit targets)
PR target/10700
* fold-const.c (extract_muldiv_1): There's nothing that can be done
if the expression is a SAVE_EXPR.
* gcc.c-torture/compile/20030703-1.c: New test case.
From-SVN: r68877
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r-- | gcc/fold-const.c | 19 |
1 files changed, 0 insertions, 19 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 7751cb9..c4826c7 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -4150,25 +4150,6 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type) TREE_OPERAND (t, 1)); break; - case SAVE_EXPR: - /* If this has not been evaluated and the operand has no side effects, - we can see if we can do something inside it and make a new one. - Note that this test is overly conservative since we can do this - if the only reason it had side effects is that it was another - similar SAVE_EXPR, but that isn't worth bothering with. */ - if (SAVE_EXPR_RTL (t) == 0 && ! TREE_SIDE_EFFECTS (TREE_OPERAND (t, 0)) - && 0 != (t1 = extract_muldiv (TREE_OPERAND (t, 0), c, code, - wide_type))) - { - t1 = save_expr (t1); - if (SAVE_EXPR_PERSISTENT_P (t) && TREE_CODE (t1) == SAVE_EXPR) - SAVE_EXPR_PERSISTENT_P (t1) = 1; - if (is_pending_size (t)) - put_pending_size (t1); - return t1; - } - break; - case LSHIFT_EXPR: case RSHIFT_EXPR: /* If the second operand is constant, this is a multiplication or floor division, by a power of two, so we can treat it that |