diff options
| author | hp <hp@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-15 14:03:15 +0000 |
|---|---|---|
| committer | hp <hp@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-15 14:03:15 +0000 |
| commit | 8b3d68100b6c60e6e8a7f7135d98e3d9c75dcbe6 (patch) | |
| tree | 718342e53b939c6ab70a44003bc05dd85f7673d9 | |
| parent | fc2ed4c70573a5848c72e7b163671b5c164635ca (diff) | |
| download | ppe42-gcc-8b3d68100b6c60e6e8a7f7135d98e3d9c75dcbe6.tar.gz ppe42-gcc-8b3d68100b6c60e6e8a7f7135d98e3d9c75dcbe6.zip | |
PR target/12598
* gcc.dg/torture/cris-volatile-1.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72520 138bc75d-0d04-0410-961f-82ee72b054a4
| -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 dd5b191b213..a98344435da 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 00000000000..7f613c4dc77 --- /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; +} |

