diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/InstructionCombining.cpp | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp index 8341053fca7..397c6d6ecd6 100644 --- a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp @@ -2380,7 +2380,8 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) {    // 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 (SimplifyDemandedBits(&I, I.getType()->getIntegralTypeMask(), +  if (!isa<PackedType>(I.getType()) && +      SimplifyDemandedBits(&I, I.getType()->getIntegralTypeMask(),                             KnownZero, KnownOne))      return &I; @@ -2624,7 +2625,8 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) {    // 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 (SimplifyDemandedBits(&I, I.getType()->getIntegralTypeMask(), +  if (!isa<PackedType>(I.getType()) && +      SimplifyDemandedBits(&I, I.getType()->getIntegralTypeMask(),                             KnownZero, KnownOne))      return &I; @@ -2861,7 +2863,8 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) {    // 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 (SimplifyDemandedBits(&I, I.getType()->getIntegralTypeMask(), +  if (!isa<PackedType>(I.getType()) && +      SimplifyDemandedBits(&I, I.getType()->getIntegralTypeMask(),                             KnownZero, KnownOne))      return &I;  | 

