From 8b3d68100b6c60e6e8a7f7135d98e3d9c75dcbe6 Mon Sep 17 00:00:00 2001 From: hp Date: Wed, 15 Oct 2003 14:03:15 +0000 Subject: [PATCH] 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 --- gcc/testsuite/ChangeLog | 5 ++ gcc/testsuite/gcc.dg/torture/cris-volatile-1.c | 72 ++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/torture/cris-volatile-1.c 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 + + PR target/12598 + * gcc.dg/torture/cris-volatile-1.c: New test. + 2003-10-14 Roger Sayle 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; +} -- 2.7.4