aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/lib
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2024-03-22 22:01:50 +0000
committerJonathan Wakely <jwakely@redhat.com>2024-03-26 11:32:55 +0000
commit4a3a1b6b75f921d35bbfef26619e7b5cece3fcf0 (patch)
tree298ea4c20b966cc94a1a59f1b15d134b05b44f30 /libstdc++-v3/testsuite/lib
parent4549b0f67d52b4f042ab89a036249545c3938b45 (diff)
downloadgcc-4a3a1b6b75f921d35bbfef26619e7b5cece3fcf0.zip
gcc-4a3a1b6b75f921d35bbfef26619e7b5cece3fcf0.tar.gz
gcc-4a3a1b6b75f921d35bbfef26619e7b5cece3fcf0.tar.bz2
libstdc++: Add dg-require-cpp-feature-test to test feature test macros
This adds a new dejagnu directive which can be used to make a test depend on a feature test macro such as __cpp_lib_text_encoding. This is mroe flexible than writing a new dg-require-xxx for each feature. libstdc++-v3/ChangeLog: * testsuite/lib/dg-options.exp (dg-require-cpp-feature-test): New proc. * testsuite/lib/libstdc++.exp (check_v3_target_cpp_feature_test): New proc. * testsuite/std/text_encoding/cons.cc: Use new directive to skip the test if the __cpp_lib_text_encoding feature test macro is not defined. * testsuite/std/text_encoding/requirements.cc: Likewise.
Diffstat (limited to 'libstdc++-v3/testsuite/lib')
-rw-r--r--libstdc++-v3/testsuite/lib/dg-options.exp9
-rw-r--r--libstdc++-v3/testsuite/lib/libstdc++.exp15
2 files changed, 24 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/lib/dg-options.exp b/libstdc++-v3/testsuite/lib/dg-options.exp
index 00ca678..802bfc0 100644
--- a/libstdc++-v3/testsuite/lib/dg-options.exp
+++ b/libstdc++-v3/testsuite/lib/dg-options.exp
@@ -277,6 +277,15 @@ proc dg-require-target-fs-lwt { args } {
return
}
+proc dg-require-cpp-feature-test { n args } {
+ if { ![ check_v3_target_cpp_feature_test $args ] } {
+ upvar dg-do-what dg-do-what
+ set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
+ return
+ }
+ return
+}
+
proc add_options_for_no_pch { flags } {
# Remove any inclusion of bits/stdc++.h from the options.
regsub -all -- "-include bits/stdc...h" $flags "" flags
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
index 7466fb5..2b31c95 100644
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -1134,6 +1134,21 @@ proc v3_check_preprocessor_condition { name cond { inc "" } } {
return [v3_try_preprocess name $code $flags]
}
+# Return 1 if libstdc++ defines macro for the current target, 0 otherwise.
+proc check_v3_target_cpp_feature_test { cond } {
+ global cxxflags
+ set cxxflags_saved $cxxflags
+ # Use the latest standard, so that all feature test macros are defined.
+ # We need to do it here, because this check happens before v3-dg-runtest
+ # runs its loop to test multiple times with different -std options.
+ # This should be updated when a new -std is added.
+ set cxxflags "$cxxflags -std=gnu++26"
+ set inc "#include <version>"
+ set result [v3_check_preprocessor_condition cpp_feature_test "$cond" $inc]
+ set cxxflags $cxxflags_saved
+ return $result
+}
+
# Return 1 if Debug Mode is active, 0 otherwise.
proc check_v3_target_debug_mode { } {
global cxxflags