[3/9] nvptx: Re-enable test cases by removing effective target 'freestanding'
Checks
Commit Message
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
--
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
@@ -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}.
deleted file mode 100644
@@ -1,7 +0,0 @@
-load_lib target-supports.exp
-
-if { [check_effective_target_freestanding] } {
- return 1;
-}
-
-return 0;
deleted file mode 100644
@@ -1,7 +0,0 @@
-load_lib target-supports.exp
-
-if { [check_effective_target_freestanding] } {
- return 1;
-}
-
-return 0;
@@ -1,5 +1,3 @@
-/* { dg-skip-if "requires io" { freestanding } } */
-
/* This test tests complex conjugate and passing/returning of
complex parameter. */
@@ -1,5 +1,3 @@
-/* { dg-skip-if "requires io" { freestanding } } */
-
#include <stdio.h>
#include <stdlib.h>
@@ -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>
@@ -1,5 +1,3 @@
-/* { dg-skip-if "requires io" { freestanding } } */
-
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
@@ -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
@@ -1,5 +1,3 @@
-/* { dg-skip-if "requires qsort" { freestanding } } */
-
#include <stdlib.h>
int __attribute__ ((noinline)) debug (void) { return 1; }
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -1,5 +1,3 @@
-/* { dg-skip-if "requires io" { freestanding } } */
-
#ifndef test
#include <stdio.h>
#include <stdlib.h>
@@ -1,5 +1,3 @@
-/* { dg-skip-if "requires io" { freestanding } } */
-
#ifndef test
#include <stdio.h>
#include <stdlib.h>
@@ -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>
@@ -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>
@@ -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;
@@ -1,7 +1,6 @@
/* PR target/44606 */
/* { dg-do run } */
/* { dg-options "-O2" } */
-/* { dg-skip-if "requires io" { freestanding } } */
#include <stdio.h>
@@ -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 {