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
This commit is contained in:
parent
dab66575b4
commit
a11c61d20b
@ -1,3 +1,9 @@
|
||||
2003-07-03 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR target/10700
|
||||
* fold-const.c (extract_muldiv_1): There's nothing that can be done
|
||||
if the expression is a SAVE_EXPR.
|
||||
|
||||
2003-07-03 Kazu Hirata <kazu@cs.umass.edu>
|
||||
|
||||
* config/m32r/m32r.c: Fix comment typos.
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,8 @@
|
||||
2003-07-03 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR target/10700
|
||||
* gcc.c-torture/compile/20030703-1.c: New test case.
|
||||
|
||||
2003-07-03 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* g++.dg/template/local3.C: Remove extra semicolon.
|
||||
|
10
gcc/testsuite/gcc.c-torture/compile/20030703-1.c
Normal file
10
gcc/testsuite/gcc.c-torture/compile/20030703-1.c
Normal file
@ -0,0 +1,10 @@
|
||||
/* Extracted from PR target/10700. */
|
||||
/* The following code used to cause an ICE on 64-bit targets. */
|
||||
|
||||
int SAD_Block(int *);
|
||||
void MBMotionEstimation(int *act_block, int block)
|
||||
{
|
||||
SAD_Block(act_block + ( (8 * (block == 1 || block == 3))
|
||||
+ (8 * (block == 2 || block == 3))));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user