diff options
author | David Majnemer <david.majnemer@gmail.com> | 2013-04-30 10:36:33 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2013-04-30 10:36:33 +0000 |
commit | d73f37bb832e85161f50667eb170923d447086b6 (patch) | |
tree | 49d8fe3a49a249a87784f76e9f9e0b0cc310a575 /llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp | |
parent | af22d91af004ddf2461a294bb5690e9fd4bf7737 (diff) | |
download | bcm5719-llvm-d73f37bb832e85161f50667eb170923d447086b6.tar.gz bcm5719-llvm-d73f37bb832e85161f50667eb170923d447086b6.zip |
Fix a bug in foldSelectICmpAndOr.
Differences in bitwidth between X and Y could exist even if C1 and C2 have
the same Log2 representation.
llvm-svn: 180779
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp index a34b73ace49..2defe631ae7 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp @@ -401,7 +401,8 @@ static Value *foldSelectICmpAndOr(const SelectInst &SI, Value *TrueVal, } else if (C1Log > C2Log) { V = Builder->CreateLShr(V, C1Log - C2Log); V = Builder->CreateZExtOrTrunc(V, Y->getType()); - } + } else + V = Builder->CreateZExtOrTrunc(V, Y->getType()); ICmpInst::Predicate Pred = IC->getPredicate(); if ((Pred == ICmpInst::ICMP_NE && OrOnFalseVal) || |