From 9438adb0a70a6138a3491aea6d6b2dff7640e58c Mon Sep 17 00:00:00 2001 From: Georg-Johann Lay Date: Mon, 12 Mar 2012 17:55:30 +0000 Subject: re PR target/49868 (Implement named address space to place/access data in flash memory) PR target/49868 * gcc.target/avr/torture/addr-space-1.h: New file. * gcc.target/avr/torture/addr-space-g.h: New test. * gcc.target/avr/torture/addr-space-0.h: New test. * gcc.target/avr/torture/addr-space-1.h: New test. * gcc.target/avr/torture/addr-space-x.h: New test. From-SVN: r185255 --- gcc/testsuite/ChangeLog | 9 +++ .../gcc.target/avr/torture/addr-space-1-0.c | 6 ++ .../gcc.target/avr/torture/addr-space-1-1.c | 6 ++ .../gcc.target/avr/torture/addr-space-1-g.c | 6 ++ .../gcc.target/avr/torture/addr-space-1-x.c | 6 ++ .../gcc.target/avr/torture/addr-space-1.h | 83 ++++++++++++++++++++++ 6 files changed, 116 insertions(+) create mode 100644 gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c create mode 100644 gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c create mode 100644 gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c create mode 100644 gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c create mode 100644 gcc/testsuite/gcc.target/avr/torture/addr-space-1.h (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a6bb689..a580cfd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2012-03-12 Georg-Johann Lay + + PR target/49868 + * gcc.target/avr/torture/addr-space-1.h: New file. + * gcc.target/avr/torture/addr-space-g.h: New test. + * gcc.target/avr/torture/addr-space-0.h: New test. + * gcc.target/avr/torture/addr-space-1.h: New test. + * gcc.target/avr/torture/addr-space-x.h: New test. + 2012-03-12 Andrew Pinski * gcc.dg/tree-ssa/phi-opt-7.c: New testcase. diff --git a/gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c b/gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c new file mode 100644 index 0000000..8806542 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c @@ -0,0 +1,6 @@ +/* { dg-options "-std=gnu99" } */ +/* { dg-do run } */ + +#define __as __flash + +#include "addr-space-1.h" diff --git a/gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c b/gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c new file mode 100644 index 0000000..1375265 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c @@ -0,0 +1,6 @@ +/* { dg-options "-std=gnu99 -Tavr51-flash1.x" } */ +/* { dg-do run } */ + +#define __as __flash1 + +#include "addr-space-1.h" diff --git a/gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c b/gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c new file mode 100644 index 0000000..60feca1 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c @@ -0,0 +1,6 @@ +/* { dg-options "-std=gnu99" } */ +/* { dg-do run } */ + +#define __as + +#include "addr-space-1.h" diff --git a/gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c b/gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c new file mode 100644 index 0000000..0b3c43a --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c @@ -0,0 +1,6 @@ +/* { dg-options "-std=gnu99" } */ +/* { dg-do run } */ + +#define __as __memx + +#include "addr-space-1.h" diff --git a/gcc/testsuite/gcc.target/avr/torture/addr-space-1.h b/gcc/testsuite/gcc.target/avr/torture/addr-space-1.h new file mode 100644 index 0000000..322a5b8 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/torture/addr-space-1.h @@ -0,0 +1,83 @@ +#include +#include + +typedef struct +{ + char i1; + short i2; + long i4; + long long i8; + char str[2][10]; +} a_t; + +const __as a_t A = + { + 12, 345, 678910, 1234567891011ll, + { + "xxx..xxx", + "yyy..yyy" + } + }; + +const __as volatile a_t V = + { + 12+1, 345+1, 678910+1, 1234567891011ll+1, + { + "XXX..XXX", + "YYY..YYY" + } + }; + +a_t A2; +volatile a_t V2; + +int main (void) +{ + if (A.i1 != 12 + || A.i1 != V.i1 -1) + abort(); + + if (A.i2 != 345 + || A.i2 != V.i2 -1) + abort(); + + if (A.i4 != 678910 + || A.i4 != V.i4 -1) + abort(); + + if (A.i8 != 1234567891011ll + || A.i8 != V.i8 -1) + abort(); + + A2 = A; + V2 = V; + + if (A2.i1 != 12 + || A2.i1 != V2.i1 -1) + abort(); + + if (A2.i2 != 345 + || A2.i2 != V2.i2 -1) + abort(); + + if (A2.i4 != 678910 + || A2.i4 != V2.i4 -1) + abort(); + + if (A2.i8 != 1234567891011ll + || A2.i8 != V2.i8 -1) + abort(); + + if (strcmp (A2.str[0], "xxx..xxx")) + abort(); + if (strcmp (A2.str[1], "yyy..yyy")) + abort(); + + if (strcmp ((const char*) V2.str[0], "XXX..XXX")) + abort(); + if (strcmp ((const char*) V2.str[1], "YYY..YYY")) + abort(); + + exit (0); + return 0; +} -- cgit v1.1