From: Thomas Schwinge <thomas@codesourcery.com>
To: <gcc-patches@gcc.gnu.org>, <tdevries@suse.de>
Subject: [PATCH 3/9] nvptx: Re-enable test cases by removing effective target 'freestanding'
Date: Fri, 2 Dec 2022 13:03:09 +0100 [thread overview]
Message-ID: <20221202120315.803120-4-thomas@codesourcery.com> (raw)
In-Reply-To: <20221202120315.803120-1-thomas@codesourcery.com>
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, and otherwise, the more specific effective target 'fileio' (as added in
commit r10-7943-g3685c5adf5c0b30268cb8f95c89e4c4a3240ae6f
"introduce target fileio and require it in tests that use tmpnam") may be used,
and already is used in the relevant test cases. Therefore, I suggest
"removing effective target 'freestanding'" instead of letting it linger unused,
and thus unmaintained.
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/doc/
* sourcebuild.texi (Effective-Target Keywords): Remove
'freestanding'.
gcc/testsuite/
* gcc.c-torture/execute/builtins/fprintf.x: Remove.
* gcc.c-torture/execute/builtins/fputs.x: Likewise.
* gcc.c-torture/execute/complex-6.c: Don't gate on 'freestanding'.
* gcc.c-torture/execute/fprintf-1.c: Likewise.
* gcc.c-torture/execute/fprintf-2.c: Likewise.
* gcc.c-torture/execute/fprintf-chk-1.c: Likewise.
* gcc.c-torture/execute/gofast.c: Likewise.
* gcc.c-torture/execute/pr34456.c: Likewise.
* gcc.c-torture/execute/printf-1.c: Likewise.
* gcc.c-torture/execute/printf-2.c: Likewise.
* gcc.c-torture/execute/printf-chk-1.c: Likewise.
* gcc.c-torture/execute/user-printf.c: Likewise.
* gcc.c-torture/execute/vfprintf-1.c: Likewise.
* gcc.c-torture/execute/vfprintf-chk-1.c: Likewise.
* gcc.c-torture/execute/vprintf-1.c: Likewise.
* gcc.c-torture/execute/vprintf-chk-1.c: Likewise.
* gcc.dg/pr27531-1.c: Likewise.
* gcc.dg/pr44606.c: Likewise.
* lib/target-supports.exp (check_effective_target_freestanding):
Remove.
---
gcc/doc/sourcebuild.texi | 5 -----
gcc/testsuite/gcc.c-torture/execute/builtins/fprintf.x | 7 -------
gcc/testsuite/gcc.c-torture/execute/builtins/fputs.x | 7 -------
gcc/testsuite/gcc.c-torture/execute/complex-6.c | 2 --
gcc/testsuite/gcc.c-torture/execute/fprintf-1.c | 2 --
gcc/testsuite/gcc.c-torture/execute/fprintf-2.c | 3 +--
gcc/testsuite/gcc.c-torture/execute/fprintf-chk-1.c | 2 --
gcc/testsuite/gcc.c-torture/execute/gofast.c | 2 --
gcc/testsuite/gcc.c-torture/execute/pr34456.c | 2 --
gcc/testsuite/gcc.c-torture/execute/printf-1.c | 2 +-
gcc/testsuite/gcc.c-torture/execute/printf-2.c | 3 +--
gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c | 2 +-
gcc/testsuite/gcc.c-torture/execute/user-printf.c | 3 +--
gcc/testsuite/gcc.c-torture/execute/vfprintf-1.c | 2 --
gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.c | 2 --
gcc/testsuite/gcc.c-torture/execute/vprintf-1.c | 2 +-
gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.c | 2 +-
gcc/testsuite/gcc.dg/pr27531-1.c | 1 -
gcc/testsuite/gcc.dg/pr44606.c | 1 -
gcc/testsuite/lib/target-supports.exp | 10 ----------
20 files changed, 7 insertions(+), 55 deletions(-)
delete mode 100644 gcc/testsuite/gcc.c-torture/execute/builtins/fprintf.x
delete mode 100644 gcc/testsuite/gcc.c-torture/execute/builtins/fputs.x
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index fc488964480f..cfdd5cfe1a6f 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2623,11 +2623,6 @@ Target offers such file I/O library functions as @code{fopen},
requirement for the presence of the functions in the library; even if
they fail at runtime, the requirement is still regarded as satisfied.
-@item freestanding
-Target is @samp{freestanding} as defined in section 4 of the C99 standard.
-Effectively, it is a target which supports no extra headers or libraries
-other than what is considered essential.
-
@item gettimeofday
Target supports @code{gettimeofday}.
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/fprintf.x b/gcc/testsuite/gcc.c-torture/execute/builtins/fprintf.x
deleted file mode 100644
index c8fdaf5b2547..000000000000
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/fprintf.x
+++ /dev/null
@@ -1,7 +0,0 @@
-load_lib target-supports.exp
-
-if { [check_effective_target_freestanding] } {
- return 1;
-}
-
-return 0;
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/fputs.x b/gcc/testsuite/gcc.c-torture/execute/builtins/fputs.x
deleted file mode 100644
index c8fdaf5b2547..000000000000
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/fputs.x
+++ /dev/null
@@ -1,7 +0,0 @@
-load_lib target-supports.exp
-
-if { [check_effective_target_freestanding] } {
- return 1;
-}
-
-return 0;
diff --git a/gcc/testsuite/gcc.c-torture/execute/complex-6.c b/gcc/testsuite/gcc.c-torture/execute/complex-6.c
index 75f921080886..082c7e7cf514 100644
--- a/gcc/testsuite/gcc.c-torture/execute/complex-6.c
+++ b/gcc/testsuite/gcc.c-torture/execute/complex-6.c
@@ -1,5 +1,3 @@
-/* { 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 15996ef22c51..f16252b1e8e6 100644
--- a/gcc/testsuite/gcc.c-torture/execute/fprintf-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/fprintf-1.c
@@ -1,5 +1,3 @@
-/* { dg-skip-if "requires io" { freestanding } } */
-
#include <stdio.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.c-torture/execute/fprintf-2.c b/gcc/testsuite/gcc.c-torture/execute/fprintf-2.c
index 00517d1d1acf..edcbd1ed631f 100644
--- a/gcc/testsuite/gcc.c-torture/execute/fprintf-2.c
+++ b/gcc/testsuite/gcc.c-torture/execute/fprintf-2.c
@@ -3,8 +3,7 @@
The calls can still be transformed into those of other functions.
{ dg-require-effective-target fileio }
{ dg-prune-output "warning: warning: \[^\n\r\]* possibly used unsafely" }
- { dg-skip-if "requires io" { avr-*-* } }
- { dg-skip-if "requires io" { freestanding } } */
+ { dg-skip-if "requires io" { avr-*-* } } */
#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 6f9e62c39e72..918ff8e5689a 100644
--- a/gcc/testsuite/gcc.c-torture/execute/fprintf-chk-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/fprintf-chk-1.c
@@ -1,5 +1,3 @@
-/* { 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 72774f16e740..f55ced22073b 100644
--- a/gcc/testsuite/gcc.c-torture/execute/gofast.c
+++ b/gcc/testsuite/gcc.c-torture/execute/gofast.c
@@ -1,5 +1,3 @@
-/* { 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/pr34456.c b/gcc/testsuite/gcc.c-torture/execute/pr34456.c
index b4a845ec14b1..526c954e55ad 100644
--- a/gcc/testsuite/gcc.c-torture/execute/pr34456.c
+++ b/gcc/testsuite/gcc.c-torture/execute/pr34456.c
@@ -1,5 +1,3 @@
-/* { 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 654e62766a85..77c4b87009eb 100644
--- a/gcc/testsuite/gcc.c-torture/execute/printf-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/printf-1.c
@@ -1,4 +1,4 @@
-/* { 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-2.c b/gcc/testsuite/gcc.c-torture/execute/printf-2.c
index 2087bba84482..6e060773f83b 100644
--- a/gcc/testsuite/gcc.c-torture/execute/printf-2.c
+++ b/gcc/testsuite/gcc.c-torture/execute/printf-2.c
@@ -4,8 +4,7 @@
{ dg-require-effective-target unwrapped }
{ dg-require-effective-target fileio }
{ dg-prune-output "warning: warning: \[^\n\r\]* possibly used unsafely" }
- { dg-skip-if "requires io" { avr-*-* } }
- { dg-skip-if "requires io" { freestanding } } */
+ { dg-skip-if "requires io" { avr-*-* } } */
#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 aab43062baef..a9fb5eea63df 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,4 @@
-/* { 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/user-printf.c b/gcc/testsuite/gcc.c-torture/execute/user-printf.c
index bfee0760dd74..683aaf272589 100644
--- a/gcc/testsuite/gcc.c-torture/execute/user-printf.c
+++ b/gcc/testsuite/gcc.c-torture/execute/user-printf.c
@@ -4,8 +4,7 @@
{ dg-require-effective-target unwrapped }
{ dg-require-effective-target fileio }
{ dg-prune-output "warning: warning: \[^\n\r\]* possibly used unsafely" }
- { dg-skip-if "requires io" { avr-*-* } }
- { dg-skip-if "requires io" { freestanding } } */
+ { dg-skip-if "requires io" { avr-*-* } } */
#include <stdarg.h>
#include <stdio.h>
diff --git a/gcc/testsuite/gcc.c-torture/execute/vfprintf-1.c b/gcc/testsuite/gcc.c-torture/execute/vfprintf-1.c
index 0ac41dee3d6f..c00380425425 100644
--- a/gcc/testsuite/gcc.c-torture/execute/vfprintf-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/vfprintf-1.c
@@ -1,5 +1,3 @@
-/* { 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 401eaf4304a4..f8f964c7e9af 100644
--- a/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.c
@@ -1,5 +1,3 @@
-/* { 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 259397ebda39..5c6208dd114d 100644
--- a/gcc/testsuite/gcc.c-torture/execute/vprintf-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/vprintf-1.c
@@ -1,4 +1,4 @@
-/* { 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 04ecc4df4d93..bb321ba6908c 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,4 @@
-/* { 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.dg/pr27531-1.c b/gcc/testsuite/gcc.dg/pr27531-1.c
index b1ea748acb27..04672045b581 100644
--- a/gcc/testsuite/gcc.dg/pr27531-1.c
+++ b/gcc/testsuite/gcc.dg/pr27531-1.c
@@ -4,7 +4,6 @@
output to reference a label that had been eliminated. */
/* { dg-do link } */
/* { dg-options "-O2" } */
-/* { dg-skip-if "requires io" { freestanding } } */
typedef struct _IO_FILE FILE;
char const *RCSname;
diff --git a/gcc/testsuite/gcc.dg/pr44606.c b/gcc/testsuite/gcc.dg/pr44606.c
index 13cc3efc1939..3929775535e0 100644
--- a/gcc/testsuite/gcc.dg/pr44606.c
+++ b/gcc/testsuite/gcc.dg/pr44606.c
@@ -1,7 +1,6 @@
/* PR target/44606 */
/* { dg-do run } */
/* { dg-options "-O2" } */
-/* { dg-skip-if "requires io" { freestanding } } */
#include <stdio.h>
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 555d6dde505a..d2de761adb5d 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -830,16 +830,6 @@ proc check_profiling_available { test_what } {
return $profiling_working
}
-# Check to see if a target is "freestanding". This is as per the definition
-# 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
-}
-
# Check to see that file I/O functions are available.
proc check_effective_target_fileio { } {
return [check_no_compiler_messages fileio_available executable {
--
2.35.1
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
next prev parent reply other threads:[~2022-12-02 12:03 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-02 12:03 nvptx: Re-enable a number of test cases Thomas Schwinge
2022-12-02 12:03 ` [PATCH 1/9] nvptx: Re-enable 'gcc.c-torture/compile/20080721-1.c' Thomas Schwinge
2022-12-02 12:03 ` [PATCH 2/9] nvptx: Re-enable "ptxas times out" test cases Thomas Schwinge
2022-12-02 12:03 ` Thomas Schwinge [this message]
2022-12-02 12:03 ` [PATCH 4/9] nvptx: Re-enable all variants of 'gcc.c-torture/execute/20020529-1.c' Thomas Schwinge
2022-12-02 12:03 ` [PATCH 5/9] nvptx: Re-enable 'gcc.dg/special/weak-2.c' Thomas Schwinge
2022-12-02 12:03 ` [PATCH 6/9] nvptx: Re-enable all variants of 'c-c++-common/torture/complex-sign-mixed-add.c', 'c-c++-common/torture/complex-sign-mixed-sub.c' Thomas Schwinge
2022-12-02 12:03 ` [PATCH 7/9] nvptx: Re-enable 'gcc.dg/torture/c99-contract-1.c' Thomas Schwinge
2022-12-02 12:03 ` [PATCH 8/9] nvptx: Re-enable "Stack alignment causes use of alloca" test cases Thomas Schwinge
2022-12-02 12:03 ` [PATCH 9/9] nvptx: Re-enable 'gcc.misc-tests/options.exp' Thomas Schwinge
2022-12-20 7:56 ` [PING] nvptx: Re-enable a number of test cases Thomas Schwinge
2023-01-11 11:34 ` [PING^2] " Thomas Schwinge
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221202120315.803120-4-thomas@codesourcery.com \
--to=thomas@codesourcery.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=tdevries@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).