+ Pavel for post-commit review. I've reinstated the original behavior to fix the UBSan error on the bot. Please let me know if you prefer a different approach.
On Tue, Jun 30, 2020 at 12:41 PM Jonas Devlieghere via lldb-commits < lldb-commits@lists.llvm.org> wrote: > > Author: Jonas Devlieghere > Date: 2020-06-30T12:41:41-07:00 > New Revision: 2501e86acda2905e50012f7e9fc1942517c1237d > > URL: > https://github.com/llvm/llvm-project/commit/2501e86acda2905e50012f7e9fc1942517c1237d > DIFF: > https://github.com/llvm/llvm-project/commit/2501e86acda2905e50012f7e9fc1942517c1237d.diff > > LOG: [lldb/Scalar] Fix undefined behavior > > Fix UBSan error detected in TestDataFormatterObjCCF.py and > TestDataFormatterObjCNSDate.py: > > Scalar.cpp:698:27: runtime error: -4.96303e+08 is outside the range of > representable values of type 'unsigned long long'. > > Added: > > > Modified: > lldb/source/Utility/Scalar.cpp > > Removed: > > > > > ################################################################################ > diff --git a/lldb/source/Utility/Scalar.cpp > b/lldb/source/Utility/Scalar.cpp > index 610c935409ac..d275f6211e5c 100644 > --- a/lldb/source/Utility/Scalar.cpp > +++ b/lldb/source/Utility/Scalar.cpp > @@ -736,7 +736,17 @@ long long Scalar::SLongLong(long long fail_value) > const { > } > > unsigned long long Scalar::ULongLong(unsigned long long fail_value) const > { > - return GetAsUnsigned<unsigned long long>(fail_value); > + switch (m_type) { > + case e_double: { > + double d_val = m_float.convertToDouble(); > + llvm::APInt rounded_double = > + llvm::APIntOps::RoundDoubleToAPInt(d_val, sizeof(ulonglong_t) * > 8); > + return static_cast<ulonglong_t>( > + (rounded_double.zextOrTrunc(sizeof(ulonglong_t) * > 8)).getZExtValue()); > + } > + default: > + return GetAsUnsigned<unsigned long long>(fail_value); > + } > } > > llvm::APInt Scalar::SInt128(const llvm::APInt &fail_value) const { > > > > _______________________________________________ > lldb-commits mailing list > lldb-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits >
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits