aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/tls
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2011-08-06 14:25:58 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2011-08-06 07:25:58 -0700
commit08094409cac5ff1841b0b89805ed20348923073e (patch)
treee4acc2d419bc6b1800905e4bca5b7271fa23812a /gcc/testsuite/gcc.dg/tls
parent0e0677a2f0c08632e898722280bed7e842ab8f84 (diff)
downloadgcc-08094409cac5ff1841b0b89805ed20348923073e.zip
gcc-08094409cac5ff1841b0b89805ed20348923073e.tar.gz
gcc-08094409cac5ff1841b0b89805ed20348923073e.tar.bz2
Add testcases for PRs 47766/47715.
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
Diffstat (limited to 'gcc/testsuite/gcc.dg/tls')
-rw-r--r--gcc/testsuite/gcc.dg/tls/pr47715-1.c11
-rw-r--r--gcc/testsuite/gcc.dg/tls/pr47715-2.c10
-rw-r--r--gcc/testsuite/gcc.dg/tls/pr47715-3.c18
-rw-r--r--gcc/testsuite/gcc.dg/tls/pr47715-4.c24
4 files changed, 63 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/tls/pr47715-1.c b/gcc/testsuite/gcc.dg/tls/pr47715-1.c
new file mode 100644
index 0000000..ef8c539
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tls/pr47715-1.c
@@ -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
index 0000000..d112395
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tls/pr47715-2.c
@@ -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
index 0000000..ba2003c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tls/pr47715-3.c
@@ -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
index 0000000..980d7e9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tls/pr47715-4.c
@@ -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;
+}