diff options
Diffstat (limited to 'absl/strings/charconv.cc')
-rw-r--r-- | absl/strings/charconv.cc | 9 |
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 { |