diff options
author | Leonard Chan <leonardchan@google.com> | 2018-08-06 17:55:38 +0000 |
---|---|---|
committer | Leonard Chan <leonardchan@google.com> | 2018-08-06 17:55:38 +0000 |
commit | b30502efc3b7b1f4bf6a950cd5bbe1b3fbcbb14a (patch) | |
tree | f9099a5d62026e732ac63cee668c2ade8f34d310 /clang/unittests/Basic | |
parent | e98b9d4c7414bd20bc7d37095b497a6863d913f4 (diff) | |
download | bcm5719-llvm-b30502efc3b7b1f4bf6a950cd5bbe1b3fbcbb14a.tar.gz bcm5719-llvm-b30502efc3b7b1f4bf6a950cd5bbe1b3fbcbb14a.zip |
Fix for failing test from sanitizer-x86_64-linux-fast where there was a
left shift on a negative value.
llvm-svn: 339037
Diffstat (limited to 'clang/unittests/Basic')
-rw-r--r-- | clang/unittests/Basic/FixedPointTest.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/unittests/Basic/FixedPointTest.cpp b/clang/unittests/Basic/FixedPointTest.cpp index 6d608f1faff..74b676bb21f 100644 --- a/clang/unittests/Basic/FixedPointTest.cpp +++ b/clang/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); |