Tested x86_64-pc-linux-gnu, OK for trunk?
-- 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