diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2012-10-19 20:43:44 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2012-10-19 20:43:44 +0000 |
commit | 0aae4bd0fc9133ba3b4e59d6cdb05b878fc8f436 (patch) | |
tree | ad9ce31279574e965cf4603e2fa6385505f6f892 /lib/Transforms/Scalar/SimplifyLibCalls.cpp | |
parent | 28ce1cc183582e4061f1e5ba4fb443d99a4915ae (diff) | |
download | llvm-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.cpp | 4 |
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); } |