.../testsuite/libstdc++-prettyprinters/compat.cc | 10 +++---- .../testsuite/libstdc++-prettyprinters/cxx11.cc | 33 +++++++++++++++++----- .../testsuite/libstdc++-prettyprinters/cxx17.cc | 27 ++++++++---------- .../libstdc++-prettyprinters/filesystem-ts.cc | 2 +- .../libstdc++-prettyprinters/libfundts.cc | 25 ++++++++-------- 5 files changed, 58 insertions(+), 39 deletions(-) diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc index 35243e5f892..2ef5979834f 100644 --- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc +++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc @@ -1,7 +1,7 @@ // { dg-options "-g -O0" } // { dg-do run { target c++11 } } -// Copyright (C) 2014-2021 Free Software Foundation, Inc. +// Copyright (C) 2014-2025 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -102,13 +102,13 @@ main() using std::optional; optional o; -// { dg-final { note-test o {std::optional [no contained value]} } } +// { dg-final { note-test o {std::optional [no contained value]} } } optional ob{false}; -// { dg-final { note-test ob {std::optional = {[contained value] = false}} } } +// { dg-final { note-test ob {std::optional = {[contained value] = false}} } } optional oi{5}; -// { dg-final { note-test oi {std::optional = {[contained value] = 5}} } } +// { dg-final { note-test oi {std::optional = {[contained value] = 5}} } } optional op{nullptr}; -// { dg-final { note-test op {std::optional = {[contained value] = 0x0}} } } +// { dg-final { note-test op {std::optional = {[contained value] = 0x0}} } } __builtin_puts(""); return 0; // Mark SPOT diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc index 0545076fb6f..23f6d97ddd4 100644 --- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc +++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc @@ -1,7 +1,7 @@ // { dg-do run { target c++11 } } // { dg-options "-g -O0" } -// Copyright (C) 2011-2021 Free Software Foundation, Inc. +// Copyright (C) 2011-2025 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -26,6 +26,7 @@ #include #include #include +#include #include "../util/testsuite_allocator.h" // NullablePointer typedef std::tuple ExTuple; @@ -62,6 +63,11 @@ struct datum std::unique_ptr global; +struct custom_cat : std::error_category { + const char* name() const noexcept { return "miaow"; } + std::string message(int) const { return ""; } +}; + int main() { @@ -165,9 +171,9 @@ main() // { dg-final { note-test runiq_ptr {std::unique_ptr = {get() = 0x0}} } } ExTuple tpl(6,7); -// { dg-final { note-test tpl {std::tuple containing = {[1] = 6, [2] = 7}} } } +// { dg-final { note-test tpl {std::tuple containing = {[0] = 6, [1] = 7}} } } ExTuple &rtpl = tpl; -// { dg-final { note-test rtpl {std::tuple containing = {[1] = 6, [2] = 7}} } } +// { dg-final { note-test rtpl {std::tuple containing = {[0] = 6, [1] = 7}} } } std::error_code e0; // { dg-final { note-test e0 {std::error_code = { }} } } @@ -178,10 +184,7 @@ main() std::error_condition ecinval = std::make_error_condition(std::errc::invalid_argument); // { dg-final { note-test ecinval {std::error_condition = {"generic": EINVAL}} } } - struct custom_cat : std::error_category { - const char* name() const noexcept { return "miaow"; } - std::string message(int) const { return ""; } - } cat; + custom_cat cat; std::error_code emiaow(42, cat); // { dg-final { note-test emiaow {std::error_code = {custom_cat: 42}} } } std::error_condition ecmiaow(42, cat); @@ -197,6 +200,22 @@ main() std::initializer_list il = {3, 4}; // { dg-final { note-test il {std::initializer_list of length 2 = {3, 4}} } } + std::atomic ai{100}; + // { dg-final { note-test ai {std::atomic = { 100 }} } } + long l{}; + std::atomic ap{&l}; + // { dg-final { regexp-test ap {std::atomic.long \*. = { 0x.* }} } } + struct Value { int i, j; }; + std::atomic av{{8, 9}}; + // { dg-final { note-test av {std::atomic = { {i = 8, j = 9} }} } } + + std::integral_constant one; + // { dg-final { note-test one {std::integral_constant} } } + std::integral_constant truth; + // { dg-final { note-test truth {std::true_type} } } + std::integral_constant lies; + // { dg-final { note-test lies {std::false_type} } } + placeholder(""); // Mark SPOT use(efl); use(fl); diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc index 72c66d3b785..6dd2b60c0a5 100644 --- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc +++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc @@ -1,7 +1,7 @@ // { dg-options "-g -O0" } // { dg-do run { target c++17 } } -// Copyright (C) 2014-2021 Free Software Foundation, Inc. +// Copyright (C) 2014-2025 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -18,9 +18,6 @@ // with this library; see the file COPYING3. If not see // . -// Type printers only recognize the old std::string for now. -#define _GLIBCXX_USE_CXX11_ABI 0 - #include #include #include @@ -53,18 +50,18 @@ main() // { dg-final { note-test str "\"string\"" } } optional o; -// { dg-final { note-test o {std::optional [no contained value]} } } +// { dg-final { note-test o {std::optional [no contained value]} } } optional ob{false}; -// { dg-final { note-test ob {std::optional = {[contained value] = false}} } } +// { dg-final { note-test ob {std::optional = {[contained value] = false}} } } optional oi{5}; -// { dg-final { note-test oi {std::optional = {[contained value] = 5}} } } +// { dg-final { note-test oi {std::optional = {[contained value] = 5}} } } optional op{nullptr}; -// { dg-final { note-test op {std::optional = {[contained value] = 0x0}} } } +// { dg-final { note-test op {std::optional = {[contained value] = 0x0}} } } optional> om; om = std::map{ {1, 2.}, {3, 4.}, {5, 6.} }; -// { dg-final { regexp-test om {std::optional> containing std::(__debug::)?map with 3 elements = {\[1\] = 2, \[3\] = 4, \[5\] = 6}} } } +// { dg-final { regexp-test om {std::optional containing std::(__debug::)?map with 3 elements = {\[1\] = 2, \[3\] = 4, \[5\] = 6}} } } optional os{ "stringy" }; -// { dg-final { note-test os {std::optional = {[contained value] = "stringy"}} } } +// { dg-final { note-test os {std::optional = {[contained value] = "stringy"}} } } any a; // { dg-final { note-test a {std::any [no contained value]} } } @@ -86,18 +83,18 @@ main() struct S { operator int() { throw 42; }}; variant v0; -// { dg-final { note-test v0 {std::variant [index 0] = {0}} } } +// { dg-final { note-test v0 {std::variant [index 0] = {0}} } } variant v1{ 0.5f }; -// { dg-final { note-test v1 {std::variant [index 0] = {0.5}} } } +// { dg-final { note-test v1 {std::variant [index 0] = {0.5}} } } variant v2; try { v2.emplace<1>(S()); } catch (int) { } -// { dg-final { note-test v2 {std::variant [no contained value]} } } +// { dg-final { note-test v2 {std::variant [no contained value]} } } variant v3{ 3 }; -// { dg-final { note-test v3 {std::variant [index 1] = {3}} } } +// { dg-final { note-test v3 {std::variant [index 1] = {3}} } } variant v4{ str }; -// { dg-final { note-test v4 {std::variant [index 2] = {"string"}} } } +// { dg-final { note-test v4 {std::variant [index 2] = {"string"}} } } map m{ {1, "one"} }; map::node_type n0; diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc index 00d100bd066..3221f2df90d 100644 --- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc +++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc @@ -2,7 +2,7 @@ // { dg-do run { target c++11 } } // { dg-require-filesystem-ts "" } -// Copyright (C) 2020-2021 Free Software Foundation, Inc. +// Copyright (C) 2020-2025 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc index 85005c0617f..bfb86885457 100644 --- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc +++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc @@ -1,7 +1,7 @@ // { dg-do run { target c++14 } } // { dg-options "-g -O0" } -// Copyright (C) 2014-2021 Free Software Foundation, Inc. +// Copyright (C) 2014-2025 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -18,9 +18,6 @@ // with this library; see the file COPYING3. If not see // . -// Type printers only recognize the old std::string for now. -#define _GLIBCXX_USE_CXX11_ABI 0 - #include #include #include @@ -35,22 +32,28 @@ using std::experimental::string_view; int main() { + // Ensure debug info for std::string is issued in the local + // translation unit, so that GDB won't pick up any alternate + // std::string notion that might be present in libstdc++.so. + std::string bah = "hi"; + (void)bah; + string_view str = "string"; // { dg-final { note-test str "\"string\"" } } optional o; -// { dg-final { note-test o {std::experimental::optional [no contained value]} } } +// { dg-final { note-test o {std::experimental::optional [no contained value]} } } optional ob{false}; -// { dg-final { note-test ob {std::experimental::optional = {[contained value] = false}} } } +// { dg-final { note-test ob {std::experimental::optional = {[contained value] = false}} } } optional oi{5}; -// { dg-final { note-test oi {std::experimental::optional = {[contained value] = 5}} } } +// { dg-final { note-test oi {std::experimental::optional = {[contained value] = 5}} } } optional op{nullptr}; -// { dg-final { note-test op {std::experimental::optional = {[contained value] = 0x0}} } } +// { dg-final { note-test op {std::experimental::optional = {[contained value] = 0x0}} } } optional> om; om = std::map{ {1, 2.}, {3, 4.}, {5, 6.} }; -// { dg-final { regexp-test om {std::experimental::optional> containing std::(__debug::)?map with 3 elements = {\[1\] = 2, \[3\] = 4, \[5\] = 6}} } } +// { dg-final { regexp-test om {std::experimental::optional containing std::(__debug::)?map with 3 elements = {\[1\] = 2, \[3\] = 4, \[5\] = 6}} } } optional os{ "stringy" }; -// { dg-final { note-test os {std::experimental::optional = {[contained value] = "stringy"}} { xfail { c++20 || debug_mode } } } } +// { dg-final { note-test os {std::experimental::optional = {[contained value] = "stringy"}} } } any a; // { dg-final { note-test a {std::experimental::any [no contained value]} } } @@ -61,7 +64,7 @@ main() any ap = (void*)nullptr; // { dg-final { note-test ap {std::experimental::any containing void * = {[contained value] = 0x0}} } } any as = *os; -// { dg-final { note-test as {std::experimental::any containing std::string = {[contained value] = "stringy"}} { xfail { c++20 || debug_mode } } } } +// { dg-final { note-test as {std::experimental::any containing std::string = {[contained value] = "stringy"}} } } any as2("stringiest"); // { dg-final { regexp-test as2 {std::experimental::any containing const char \* = {\[contained value\] = 0x[[:xdigit:]]+ "stringiest"}} } } any am = *om;