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

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

OK, thanks. I don't see any other reason that we were testing those cases,
so agree we can (and should) drop them from the tests.




>
> -- 8< --
>
> In r15-3499 I added attributes to _Ios_Openmode to avoid -Wswitch false
> positives; let's do the same for the other enums in ios_base.
>
> It also seems to me that with these attributes, the tests don't need to
> include the end/max/min cases.
>
> libstdc++-v3/ChangeLog:
>
>         * include/bits/ios_base.h: Add attribs to _Ios_Fmtflags,
>         _Ios_Iostate, _ios_seekdir.
>         * testsuite/27_io/ios_base/types/fmtflags/case_label.cc: Remove
>         unneeded cases.
>         * testsuite/27_io/ios_base/types/iostate/case_label.cc: Likewise.
>         * testsuite/27_io/ios_base/types/openmode/case_label.cc: Likewise.
>         * testsuite/27_io/ios_base/types/seekdir/case_label.cc: Likewise.
> ---
>  libstdc++-v3/include/bits/ios_base.h           | 18 +++++++++---------
>  .../ios_base/types/fmtflags/case_label.cc      |  6 ------
>  .../27_io/ios_base/types/iostate/case_label.cc |  6 ------
>  .../ios_base/types/openmode/case_label.cc      |  6 ------
>  .../27_io/ios_base/types/seekdir/case_label.cc |  2 --
>  5 files changed, 9 insertions(+), 29 deletions(-)
>
> diff --git a/libstdc++-v3/include/bits/ios_base.h
> b/libstdc++-v3/include/bits/ios_base.h
> index b94b2cddcd9..adc2982059a 100644
> --- a/libstdc++-v3/include/bits/ios_base.h
> +++ b/libstdc++-v3/include/bits/ios_base.h
> @@ -56,7 +56,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>    // as permitted (but not required) in the standard, in order to provide
>    // better type safety in iostream calls.  A side effect is that in C++98
>    // expressions involving them are not compile-time constants.
> -  enum _Ios_Fmtflags
> +  enum __attribute__((__flag_enum__)) _Ios_Fmtflags
>      {
>        _S_boolalpha     = 1L << 0,
>        _S_dec           = 1L << 1,
> @@ -76,9 +76,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>        _S_adjustfield   = _S_left | _S_right | _S_internal,
>        _S_basefield     = _S_dec | _S_oct | _S_hex,
>        _S_floatfield    = _S_scientific | _S_fixed,
> -      _S_ios_fmtflags_end = 1L << 16,
> -      _S_ios_fmtflags_max = __INT_MAX__,
> -      _S_ios_fmtflags_min = ~__INT_MAX__
> +      _S_ios_fmtflags_end __attribute__((__unused__)) = 1L << 16,
> +      _S_ios_fmtflags_max __attribute__((__unused__)) = __INT_MAX__,
> +      _S_ios_fmtflags_min __attribute__((__unused__)) = ~__INT_MAX__
>      };
>
>    _GLIBCXX_NODISCARD _GLIBCXX_CONSTEXPR
> @@ -176,15 +176,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>    { return __a = __a ^ __b; }
>
>
> -  enum _Ios_Iostate
> +  enum __attribute__((__flag_enum__)) _Ios_Iostate
>      {
>        _S_goodbit               = 0,
>        _S_badbit                = 1L << 0,
>        _S_eofbit                = 1L << 1,
>        _S_failbit               = 1L << 2,
> -      _S_ios_iostate_end = 1L << 16,
> -      _S_ios_iostate_max = __INT_MAX__,
> -      _S_ios_iostate_min = ~__INT_MAX__
> +      _S_ios_iostate_end __attribute__((__unused__)) = 1L << 16,
> +      _S_ios_iostate_max __attribute__((__unused__)) = __INT_MAX__,
> +      _S_ios_iostate_min __attribute__((__unused__)) = ~__INT_MAX__
>      };
>
>    _GLIBCXX_NODISCARD _GLIBCXX_CONSTEXPR
> @@ -228,7 +228,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>        _S_beg = 0,
>        _S_cur = _GLIBCXX_STDIO_SEEK_CUR,
>        _S_end = _GLIBCXX_STDIO_SEEK_END,
> -      _S_ios_seekdir_end = 1L << 16
> +      _S_ios_seekdir_end __attribute__((__unused__)) = 1L << 16
>      };
>
>  #if __cplusplus >= 201103L
> diff --git 
> a/libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
> b/libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
> index c72e00f87b5..6f0390b6cff 100644
> --- a/libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
> +++ b/libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
> @@ -68,12 +68,6 @@ case_labels(bitmask_type b)
>        break;
>      case std::ios_base::floatfield:
>        break;
> -    case std::_S_ios_fmtflags_end:
> -      break;
> -    case __INT_MAX__:
> -      break;
> -    case ~__INT_MAX__:
> -      break;
>      }
>    using underlying_type = std::underlying_type<bitmask_type>::type;
>    static_assert( sizeof(underlying_type) == sizeof(int),
> diff --git a/libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
> b/libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
> index 6a1dd90f67b..410f7464283 100644
> --- a/libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
> +++ b/libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
> @@ -40,12 +40,6 @@ case_labels(bitmask_type b)
>        break;
>      case std::ios_base::failbit:
>        break;
> -    case std::_S_ios_iostate_end:
> -      break;
> -    case __INT_MAX__:
> -      break;
> -    case ~__INT_MAX__:
> -      break;
>      }
>    using underlying_type = std::underlying_type<bitmask_type>::type;
>    static_assert( sizeof(underlying_type) == sizeof(int),
> diff --git 
> a/libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
> b/libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
> index e132070bf48..44b84a9821f 100644
> --- a/libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
> +++ b/libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
> @@ -48,12 +48,6 @@ case_labels(bitmask_type b)
>      case std::ios_base::noreplace:
>        break;
>  #endif
> -    case std::_S_ios_openmode_end:
> -      break;
> -    case __INT_MAX__:
> -      break;
> -    case ~__INT_MAX__:
> -      break;
>      }
>    using underlying_type = std::underlying_type<bitmask_type>::type;
>    static_assert( sizeof(underlying_type) == sizeof(int),
> diff --git a/libstdc++-v3/testsuite/27_io/ios_base/types/seekdir/case_label.cc
> b/libstdc++-v3/testsuite/27_io/ios_base/types/seekdir/case_label.cc
> index c7b9817932d..2dd1560339d 100644
> --- a/libstdc++-v3/testsuite/27_io/ios_base/types/seekdir/case_label.cc
> +++ b/libstdc++-v3/testsuite/27_io/ios_base/types/seekdir/case_label.cc
> @@ -38,7 +38,5 @@ case_labels(test_type b)
>        break;
>      case std::ios_base::end:
>        break;
> -    case std::_S_ios_fmtflags_end:
> -      break;
>      }
>  }
>
> base-commit: 2be505ace7e5e29a29ab53025762cf1a100a6d76
> --
> 2.51.0
>
>

Reply via email to