diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 83c4e06dec28a2297150d517ce55417ea288c265..fbd252098de8149d540985d6790b7f89eb604629 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2016-05-26  Nathan Sidwell  <nathan@acm.org>
+
+	* gcc.dg/20060410.c: Xfail on ptx.
+	* gcc.dg/torture/c99-contract-1.c: Skip on ptx.
+	* c-c++-common/torture/complex-sign-mixed-add.c: Skip on ptx -O0
+	* c-c++-common/torture/complex-sign-mixed-sub.c: Skip on ptx -O0
+	* gcc.c-torture/execute/pr68185.c: Skip on ptx -O0 & Os.
+	* gcc.c-torture/execute/20020529-1.c: Skip on ptx -00.
+
 2016-05-26  Thomas Preud'homme  <thomas.preudhomme@arm.com>
 
 	* gcc.dg/plugin/plugin.exp: skip tail call tests for Thumb-1.
diff --git a/gcc/testsuite/c-c++-common/torture/complex-sign-mixed-add.c b/gcc/testsuite/c-c++-common/torture/complex-sign-mixed-add.c
index caea562e8bd3c6a9ab9c8d2e6ca37cb8438db341..75e34a1c03b37efa1bcfc09000ebfe0b7f9b97cd 100644
--- a/gcc/testsuite/c-c++-common/torture/complex-sign-mixed-add.c
+++ b/gcc/testsuite/c-c++-common/torture/complex-sign-mixed-add.c
@@ -2,6 +2,7 @@
    addition.  */
 /* { dg-do run } */
 /* { dg-options "-std=gnu99" { target c } } */
+/* { dg-skip-if "ptx can elide zero additions" { "nvptx-*-*" } { "-O0" } { "" } } */
 
 #include "complex-sign.h"
 
diff --git a/gcc/testsuite/c-c++-common/torture/complex-sign-mixed-sub.c b/gcc/testsuite/c-c++-common/torture/complex-sign-mixed-sub.c
index d9e083cfdce8b2b24f1bc50a172cbb64aa7fce91..0c88961562123d34c0d4df9d2b7fd4ed1851ec4a 100644
--- a/gcc/testsuite/c-c++-common/torture/complex-sign-mixed-sub.c
+++ b/gcc/testsuite/c-c++-common/torture/complex-sign-mixed-sub.c
@@ -2,6 +2,7 @@
    subtraction.  */
 /* { dg-do run } */
 /* { dg-options "-std=gnu99" { target c } } */
+/* { dg-skip-if "ptx can elide zero additions" { "nvptx-*-*" } { "-O0" } { "" } } */
 
 #include "complex-sign.h"
 
diff --git a/gcc/testsuite/gcc.c-torture/execute/20020529-1.c b/gcc/testsuite/gcc.c-torture/execute/20020529-1.c
index d1b93c76fdf4d4354aa921fdfbf88af737123c77..160a716ba5bf574f4f20a6ea9ec84f4760bd6d29 100644
--- a/gcc/testsuite/gcc.c-torture/execute/20020529-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/20020529-1.c
@@ -12,6 +12,10 @@
    forced a splitter through the output pattern "#", but there was no
    matching splitter.  */
 
+/* The ptx assembler appears to clobber 'b' inside foo during the f1 call.
+   Reported to nvidia 2016-05-18.  */
+/* { dg-skip-if "PTX assembler bug" { nvptx-*-* } { "-O0" } { "" } } */
+
 struct xx
  {
    int a;
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr68185.c b/gcc/testsuite/gcc.c-torture/execute/pr68185.c
index 5e078ae6f1c732fa4cf32ba5b243730a7362ea22..a41a557df9582defc81a08a594936b8682c843d6 100644
--- a/gcc/testsuite/gcc.c-torture/execute/pr68185.c
+++ b/gcc/testsuite/gcc.c-torture/execute/pr68185.c
@@ -1,4 +1,4 @@
-/* { dg-xfail-if "ptxas crashes" { nvptx-*-* } { "-O0" } { "" } } */
+/* { dg-skip-if "ptxas crashes or executes incorrectly" { nvptx-*-* } { "-O0" "-Os" } { "" } } Reported 2015-11-20  */
 
 int a, b, d = 1, e, f, o, u, w = 1, z;
 short c, q, t;
diff --git a/gcc/testsuite/gcc.dg/20060410.c b/gcc/testsuite/gcc.dg/20060410.c
index 88253bb43f3e4441793944d2f071dd9f24ed0d35..b4d00cb991df2339df4f3504b0dcbbcbc95f5c3a 100644
--- a/gcc/testsuite/gcc.dg/20060410.c
+++ b/gcc/testsuite/gcc.dg/20060410.c
@@ -13,4 +13,4 @@ int bar (void)
     return ((struct foo *)0x1234)->i;
 }
 
-/* { dg-final { scan-assembler "foo" } } */
+/* { dg-final { scan-assembler "foo" { xfail nvptx-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/torture/c99-contract-1.c b/gcc/testsuite/gcc.dg/torture/c99-contract-1.c
index 6023083080793f34f2ae12b0d2c8e4f0e36e2d4f..78b4cdc9d013d65df2ea6ad6418f287e256d65d4 100644
--- a/gcc/testsuite/gcc.dg/torture/c99-contract-1.c
+++ b/gcc/testsuite/gcc.dg/torture/c99-contract-1.c
@@ -2,6 +2,7 @@
    expressions.  */
 /* { dg-do run } */
 /* { dg-options "-std=c99 -pedantic-errors" } */
+/* { dg-skip-if "ptx only loosely follows IEEE" { "nvptx-*-*" } { "*" } { "" } } */
 
 extern void abort (void);
 extern void exit (int);