simplify
authorAndrew Lenharth <andrewl@lenharth.org>
Wed, 20 Sep 2006 15:37:57 +0000 (15:37 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Wed, 20 Sep 2006 15:37:57 +0000 (15:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30535 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/InstructionCombining.cpp

index 8f6d5348e67331e5497bb90779cf018cdd28beca..79c204f93eb0e9287195c32402f8e2666313cb3c 100644 (file)
@@ -1603,18 +1603,14 @@ FoundSExt:
       CI = dyn_cast<CastInst>(RHS);
       Other = LHS;
     }
-    if (CI) {
-      const Type *UIntPtrTy = TD->getIntPtrType();
-      const Type *SIntPtrTy = UIntPtrTy->getSignedVersion();
-      if((CI->getType() == UIntPtrTy || CI->getType() == SIntPtrTy) 
-        && isa<PointerType>(CI->getOperand(0)->getType())) {
-       Instruction* I2 = new CastInst(CI->getOperand(0),
-                                    PointerType::get(Type::SByteTy), "ctg", &I);
-       WorkList.push_back(I2);
-       I2 = new GetElementPtrInst(I2, Other, "ctg", &I);
-       WorkList.push_back(I2);
-       return new CastInst(I2, CI->getType());
-      }
+    if (CI && CI->getType()->isSized() && 
+        (CI->getType()->getPrimitiveSize() == 
+         TD->getIntPtrType()->getPrimitiveSize()) 
+        && isa<PointerType>(CI->getOperand(0)->getType())) {
+      Value* I2 = InsertCastBefore(CI->getOperand(0),
+                                   PointerType::get(Type::SByteTy), I);
+      I2 = InsertNewInstBefore(new GetElementPtrInst(I2, Other, "ctg2"), I);
+      return new CastInst(I2, CI->getType());
     }
   }