From 87d426f8db0a1dde95fa1250dbbbf36ec587c286 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Tue, 24 May 2011 16:32:47 +0200 Subject: [PATCH] run-gd.c: New test. 2011-05-24 Uros Bizjak Rainer Orth * gcc.dg/torture/tls/run-gd.c: New test. * gcc.dg/torture/tls/run-ie.c: New test. * gcc.dg/torture/tls/run-ld.c: New test. * gcc.dg/torture/tls/run-le.c: New test. * lib/target-supports.exp (check_effective_target_tls_runtime): Build testcase with TLS options. Co-Authored-By: Rainer Orth From-SVN: r174117 --- gcc/testsuite/ChangeLog | 10 +++++++ gcc/testsuite/gcc.dg/torture/tls/run-gd.c | 32 ++++++++++++++++++++++ gcc/testsuite/gcc.dg/torture/tls/run-ie.c | 32 ++++++++++++++++++++++ gcc/testsuite/gcc.dg/torture/tls/run-ld.c | 33 +++++++++++++++++++++++ gcc/testsuite/gcc.dg/torture/tls/run-le.c | 32 ++++++++++++++++++++++ gcc/testsuite/lib/target-supports.exp | 2 +- 6 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/torture/tls/run-gd.c create mode 100644 gcc/testsuite/gcc.dg/torture/tls/run-ie.c create mode 100644 gcc/testsuite/gcc.dg/torture/tls/run-ld.c create mode 100644 gcc/testsuite/gcc.dg/torture/tls/run-le.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6481ead9cdf..48fb7202685 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2011-05-24 Uros Bizjak + Rainer Orth + + * gcc.dg/torture/tls/run-gd.c: New test. + * gcc.dg/torture/tls/run-ie.c: New test. + * gcc.dg/torture/tls/run-ld.c: New test. + * gcc.dg/torture/tls/run-le.c: New test. + * lib/target-supports.exp (check_effective_target_tls_runtime): + Build testcase with TLS options. + 2011-05-24 Rainer Orth * gcc.dg/vect/pr48172.c: Remove dg-do run. diff --git a/gcc/testsuite/gcc.dg/torture/tls/run-gd.c b/gcc/testsuite/gcc.dg/torture/tls/run-gd.c new file mode 100644 index 00000000000..6335e73c35b --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/tls/run-gd.c @@ -0,0 +1,32 @@ +/* { dg-do run } */ +/* { dg-require-effective-target tls_runtime } */ +/* { dg-add-options tls } */ + +extern void abort (void); + +__thread int tls_gd __attribute__((tls_model("global-dynamic"))) = 0; + +int get_gd (void) +{ + return tls_gd; +} + +int *get_gdp (void) +{ + return &tls_gd; +} + +int main (void) +{ + int val; + + val = get_gd (); + if (val != 0) + abort (); + + val = *get_gdp (); + if (val != 0) + abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/tls/run-ie.c b/gcc/testsuite/gcc.dg/torture/tls/run-ie.c new file mode 100644 index 00000000000..ec07a4447f9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/tls/run-ie.c @@ -0,0 +1,32 @@ +/* { dg-do run } */ +/* { dg-require-effective-target tls_runtime } */ +/* { dg-add-options tls } */ + +extern void abort (void); + +__thread int tls_ie __attribute__((tls_model("initial-exec"))) = 4; + +int get_ie (void) +{ + return tls_ie; +} + +int *get_iep (void) +{ + return &tls_ie; +} + +int main (void) +{ + int val; + + val = get_ie (); + if (val != 4) + abort (); + + val = *get_iep (); + if (val != 4) + abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/tls/run-ld.c b/gcc/testsuite/gcc.dg/torture/tls/run-ld.c new file mode 100644 index 00000000000..cabfaf794e6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/tls/run-ld.c @@ -0,0 +1,33 @@ +/* { dg-do run } */ +/* { dg-require-effective-target tls_runtime } */ +/* { dg-add-options tls } */ + +extern void abort (void); + +__thread int tls_ld __attribute__((tls_model("local-dynamic"))) = 1; +__thread int tls_ld2 __attribute__((tls_model("local-dynamic"))) = 2; + +int get_ld (void) +{ + return tls_ld + tls_ld2; +} + +int *get_ldp (void) +{ + return &tls_ld; +} + +int main (void) +{ + int val; + + val = get_ld (); + if (val != 1 + 2) + abort (); + + val = *get_ldp (); + if (val != 1) + abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/tls/run-le.c b/gcc/testsuite/gcc.dg/torture/tls/run-le.c new file mode 100644 index 00000000000..0c340f30e15 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/tls/run-le.c @@ -0,0 +1,32 @@ +/* { dg-do run } */ +/* { dg-require-effective-target tls_runtime } */ +/* { dg-add-options tls } */ + +extern void abort (void); + +__thread int tls_le __attribute__((tls_model("local-exec"))) = 3; + +int get_le (void) +{ + return tls_le; +} + +int *get_lep (void) +{ + return &tls_le; +} + +int main (void) +{ + int val; + + val = get_le (); + if (val != 3) + abort (); + + val = *get_lep (); + if (val != 3) + abort (); + + return 0; +} diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index d3d7f75a554..6ede07494df 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -687,7 +687,7 @@ proc check_effective_target_tls_runtime {} { return [check_runtime tls_runtime { __thread int thr = 0; int main (void) { return thr; } - }] + } [add_options_for_tls ""]] } # Return 1 if -ffunction-sections is supported, 0 otherwise. -- 2.30.2