Add testcases for PRs 47766/47715.
authorH.J. Lu <hongjiu.lu@intel.com>
Sat, 6 Aug 2011 14:25:58 +0000 (14:25 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Sat, 6 Aug 2011 14:25:58 +0000 (07:25 -0700)
2011-08-06  H.J. Lu  <hongjiu.lu@intel.com>

PR target/47766
* gcc.dg/pr47766.c: New.

PR target/47715
* gcc.dg/tls/pr47715-1.c: New.
* gcc.dg/tls/pr47715-2.c: Likewise.
* gcc.dg/tls/pr47715-3.c: Likewise.
* gcc.dg/tls/pr47715-4.c: Likewise.

From-SVN: r177511

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr47766.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tls/pr47715-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tls/pr47715-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tls/pr47715-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tls/pr47715-4.c [new file with mode: 0644]

index 3b004cf4f607618dc255c866e7ea72467d217606..68d470adcbcc2552b10c2ca1092de584bcf5b83a 100644 (file)
@@ -1,3 +1,14 @@
+2011-08-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/47766
+       * gcc.dg/pr47766.c: New.
+
+       PR target/47715
+       * gcc.dg/tls/pr47715-1.c: New.
+       * gcc.dg/tls/pr47715-2.c: Likewise.
+       * gcc.dg/tls/pr47715-3.c: Likewise.
+       * gcc.dg/tls/pr47715-4.c: Likewise.
+
 2011-08-06  Nicola Pero  <nicola.pero@meta-innovation.com>
 
        PR libobjc/50002
diff --git a/gcc/testsuite/gcc.dg/pr47766.c b/gcc/testsuite/gcc.dg/pr47766.c
new file mode 100644 (file)
index 0000000..50e2fee
--- /dev/null
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fstack-protector" } */
+/* { dg-require-effective-target fstack_protector } */
+
+int
+parse_opt (int key)
+{
+   struct
+   {
+     int arg[key];
+   } reqdata;
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tls/pr47715-1.c b/gcc/testsuite/gcc.dg/tls/pr47715-1.c
new file mode 100644 (file)
index 0000000..ef8c539
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target fpic } */
+/* { dg-options "-O2 -fPIC" } */
+/* { dg-require-effective-target tls } */
+
+extern __thread int h_errno;
+int *
+__h_errno_location (void)
+{
+  return &h_errno;
+}
diff --git a/gcc/testsuite/gcc.dg/tls/pr47715-2.c b/gcc/testsuite/gcc.dg/tls/pr47715-2.c
new file mode 100644 (file)
index 0000000..d112395
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target fpic } */
+/* { dg-options "-O2 -fPIC" } */
+/* { dg-require-effective-target tls } */
+
+extern __thread int *__libc_resp;
+int
+__res_init(void) {
+  return *__libc_resp;
+}
diff --git a/gcc/testsuite/gcc.dg/tls/pr47715-3.c b/gcc/testsuite/gcc.dg/tls/pr47715-3.c
new file mode 100644 (file)
index 0000000..ba2003c
--- /dev/null
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target fpic } */
+/* { dg-options "-O2 -fPIC" } */
+/* { dg-require-effective-target tls } */
+
+struct initial_sp
+{
+  void *sp;
+  long len;
+};
+__thread 
+struct initial_sp __morestack_initial_sp;
+void bar (void *);
+void
+foo ()
+{
+  bar (&__morestack_initial_sp.len);
+}
diff --git a/gcc/testsuite/gcc.dg/tls/pr47715-4.c b/gcc/testsuite/gcc.dg/tls/pr47715-4.c
new file mode 100644 (file)
index 0000000..980d7e9
--- /dev/null
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-options "-O0" } */
+/* { dg-require-effective-target tls } */
+
+struct gomp_team_state
+{
+  struct gomp_team_state *prev_ts;
+  unsigned team_id;
+  unsigned level;
+};
+struct gomp_thread
+{
+  void *data;
+  struct gomp_team_state ts;
+};
+extern __thread struct gomp_thread gomp_tls_data;
+int
+foo (int level)
+{
+  struct gomp_team_state *ts = &gomp_tls_data.ts;
+  if (level < 0 || level > ts->level)
+    return -1;
+  return ts->team_id;
+}