diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2012-03-20 11:32:54 +0000 |
---|---|---|
committer | Georg-Johann Lay <gjl@gcc.gnu.org> | 2012-03-20 11:32:54 +0000 |
commit | 7dc3263c6918509d45d7b51be7a55e18b67f2734 (patch) | |
tree | 1609f5c7e132c475c370590d58b0934f0d4f20f0 /gcc/testsuite | |
parent | b260a8c034ca3fe57bfab408065bc8dc46c4f186 (diff) | |
download | gcc-7dc3263c6918509d45d7b51be7a55e18b67f2734.zip gcc-7dc3263c6918509d45d7b51be7a55e18b67f2734.tar.gz gcc-7dc3263c6918509d45d7b51be7a55e18b67f2734.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-2.h: New file.
* gcc.target/avr/torture/addr-space-2-g.h: New test.
* gcc.target/avr/torture/addr-space-2-0.h: New test.
* gcc.target/avr/torture/addr-space-2-1.h: New test.
* gcc.target/avr/torture/addr-space-2-x.h: New test.
From-SVN: r185570
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 17 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/avr/torture/addr-space-2-0.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/avr/torture/addr-space-2-1.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c | 9 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/avr/torture/addr-space-2.h | 106 |
6 files changed, 146 insertions, 4 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0264170..dfdee37 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2012-03-20 Georg-Johann Lay <avr@gjlay.de> + + PR target/49868 + * gcc.target/avr/torture/addr-space-2.h: New file. + * gcc.target/avr/torture/addr-space-2-g.h: New test. + * gcc.target/avr/torture/addr-space-2-0.h: New test. + * gcc.target/avr/torture/addr-space-2-1.h: New test. + * gcc.target/avr/torture/addr-space-2-x.h: New test. + 2012-03-20 Richard Guenther <rguenther@suse.de> * gnat.dg/pack16.adb: New testcase. @@ -295,10 +304,10 @@ 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. + * gcc.target/avr/torture/addr-space-1-g.h: New test. + * gcc.target/avr/torture/addr-space-1-0.h: New test. + * gcc.target/avr/torture/addr-space-1-1.h: New test. + * gcc.target/avr/torture/addr-space-1-x.h: New test. 2012-03-12 Andrew Pinski <apinski@cavium.com> diff --git a/gcc/testsuite/gcc.target/avr/torture/addr-space-2-0.c b/gcc/testsuite/gcc.target/avr/torture/addr-space-2-0.c new file mode 100644 index 0000000..d5d4f92 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/torture/addr-space-2-0.c @@ -0,0 +1,6 @@ +/* { dg-options "-std=gnu99" } */ +/* { dg-do run } */ + +#define __as __flash + +#include "addr-space-2.h" diff --git a/gcc/testsuite/gcc.target/avr/torture/addr-space-2-1.c b/gcc/testsuite/gcc.target/avr/torture/addr-space-2-1.c new file mode 100644 index 0000000..c8041f7 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/torture/addr-space-2-1.c @@ -0,0 +1,6 @@ +/* { dg-options "-std=gnu99 -Tavr51-flash1.x" } */ +/* { dg-do run } */ + +#define __as __flash1 + +#include "addr-space-2.h" diff --git a/gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c b/gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c new file mode 100644 index 0000000..ad0b2b8 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c @@ -0,0 +1,6 @@ +/* { dg-options "-std=gnu99" } */ +/* { dg-do run } */ + +#define __as + +#include "addr-space-2.h" diff --git a/gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c b/gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c new file mode 100644 index 0000000..846cca4 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c @@ -0,0 +1,9 @@ +/* { dg-options "-std=gnu99 -Wa,--no-warn" } */ +/* { dg-do run } */ + +/* --no-warn because: "assembling 24-bit address needs binutils extension" + see binutils PR13503. */ + +#define __as __memx + +#include "addr-space-2.h" diff --git a/gcc/testsuite/gcc.target/avr/torture/addr-space-2.h b/gcc/testsuite/gcc.target/avr/torture/addr-space-2.h new file mode 100644 index 0000000..c95a163 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/torture/addr-space-2.h @@ -0,0 +1,106 @@ +extern void exit (int); +extern void abort (void); + +typedef struct T +{ + char val; + const __as struct T *l, *r; +} tree; + +/* + abcd + / \ + ab cd + / \ / \ + a b c d +*/ + +const __as tree a = { 'a', 0, 0 }; +const __as tree b = { 'b', 0, 0 }; +const __as tree c = { 'c', 0, 0 }; +const __as tree d = { 'd', 0, 0 }; + +const __as tree ab = { 'A', &a, &b }; +const __as tree cd = { 'C', &c, &d }; + +const __as tree abcd = { '*', &ab, &cd }; + +static void +test1 (void) +{ + if (abcd.val != '*') + abort(); + + if (abcd.l->val != 'A') + abort(); + if (abcd.r->val != 'C') + abort(); + + if (abcd.l->l->val != 'a') + abort(); + if (abcd.l->r->val != 'b') + abort(); + if (abcd.r->l->val != 'c') + abort(); + if (abcd.r->r->val != 'd') + abort(); +} + +static void +test2 (const __as tree *t) +{ + if (t->val != '*') + abort(); + + if (t->l->val != 'A') + abort(); + if (t->r->val != 'C') + abort(); + + if (t->l->l->val != 'a') + abort(); + if (t->l->r->val != 'b') + abort(); + if (t->r->l->val != 'c') + abort(); + if (t->r->r->val != 'd') + abort(); +} + +static void +test3 (const __as tree *pt) +{ + tree t = *pt; + + if (t.val != '*') + abort(); + + if (t.l->val != 'A') + abort(); + if (t.r->val != 'C') + abort(); + + if (t.l->l->val != 'a') + abort(); + if (t.l->r->val != 'b') + abort(); + if (t.r->l->val != 'c') + abort(); + if (t.r->r->val != 'd') + abort(); +} + +int main (void) +{ + const __as tree *t = &abcd; + test1(); + test2 (&abcd); + test3 (&abcd); + + __asm ("" : "+r" (t)); + test2 (t); + test3 (t); + + exit (0); + return 0; +} |