just remove this xform which is subsumed by others.
authorChris Lattner <sabre@nondot.org>
Tue, 5 Jan 2010 21:16:30 +0000 (21:16 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 5 Jan 2010 21:16:30 +0000 (21:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92775 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/InstCombine/InstCombineCasts.cpp
test/Transforms/InstCombine/sub.ll

index 8a66660e92d8b8420df057202eb610814e2f463d..4d44cc977049877c813dd2546879536c9ac5c727 100644 (file)
@@ -680,32 +680,7 @@ Instruction *InstCombiner::visitTrunc(TruncInst &CI) {
     Value *V2 = ConstantExpr::getTrunc(ShAmtV, DestTy);
     return BinaryOperator::CreateShl(V1, V2);
   }
-  
-  // If we are discarding information from a simple binop, rewrite.
-  if (Src->hasOneUse() && isa<Instruction>(Src)) {
-    Instruction *SrcI = cast<Instruction>(Src);
-    switch (SrcI->getOpcode()) {
-    default: break;
-    case Instruction::Add:
-    // TODO: SUB?
-    case Instruction::Mul:
-    case Instruction::And:
-    case Instruction::Or:
-    case Instruction::Xor:
-      Value *Op0 = SrcI->getOperand(0);
-      Value *Op1 = SrcI->getOperand(1);
-
-      // Don't insert two casts unless at least one can be eliminated.
-      if (!ValueRequiresCast(Instruction::Trunc, Op1, DestTy) ||
-          !ValueRequiresCast(Instruction::Trunc, Op0, DestTy)) {
-        Op0 = Builder->CreateTrunc(Op0, DestTy, Op0->getName());
-        Op1 = Builder->CreateTrunc(Op1, DestTy, Op1->getName());
-        return BinaryOperator::Create(cast<BinaryOperator>(SrcI)->getOpcode(),
-                                      Op0, Op1);
-      }
-    }
-  }
+
   return 0;
 }
 
index f8f7c447fa8b048cd0af31b3e234e6f4b598c0e6..fa0322a44e80d92b796ddc9652bf80b5d69d983e 100644 (file)
@@ -223,8 +223,8 @@ define i32 @test23(i8* %P, i64 %A){
   %G = sub i32 %D, %F
   ret i32 %G
 ; CHECK: @test23
-; CHECK: %A1 = trunc i64 %A to i32
-; CHECK: ret i32 %A1
+; CHECK-NEXT: = trunc i64 %A to i32
+; CHECK-NEXT: ret i32
 }
 
 define i64 @test24(i8* %P, i64 %A){