Hi All,
I know we’re late in the release process, but I’ve discovered a regression I believe is serious enough to hold the release [1].
The regression is in usages of __builtin_constant_p
applied to a dereferenced pointer in a constant expression. In certain cases Clang now rejects this as a non-constant expression [2].
This regression will have a larger impact than it initially appears.
libstdc++ 7.1 and newer use __builtin_constant_p
to implement C++17 std::char_traits
[4]. This means that any usage of std::string_view
in a constant expression has the possibility to break. __builtin_constant_p
may be rare, but std::string_view
is not.
This regression was first found because it breaks absl::StrFormat
[4]. This bug will break Abseil’s LTS w/ libstdc++. Abseil cannot fully work around this bug.
I would implore us to fix this bug in the upcoming 8 release.
/Eric
[1] https://reviews.llvm.org/D59038
[2] https://godbolt.org/z/VOCCJF
[3] https://github.com/abseil/abseil-cpp/issues/271
[4] https://github.com/gcc-mirror/gcc/blob/gcc-8_1_0-release/libstdc+±v3/include/bits/char_traits.h#L229