summaryrefslogtreecommitdiff
path: root/absl/strings/charconv.cc
diff options
context:
space:
mode:
authorGravatar Randolf J <34705014+jun-sheaf@users.noreply.github.com>2022-10-04 20:21:02 +0200
committerGravatar GitHub <noreply@github.com>2022-10-04 20:21:02 +0200
commitbf2bf60a3e29f159c8aa513d58cbe65f3f633bb6 (patch)
tree53c1ddffbb28a98cf4d8436ca3d05757d90e863f /absl/strings/charconv.cc
parent71aa5dda4ca027437a86f087f4fe93f21f5d0638 (diff)
Update charconv.cc
Diffstat (limited to 'absl/strings/charconv.cc')
-rw-r--r--absl/strings/charconv.cc13
1 files changed, 6 insertions, 7 deletions
diff --git a/absl/strings/charconv.cc b/absl/strings/charconv.cc
index 88bd7eaf..a961d16c 100644
--- a/absl/strings/charconv.cc
+++ b/absl/strings/charconv.cc
@@ -334,24 +334,23 @@ 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 {
ptrdiff_t nan_size = input.subrange_end - input.subrange_begin;
nan_size = std::min(nan_size, kNanBufferSize - 1);
-#ifdef __GNUC__
std::copy_n(input.subrange_begin, nan_size, n_char_sequence);
-#else
- std::copy_n(input.subrange_begin, nan_size, const_cast<char *>(n_char_sequence));
-#endif
n_char_sequence[nan_size] = '\0';
}
char* nan_argument = const_cast<char*>(n_char_sequence);