diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2003-10-15 14:03:15 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@gcc.gnu.org> | 2003-10-15 14:03:15 +0000 |
commit | c546e1855c4c19b0d093839c31639f224fa71b16 (patch) | |
tree | 718342e53b939c6ab70a44003bc05dd85f7673d9 | |
parent | 6c73e9f7f90083ad3c0821607707d784ca2ef8ca (diff) | |
download | gcc-c546e1855c4c19b0d093839c31639f224fa71b16.zip gcc-c546e1855c4c19b0d093839c31639f224fa71b16.tar.gz gcc-c546e1855c4c19b0d093839c31639f224fa71b16.tar.bz2 |
re PR target/12598 (Invalid size optimization on volatile memory reference)
PR target/12598
* gcc.dg/torture/cris-volatile-1.c: New test.
From-SVN: r72520
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/cris-volatile-1.c | 72 |
2 files changed, 77 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dd5b191..a983444 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-10-15 Hans-Peter Nilsson <hp@axis.com> + + PR target/12598 + * gcc.dg/torture/cris-volatile-1.c: New test. + 2003-10-14 Roger Sayle <roger@eyesopen.com> PR optimization/9325 diff --git a/gcc/testsuite/gcc.dg/torture/cris-volatile-1.c b/gcc/testsuite/gcc.dg/torture/cris-volatile-1.c new file mode 100644 index 0000000..7f613c4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/cris-volatile-1.c @@ -0,0 +1,72 @@ +/* Copyright (C) 2003 Free Software Foundation. + Check that size-optimizations for move insns (specifically peephole + optimizations) aren't applied to volatile objects in the CRIS port. + Origin: Hans-Peter Nilsson. */ +/* { dg-do compile { target cris-*-* } } */ +/* { dg-final { scan-assembler-not {movu\...\[} } } */ +/* { dg-final { scan-assembler-not {move\.[^d].\[} } } */ +/* { dg-final { scan-assembler-not {and\.[^d].\[} } } */ +/* { dg-final { scan-assembler-not {or\.[^d].\[} } } */ + +static const unsigned long c = 0x0000FF00; +unsigned long +a1 (void) +{ + unsigned long m; + m = *(volatile unsigned long*) 0xb00000c8; + m &= c; + return m; +} +extern volatile unsigned long xx; +unsigned long +a2 (void) +{ + unsigned long m; + m = xx; + m &= c; + return m; +} +extern volatile unsigned long yy[]; +unsigned long +a3 (void) +{ + unsigned long m; + m = yy[3]; + m &= 0xfe00; + return m; +} +unsigned long +ac1 (void) +{ + unsigned long m; + m = *(volatile unsigned long*) 0xb00000c8; + m &= 0xfe00; + return m; +} +extern volatile unsigned long xx; +unsigned long +ac2 (void) +{ + unsigned long m; + m = xx; + m &= 0xfe00; + return m; +} +extern volatile unsigned long yy[]; +unsigned long +ac3 (void) +{ + unsigned long m; + m = yy[3]; + m &= 0xfe00; + return m; +} +extern volatile unsigned long yy[]; +unsigned long +oc3 (void) +{ + unsigned long m; + m = yy[3]; + m |= ~0xf; + return m; +} |