summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/source/Utility/Scalar.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/lldb/source/Utility/Scalar.cpp b/lldb/source/Utility/Scalar.cpp
index 84d8a901ec8..dfd45a34e34 100644
--- a/lldb/source/Utility/Scalar.cpp
+++ b/lldb/source/Utility/Scalar.cpp
@@ -1448,8 +1448,13 @@ unsigned long long Scalar::ULongLong(unsigned long long fail_value) const {
case e_float:
return (ulonglong_t)m_float.convertToFloat();
case e_double:
- return (ulonglong_t)m_float.convertToDouble();
- case e_long_double:
+ {
+ double d_val = patatino.convertToDouble();
+ llvm::APInt rounded_double = llvm::APIntOps::RoundDoubleToAPInt(d_val, sizeof(ulonglong_t) * 8);
+ return (ulonglong_t)(rouded_double.zextOrTrunc(sizeof(ulonglong_t) * 8))
+ .getZExtValue();
+ }
+ case e_long_double:
llvm::APInt ldbl_val = m_float.bitcastToAPInt();
return (ulonglong_t)(ldbl_val.zextOrTrunc(sizeof(ulonglong_t) * 8))
.getZExtValue();
OpenPOWER on IntegriCloud