diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3943c2fed041974d6df919c3e708326d21e6b076..3c57e52bd403fc2772e2ff8b64816d74f395c377 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,20 @@
+2013-01-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* g++.dg/tls/thread_local-cse.C: Don't xfail on *-*-solaris2.9.
+	Add tls options.
+	* g++.dg/tls/thread_local2.C: Likewise.
+	* g++.dg/tls/thread_local2g.C: Likewise.
+	* g++.dg/tls/thread_local6.C: Likewise.
+	* g++.dg/tls/thread_local-order1.C: Add tls options.
+	* g++.dg/tls/thread_local-order2.C: Likewise.
+	* g++.dg/tls/thread_local3.C: Likewise.
+	* g++.dg/tls/thread_local3g.C: Likewise.
+	* g++.dg/tls/thread_local4.C: Likewise.
+	* g++.dg/tls/thread_local4g.C: Likewise.
+	* g++.dg/tls/thread_local5.C: Likewise.
+	* g++.dg/tls/thread_local5g.C: Likewise.
+	* g++.dg/tls/thread_local6g.C: Likewise.
+
 2013-01-10  Kostya Serebryany  <kcc@google.com>
 
 	* g++.dg/asan/asan_test.cc: Sync from upstream.
diff --git a/gcc/testsuite/g++.dg/tls/thread_local-cse.C b/gcc/testsuite/g++.dg/tls/thread_local-cse.C
index e3b13787d4d364f2bc48058083d0fcbe44e1d0b3..486a986664d99bdfcd0d6331530cf326258931e8 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local-cse.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local-cse.C
@@ -1,7 +1,8 @@
 // Test for CSE of the wrapper function: we should only call it once
 // for the two references to ir.
-// { dg-do run { xfail *-*-solaris2.9 } }
+// { dg-do run }
 // { dg-options "-std=c++11 -O -fno-inline -save-temps" }
+// { dg-add-options tls }
 // { dg-require-effective-target tls_runtime }
 // { dg-require-alias }
 // { dg-final { scan-assembler-times "call *_ZTW2ir" 1 { xfail *-*-* } } }
diff --git a/gcc/testsuite/g++.dg/tls/thread_local-order1.C b/gcc/testsuite/g++.dg/tls/thread_local-order1.C
index 70e71bfab33eefb68b1d0a06203421e9f37b66f1..231b290dea7381a2f3929ffb256896a1c2b7eeea 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local-order1.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local-order1.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-add-options tls }
 // { dg-require-effective-target tls_runtime }
 // { dg-require-alias }
 // { dg-require-cxa-atexit "" }
diff --git a/gcc/testsuite/g++.dg/tls/thread_local-order2.C b/gcc/testsuite/g++.dg/tls/thread_local-order2.C
index eb9c7690160b29f0894511b8b3655e21d103a58b..2d85eca2c1e8828495ce3d8afee205486afdd3cf 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local-order2.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local-order2.C
@@ -4,6 +4,7 @@
 
 // { dg-do run { xfail *-*-* } }
 // { dg-options "-std=c++11" }
+// { dg-add-options tls }
 // { dg-require-effective-target tls_runtime }
 // { dg-require-alias }
 
diff --git a/gcc/testsuite/g++.dg/tls/thread_local2.C b/gcc/testsuite/g++.dg/tls/thread_local2.C
index 7e5f41e8f67c610f6d57ff0679ce536347779bda..bb255de7a14185ce535c2ddf5ecd538a2815182b 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local2.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local2.C
@@ -1,5 +1,6 @@
-// { dg-do run { xfail *-*-solaris2.9 } }
+// { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-add-options tls }
 // { dg-require-effective-target tls_runtime }
 
 extern "C" void abort();
diff --git a/gcc/testsuite/g++.dg/tls/thread_local2g.C b/gcc/testsuite/g++.dg/tls/thread_local2g.C
index dd057c4dac0bacb038761a23e2fb3c6acb724d0b..e1ad20dd8c83da668106b18147bf766b666a6b64 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local2g.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local2g.C
@@ -1,5 +1,6 @@
-// { dg-do run { xfail *-*-solaris2.9 } }
+// { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-add-options tls }
 // { dg-require-effective-target tls_runtime }
 // { dg-require-alias }
 
diff --git a/gcc/testsuite/g++.dg/tls/thread_local3.C b/gcc/testsuite/g++.dg/tls/thread_local3.C
index 461f12676999f2943635ce224e99ee1ac581de0e..e05a0b95306777c6b52f4cc279c2e504b49bb941 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local3.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local3.C
@@ -3,6 +3,7 @@
 // { dg-require-effective-target tls_runtime }
 // { dg-require-effective-target pthread }
 // { dg-options -pthread }
+// { dg-add-options tls }
 
 int c;
 int d;
diff --git a/gcc/testsuite/g++.dg/tls/thread_local3g.C b/gcc/testsuite/g++.dg/tls/thread_local3g.C
index 2f2888baeeb750ab8770360612c6e210c6da907a..19a213e0006ae62893741df459b07980115c12ce 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local3g.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local3g.C
@@ -5,6 +5,7 @@
 // { dg-require-alias }
 // { dg-require-cxa-atexit "" }
 // { dg-options -pthread }
+// { dg-add-options tls }
 
 int c;
 int d;
diff --git a/gcc/testsuite/g++.dg/tls/thread_local4.C b/gcc/testsuite/g++.dg/tls/thread_local4.C
index 53b1f0519be68369bdea56db3f2961dd6442e2f0..acf1cae529462a04a51d1dc15db32c3792a83d90 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local4.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local4.C
@@ -5,6 +5,7 @@
 // { dg-require-effective-target tls_runtime }
 // { dg-require-effective-target pthread }
 // { dg-options -pthread }
+// { dg-add-options tls }
 
 #include <pthread.h>
 #include <unistd.h>
diff --git a/gcc/testsuite/g++.dg/tls/thread_local4g.C b/gcc/testsuite/g++.dg/tls/thread_local4g.C
index 59041867c2d86c5b484f0f031f725e1ad0ab547e..f9c4b77aef0bbfff75d8e662b5753e69a3bda8dd 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local4g.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local4g.C
@@ -7,6 +7,7 @@
 // { dg-require-alias }
 // { dg-require-cxa-atexit "" }
 // { dg-options -pthread }
+// { dg-add-options tls }
 
 #include <pthread.h>
 #include <unistd.h>
diff --git a/gcc/testsuite/g++.dg/tls/thread_local5.C b/gcc/testsuite/g++.dg/tls/thread_local5.C
index 7ce02f62b97983397cbc8cfdda364c14302f9c33..8d17584edd2ee8af45460211f48d7c042cb5f587 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local5.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local5.C
@@ -5,6 +5,7 @@
 // { dg-require-effective-target tls_runtime }
 // { dg-require-effective-target pthread }
 // { dg-options -pthread }
+// { dg-add-options tls }
 
 #include <pthread.h>
 #include <unistd.h>
diff --git a/gcc/testsuite/g++.dg/tls/thread_local5g.C b/gcc/testsuite/g++.dg/tls/thread_local5g.C
index 0fb6ceaac5e0824547be46d78321d58263483e62..1e3c9b709307c6adb292a1dd74d2398e8838c470 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local5g.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local5g.C
@@ -7,6 +7,7 @@
 // { dg-require-alias }
 // { dg-require-cxa-atexit "" }
 // { dg-options -pthread }
+// { dg-add-options tls }
 
 #include <pthread.h>
 #include <unistd.h>
diff --git a/gcc/testsuite/g++.dg/tls/thread_local6.C b/gcc/testsuite/g++.dg/tls/thread_local6.C
index dcbcef59665953bd5d4558dda85902e545385832..39dd6029eb91c09024be5808b348ea530273d099 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local6.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local6.C
@@ -1,7 +1,8 @@
 // Test for cleanups in the main thread without -pthread.
 
-// { dg-do run { xfail *-*-solaris2.9 } }
+// { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-add-options tls }
 // { dg-require-effective-target tls_runtime }
 
 extern "C" void _exit (int);
diff --git a/gcc/testsuite/g++.dg/tls/thread_local6g.C b/gcc/testsuite/g++.dg/tls/thread_local6g.C
index 3a680fb5eb851d8d21cdbbc112139ce75d9133c5..57270aaa2809aa8a6f618131baa8062b3299d88b 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local6g.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local6g.C
@@ -2,6 +2,7 @@
 
 // { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-add-options tls }
 // { dg-require-effective-target tls_runtime }
 // { dg-require-cxa-atexit "" }
 // { dg-require-alias }