diff options
author | John David Anglin <dave.anglin@nrc-cnrc.gc.ca> | 2006-02-17 22:09:58 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2006-02-17 22:09:58 +0000 |
commit | 1435ba17b5c4070038cb8116e428a9c899882b8b (patch) | |
tree | 0104209913abd7c35a9a62045d4805b73393bcd0 /gcc | |
parent | 1a4878f752c643c46a7c492c500c52f5cd7fabe5 (diff) | |
download | gcc-1435ba17b5c4070038cb8116e428a9c899882b8b.zip gcc-1435ba17b5c4070038cb8116e428a9c899882b8b.tar.gz gcc-1435ba17b5c4070038cb8116e428a9c899882b8b.tar.bz2 |
re PR target/26255 (internal compiler error: in reload_cse_simplify_operands, at postreload.c:391)
PR target/26255
* gcc.c-torture/compile/pr26255.c: New test case.
From-SVN: r111213
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr26255.c | 31 |
2 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 78d593d..af4ac3c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-02-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> + + PR target/26255 + * gcc.c-torture/compile/pr26255.c: New test case. + 2006-02-16 Roger Sayle <roger@eyesopen.com> * gfortran.fortran-torture/execute/where_10.f90: New test case. diff --git a/gcc/testsuite/gcc.c-torture/compile/pr26255.c b/gcc/testsuite/gcc.c-torture/compile/pr26255.c new file mode 100644 index 0000000..df3f0d9 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr26255.c @@ -0,0 +1,31 @@ +typedef short int16_t; + +int round_sample(int *sum); + +#define MULS(ra, rb) ((ra) * (rb)) + +#define SUM8(sum, op, w, p) \ +{ \ + sum op MULS((w)[0 * 64], p[0 * 64]); \ + sum op MULS((w)[1 * 64], p[1 * 64]); \ + sum op MULS((w)[2 * 64], p[2 * 64]); \ + sum op MULS((w)[3 * 64], p[3 * 64]); \ + sum op MULS((w)[4 * 64], p[4 * 64]); \ + sum op MULS((w)[5 * 64], p[5 * 64]); \ + sum op MULS((w)[6 * 64], p[6 * 64]); \ + sum op MULS((w)[7 * 64], p[7 * 64]); \ +} + +void foo(int *dither_state, int *samples) +{ + int16_t *synth_buf; + const int16_t *w, *p; + int sum; + + sum = *dither_state; + p = synth_buf + 16; + SUM8(sum, +=, w, p); + p = synth_buf + 48; + SUM8(sum, -=, w + 32, p); + *samples = round_sample(&sum); +} |