https://gcc.gnu.org/g:9483020ea576516448f6e820fba4b14257d6268e

commit r15-9600-g9483020ea576516448f6e820fba4b14257d6268e
Author: François Dumont <frs.dum...@gmail.com>
Date:   Mon Apr 28 18:53:36 2025 +0200

    libstdc++: [_GLIBCXX_INLINE_VERSION] Fix tests failures
    
    Adapt testsuite v3_target_compile to strip version namespace from compiler
    output so that dg-error and dg-warning directives do not need to consider 
it.
    
    Avoid a aligned_storage check as behavior has been fixed only when using
    gnu-versioned-namespace as it is an abi breaking change.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/lib/libstdc++.exp (v3_target_compile): Strip version 
namespace
            from compiler output.
            * testsuite/20_util/aligned_storage/value.cc 
[_GLIBCXX_INLINE_VERSION]:
            Avoid align_msa check.
            * testsuite/20_util/function/cons/70692.cc: Remove now useless __8 
namespace
            pattern.
            * testsuite/23_containers/map/48101_neg.cc: Likewise.
            * testsuite/23_containers/multimap/48101_neg.cc: Likewise.
    
    Co-authored-by: Jonathan Wakely <jwak...@redhat.com>
    
    (cherry picked from commit 8709d6a17830c8a9f48cb3ac6dfc6af76f2e1e81)

Diff:
---
 libstdc++-v3/testsuite/20_util/aligned_storage/value.cc    | 6 ++++--
 libstdc++-v3/testsuite/20_util/function/cons/70692.cc      | 2 +-
 libstdc++-v3/testsuite/23_containers/map/48101_neg.cc      | 4 ++--
 libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc | 4 ++--
 libstdc++-v3/testsuite/lib/libstdc++.exp                   | 5 +++++
 5 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/testsuite/20_util/aligned_storage/value.cc 
b/libstdc++-v3/testsuite/20_util/aligned_storage/value.cc
index e2c6f7b5b494..6a2c42489e87 100644
--- a/libstdc++-v3/testsuite/20_util/aligned_storage/value.cc
+++ b/libstdc++-v3/testsuite/20_util/aligned_storage/value.cc
@@ -21,14 +21,14 @@
 #include <type_traits>
 #include <testsuite_tr1.h>
 
-struct MSAlignType { } __attribute__((__aligned__));  
+struct MSAlignType { } __attribute__((__aligned__));
 
 void test01()
 {
   using std::aligned_storage;
   using std::alignment_of;
   using namespace __gnu_test;
-  
+
   const std::size_t align_c = alignment_of<char>::value;
   static_assert(sizeof(aligned_storage<4, align_c>::type) >= 4, "");
   static_assert(__alignof__(aligned_storage<4, align_c>::type) == align_c, "");
@@ -55,9 +55,11 @@ void test01()
   static_assert(__alignof__(aligned_storage<11, align_ct>::type) == align_ct,
                "");
 
+#if !_GLIBCXX_INLINE_VERSION
   const std::size_t align_msa = alignment_of<MSAlignType>::value;
   static_assert(sizeof(aligned_storage<5>::type) >= 5, "");
   static_assert(__alignof__(aligned_storage<5>::type) == align_msa, "");
+#endif
 }
 
 // { dg-warning "deprecated" "" { target c++23 } 0 }
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/70692.cc 
b/libstdc++-v3/testsuite/20_util/function/cons/70692.cc
index b15208a25317..f9e8fe31570c 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/70692.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/70692.cc
@@ -11,4 +11,4 @@ int main()
   std::function<const int&()> ff(f);  // { dg-error "no matching function" }
   std::function<long&&()> f2(f);      // { dg-error "no matching function" }
 }
-// { dg-error "std::(__8::)?enable_if" "" { target *-*-* } 0 }
+// { dg-error "std::enable_if" "" { target *-*-* } 0 }
diff --git a/libstdc++-v3/testsuite/23_containers/map/48101_neg.cc 
b/libstdc++-v3/testsuite/23_containers/map/48101_neg.cc
index 0661eeb839cf..251beee24be1 100644
--- a/libstdc++-v3/testsuite/23_containers/map/48101_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/map/48101_neg.cc
@@ -28,8 +28,8 @@ test01()
   c2.find(2); // { dg-error "here" }
 }
 
-// { dg-error "_Compare = std::(__8::)?less<int.>" "" { target *-*-* } 0 }
-// { dg-error "_Compare = std::(__8::)?allocator<int>" "" { target *-*-* } 0 }
+// { dg-error "_Compare = std::less<int.>" "" { target *-*-* } 0 }
+// { dg-error "_Compare = std::allocator<int>" "" { target *-*-* } 0 }
 // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
 // { dg-prune-output "no match for call" }
 // { dg-prune-output "invalid conversion" }
diff --git a/libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc 
b/libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc
index f597ef3dc7ac..1c1c79d96639 100644
--- a/libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc
@@ -28,8 +28,8 @@ test01()
   c2.find(2); // { dg-error "here" }
 }
 
-// { dg-error "_Compare = std::(__8::)?less<int.>" "" { target *-*-* } 0 }
-// { dg-error "_Compare = std::(__8::)?allocator<int>" "" { target *-*-* } 0 }
+// { dg-error "_Compare = std::less<int.>" "" { target *-*-* } 0 }
+// { dg-error "_Compare = std::allocator<int>" "" { target *-*-* } 0 }
 // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
 // { dg-prune-output "no match for call" }
 // { dg-prune-output "invalid conversion" }
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp 
b/libstdc++-v3/testsuite/lib/libstdc++.exp
index 3c34d18b9aab..5e958d159de2 100644
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -648,6 +648,11 @@ proc v3_target_compile { source dest type options } {
     set v3_additional_files {}
 
     set comp_output [target_compile $source $dest $type $options]
+
+    # Strip versioned namespace from the compiler output,
+    # so that dg-error and dg-warning patterns can ignore it:
+    regsub -all "std::__8::" $comp_output "std::" comp_output
+
     if { $type == "executable" && $file_to_delete != "" } {
        file delete $file_to_delete
        if { [istarget *-*-darwin*] && [file exists $file_to_delete.dSYM] } {

Reply via email to