diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2012-03-12 17:55:30 +0000 |
---|---|---|
committer | Georg-Johann Lay <gjl@gcc.gnu.org> | 2012-03-12 17:55:30 +0000 |
commit | 9438adb0a70a6138a3491aea6d6b2dff7640e58c (patch) | |
tree | 430b6000e82810d3f7e42fb9333df11fde911b29 | |
parent | b928d32b668a27f88fa29204411a98262d9dfa44 (diff) | |
download | gcc-9438adb0a70a6138a3491aea6d6b2dff7640e58c.zip gcc-9438adb0a70a6138a3491aea6d6b2dff7640e58c.tar.gz gcc-9438adb0a70a6138a3491aea6d6b2dff7640e58c.tar.bz2 |
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
-rw-r--r-- | gcc/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/avr/torture/addr-space-1.h | 83 |
6 files changed, 116 insertions, 0 deletions
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 <avr@gjlay.de> + + 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 <apinski@cavium.com> * 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 <stdlib.h> +#include <string.h> + +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; +} |