diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 96ca31472c1100e2452b6ea9403fcd2fe94ce01e..c831ce348aff82021ca969d14a4b3b8dc66db4d1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,15 @@
+2014-12-31  David Edelsohn  <dje.gcc@gmail.com>
+
+	* lib/target-supports.exp (add_options_for_tls): Prepend pthread
+	link flags.
+	* gcc.c-torture/execute/eeprof-1.c: Change AIX XFAIL to run-if.
+	* g++.old-deja/g++.mike/p755a.C: XFAIL on AIX.
+	* g++.dg/gomp/tls-5.C: Same.
+	* g++.dg/template/linkage1.C: Same.
+	* g++.dg/tls/thread_local1.C: Same.
+	* g++.dg/tls/thread_local7.C: Same.
+	* g++.dg/tls/thread_local7g.C: Same.
+
 2014-12-31  Tobias Burnus  <burnus@net-b.de>
 
 	* gfortran.dg/error_stop_3.f90: New.
@@ -913,7 +925,7 @@
 	predicate value.
 
 2014-12-04  Jack Howarth  <howarth@bromo.med.uc.edu>
-	
+
 	PR testsuite/64145
 	* gcc.dg/graphite/isl-codegen-loop-dumping.c: Restore
 	-fgraphite-identity.
diff --git a/gcc/testsuite/g++.dg/gomp/tls-5.C b/gcc/testsuite/g++.dg/gomp/tls-5.C
index 3679593af0ec141fd6b262587d6b36cad0eab1f6..e83ff1179e6bb268171b082176626e4b95d1e2e7 100644
--- a/gcc/testsuite/g++.dg/gomp/tls-5.C
+++ b/gcc/testsuite/g++.dg/gomp/tls-5.C
@@ -1,6 +1,6 @@
 // The reference temp should be TLS, not normal data.
 // { dg-require-effective-target c++11 }
-// { dg-final { scan-assembler-not "\\.data" { target tls_native } } }
+// { dg-final { scan-assembler-not "\\.data" { target tls_native xfail powerpc-*-aix* } } }
 
 extern int&& ir;
 #pragma omp threadprivate (ir)
diff --git a/gcc/testsuite/g++.dg/template/linkage1.C b/gcc/testsuite/g++.dg/template/linkage1.C
index 02aa96729636df49849d3f7a6bc94f4218fcedb9..ac4d30b131a7e89a0d852f56781ea1ed29cc4d00 100644
--- a/gcc/testsuite/g++.dg/template/linkage1.C
+++ b/gcc/testsuite/g++.dg/template/linkage1.C
@@ -1,7 +1,7 @@
 // PR c++/50372
 // Test that a template instantiation has the same linkage as its argument.
 // { dg-final { scan-assembler "(weak|glob)\[^\n\]*_Z3fooIXadL_Z13external_funcvEEEvv" } }
-// { dg-final { scan-assembler-not "(weak|glob)\[^\n\]*_Z3fooIXadL_ZL11static_funcvEEEvv" } }
+// { dg-final { scan-assembler-not "(weak|glob)\[^\n\]*_Z3fooIXadL_ZL11static_funcvEEEvv" { xfail powerpc-*-aix* } } }
 
 template<void (*fptr)(void)>
 void foo() { }
diff --git a/gcc/testsuite/g++.dg/tls/thread_local1.C b/gcc/testsuite/g++.dg/tls/thread_local1.C
index 67bde5549ded8c848c934cdaa79e8a85439662e6..e05187912feaabb85013a1e3c8e98c91bcd08cdc 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local1.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local1.C
@@ -7,7 +7,7 @@
 // simultaneous execution.
 // { dg-final { scan-assembler-not "cxa_guard" } }
 // The guard should be TLS, not local common.
-// { dg-final { scan-assembler-not "\.comm" } }
+// { dg-final { scan-assembler-not "\.comm" { xfail powerpc-*-aix* } } }
 
 struct A
 {
diff --git a/gcc/testsuite/g++.dg/tls/thread_local7.C b/gcc/testsuite/g++.dg/tls/thread_local7.C
index 3cb02dd51fcc844f6942f02c34d79d750f914053..aaac6c16a5239b303b8600fb3f02e16c20d0c2e4 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local7.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local7.C
@@ -2,7 +2,7 @@
 // { dg-require-effective-target tls }
 
 // The reference temp should be TLS, not normal data.
-// { dg-final { scan-assembler-not "\\.data" { target tls_native } } }
+// { dg-final { scan-assembler-not "\\.data" { target tls_native xfail powerpc-*-aix* } } }
 
 void f()
 {
diff --git a/gcc/testsuite/g++.dg/tls/thread_local7g.C b/gcc/testsuite/g++.dg/tls/thread_local7g.C
index fb847ce4a06ef8112af2173c88e08482cac48dae..05c0878e86f8c4911f1f7d3434d19582497c9b69 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local7g.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local7g.C
@@ -2,7 +2,7 @@
 // { dg-require-effective-target tls }
 
 // The reference temp should be TLS, not normal data.
-// { dg-final { scan-assembler-not "\\.data" { target tls_native } } }
+// { dg-final { scan-assembler-not "\\.data" { target tls_native xfail powerpc-*-aix* } } }
 
 thread_local int&& ir = 42;
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p755a.C b/gcc/testsuite/g++.old-deja/g++.mike/p755a.C
index bc23d579e931b13d4a63d9013e5b45b76a95fb2a..f2254b7a946449fbc4cbef375dc931295e91de91 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p755a.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p755a.C
@@ -1,4 +1,4 @@
-// { dg-do run  }
+// { dg-do run { xfail powerpc-*-aix* } }
 // It checks to see if you can define your own global delete operator.
 // prms-id: 755
 
diff --git a/gcc/testsuite/gcc.c-torture/execute/eeprof-1.c b/gcc/testsuite/gcc.c-torture/execute/eeprof-1.c
index c2a9ff65f18c94f6fe99c103f3a303ca4467a5ee..85c262b5ca9fbd2b3f2baa66aa128c96cc825e64 100644
--- a/gcc/testsuite/gcc.c-torture/execute/eeprof-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/eeprof-1.c
@@ -1,6 +1,6 @@
 /* { dg-require-effective-target return_address } */
 /* { dg-options "-finstrument-functions" } */
-/* { dg-xfail-if "" { powerpc-ibm-aix* } "*" "" } */
+/* { dg-xfail-run-if "" { powerpc-ibm-aix* } "*" "" } */
 
 extern void abort (void);
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index a9d8e6c09da205d86b5a6a4008fc2aef99844dbb..60ff3463d0ea9373547805815e02a4bf772c04cf 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -596,7 +596,7 @@ proc add_options_for_tls { flags } {
 	     int f (void) { return i; }
 	     void g (int j) { i = j; }
 	 }] } {
-	return "$flags -pthread"
+	return "-pthread [g++_link_flags [get_multilibs "-pthread"] ] $flags "
     }
     return $flags
 }