From: Leonard Chan Date: Mon, 6 Aug 2018 17:55:38 +0000 (+0000) Subject: Fix for failing test from sanitizer-x86_64-linux-fast where there was a X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=978342346e1cc64e4dba061960b2cf4c7c7abb64;p=clang Fix for failing test from sanitizer-x86_64-linux-fast where there was a left shift on a negative value. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@339037 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/unittests/Basic/FixedPointTest.cpp b/unittests/Basic/FixedPointTest.cpp index 6d608f1faf..74b676bb21 100644 --- a/unittests/Basic/FixedPointTest.cpp +++ b/unittests/Basic/FixedPointTest.cpp @@ -364,12 +364,19 @@ TEST(FixedPoint, compare) { void CheckUnsaturatedConversion(FixedPointSemantics Src, FixedPointSemantics Dst, int64_t TestVal) { int64_t ScaledVal = TestVal; + bool IsNegative = ScaledVal < 0; + if (IsNegative) + ScaledVal = -ScaledVal; + if (Dst.getScale() > Src.getScale()) { ScaledVal <<= (Dst.getScale() - Src.getScale()); } else { ScaledVal >>= (Src.getScale() - Dst.getScale()); } + if (IsNegative) + ScaledVal = -ScaledVal; + APFixedPoint Fixed(TestVal, Src); APFixedPoint Expected(ScaledVal, Dst); ASSERT_EQ(Fixed.convert(Dst), Expected);