diff options
author | Suyog Sarda <suyog.sarda@samsung.com> | 2014-07-17 06:28:15 +0000 |
---|---|---|
committer | Suyog Sarda <suyog.sarda@samsung.com> | 2014-07-17 06:28:15 +0000 |
commit | 68862414b5f4849333bb1a2141729bb3ab5e6f43 (patch) | |
tree | 05dc8d3c8b7b09e15d8e7e878bf82c00d293fe64 /llvm/lib/Analysis/InstructionSimplify.cpp | |
parent | ac6e39cf3bee83b7e6a258befe2e3b188801bfe3 (diff) | |
download | bcm5719-llvm-68862414b5f4849333bb1a2141729bb3ab5e6f43.tar.gz bcm5719-llvm-68862414b5f4849333bb1a2141729bb3ab5e6f43.zip |
Move ashr optimization from InstCombineShift to InstSimplify.
Refactor code, no functionality change, test case moved from instcombine to instsimplify.
Differential Revision: http://reviews.llvm.org/D4102
llvm-svn: 213231
Diffstat (limited to 'llvm/lib/Analysis/InstructionSimplify.cpp')
-rw-r--r-- | llvm/lib/Analysis/InstructionSimplify.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp index fd7a4de6903..6ac1ae8d5ed 100644 --- a/llvm/lib/Analysis/InstructionSimplify.cpp +++ b/llvm/lib/Analysis/InstructionSimplify.cpp @@ -1346,6 +1346,11 @@ static Value *SimplifyAShrInst(Value *Op0, Value *Op1, bool isExact, cast<OverflowingBinaryOperator>(Op0)->hasNoSignedWrap()) return X; + // Arithmetic shifting an all-sign-bit value is a no-op. + unsigned NumSignBits = ComputeNumSignBits(Op0); + if (NumSignBits == Op0->getType()->getScalarSizeInBits()) + return Op0; + return nullptr; } |