diff options
author | Xinliang David Li <davidxl@google.com> | 2017-06-01 23:05:11 +0000 |
---|---|---|
committer | Xinliang David Li <davidxl@google.com> | 2017-06-01 23:05:11 +0000 |
commit | d6cfba2a02d1181d421cd134999c36e3aba56604 (patch) | |
tree | 634a1caa708beb2ab67583a527fd7763950062bb /llvm/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp | |
parent | fa635d730f74f3285b77cc1537f1692184b8bf5b (diff) | |
download | bcm5719-llvm-d6cfba2a02d1181d421cd134999c36e3aba56604.tar.gz bcm5719-llvm-d6cfba2a02d1181d421cd134999c36e3aba56604.zip |
Fix compiler_rt buildbot failure
llvm-svn: 304489
Diffstat (limited to 'llvm/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp b/llvm/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp index 930696b036c..b0f43872175 100644 --- a/llvm/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp +++ b/llvm/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp @@ -99,25 +99,31 @@ template <class BrSelInst> static bool handleBrSelExpect(BrSelInst &BSI) { ICmpInst *CmpI = dyn_cast<ICmpInst>(BSI.getCondition()); CmpInst::Predicate Predicate; - uint64_t ValueComparedTo = 0; + ConstantInt *CmpConstOperand = nullptr; if (!CmpI) { CI = dyn_cast<CallInst>(BSI.getCondition()); Predicate = CmpInst::ICMP_NE; - ValueComparedTo = 0; } else { Predicate = CmpI->getPredicate(); if (Predicate != CmpInst::ICMP_NE && Predicate != CmpInst::ICMP_EQ) return false; - ConstantInt *CmpConstOperand = dyn_cast<ConstantInt>(CmpI->getOperand(1)); + + CmpConstOperand = dyn_cast<ConstantInt>(CmpI->getOperand(1)); if (!CmpConstOperand) return false; - ValueComparedTo = CmpConstOperand->getZExtValue(); CI = dyn_cast<CallInst>(CmpI->getOperand(0)); } if (!CI) return false; + uint64_t ValueComparedTo = 0; + if (CmpConstOperand) { + if (CmpConstOperand->getBitWidth() > 64) + return false; + ValueComparedTo = CmpConstOperand->getZExtValue(); + } + Function *Fn = CI->getCalledFunction(); if (!Fn || Fn->getIntrinsicID() != Intrinsic::expect) return false; |