diff --git a/gcc/testsuite/gcc.dg/torture/tls/tls.exp b/gcc/testsuite/gcc.dg/torture/tls/tls.exp
--- a/gcc/testsuite/gcc.dg/torture/tls/tls.exp
+++ b/gcc/testsuite/gcc.dg/torture/tls/tls.exp
@@ -1,4 +1,4 @@
-#   Copyright (C) 2010 Free Software Foundation, Inc.
+# Copyright (C) 2010, 2011 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -18,6 +18,7 @@
 
 # Load support procs.
 load_lib gcc-dg.exp
+load_lib torture-options.exp
 
 # If a testcase doesn't have special options, use these.
 global DEFAULT_CFLAGS
@@ -25,12 +26,32 @@ if ![info exists DEFAULT_CFLAGS] then {
     set DEFAULT_CFLAGS " -ansi -pedantic-errors"
 }
 
+global DG_TORTURE_OPTIONS LTO_TORTURE_OPTIONS
+set TLS_TORTURE_OPTIONS $DG_TORTURE_OPTIONS
+if { [check_effective_target_fpic] } then {
+    foreach pic {fpic fPIC} {
+	foreach option $DG_TORTURE_OPTIONS {
+	    lappend TLS_TORTURE_OPTIONS "$option -$pic"
+	}
+    }
+}
+if { [check_effective_target_fpie] } then {
+    foreach pie {fpie fPIE} {
+	foreach option $DG_TORTURE_OPTIONS {
+	    lappend TLS_TORTURE_OPTIONS "$option -$pie"
+	}
+    }
+}
+
 # Initialize `dg'.
 dg-init
+torture-init
+set-torture-options $TLS_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS
 
 # Main loop.
 gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \
         $DEFAULT_CFLAGS
 
 # All done.
+torture-finish
 dg-finish
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -788,6 +788,18 @@ proc check_effective_target_fpic { } {
     return 0
 }
 
+# Return 1 if -fpie and -fPIE are supported, as in no warnings or errors
+# emitted, 0 otherwise.
+
+proc check_effective_target_fpie { } {
+    if [check_no_compiler_messages fpie executable {
+	int main (void) { return 0; }
+    } "-fpie"] {
+	return 1
+    }
+    return 0
+}
+
 # Return true if the target supports -mpaired-single (as used on MIPS).
 
 proc check_effective_target_mpaired_single { } {
