fix a regression on vector or instructions.
authorChris Lattner <sabre@nondot.org>
Sat, 24 Mar 2007 23:56:43 +0000 (23:56 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 24 Mar 2007 23:56:43 +0000 (23:56 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35314 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/InstructionCombining.cpp

index b189503c2af4c6a2916f7b6f1d9a80978cf1d5e1..461b0a01fbd701988e10afe5a5c87913129eed98 100644 (file)
@@ -3636,9 +3636,8 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) {
   bool Changed = SimplifyCommutative(I);
   Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
 
-  if (isa<UndefValue>(Op1))
-    return ReplaceInstUsesWith(I,                         // X | undef -> -1
-                               ConstantInt::getAllOnesValue(I.getType()));
+  if (isa<UndefValue>(Op1))                       // X | undef -> -1
+    return ReplaceInstUsesWith(I, ConstantInt::getAllOnesValue(I.getType()));
 
   // or X, X = X
   if (Op0 == Op1)
@@ -3646,12 +3645,13 @@ 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.
-  uint32_t BitWidth = cast<IntegerType>(I.getType())->getBitWidth();
-  APInt KnownZero(BitWidth, 0), KnownOne(BitWidth, 0);
-  if (!isa<VectorType>(I.getType()) &&
-      SimplifyDemandedBits(&I, APInt::getAllOnesValue(BitWidth),
-                           KnownZero, KnownOne))
-    return &I;
+  if (!isa<VectorType>(I.getType())) {
+    uint32_t BitWidth = cast<IntegerType>(I.getType())->getBitWidth();
+    APInt KnownZero(BitWidth, 0), KnownOne(BitWidth, 0);
+    if (SimplifyDemandedBits(&I, APInt::getAllOnesValue(BitWidth),
+                             KnownZero, KnownOne))
+      return &I;
+  }
   
   // or X, -1 == -1
   if (ConstantInt *RHS = dyn_cast<ConstantInt>(Op1)) {