Commit a11c61d2 by Roger Sayle Committed by Roger Sayle

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
parent dab66575
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> 2003-07-03 Kazu Hirata <kazu@cs.umass.edu>
* config/m32r/m32r.c: Fix comment typos. * 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) ...@@ -4150,25 +4150,6 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type)
TREE_OPERAND (t, 1)); TREE_OPERAND (t, 1));
break; 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: case LSHIFT_EXPR: case RSHIFT_EXPR:
/* If the second operand is constant, this is a multiplication /* If the second operand is constant, this is a multiplication
or floor division, by a power of two, so we can treat it that or floor division, by a power of two, so we can treat it that
......
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> 2003-07-03 Mark Mitchell <mark@codesourcery.com>
* g++.dg/template/local3.C: Remove extra semicolon. * g++.dg/template/local3.C: Remove extra semicolon.
......
/* 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))));
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment