[gcc(refs/vendors/ARM/heads/arm-perf-staging)] introduce target fileio and require it in tests that use tmpnam
Tamar Christina
tnfchris@gcc.gnu.org
Fri Jul 17 14:55:55 GMT 2020
https://gcc.gnu.org/g:3685c5adf5c0b30268cb8f95c89e4c4a3240ae6f
commit 3685c5adf5c0b30268cb8f95c89e4c4a3240ae6f
Author: Alexandre Oliva <oliva@adacore.com>
Date: Fri Apr 24 08:32:10 2020 -0300
introduce target fileio and require it in tests that use tmpnam
Some target C libraries that aren't recognized as freestanding don't
have filesystem support, so calling tmpnam, fopen/open and
remove/unlink fails to link.
This patch introduces a fileio effective target to the testsuite, and
requires it in the tests that call tmpnam.
for gcc/testsuite/ChangeLog
* 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.
Diff:
---
gcc/testsuite/ChangeLog | 7 +++++++
gcc/testsuite/gcc.c-torture/execute/fprintf-2.c | 1 +
gcc/testsuite/gcc.c-torture/execute/printf-2.c | 1 +
gcc/testsuite/gcc.c-torture/execute/user-printf.c | 1 +
gcc/testsuite/lib/target-supports.exp | 13 +++++++++++++
5 files changed, 23 insertions(+)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4b1e9e11e7c..e6b8812061d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2020-04-24 Alexandre Oliva <oliva@adacore.com>
+
+ * 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 <z.zhanghaijian@huawei.com>
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 c723867368d..d8e19e7b2f8 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 57f467e0b9c..4e7d8f7cdfa 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 006d99e8dd3..42a3b17f123 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 a667ddf4fe4..008def691b3 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 <stdio.h>
+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
More information about the Gcc-cvs
mailing list