Commit 26fb114d by Steven Bosscher Committed by Richard Biener

re PR rtl-optimization/24257 (ICE: in extract_insn with -O -fgcse -fgcse-sm)

2006-01-14  Steven Bosscher  <stevenb.gcc@gmail.com>
	Richard Guenther  <rguenther@suse.de>

	PR rtl-optimization/24257
	* gcse.c (find_moveable_store): Only consider a store movable
	when the SET_SRC of the insn can be assigned to a register.

	* gcc.dg/torture/pr24257.c: New testcase.

Co-Authored-By: Richard Guenther <rguenther@suse.de>

From-SVN: r109701
parent 2482200f
2006-01-14 Steven Bosscher <stevenb.gcc@gmail.com>
Richard Guenther <rguenther@suse.de>
PR rtl-optimization/24257
* gcse.c (find_moveable_store): Only consider a store movable
when the SET_SRC of the insn can be assigned to a register.
2006-01-14 Ian Lance Taylor <ian@airs.com>
* tree.c (tree_not_class_check_failed): New function.
......
......@@ -5664,6 +5664,14 @@ find_moveable_store (rtx insn, int *regs_set_before, int *regs_set_after)
if (find_reg_note (insn, REG_EH_REGION, NULL_RTX))
return;
/* Make sure that the SET_SRC of this store insns can be assigned to
a register, or we will fail later on in replace_store_insn, which
assumes that we can do this. But sometimes the target machine has
oddities like MEM read-modify-write instruction. See for example
PR24257. */
if (!can_assign_to_reg_p (SET_SRC (set)))
return;
ptr = ldst_entry (dest);
if (!ptr->pattern_regs)
ptr->pattern_regs = extract_mentioned_regs (dest);
......
2006-01-14 Steven Bosscher <stevenb.gcc@gmail.com>
Richard Guenther <rguenther@suse.de>
PR rtl-optimization/24257
* gcc.dg/torture/pr24257.c: New testcase.
2006-01-13 Adam Nemet <anemet@caviumnetworks.com>
* gcc.c-torture/execute/20060110-1.c: New test.
/* { dg-do compile } */
/* { dg-options "-O -fgcse -fgcse-sm" } */
typedef struct A {
int buf, left;
} A;
static void flush(A *s, int n)
{
s->buf <<= n;
while (s->left < 32) {
s->buf <<= 8;
s->left += 8;
}
s->buf=0;
}
void oof(A *s, int n)
{
s->buf = n;
s->left = n;
flush(s, n);
}
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