infinitely loops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33343
91177308-0d34-0410-b5e6-
96231b3b80d8
// See if we can simplify any instructions used by the instruction whose sole
// purpose is to compute bits we don't care about.
uint64_t KnownZero, KnownOne;
// See if we can simplify any instructions used by the instruction whose sole
// purpose is to compute bits we don't care about.
uint64_t KnownZero, KnownOne;
- if (!isa<PackedType>(I.getType()) &&
- SimplifyDemandedBits(&I, I.getType()->getIntegerTypeMask(),
- KnownZero, KnownOne))
+ if (!isa<PackedType>(I.getType())) {
+ if (SimplifyDemandedBits(&I, I.getType()->getIntegerTypeMask(),
+ KnownZero, KnownOne))
+ } else {
+ if (ConstantPacked *CP = dyn_cast<ConstantPacked>(Op1)) {
+ if (CP->isAllOnesValue())
+ return ReplaceInstUsesWith(I, I.getOperand(0));
+ }
+ }
if (ConstantInt *AndRHS = dyn_cast<ConstantInt>(Op1)) {
uint64_t AndRHSMask = AndRHS->getZExtValue();
if (ConstantInt *AndRHS = dyn_cast<ConstantInt>(Op1)) {
uint64_t AndRHSMask = AndRHS->getZExtValue();