diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2011-08-06 14:25:58 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2011-08-06 07:25:58 -0700 |
commit | 08094409cac5ff1841b0b89805ed20348923073e (patch) | |
tree | e4acc2d419bc6b1800905e4bca5b7271fa23812a /gcc/testsuite/gcc.dg/tls | |
parent | 0e0677a2f0c08632e898722280bed7e842ab8f84 (diff) | |
download | gcc-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.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tls/pr47715-2.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tls/pr47715-3.c | 18 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tls/pr47715-4.c | 24 |
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; +} |