aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2011-05-24 16:32:47 +0200
committerRainer Orth <ro@gcc.gnu.org>2011-05-24 14:32:47 +0000
commit87d426f8db0a1dde95fa1250dbbbf36ec587c286 (patch)
tree7eff63979906a8d8b449cedc419c1f8a9d3e6d52 /gcc
parent2fcb858cb4998559481133c3cd3a5bc390470695 (diff)
downloadgcc-87d426f8db0a1dde95fa1250dbbbf36ec587c286.zip
gcc-87d426f8db0a1dde95fa1250dbbbf36ec587c286.tar.gz
gcc-87d426f8db0a1dde95fa1250dbbbf36ec587c286.tar.bz2
run-gd.c: New test.
2011-05-24 Uros Bizjak <ubizjak@gmail.com> Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * 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 <ro@CeBiTec.Uni-Bielefeld.DE> From-SVN: r174117
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog10
-rw-r--r--gcc/testsuite/gcc.dg/torture/tls/run-gd.c32
-rw-r--r--gcc/testsuite/gcc.dg/torture/tls/run-ie.c32
-rw-r--r--gcc/testsuite/gcc.dg/torture/tls/run-ld.c33
-rw-r--r--gcc/testsuite/gcc.dg/torture/tls/run-le.c32
-rw-r--r--gcc/testsuite/lib/target-supports.exp2
6 files changed, 140 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6481ead..48fb720 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2011-05-24 Uros Bizjak <ubizjak@gmail.com>
+ Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * 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 <ro@CeBiTec.Uni-Bielefeld.DE>
* 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 0000000..6335e73
--- /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 0000000..ec07a44
--- /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 0000000..cabfaf7
--- /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 0000000..0c340f3
--- /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 d3d7f75..6ede074 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.