From: H.J. Lu Date: Sat, 6 Aug 2011 14:25:58 +0000 (+0000) Subject: Add testcases for PRs 47766/47715. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=08094409cac5ff1841b0b89805ed20348923073e;p=gcc.git Add testcases for PRs 47766/47715. 2011-08-06 H.J. Lu 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 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3b004cf4f60..68d470adcbc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2011-08-06 H.J. Lu + + 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 PR libobjc/50002 diff --git a/gcc/testsuite/gcc.dg/pr47766.c b/gcc/testsuite/gcc.dg/pr47766.c new file mode 100644 index 00000000000..50e2feebadb --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr47766.c @@ -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 index 00000000000..ef8c5394a90 --- /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 00000000000..d11239548f6 --- /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 00000000000..ba2003c7c22 --- /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 00000000000..980d7e985df --- /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; +}