diff options
author | Steven Bosscher <stevenb.gcc@gmail.com> | 2006-01-14 11:04:16 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2006-01-14 11:04:16 +0000 |
commit | 26fb114d1345224c2af762534482eb8ad117f622 (patch) | |
tree | 1005f3498bda5cb6a91a72d21a00110ae5c54ffb /gcc/testsuite/gcc.dg/torture | |
parent | 2482200f02cb997e951140aafe3415e27b07b8fd (diff) | |
download | gcc-26fb114d1345224c2af762534482eb8ad117f622.zip gcc-26fb114d1345224c2af762534482eb8ad117f622.tar.gz gcc-26fb114d1345224c2af762534482eb8ad117f622.tar.bz2 |
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
Diffstat (limited to 'gcc/testsuite/gcc.dg/torture')
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr24257.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/torture/pr24257.c b/gcc/testsuite/gcc.dg/torture/pr24257.c new file mode 100644 index 0000000..200bd18 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr24257.c @@ -0,0 +1,26 @@ +/* { 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); +} |