summaryrefslogtreecommitdiff
path: root/lib/Transforms/Scalar/SimplifyLibCalls.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2012-10-19 20:43:44 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2012-10-19 20:43:44 +0000
commit0aae4bd0fc9133ba3b4e59d6cdb05b878fc8f436 (patch)
treead9ce31279574e965cf4603e2fa6385505f6f892 /lib/Transforms/Scalar/SimplifyLibCalls.cpp
parent28ce1cc183582e4061f1e5ba4fb443d99a4915ae (diff)
downloadllvm-0aae4bd0fc9133ba3b4e59d6cdb05b878fc8f436.tar.gz
llvm-0aae4bd0fc9133ba3b4e59d6cdb05b878fc8f436.tar.bz2
llvm-0aae4bd0fc9133ba3b4e59d6cdb05b878fc8f436.tar.xz
SimplifyLibcalls: The return value of ffsll is always i32, even when the input is zero.
Fixes PR13028. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166313 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar/SimplifyLibCalls.cpp')
-rw-r--r--lib/Transforms/Scalar/SimplifyLibCalls.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/Transforms/Scalar/SimplifyLibCalls.cpp b/lib/Transforms/Scalar/SimplifyLibCalls.cpp
index 90efa8ae0e..c82a00fc2c 100644
--- a/lib/Transforms/Scalar/SimplifyLibCalls.cpp
+++ b/lib/Transforms/Scalar/SimplifyLibCalls.cpp
@@ -772,8 +772,8 @@ struct FFSOpt : public LibCallOptimization {
// Constant fold.
if (ConstantInt *CI = dyn_cast<ConstantInt>(Op)) {
- if (CI->getValue() == 0) // ffs(0) -> 0.
- return Constant::getNullValue(CI->getType());
+ if (CI->isZero()) // ffs(0) -> 0.
+ return B.getInt32(0);
// ffs(c) -> cttz(c)+1
return B.getInt32(CI->getValue().countTrailingZeros() + 1);
}