summaryrefslogtreecommitdiffstats
path: root/clang/unittests/Basic
diff options
context:
space:
mode:
authorLeonard Chan <leonardchan@google.com>2018-08-06 17:55:38 +0000
committerLeonard Chan <leonardchan@google.com>2018-08-06 17:55:38 +0000
commitb30502efc3b7b1f4bf6a950cd5bbe1b3fbcbb14a (patch)
treef9099a5d62026e732ac63cee668c2ade8f34d310 /clang/unittests/Basic
parente98b9d4c7414bd20bc7d37095b497a6863d913f4 (diff)
downloadbcm5719-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.cpp7
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);
OpenPOWER on IntegriCloud