Commit f7d2b13e by Abseil Team Committed by Copybara-Service

Remove code pieces for no longer supported GCC versions.

The minimum supported version today is GCC 7 (`__GNUC__ >= 7`).

PiperOrigin-RevId: 600475215
Change-Id: I1aa46384f1e75f268649a48dbe2b42f3475bb07f
parent b21b4898
...@@ -379,9 +379,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' || ...@@ -379,9 +379,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
#define ABSL_HAVE_EXCEPTIONS 1 #define ABSL_HAVE_EXCEPTIONS 1
#endif // defined(__EXCEPTIONS) && ABSL_HAVE_FEATURE(cxx_exceptions) #endif // defined(__EXCEPTIONS) && ABSL_HAVE_FEATURE(cxx_exceptions)
// Handle remaining special cases and default to exceptions being supported. // Handle remaining special cases and default to exceptions being supported.
#elif !(defined(__GNUC__) && (__GNUC__ < 5) && !defined(__EXCEPTIONS)) && \ #elif !(defined(__GNUC__) && !defined(__cpp_exceptions)) && \
!(ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(5, 0) && \
!defined(__cpp_exceptions)) && \
!(defined(_MSC_VER) && !defined(_CPPUNWIND)) !(defined(_MSC_VER) && !defined(_CPPUNWIND))
#define ABSL_HAVE_EXCEPTIONS 1 #define ABSL_HAVE_EXCEPTIONS 1
#endif #endif
...@@ -902,9 +900,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' || ...@@ -902,9 +900,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
#error ABSL_INTERNAL_HAS_CXA_DEMANGLE cannot be directly set #error ABSL_INTERNAL_HAS_CXA_DEMANGLE cannot be directly set
#elif defined(OS_ANDROID) && (defined(__i386__) || defined(__x86_64__)) #elif defined(OS_ANDROID) && (defined(__i386__) || defined(__x86_64__))
#define ABSL_INTERNAL_HAS_CXA_DEMANGLE 0 #define ABSL_INTERNAL_HAS_CXA_DEMANGLE 0
#elif defined(__GNUC__) && defined(__GNUC_MINOR__) && \ #elif defined(__GNUC__) && !defined(__mips__)
(__GNUC__ >= 4 || (__GNUC__ >= 3 && __GNUC_MINOR__ >= 4)) && \
!defined(__mips__)
#define ABSL_INTERNAL_HAS_CXA_DEMANGLE 1 #define ABSL_INTERNAL_HAS_CXA_DEMANGLE 1
#elif defined(__clang__) && !defined(_MSC_VER) #elif defined(__clang__) && !defined(_MSC_VER)
#define ABSL_INTERNAL_HAS_CXA_DEMANGLE 1 #define ABSL_INTERNAL_HAS_CXA_DEMANGLE 1
......
...@@ -358,7 +358,6 @@ TEST(CompressedTupleTest, Constexpr) { ...@@ -358,7 +358,6 @@ TEST(CompressedTupleTest, Constexpr) {
EXPECT_EQ(x2, 5); EXPECT_EQ(x2, 5);
EXPECT_EQ(x3, CallType::kConstRef); EXPECT_EQ(x3, CallType::kConstRef);
#if !defined(__GNUC__) || defined(__clang__) || __GNUC__ > 4
constexpr CompressedTuple<Empty<0>, TrivialStruct, int> trivial = {}; constexpr CompressedTuple<Empty<0>, TrivialStruct, int> trivial = {};
constexpr CallType trivial0 = trivial.get<0>().value(); constexpr CallType trivial0 = trivial.get<0>().value();
constexpr int trivial1 = trivial.get<1>().value(); constexpr int trivial1 = trivial.get<1>().value();
...@@ -367,7 +366,6 @@ TEST(CompressedTupleTest, Constexpr) { ...@@ -367,7 +366,6 @@ TEST(CompressedTupleTest, Constexpr) {
EXPECT_EQ(trivial0, CallType::kConstRef); EXPECT_EQ(trivial0, CallType::kConstRef);
EXPECT_EQ(trivial1, 0); EXPECT_EQ(trivial1, 0);
EXPECT_EQ(trivial2, 0); EXPECT_EQ(trivial2, 0);
#endif
constexpr CompressedTuple<Empty<0>, NonTrivialStruct, absl::optional<int>> constexpr CompressedTuple<Empty<0>, NonTrivialStruct, absl::optional<int>>
non_trivial = {}; non_trivial = {};
......
...@@ -174,8 +174,7 @@ ABSL_NAMESPACE_END ...@@ -174,8 +174,7 @@ ABSL_NAMESPACE_END
// From GCC-4.9 Changelog: (src: https://gcc.gnu.org/gcc-4.9/changes.html) // From GCC-4.9 Changelog: (src: https://gcc.gnu.org/gcc-4.9/changes.html)
// "the unordered associative containers in <unordered_map> and <unordered_set> // "the unordered associative containers in <unordered_map> and <unordered_set>
// meet the allocator-aware container requirements;" // meet the allocator-aware container requirements;"
#if (defined(__GLIBCXX__) && __GLIBCXX__ <= 20140425 ) || \ #if defined(__GLIBCXX__) && __GLIBCXX__ <= 20140425
( __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 9 ))
#define ABSL_UNORDERED_SUPPORTS_ALLOC_CTORS 0 #define ABSL_UNORDERED_SUPPORTS_ALLOC_CTORS 0
#else #else
#define ABSL_UNORDERED_SUPPORTS_ALLOC_CTORS 1 #define ABSL_UNORDERED_SUPPORTS_ALLOC_CTORS 1
......
...@@ -1044,13 +1044,7 @@ TEST_F(FlagTest, MacroWithinAbslFlag) { ...@@ -1044,13 +1044,7 @@ TEST_F(FlagTest, MacroWithinAbslFlag) {
// -------------------------------------------------------------------- // --------------------------------------------------------------------
#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ <= 5
#define ABSL_SKIP_OPTIONAL_BOOL_TEST_DUE_TO_GCC_BUG
#endif
#ifndef ABSL_SKIP_OPTIONAL_BOOL_TEST_DUE_TO_GCC_BUG
ABSL_FLAG(absl::optional<bool>, optional_bool, absl::nullopt, "help"); ABSL_FLAG(absl::optional<bool>, optional_bool, absl::nullopt, "help");
#endif
ABSL_FLAG(absl::optional<int>, optional_int, {}, "help"); ABSL_FLAG(absl::optional<int>, optional_int, {}, "help");
ABSL_FLAG(absl::optional<double>, optional_double, 9.3, "help"); ABSL_FLAG(absl::optional<double>, optional_double, 9.3, "help");
ABSL_FLAG(absl::optional<std::string>, optional_string, absl::nullopt, "help"); ABSL_FLAG(absl::optional<std::string>, optional_string, absl::nullopt, "help");
...@@ -1064,7 +1058,6 @@ ABSL_FLAG(std::optional<int64_t>, std_optional_int64, std::nullopt, "help"); ...@@ -1064,7 +1058,6 @@ ABSL_FLAG(std::optional<int64_t>, std_optional_int64, std::nullopt, "help");
namespace { namespace {
#ifndef ABSL_SKIP_OPTIONAL_BOOL_TEST_DUE_TO_GCC_BUG
TEST_F(FlagTest, TestOptionalBool) { TEST_F(FlagTest, TestOptionalBool) {
EXPECT_FALSE(absl::GetFlag(FLAGS_optional_bool).has_value()); EXPECT_FALSE(absl::GetFlag(FLAGS_optional_bool).has_value());
EXPECT_EQ(absl::GetFlag(FLAGS_optional_bool), absl::nullopt); EXPECT_EQ(absl::GetFlag(FLAGS_optional_bool), absl::nullopt);
...@@ -1083,7 +1076,6 @@ TEST_F(FlagTest, TestOptionalBool) { ...@@ -1083,7 +1076,6 @@ TEST_F(FlagTest, TestOptionalBool) {
} }
// -------------------------------------------------------------------- // --------------------------------------------------------------------
#endif
TEST_F(FlagTest, TestOptionalInt) { TEST_F(FlagTest, TestOptionalInt) {
EXPECT_FALSE(absl::GetFlag(FLAGS_optional_int).has_value()); EXPECT_FALSE(absl::GetFlag(FLAGS_optional_int).has_value());
......
...@@ -982,18 +982,6 @@ TEST(optionalTest, PointerStuff) { ...@@ -982,18 +982,6 @@ TEST(optionalTest, PointerStuff) {
static_assert((*opt1).x == ConstexprType::kCtorInt, ""); static_assert((*opt1).x == ConstexprType::kCtorInt, "");
} }
// gcc has a bug pre 4.9.1 where it doesn't do correct overload resolution
// when overloads are const-qualified and *this is an raluve.
// Skip that test to make the build green again when using the old compiler.
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59296 is fixed in 4.9.1.
#if defined(__GNUC__) && !defined(__clang__)
#define GCC_VERSION \
(__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#if GCC_VERSION < 40901
#define ABSL_SKIP_OVERLOAD_TEST_DUE_TO_GCC_BUG
#endif
#endif
TEST(optionalTest, Value) { TEST(optionalTest, Value) {
using O = absl::optional<std::string>; using O = absl::optional<std::string>;
using CO = const absl::optional<std::string>; using CO = const absl::optional<std::string>;
...@@ -1006,16 +994,12 @@ TEST(optionalTest, Value) { ...@@ -1006,16 +994,12 @@ TEST(optionalTest, Value) {
EXPECT_EQ("lvalue_c", lvalue_c.value()); EXPECT_EQ("lvalue_c", lvalue_c.value());
EXPECT_EQ("xvalue", O(absl::in_place, "xvalue").value()); EXPECT_EQ("xvalue", O(absl::in_place, "xvalue").value());
EXPECT_EQ("xvalue_c", OC(absl::in_place, "xvalue_c").value()); EXPECT_EQ("xvalue_c", OC(absl::in_place, "xvalue_c").value());
#ifndef ABSL_SKIP_OVERLOAD_TEST_DUE_TO_GCC_BUG
EXPECT_EQ("cxvalue", CO(absl::in_place, "cxvalue").value()); EXPECT_EQ("cxvalue", CO(absl::in_place, "cxvalue").value());
#endif
EXPECT_EQ("&", TypeQuals(lvalue.value())); EXPECT_EQ("&", TypeQuals(lvalue.value()));
EXPECT_EQ("c&", TypeQuals(clvalue.value())); EXPECT_EQ("c&", TypeQuals(clvalue.value()));
EXPECT_EQ("c&", TypeQuals(lvalue_c.value())); EXPECT_EQ("c&", TypeQuals(lvalue_c.value()));
EXPECT_EQ("&&", TypeQuals(O(absl::in_place, "xvalue").value())); EXPECT_EQ("&&", TypeQuals(O(absl::in_place, "xvalue").value()));
#ifndef ABSL_SKIP_OVERLOAD_TEST_DUE_TO_GCC_BUG
EXPECT_EQ("c&&", TypeQuals(CO(absl::in_place, "cxvalue").value())); EXPECT_EQ("c&&", TypeQuals(CO(absl::in_place, "cxvalue").value()));
#endif
EXPECT_EQ("c&&", TypeQuals(OC(absl::in_place, "xvalue_c").value())); EXPECT_EQ("c&&", TypeQuals(OC(absl::in_place, "xvalue_c").value()));
#if !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) #if !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED)
...@@ -1039,7 +1023,7 @@ TEST(optionalTest, Value) { ...@@ -1039,7 +1023,7 @@ TEST(optionalTest, Value) {
// test constexpr value() // test constexpr value()
constexpr absl::optional<int> o1(1); constexpr absl::optional<int> o1(1);
static_assert(1 == o1.value(), ""); // const & static_assert(1 == o1.value(), ""); // const &
#if !defined(_MSC_VER) && !defined(ABSL_SKIP_OVERLOAD_TEST_DUE_TO_GCC_BUG) #ifndef _MSC_VER
using COI = const absl::optional<int>; using COI = const absl::optional<int>;
static_assert(2 == COI(2).value(), ""); // const && static_assert(2 == COI(2).value(), ""); // const &&
#endif #endif
...@@ -1057,15 +1041,11 @@ TEST(optionalTest, DerefOperator) { ...@@ -1057,15 +1041,11 @@ TEST(optionalTest, DerefOperator) {
EXPECT_EQ("lvalue_c", *lvalue_c); EXPECT_EQ("lvalue_c", *lvalue_c);
EXPECT_EQ("xvalue", *O(absl::in_place, "xvalue")); EXPECT_EQ("xvalue", *O(absl::in_place, "xvalue"));
EXPECT_EQ("xvalue_c", *OC(absl::in_place, "xvalue_c")); EXPECT_EQ("xvalue_c", *OC(absl::in_place, "xvalue_c"));
#ifndef ABSL_SKIP_OVERLOAD_TEST_DUE_TO_GCC_BUG
EXPECT_EQ("cxvalue", *CO(absl::in_place, "cxvalue")); EXPECT_EQ("cxvalue", *CO(absl::in_place, "cxvalue"));
#endif
EXPECT_EQ("&", TypeQuals(*lvalue)); EXPECT_EQ("&", TypeQuals(*lvalue));
EXPECT_EQ("c&", TypeQuals(*clvalue)); EXPECT_EQ("c&", TypeQuals(*clvalue));
EXPECT_EQ("&&", TypeQuals(*O(absl::in_place, "xvalue"))); EXPECT_EQ("&&", TypeQuals(*O(absl::in_place, "xvalue")));
#ifndef ABSL_SKIP_OVERLOAD_TEST_DUE_TO_GCC_BUG
EXPECT_EQ("c&&", TypeQuals(*CO(absl::in_place, "cxvalue"))); EXPECT_EQ("c&&", TypeQuals(*CO(absl::in_place, "cxvalue")));
#endif
EXPECT_EQ("c&&", TypeQuals(*OC(absl::in_place, "xvalue_c"))); EXPECT_EQ("c&&", TypeQuals(*OC(absl::in_place, "xvalue_c")));
#if !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) #if !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment