aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@codesourcery.com>2022-11-28 13:49:06 +0100
committerThomas Schwinge <tschwinge@baylibre.com>2024-10-07 10:13:11 +0200
commit65c7616c251a6697134b2a3ac7fe6460d308d2ed (patch)
tree75afd6f29016b2041bace4de5774ee63568efada /gcc
parentcb633e5cbd422d5a5d98b17d435abad976a9d9ca (diff)
downloadgcc-65c7616c251a6697134b2a3ac7fe6460d308d2ed.zip
gcc-65c7616c251a6697134b2a3ac7fe6460d308d2ed.tar.gz
gcc-65c7616c251a6697134b2a3ac7fe6460d308d2ed.tar.bz2
nvptx: Disable effective-target 'freestanding'
After 2014's commit 157e859ffe3b5d43db1e19475711c1a3d21ab57a "remove picochip", the effective-target 'freestanding' (later) was only ever used for nvptx. However, the relevant I/O library functions have long been implemented in nvptx newlib. These test cases generally PASS, just a few need to get XFAILed; see <https://docs.nvidia.com/cuda/ptx-writers-guide-to-interoperability/#system-calls>, and then supposedly <https://docs.nvidia.com/cuda/cuda-c-programming-guide/#formatted-output> for description of the non-standard PTX 'vprintf' return value: > Unlike the C-standard 'printf()', which returns the number of characters > printed, CUDA's 'printf()' returns the number of arguments parsed. If no > arguments follow the format string, 0 is returned. If the format string is > NULL, -1 is returned. If an internal error occurs, -2 is returned. (I've tried a few variants to confirm that PTX 'vprintf' -- which supposedly is underlying the CUDA 'printf' -- is what's implementing this behavior.) Probably, we ought to fix that up in nvptx newlib. gcc/testsuite/ * gcc.c-torture/execute/printf-1.c: XFAIL for nvptx. * gcc.c-torture/execute/printf-chk-1.c: Likewise. * gcc.c-torture/execute/vprintf-1.c: Likewise. * gcc.c-torture/execute/vprintf-chk-1.c: Likewise. * lib/target-supports.exp (check_effective_target_freestanding): Disable for nvptx.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/printf-1.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/vprintf-1.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.c1
-rw-r--r--gcc/testsuite/lib/target-supports.exp3
5 files changed, 4 insertions, 3 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/printf-1.c b/gcc/testsuite/gcc.c-torture/execute/printf-1.c
index 654e627..e120136 100644
--- a/gcc/testsuite/gcc.c-torture/execute/printf-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/printf-1.c
@@ -1,4 +1,5 @@
/* { dg-skip-if "requires io" { freestanding } } */
+/* { dg-xfail-run-if {unexpected PTX 'vprintf' return value} { nvptx-*-* } } */
#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 aab4306..6418957 100644
--- a/gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c
@@ -1,4 +1,5 @@
/* { dg-skip-if "requires io" { freestanding } } */
+/* { dg-xfail-run-if {unexpected PTX 'vprintf' return value} { nvptx-*-* } } */
#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 259397e..0fb1ade 100644
--- a/gcc/testsuite/gcc.c-torture/execute/vprintf-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/vprintf-1.c
@@ -1,4 +1,5 @@
/* { dg-skip-if "requires io" { freestanding } } */
+/* { dg-xfail-run-if {unexpected PTX 'vprintf' return value} { nvptx-*-* } } */
#ifndef test
#include <stdio.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 04ecc4d..7ea3617 100644
--- a/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.c
@@ -1,4 +1,5 @@
/* { dg-skip-if "requires io" { freestanding } } */
+/* { dg-xfail-run-if {unexpected PTX 'vprintf' return value} { nvptx-*-* } } */
#ifndef test
#include <stdio.h>
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 459af8e..1c9bbf6 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -859,9 +859,6 @@ 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 { } {
- if { [istarget nvptx-*-*] } {
- return 1
- }
return 0
}