diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4b1e9e11e7c8..e6b8812061de 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2020-04-24 Alexandre Oliva + + * lib/target-supports.exp (check_effective_target_fileio): New. + * gcc.c-torture/execute/fprintf-2.c: Require it. + * gcc.c-torture/execute/printf-2.c: Likewise. + * gcc.c-torture/execute/user-printf.c: Likewise. + 2020-04-24 Haijian Zhang PR rtl-optimization/94708 diff --git a/gcc/testsuite/gcc.c-torture/execute/fprintf-2.c b/gcc/testsuite/gcc.c-torture/execute/fprintf-2.c index c723867368d2..d8e19e7b2f8f 100644 --- a/gcc/testsuite/gcc.c-torture/execute/fprintf-2.c +++ b/gcc/testsuite/gcc.c-torture/execute/fprintf-2.c @@ -1,6 +1,7 @@ /* Verify that calls to fprintf don't get eliminated even if their result on success can be computed at compile time (they can fail). 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 } } */ diff --git a/gcc/testsuite/gcc.c-torture/execute/printf-2.c b/gcc/testsuite/gcc.c-torture/execute/printf-2.c index 57f467e0b9cc..4e7d8f7cdfad 100644 --- a/gcc/testsuite/gcc.c-torture/execute/printf-2.c +++ b/gcc/testsuite/gcc.c-torture/execute/printf-2.c @@ -2,6 +2,7 @@ result on success can be computed at compile time (they can fail). The calls can still be transformed into those of other functions. { 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 } } */ diff --git a/gcc/testsuite/gcc.c-torture/execute/user-printf.c b/gcc/testsuite/gcc.c-torture/execute/user-printf.c index 006d99e8dd30..42a3b17f123d 100644 --- a/gcc/testsuite/gcc.c-torture/execute/user-printf.c +++ b/gcc/testsuite/gcc.c-torture/execute/user-printf.c @@ -2,6 +2,7 @@ don't get eliminated even if their result on success can be computed at compile time (they can fail). { 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 } } */ diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index a667ddf4fe47..008def691b34 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -751,6 +751,19 @@ proc check_effective_target_freestanding { } { 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 { +#include +int main() { + char *n = tmpnam (NULL); + FILE *f = fopen (n, "w"); + fclose (f); + remove (n); + return 0; +} } ""] +} + # Return 1 if target has packed layout of structure members by # default, 0 otherwise. Note that this is slightly different than # whether the target has "natural alignment": both attributes may be