summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>2015-08-21 13:13:42 +0000
committernathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>2015-08-21 13:13:42 +0000
commit2a33a5954f9d959cc1d9360b8043288b51043c0f (patch)
treeb97820f59ffa43f30a7aac3ebe7306ba1eaa99a3
parent5563941300e97d0ae271ed8e98cd93c2af50d11f (diff)
downloadgcc-2a33a5954f9d959cc1d9360b8043288b51043c0f.tar.gz
nvptx cleanup
* lib/target-supports.exp (check_effective_target_freestanding): nvptx is freestanding. (check_effective_target_global_constructor): New. * lib/gcc.exp (gcc_target_compile): Set SIGNAL_SUPPRESS if needed. * gcc.dg/debug/debug.exp: Skip for nvptx. * gcc.dg/debug/dwarf2/dwarf2.exp: Likewise. * gcc.c-torture/execute/981019-1.c: Ptx assembler bug. * gcc.c-torture/compile/limits-externdecl.c: Likewise. * gcc.c-torture/compile/pr33855.c: Likewise. * gcc.c-torture/compile/920723-1.c: Likewise. * gcc.c-torture/compile/pr35468.c: Ptx assembler objects to writing a const. * gcc.c-torture/compile/mangle-1.c: Ptx assembler objects to . in label. * gcc.c-torture/compile/callind.c: Ptx assembler objects to label 'call'. * gcc.c-torture/execute/ieee/mul-subnormal-single-1.c: Make main prototype normal. * gcc.c-torture/execute/switch-1.c: Likewise. * gcc.c-torture/execute/pr34456.c: Require not freestanding * gcc.c-torture/execute/printf-1.c: Likewise. * gcc.c-torture/execute/printf-chk-1.c: Likewise. * gcc.c-torture/execute/fprintf-1.c: Likewise. * gcc.c-torture/execute/fprintf-chk-1.c: Likewise. * gcc.c-torture/execute/vprintf-1.c: Likewise. * gcc.c-torture/execute/vprintf-chk-1.c: Likewise. * gcc.c-torture/execute/vfprintf-1.c: Likewise. * gcc.c-torture/execute/vfprintf-chk-1.c: Likewise. * gcc.c-torture/execute/builtins/fputs.x: Likewise. * gcc.c-torture/execute/gofast.c: Likewise. * gcc.c-torture/execute/complex-6.c: Likewise. * gcc.c-torture/execute/builtins/memcpy-chk.x: Require nonlocal goto. * gcc.c-torture/execute/builtins/memmove-chk.x: Likewise. * gcc.c-torture/execute/builtins/mempcpy-chk.x: Likewise. * gcc.c-torture/execute/builtins/memset-chk.x: Likewise. * gcc.c-torture/execute/builtins/snprintf-chk.x: Likewise. * gcc.c-torture/execute/builtins/sprintf-chk.x: Likewise. * gcc.c-torture/execute/builtins/stpcpy-chk.x: Likewise. * gcc.c-torture/execute/builtins/stpncpy-chk.x: Likewise. * gcc.c-torture/execute/builtins/strcat-chk.x: Likewise. * gcc.c-torture/execute/builtins/strcpy-chk.x: Likewise. * gcc.c-torture/execute/builtins/strncat-chk.x: Likewise. * gcc.c-torture/execute/builtins/strncpy-chk.x: Likewise. * gcc.c-torture/execute/builtins/vsnprintf-chk.x: Likewise. * gcc.c-torture/execute/builtins/vsprintf-chk.x: Likewise. * gcc.c-torture/execute/builtins/pr23484-chk.x: Likewise. * gcc.dg/setjmp-1.c: Likewise. * gcc.dg/cleanup-5.c: Likewise. * gcc.dg/cleanup-12.c: Likewise. * gcc.dg/cleanup-13.c: Likewise. * gcc.dg/constructor-1.c: Require global ctor. * gcc.dg/fork-instrumentation.c: Require profiling. * gcc.dg/20030107-1.c: Likewise. * gcc.dg/20030702-1.c: Likewise. * gcc.dg/cpp/lexstrng.c: Avoid IO unless debugging. * gcc.dg/cpp/paste2.c: Likewise. * gcc.dg/cpp/strify3.c: Likewise. * gcc.dg/cpp/strify4.c: Likewise. * gcc.dg/cpp/lexnum.c: Likewise. * gcc.dg/cpp/digraphs.c: Likewise. * gcc.dg/cpp/macro1.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227059 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/testsuite/ChangeLog71
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/920723-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/callind.c4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/mangle-1.c12
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr33855.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr35468.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/981019-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/fputs.x7
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/memcpy-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/memmove-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/mempcpy-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/memset-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/pr23484-chk.x7
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/snprintf-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/sprintf-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/stpcpy-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/stpncpy-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/strcat-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/strcpy-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/strncat-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/strncpy-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/vsnprintf-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/vsprintf-chk.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/complex-6.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/fprintf-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/fprintf-chk-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/gofast.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/ieee/mul-subnormal-single-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr34456.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/printf-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/switch-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/vfprintf-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/vprintf-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/20030107-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/20030702-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/cleanup-12.c1
-rw-r--r--gcc/testsuite/gcc.dg/cleanup-13.c1
-rw-r--r--gcc/testsuite/gcc.dg/cleanup-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/constructor-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/cpp/digraphs.c4
-rw-r--r--gcc/testsuite/gcc.dg/cpp/lexnum.c4
-rw-r--r--gcc/testsuite/gcc.dg/cpp/lexstrng.c4
-rw-r--r--gcc/testsuite/gcc.dg/cpp/macro1.c4
-rw-r--r--gcc/testsuite/gcc.dg/cpp/paste2.c4
-rw-r--r--gcc/testsuite/gcc.dg/cpp/strify3.c4
-rw-r--r--gcc/testsuite/gcc.dg/cpp/strify4.c4
-rw-r--r--gcc/testsuite/gcc.dg/debug/debug.exp5
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp5
-rw-r--r--gcc/testsuite/gcc.dg/fork-instrumentation.c2
-rw-r--r--gcc/testsuite/gcc.dg/setjmp-1.c1
-rw-r--r--gcc/testsuite/lib/gcc.exp3
-rw-r--r--gcc/testsuite/lib/target-supports.exp14
56 files changed, 276 insertions, 7 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 171a92c286a..95c82570ba5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,74 @@
+2015-08-21 Nathan Sidwell <nathan@acm.org>
+
+ * lib/target-supports.exp (check_effective_target_freestanding): nvptx
+ is freestanding.
+ (check_effective_target_global_constructor): New.
+ * lib/gcc.exp (gcc_target_compile): Set SIGNAL_SUPPRESS if needed.
+ * gcc.dg/debug/debug.exp: Skip for nvptx.
+ * gcc.dg/debug/dwarf2/dwarf2.exp: Likewise.
+
+ * gcc.c-torture/execute/981019-1.c: Ptx assembler bug.
+ * gcc.c-torture/compile/limits-externdecl.c: Likewise.
+ * gcc.c-torture/compile/pr33855.c: Likewise.
+ * gcc.c-torture/compile/920723-1.c: Likewise.
+ * gcc.c-torture/compile/pr35468.c: Ptx assembler objects to
+ writing a const.
+ * gcc.c-torture/compile/mangle-1.c: Ptx assembler objects to . in
+ label.
+ * gcc.c-torture/compile/callind.c: Ptx assembler objects to label
+ 'call'.
+
+ * gcc.c-torture/execute/ieee/mul-subnormal-single-1.c: Make main
+ prototype normal.
+ * gcc.c-torture/execute/switch-1.c: Likewise.
+
+ * gcc.c-torture/execute/pr34456.c: Require not freestanding
+ * gcc.c-torture/execute/printf-1.c: Likewise.
+ * gcc.c-torture/execute/printf-chk-1.c: Likewise.
+ * gcc.c-torture/execute/fprintf-1.c: Likewise.
+ * gcc.c-torture/execute/fprintf-chk-1.c: Likewise.
+ * gcc.c-torture/execute/vprintf-1.c: Likewise.
+ * gcc.c-torture/execute/vprintf-chk-1.c: Likewise.
+ * gcc.c-torture/execute/vfprintf-1.c: Likewise.
+ * gcc.c-torture/execute/vfprintf-chk-1.c: Likewise.
+ * gcc.c-torture/execute/builtins/fputs.x: Likewise.
+ * gcc.c-torture/execute/gofast.c: Likewise.
+ * gcc.c-torture/execute/complex-6.c: Likewise.
+
+ * gcc.c-torture/execute/builtins/memcpy-chk.x: Require nonlocal goto.
+ * gcc.c-torture/execute/builtins/memmove-chk.x: Likewise.
+ * gcc.c-torture/execute/builtins/mempcpy-chk.x: Likewise.
+ * gcc.c-torture/execute/builtins/memset-chk.x: Likewise.
+ * gcc.c-torture/execute/builtins/snprintf-chk.x: Likewise.
+ * gcc.c-torture/execute/builtins/sprintf-chk.x: Likewise.
+ * gcc.c-torture/execute/builtins/stpcpy-chk.x: Likewise.
+ * gcc.c-torture/execute/builtins/stpncpy-chk.x: Likewise.
+ * gcc.c-torture/execute/builtins/strcat-chk.x: Likewise.
+ * gcc.c-torture/execute/builtins/strcpy-chk.x: Likewise.
+ * gcc.c-torture/execute/builtins/strncat-chk.x: Likewise.
+ * gcc.c-torture/execute/builtins/strncpy-chk.x: Likewise.
+ * gcc.c-torture/execute/builtins/vsnprintf-chk.x: Likewise.
+ * gcc.c-torture/execute/builtins/vsprintf-chk.x: Likewise.
+ * gcc.c-torture/execute/builtins/pr23484-chk.x: Likewise.
+ * gcc.dg/setjmp-1.c: Likewise.
+ * gcc.dg/cleanup-5.c: Likewise.
+ * gcc.dg/cleanup-12.c: Likewise.
+ * gcc.dg/cleanup-13.c: Likewise.
+
+ * gcc.dg/constructor-1.c: Require global ctor.
+
+ * gcc.dg/fork-instrumentation.c: Require profiling.
+ * gcc.dg/20030107-1.c: Likewise.
+ * gcc.dg/20030702-1.c: Likewise.
+
+ * gcc.dg/cpp/lexstrng.c: Avoid IO unless debugging.
+ * gcc.dg/cpp/paste2.c: Likewise.
+ * gcc.dg/cpp/strify3.c: Likewise.
+ * gcc.dg/cpp/strify4.c: Likewise.
+ * gcc.dg/cpp/lexnum.c: Likewise.
+ * gcc.dg/cpp/digraphs.c: Likewise.
+ * gcc.dg/cpp/macro1.c: Likewise.
+
2015-08-21 Dominik Vogt <vogt@linux.vnet.ibm.com>
* gcc.target/s390/zvector/vec-load_bndry-1.c: New test.
diff --git a/gcc/testsuite/gcc.c-torture/compile/920723-1.c b/gcc/testsuite/gcc.c-torture/compile/920723-1.c
index d8734a6796e..26b83f6f8f7 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920723-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920723-1.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "ptxas seg faults" { nvptx-*-* } { "-O2" } { "" } } */
+
#if defined(STACK_SIZE) && STACK_SIZE < 65536
# define GITT_SIZE 75
#endif
diff --git a/gcc/testsuite/gcc.c-torture/compile/callind.c b/gcc/testsuite/gcc.c-torture/compile/callind.c
index 74c0f1f9cef..5938d1b88fc 100644
--- a/gcc/testsuite/gcc.c-torture/compile/callind.c
+++ b/gcc/testsuite/gcc.c-torture/compile/callind.c
@@ -1,8 +1,8 @@
-call (foo, a)
+bar (foo, a)
int (**foo) ();
{
- (foo)[1] = call;
+ (foo)[1] = bar;
foo[a] (1);
}
diff --git a/gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c b/gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c
index 17afe730883..f131eea3cf1 100644
--- a/gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c
+++ b/gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "ptxas runs out of memory" { nvptx-*-* } { "*" } { "" } } */
+
/* { dg-require-effective-target int32plus } */
/* Inspired by the test case for PR middle-end/52640. */
diff --git a/gcc/testsuite/gcc.c-torture/compile/mangle-1.c b/gcc/testsuite/gcc.c-torture/compile/mangle-1.c
index 7abc934e75c..6797bc2436f 100644
--- a/gcc/testsuite/gcc.c-torture/compile/mangle-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/mangle-1.c
@@ -1,9 +1,17 @@
+
+#if __nvptx__
+/* Doesn't like . in labels. */
+#define SEP "$"
+#else
+#define SEP "."
+#endif
+
int foo(void)
{
static int x asm ("x") = 3;
return x++;
}
-int X2 asm ("x.0") = 4;
-int X3 asm ("_x.0") = 5;
+int X2 asm ("x" SEP "0") = 4;
+int X3 asm ("_x" SEP "0") = 5;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr33855.c b/gcc/testsuite/gcc.c-torture/compile/pr33855.c
index e678cb34105..7e0d5ef0d73 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr33855.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr33855.c
@@ -1,3 +1,4 @@
+/* { dg-skip-if "ptxas seg faults" { nvptx-*-* } { "-O1" } { "" } } */
/* Testcase by Martin Michlmayr <tbm@cyrius.com> */
/* Used to segfault due to cselim not marking the complex temp var
as GIMPLE reg. */
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr35468.c b/gcc/testsuite/gcc.c-torture/compile/pr35468.c
index 16d064b6222..68f55654f69 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr35468.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr35468.c
@@ -1,4 +1,5 @@
/* PR tree-optimization/35468 */
+/* { dg-do compile } */
void
foo (void)
diff --git a/gcc/testsuite/gcc.c-torture/execute/981019-1.c b/gcc/testsuite/gcc.c-torture/execute/981019-1.c
index 5d1f009009b..a093dff41b0 100644
--- a/gcc/testsuite/gcc.c-torture/execute/981019-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/981019-1.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "ptxas seg faults" { nvptx-*-* } { "-O2" "-O3*" } { "" } } */
+
extern int f2(void);
extern int f3(void);
extern void f1(void);
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/fputs.x b/gcc/testsuite/gcc.c-torture/execute/builtins/fputs.x
new file mode 100644
index 00000000000..c8fdaf5b254
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/fputs.x
@@ -0,0 +1,7 @@
+load_lib target-supports.exp
+
+if { [check_effective_target_freestanding] } {
+ return 1;
+}
+
+return 0;
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/memcpy-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/memcpy-chk.x
index e976a755ba0..61ec1640a10 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/memcpy-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/memcpy-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test4 struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/memmove-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/memmove-chk.x
index acf2132367b..c34ebb1f78a 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/memmove-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/memmove-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test5 struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/mempcpy-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/mempcpy-chk.x
index e976a755ba0..61ec1640a10 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/mempcpy-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/mempcpy-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test4 struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/memset-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/memset-chk.x
index 9b8363459c2..3019199fefd 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/memset-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/memset-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test3 struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/pr23484-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/pr23484-chk.x
new file mode 100644
index 00000000000..6f4746d43fb
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/pr23484-chk.x
@@ -0,0 +1,7 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
+return 0
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/snprintf-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/snprintf-chk.x
index 9b8363459c2..3019199fefd 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/snprintf-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/snprintf-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test3 struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/sprintf-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/sprintf-chk.x
index 9b8363459c2..3019199fefd 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/sprintf-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/sprintf-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test3 struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/stpcpy-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/stpcpy-chk.x
index e976a755ba0..61ec1640a10 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/stpcpy-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/stpcpy-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test4 struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/stpncpy-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/stpncpy-chk.x
index e976a755ba0..61ec1640a10 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/stpncpy-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/stpncpy-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test4 struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/strcat-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/strcat-chk.x
index 9b8363459c2..3019199fefd 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/strcat-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/strcat-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test3 struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/strcpy-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/strcpy-chk.x
index e976a755ba0..61ec1640a10 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/strcpy-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/strcpy-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test4 struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/strncat-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/strncat-chk.x
index 9b8363459c2..3019199fefd 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/strncat-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/strncat-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test3 struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/strncpy-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/strncpy-chk.x
index e976a755ba0..61ec1640a10 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/strncpy-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/strncpy-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test4 struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/vsnprintf-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/vsnprintf-chk.x
index 0d6e85c9711..1decd1468e7 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/vsnprintf-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/vsnprintf-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test3_sub struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/vsprintf-chk.x b/gcc/testsuite/gcc.c-torture/execute/builtins/vsprintf-chk.x
index 0d6e85c9711..1decd1468e7 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/vsprintf-chk.x
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/vsprintf-chk.x
@@ -1,3 +1,9 @@
+load_lib target-supports.exp
+
+if { ! [check_effective_target_nonlocal_goto] } {
+ return 1
+}
+
if [istarget "epiphany-*-*"] {
# This test assumes the absence of struct padding.
# to make this true for test3_sub struct A on epiphany would require
diff --git a/gcc/testsuite/gcc.c-torture/execute/complex-6.c b/gcc/testsuite/gcc.c-torture/execute/complex-6.c
index bbb8c8d40aa..2e7a6cdd71b 100644
--- a/gcc/testsuite/gcc.c-torture/execute/complex-6.c
+++ b/gcc/testsuite/gcc.c-torture/execute/complex-6.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "requires io" { freestanding } { "*" } { "" } } */
+
/* This test tests complex conjugate and passing/returning of
complex parameter. */
diff --git a/gcc/testsuite/gcc.c-torture/execute/fprintf-1.c b/gcc/testsuite/gcc.c-torture/execute/fprintf-1.c
index f16252b1e8e..bd3069f5383 100644
--- a/gcc/testsuite/gcc.c-torture/execute/fprintf-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/fprintf-1.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "requires io" { freestanding } { "*" } { "" } } */
+
#include <stdio.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.c-torture/execute/fprintf-chk-1.c b/gcc/testsuite/gcc.c-torture/execute/fprintf-chk-1.c
index 918ff8e5689..caad0a4bb3d 100644
--- a/gcc/testsuite/gcc.c-torture/execute/fprintf-chk-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/fprintf-chk-1.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "requires io" { freestanding } { "*" } { "" } } */
+
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
diff --git a/gcc/testsuite/gcc.c-torture/execute/gofast.c b/gcc/testsuite/gcc.c-torture/execute/gofast.c
index f55ced22073..a0b6e04465a 100644
--- a/gcc/testsuite/gcc.c-torture/execute/gofast.c
+++ b/gcc/testsuite/gcc.c-torture/execute/gofast.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "requires io" { freestanding } { "*" } { "" } } */
+
/* Program to test gcc's usage of the gofast library. */
/* The main guiding themes are to make it trivial to add test cases over time
diff --git a/gcc/testsuite/gcc.c-torture/execute/ieee/mul-subnormal-single-1.c b/gcc/testsuite/gcc.c-torture/execute/ieee/mul-subnormal-single-1.c
index d5f3fb45b6e..f4212146cd1 100644
--- a/gcc/testsuite/gcc.c-torture/execute/ieee/mul-subnormal-single-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/ieee/mul-subnormal-single-1.c
@@ -57,7 +57,7 @@ struct
};
int
-main (int argc, char *argv[], char *envp[])
+main ()
{
unsigned int i;
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr34456.c b/gcc/testsuite/gcc.c-torture/execute/pr34456.c
index 526c954e55a..53e46ed26a2 100644
--- a/gcc/testsuite/gcc.c-torture/execute/pr34456.c
+++ b/gcc/testsuite/gcc.c-torture/execute/pr34456.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "requires qsort" { freestanding } { "*" } { "" } } */
+
#include <stdlib.h>
int __attribute__ ((noinline)) debug (void) { return 1; }
diff --git a/gcc/testsuite/gcc.c-torture/execute/printf-1.c b/gcc/testsuite/gcc.c-torture/execute/printf-1.c
index 0ffcd5d443b..13e331d3e57 100644
--- a/gcc/testsuite/gcc.c-torture/execute/printf-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/printf-1.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "requires io" { freestanding } { "*" } { "" } } */
+
#include <stdio.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c b/gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c
index 8f9a79c5c57..fde85f99442 100644
--- a/gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "requires io" { freestanding } { "*" } { "" } } */
+
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
diff --git a/gcc/testsuite/gcc.c-torture/execute/switch-1.c b/gcc/testsuite/gcc.c-torture/execute/switch-1.c
index 30cffed7b85..22565576413 100644
--- a/gcc/testsuite/gcc.c-torture/execute/switch-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/switch-1.c
@@ -22,7 +22,7 @@ foo (int x)
}
int
-main (int argc)
+main ()
{
int i, r;
diff --git a/gcc/testsuite/gcc.c-torture/execute/vfprintf-1.c b/gcc/testsuite/gcc.c-torture/execute/vfprintf-1.c
index c0038042542..c9ce492e8b9 100644
--- a/gcc/testsuite/gcc.c-torture/execute/vfprintf-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/vfprintf-1.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "requires io" { freestanding } { "*" } { "" } } */
+
#ifndef test
#include <stdio.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.c b/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.c
index f8f964c7e9a..a642209c19b 100644
--- a/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "requires io" { freestanding } { "*" } { "" } } */
+
#ifndef test
#include <stdio.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.c-torture/execute/vprintf-1.c b/gcc/testsuite/gcc.c-torture/execute/vprintf-1.c
index 9f1b8bf67aa..8b7038fd7bf 100644
--- a/gcc/testsuite/gcc.c-torture/execute/vprintf-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/vprintf-1.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "requires io" { freestanding } { "*" } { "" } } */
+
#ifndef test
#include <stdio.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.c b/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.c
index ca62f8b9fe2..f9bda6ed856 100644
--- a/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "requires io" { freestanding } { "*" } { "" } } */
+
#ifndef test
#include <stdio.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.dg/20030107-1.c b/gcc/testsuite/gcc.dg/20030107-1.c
index 9264eba701e..91640807efd 100644
--- a/gcc/testsuite/gcc.dg/20030107-1.c
+++ b/gcc/testsuite/gcc.dg/20030107-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-fprofile-arcs" } */
+/* { dg-require-profiling "-fprofile-generate" } */
extern void bar(void) __attribute__((noreturn));
int foo (void) { bar(); }
diff --git a/gcc/testsuite/gcc.dg/20030702-1.c b/gcc/testsuite/gcc.dg/20030702-1.c
index 1516a5a471d..0bc1b1c88e1 100644
--- a/gcc/testsuite/gcc.dg/20030702-1.c
+++ b/gcc/testsuite/gcc.dg/20030702-1.c
@@ -3,6 +3,7 @@
/* { dg-do compile { target fpic } } */
/* { dg-options "-O2 -fpic -fprofile-arcs" } */
/* { dg-skip-if "requires unsupported run-time relocation" { spu-*-* } { "*" } { "" } } */
+/* { dg-require-profiling "-fprofile-generate" } */
int fork (void);
diff --git a/gcc/testsuite/gcc.dg/cleanup-12.c b/gcc/testsuite/gcc.dg/cleanup-12.c
index 90de90ac831..15c079f63fb 100644
--- a/gcc/testsuite/gcc.dg/cleanup-12.c
+++ b/gcc/testsuite/gcc.dg/cleanup-12.c
@@ -3,6 +3,7 @@
/* { dg-do run } */
/* { dg-options "-O2 -fexceptions" } */
/* { dg-skip-if "" { "ia64-*-hpux11.*" } { "*" } { "" } } */
+/* { dg-skip-if "" { ! nonlocal_goto } { "*" } { "" } } */
/* Verify unwind info in presence of alloca. */
#include <unwind.h>
diff --git a/gcc/testsuite/gcc.dg/cleanup-13.c b/gcc/testsuite/gcc.dg/cleanup-13.c
index 5a0d4c69f5a..0ab1ca27650 100644
--- a/gcc/testsuite/gcc.dg/cleanup-13.c
+++ b/gcc/testsuite/gcc.dg/cleanup-13.c
@@ -2,6 +2,7 @@
/* { dg-do run } */
/* { dg-options "-fexceptions" } */
/* { dg-skip-if "" { "ia64-*-hpux11.*" } { "*" } { "" } } */
+/* { dg-skip-if "" { ! nonlocal_goto } { "*" } { "" } } */
/* Verify DW_OP_* handling in the unwinder. */
#include <unwind.h>
diff --git a/gcc/testsuite/gcc.dg/cleanup-5.c b/gcc/testsuite/gcc.dg/cleanup-5.c
index c335c1e4492..816d4cef0c1 100644
--- a/gcc/testsuite/gcc.dg/cleanup-5.c
+++ b/gcc/testsuite/gcc.dg/cleanup-5.c
@@ -2,6 +2,7 @@
/* { dg-do run } */
/* { dg-options "-fexceptions" } */
/* { dg-skip-if "" { "ia64-*-hpux11.*" } { "*" } { "" } } */
+/* { dg-skip-if "" { ! nonlocal_goto } { "*" } { "" } } */
/* Verify that cleanups work with exception handling. */
#include <unwind.h>
diff --git a/gcc/testsuite/gcc.dg/constructor-1.c b/gcc/testsuite/gcc.dg/constructor-1.c
index 1095a455cfa..73e9fc32007 100644
--- a/gcc/testsuite/gcc.dg/constructor-1.c
+++ b/gcc/testsuite/gcc.dg/constructor-1.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-O2" } */
+/* { dg-skip-if "" { ! global_constructor } { "*" } { "" } } */
/* The ipa-split pass pulls the body of the if(!x) block
into a separate function to make foo a better inlining
diff --git a/gcc/testsuite/gcc.dg/cpp/digraphs.c b/gcc/testsuite/gcc.dg/cpp/digraphs.c
index 49a1bcd8604..55bc46b061f 100644
--- a/gcc/testsuite/gcc.dg/cpp/digraphs.c
+++ b/gcc/testsuite/gcc.dg/cpp/digraphs.c
@@ -8,7 +8,11 @@
extern int strcmp (const char *, const char *);
extern void abort (void);
+#if DEBUG
extern int puts (const char *);
+#else
+#define puts(X)
+#endif
#define err(str) do { puts(str); abort(); } while (0)
%:define glue(x, y) x %:%: y /* #define glue(x, y) x ## y. */
diff --git a/gcc/testsuite/gcc.dg/cpp/lexnum.c b/gcc/testsuite/gcc.dg/cpp/lexnum.c
index 7df15540833..3d7a9a8ddf8 100644
--- a/gcc/testsuite/gcc.dg/cpp/lexnum.c
+++ b/gcc/testsuite/gcc.dg/cpp/lexnum.c
@@ -5,7 +5,11 @@
/* Test lexing of numbers. */
+#if DEBUG
extern int puts (const char *);
+#else
+#define puts(X)
+#endif
extern void abort (void);
#define err(str) do { puts(str); abort(); } while (0)
diff --git a/gcc/testsuite/gcc.dg/cpp/lexstrng.c b/gcc/testsuite/gcc.dg/cpp/lexstrng.c
index b0353300395..9e13cd5fa33 100644
--- a/gcc/testsuite/gcc.dg/cpp/lexstrng.c
+++ b/gcc/testsuite/gcc.dg/cpp/lexstrng.c
@@ -11,7 +11,11 @@
typedef __WCHAR_TYPE__ wchar_t;
extern int strcmp (const char *, const char *);
+#if DEBUG
extern int puts (const char *);
+#else
+#define puts(X)
+#endif
extern void abort (void);
#define err(str) do { puts(str); abort(); } while (0)
diff --git a/gcc/testsuite/gcc.dg/cpp/macro1.c b/gcc/testsuite/gcc.dg/cpp/macro1.c
index e7235f577c2..a2b1a38e295 100644
--- a/gcc/testsuite/gcc.dg/cpp/macro1.c
+++ b/gcc/testsuite/gcc.dg/cpp/macro1.c
@@ -4,7 +4,11 @@
/* Tests various macro abuse is correctly expanded. */
+#if DEBUG
extern int puts (const char *);
+#else
+#define puts(X)
+#endif
extern void abort (void);
extern int strcmp(const char *s1, const char *s2);
diff --git a/gcc/testsuite/gcc.dg/cpp/paste2.c b/gcc/testsuite/gcc.dg/cpp/paste2.c
index 788e4eb51d3..b9bc7c2a8d0 100644
--- a/gcc/testsuite/gcc.dg/cpp/paste2.c
+++ b/gcc/testsuite/gcc.dg/cpp/paste2.c
@@ -12,7 +12,11 @@
typedef __WCHAR_TYPE__ wchar_t;
extern int strcmp (const char *, const char *);
+#if DEBUG
extern int puts (const char *);
+#else
+#define puts(X)
+#endif
extern void abort (void);
#define err(str) do { puts(str); abort(); } while (0)
diff --git a/gcc/testsuite/gcc.dg/cpp/strify3.c b/gcc/testsuite/gcc.dg/cpp/strify3.c
index 5d76b5e750f..b2ee4ab5562 100644
--- a/gcc/testsuite/gcc.dg/cpp/strify3.c
+++ b/gcc/testsuite/gcc.dg/cpp/strify3.c
@@ -9,7 +9,11 @@
Neil Booth, 24 Sep 2001. */
extern int strcmp (const char *, const char *);
+#if DEBUG
extern int puts (const char *);
+#else
+#define puts(X)
+#endif
extern void abort (void);
#define err(str) do { puts(str); abort(); } while (0)
diff --git a/gcc/testsuite/gcc.dg/cpp/strify4.c b/gcc/testsuite/gcc.dg/cpp/strify4.c
index b8b2f11e9d1..9b4c0ddf4f1 100644
--- a/gcc/testsuite/gcc.dg/cpp/strify4.c
+++ b/gcc/testsuite/gcc.dg/cpp/strify4.c
@@ -4,7 +4,11 @@
Andrew Pinski */
extern int strcmp (const char *, const char *);
+#if DEBUG
extern int puts (const char *);
+#else
+#define puts(X)
+#endif
extern void abort (void);
#define err(str) do { puts(str); abort(); } while (0)
diff --git a/gcc/testsuite/gcc.dg/debug/debug.exp b/gcc/testsuite/gcc.dg/debug/debug.exp
index 908deb16a8d..ac162ae64b4 100644
--- a/gcc/testsuite/gcc.dg/debug/debug.exp
+++ b/gcc/testsuite/gcc.dg/debug/debug.exp
@@ -19,6 +19,11 @@
# Load support procs.
load_lib gcc-dg.exp
+# Disable on ptx
+if { [istarget nvptx-*-*] } {
+ return
+}
+
# Initialize `dg'.
dg-init
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
index d17bb5ee448..9063eb1d3a5 100644
--- a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
@@ -19,6 +19,11 @@
# Load support procs.
load_lib gcc-dg.exp
+# Disable on ptx
+if { [istarget nvptx-*-*] } {
+ return
+}
+
# If a testcase doesn't have special options, use these.
global DEFAULT_CFLAGS
if ![info exists DEFAULT_CFLAGS] then {
diff --git a/gcc/testsuite/gcc.dg/fork-instrumentation.c b/gcc/testsuite/gcc.dg/fork-instrumentation.c
index f875e180882..aedb9ee797e 100644
--- a/gcc/testsuite/gcc.dg/fork-instrumentation.c
+++ b/gcc/testsuite/gcc.dg/fork-instrumentation.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O0 -fprofile-generate" } */
+/* { dg-require-profiling "-fprofile-generate" } */
+
int fork(void);
int
t()
diff --git a/gcc/testsuite/gcc.dg/setjmp-1.c b/gcc/testsuite/gcc.dg/setjmp-1.c
index b5c84fc8792..c5dcef24934 100644
--- a/gcc/testsuite/gcc.dg/setjmp-1.c
+++ b/gcc/testsuite/gcc.dg/setjmp-1.c
@@ -3,6 +3,7 @@
/* { dg-do compile } */
/* { dg-options "-O -Wclobbered -Wextra -Wall" } */
+/* { dg-skip-if "" { ! nonlocal_goto } { "*" } { "" } } */
#include <setjmp.h>
diff --git a/gcc/testsuite/lib/gcc.exp b/gcc/testsuite/lib/gcc.exp
index 3ba8d3e5747..55e1c4fc22e 100644
--- a/gcc/testsuite/lib/gcc.exp
+++ b/gcc/testsuite/lib/gcc.exp
@@ -150,6 +150,9 @@ proc gcc_target_compile { source dest type options } {
if [target_info exists gcc,no_label_values] {
lappend options "additional_flags=-DNO_LABEL_VALUES"
}
+ if [target_info exists gcc,signal_suppress] {
+ lappend options "additional_flags=-DSIGNAL_SUPPRESS"
+ }
# TEST_ALWAYS_FLAGS are flags that should be passed to every
# compilation. They are passed first to allow individual
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index ef192111c43..91fd35ba722 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -580,7 +580,10 @@ proc check_profiling_available { test_what } {
# in Section 4 of C99 standard. Effectively, it is a target which supports no
# extra headers or libraries other than what is considered essential.
proc check_effective_target_freestanding { } {
- return 0
+ if { [istarget nvptx-*-*] } {
+ return 1
+ }
+ return 0
}
# Return 1 if target has packed layout of structure members by
@@ -644,6 +647,15 @@ proc check_effective_target_nonlocal_goto {} {
return 1
}
+# Return 1 if global constructors are supported, 0 otherwise.
+
+proc check_effective_target_global_constructor {} {
+ if { [istarget nvptx-*-*] } {
+ return 0
+ }
+ return 1
+}
+
# Return 1 if taking label values is supported, 0 otherwise.
proc check_effective_target_label_values {} {