aboutsummaryrefslogtreecommitdiff
path: root/gcc/fold-const.c
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2003-07-03 13:08:10 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2003-07-03 13:08:10 +0000
commita11c61d20b95777d95db0ae12c550d39bba89d95 (patch)
tree90ec82e089b4e9a934a87786055ab19202f526fc /gcc/fold-const.c
parentdab66575b48e837d71b2d2363c1b8aea1eb268a1 (diff)
downloadgcc-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.c19
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