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 | 317d6c621de053db9ef24f53e9bb8c11a297668b (patch) | |
tree | 5826bf78671aac4f84de21ef6c576600fe52451b /llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp | |
parent | 14e0bb54a5bb33185b25152568aa6f361b85a2fb (diff) | |
download | bcm5719-llvm-317d6c621de053db9ef24f53e9bb8c11a297668b.tar.gz bcm5719-llvm-317d6c621de053db9ef24f53e9bb8c11a297668b.zip |
SimplifyLibcalls: The return value of ffsll is always i32, even when the input is zero.
Fixes PR13028.
llvm-svn: 166313
Diffstat (limited to 'llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp b/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp index 90efa8ae0e0..c82a00fc2c8 100644 --- a/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp +++ b/llvm/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); } |