aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGeorg-Johann Lay <avr@gjlay.de>2012-03-12 17:55:30 +0000
committerGeorg-Johann Lay <gjl@gcc.gnu.org>2012-03-12 17:55:30 +0000
commit9438adb0a70a6138a3491aea6d6b2dff7640e58c (patch)
tree430b6000e82810d3f7e42fb9333df11fde911b29 /gcc
parentb928d32b668a27f88fa29204411a98262d9dfa44 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c6
-rw-r--r--gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c6
-rw-r--r--gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c6
-rw-r--r--gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c6
-rw-r--r--gcc/testsuite/gcc.target/avr/torture/addr-space-1.h83
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;
+}