summaryrefslogtreecommitdiff
path: root/absl/strings/charconv.cc
diff options
context:
space:
mode:
Diffstat (limited to 'absl/strings/charconv.cc')
-rw-r--r--absl/strings/charconv.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/absl/strings/charconv.cc b/absl/strings/charconv.cc
index 9b4bc5ea..501297c8 100644
--- a/absl/strings/charconv.cc
+++ b/absl/strings/charconv.cc
@@ -339,14 +339,17 @@ template <typename FloatType>
bool HandleEdgeCase(const strings_internal::ParsedFloat& input, bool negative,
FloatType* value) {
if (input.type == strings_internal::FloatType::kNan) {
- // A bug in both clang and gcc would cause the compiler to optimize away the
- // buffer we are building below. Declaring the buffer volatile avoids the
+ // A bug in gcc would cause the compiler to optimize away the buffer
+ // we are building below. Declaring the buffer volatile avoids the
// issue, and has no measurable performance impact in microbenchmarks.
//
- // https://bugs.llvm.org/show_bug.cgi?id=37778
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86113
constexpr ptrdiff_t kNanBufferSize = 128;
+#ifdef __GNUC__
volatile char n_char_sequence[kNanBufferSize];
+#else
+ char n_char_sequence[kNanBufferSize];
+#endif
if (input.subrange_begin == nullptr) {
n_char_sequence[0] = '\0';
} else {