On Sunday, 2 November 2025, Jason Merrill <[email protected]> wrote:

> Tested x86_64-pc-linux-gnu, OK for trunk?
>

OK thanks, no need to separate the other change.



>
> -- 8< --
>
> <cassert> isn't suitable for a header unit, because by design it depends on
> the user NDEBUG macro.  So let's not include it in <bits/stdc++.h>.
>
> The exception/safety.h hunk isn't necessitated by this change, it's just to
> properly include dependencies, but seemed thematic.  I'm happy to separate
> it
> if that's preferred.
>
> libstdc++-v3/ChangeLog:
>
>         * include/precompiled/stdc++.h: Remove <cassert>.
>         * testsuite/util/exception/safety.h: Add <cassert>.
>         * testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc:
>         Don't define _GLIBCXX_NO_ASSERT.
> ---
>  libstdc++-v3/include/precompiled/stdc++.h                  | 7 +------
>  libstdc++-v3/testsuite/util/exception/safety.h             | 1 +
>  .../17_intro/headers/c++1998/stdc++_assert_neg.cc          | 1 -
>  3 files changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/libstdc++-v3/include/precompiled/stdc++.h
> b/libstdc++-v3/include/precompiled/stdc++.h
> index 636632a4439..54baed43a5e 100644
> --- a/libstdc++-v3/include/precompiled/stdc++.h
> +++ b/libstdc++-v3/include/precompiled/stdc++.h
> @@ -29,9 +29,7 @@
>  // 17.4.1.2 Headers
>
>  // C
> -#ifndef _GLIBCXX_NO_ASSERT
> -#include <cassert>
> -#endif
> +// Don't include cassert, it's not suitable for PCH or header unit.
>  #include <cctype>
>  #include <cfloat>
>  #include <climits>
> @@ -104,9 +102,6 @@
>
>  #if _GLIBCXX_HOSTED
>  // C
> -#ifndef _GLIBCXX_NO_ASSERT
> -#include <cassert>
> -#endif
>  #include <cctype>
>  #include <cerrno>
>  #include <cfloat>
> diff --git a/libstdc++-v3/testsuite/util/exception/safety.h
> b/libstdc++-v3/testsuite/util/exception/safety.h
> index 8226c176201..c62394cf082 100644
> --- a/libstdc++-v3/testsuite/util/exception/safety.h
> +++ b/libstdc++-v3/testsuite/util/exception/safety.h
> @@ -24,6 +24,7 @@
>  #include <ext/throw_allocator.h>
>  #include <cstdlib> // getenv, atoi
>  #include <cstdio>  // printf, fflush
> +#include <cassert> // assert
>
>  // Container requirement testing.
>  namespace __gnu_test
> diff --git 
> a/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
> b/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
> index eb380c411c3..f6200274a13 100644
> --- a/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
> +++ b/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
> @@ -1,5 +1,4 @@
>  // { dg-do compile }
> -// { dg-options "-D_GLIBCXX_NO_ASSERT" }
>  // { dg-require-effective-target hosted }
>  // NB: This is done to force any generated and possibly included PCH
>  // to be invalid, and also to remove cassert from the include set.
>
> base-commit: 2be505ace7e5e29a29ab53025762cf1a100a6d76
> --
> 2.51.0
>
>

Reply via email to