diff --git a/llvm/include/llvm/Demangle/ItaniumDemangle.h b/llvm/include/llvm/Demangle/ItaniumDemangle.h --- a/llvm/include/llvm/Demangle/ItaniumDemangle.h +++ b/llvm/include/llvm/Demangle/ItaniumDemangle.h @@ -2331,11 +2331,9 @@ void printLeft(OutputBuffer &OB) const override { const char *first = &*Contents.begin(); - const char *last = &*Contents.end() + 1; - const size_t N = FloatData::mangled_size; - if (static_cast(last - first) > N) { - last = first + N; + if (Contents.size() >= N) { + const char *last = first + N; union { Float value; char buf[sizeof(Float)];