From a9807dad47d41f829d68a5f5dcd01b3c3a1c45b1 Mon Sep 17 00:00:00 2001 From: Ilia Kuklin Date: Thu, 13 Mar 2025 22:07:50 +0500 Subject: [PATCH] [Eval] Use user compiler type for arithmetic operations --- lldb/source/ValueObject/DILEval.cpp | 10 +++++----- lldb/unittests/DIL/DILTests.cpp | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lldb/source/ValueObject/DILEval.cpp b/lldb/source/ValueObject/DILEval.cpp index 8f8f92a6d992..8302bb28ffd0 100644 --- a/lldb/source/ValueObject/DILEval.cpp +++ b/lldb/source/ValueObject/DILEval.cpp @@ -1812,7 +1812,7 @@ Interpreter::EvaluateBinaryAddition(lldb::ValueObjectSP lhs, assert(lhs->GetCompilerType().CompareTypes(rhs->GetCompilerType()) && "invalid ast: operand must have the same type"); return EvaluateArithmeticOp(m_target, BinaryOpKind::Add, lhs, rhs, - lhs->GetCompilerType().GetCanonicalType()); + lhs->GetCompilerType()); } // Here one of the operands must be a pointer and the other one an integer. @@ -1847,7 +1847,7 @@ Interpreter::EvaluateBinarySubtraction(lldb::ValueObjectSP lhs, assert(lhs->GetCompilerType().CompareTypes(rhs->GetCompilerType()) && "invalid ast: operand must have the same type"); return EvaluateArithmeticOp(m_target, BinaryOpKind::Sub, lhs, rhs, - lhs->GetCompilerType().GetCanonicalType()); + lhs->GetCompilerType()); } assert(lhs->GetCompilerType().IsPointerType() && "invalid ast: lhs must be a pointer"); @@ -1907,7 +1907,7 @@ Interpreter::EvaluateBinaryMultiplication(lldb::ValueObjectSP lhs, "invalid ast: operands must be arithmetic and have the same type"); return EvaluateArithmeticOp(m_target, BinaryOpKind::Mul, lhs, rhs, - lhs->GetCompilerType().GetCanonicalType()); + lhs->GetCompilerType()); } llvm::Expected @@ -1934,7 +1934,7 @@ Interpreter::EvaluateBinaryDivision(lldb::ValueObjectSP lhs, } return EvaluateArithmeticOp(m_target, BinaryOpKind::Div, lhs, rhs, - lhs->GetCompilerType().GetCanonicalType()); + lhs->GetCompilerType()); } llvm::Expected @@ -1973,7 +1973,7 @@ Interpreter::EvaluateBinaryBitwise(BinaryOpKind kind, lldb::ValueObjectSP lhs, "invalid ast: operation must be '&', '|' or '^'"); return EvaluateArithmeticOpInteger(m_target, kind, lhs, rhs, - lhs->GetCompilerType().GetCanonicalType()); + lhs->GetCompilerType()); } llvm::Expected diff --git a/lldb/unittests/DIL/DILTests.cpp b/lldb/unittests/DIL/DILTests.cpp index a5f4966d1000..f532ce49fd6a 100644 --- a/lldb/unittests/DIL/DILTests.cpp +++ b/lldb/unittests/DIL/DILTests.cpp @@ -669,7 +669,7 @@ TEST_F(EvalTest, TestBitwiseOperators) { EXPECT_THAT(Eval("(signed char)-123 >> 8"), IsEqual("-1")); EXPECT_THAT(Eval("0b1011 & 0xFF"), IsEqual("11")); - EXPECT_THAT(Eval("0b1011 & mask_ff"), XFail(IsEqual("11"))); + EXPECT_THAT(Eval("0b1011 & mask_ff"), IsEqual("11")); EXPECT_THAT(Eval("0b1011 & 0b0111"), IsEqual("3")); EXPECT_THAT(Eval("0b1011 | 0b0111"), IsEqual("15")); EXPECT_THAT(Eval("-0b1011 | 0xFF"), IsEqual("-1")); @@ -2237,7 +2237,7 @@ TEST_F(EvalTest, TestBitFieldPromotion) { EXPECT_THAT(Eval("bf.f - 2"), IsEqual("4294967295")); EXPECT_THAT(Eval("bf.g - 2"), IsEqual("-1")); EXPECT_THAT(Eval("bf.h - 2"), IsEqual("-1")); - EXPECT_THAT(Eval("bf.i - 2"), XFail(IsEqual("18446744073709551615"))); + EXPECT_THAT(Eval("bf.i - 2"), IsEqual("18446744073709551615")); EXPECT_THAT(Eval("bf.g - bf.b"), IsEqual("-8")); EXPECT_THAT(Eval("-(true ? bf.b : bf.a)"), IsEqual("-9")); @@ -2247,7 +2247,7 @@ TEST_F(EvalTest, TestBitFieldPromotion) { EXPECT_THAT(Eval("-(true ? bf.b : bf.h)"), IsEqual("-9")); if (HAS_METHOD(lldb::SBType, GetEnumerationIntegerType())) { - EXPECT_THAT(Eval("bf.j - 2"), XFail(IsEqual("4294967295"))); + EXPECT_THAT(Eval("bf.j - 2"), IsEqual("4294967295")); EXPECT_THAT(Eval("-(true ? bf.b : bf.j)"), IsEqual("4294967287")); EXPECT_THAT(Eval("-(true ? bf.e : bf.j)"), IsEqual("4294967295")); }