memcpy returns void!!!!!

llvm-svn: 21574
diff --git a/llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp b/llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp
index cc638be..a776d38 100644
--- a/llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp
+++ b/llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp
@@ -205,8 +205,7 @@
       args.push_back(PointerType::get(Type::SByteTy));
       args.push_back(Type::IntTy);
       args.push_back(Type::IntTy);
-      memcpy_type = FunctionType::get(
-        PointerType::get(Type::SByteTy), args, false);
+      memcpy_type = FunctionType::get(Type::VoidTy, args, false);
     }
     return memcpy_type;
   }
@@ -568,10 +567,7 @@
     switch (len)
     {
       case 0:
-        // Just replace with the destination parameter since a zero length
-        // memcpy is a no-op.
-        ci->replaceAllUsesWith(
-            new CastInst(dest,PointerType::get(Type::VoidTy),"",ci));
+        // The memcpy is a no-op so just dump its call.
         ci->eraseFromParent();
         return true;
       case 1:
@@ -595,8 +591,6 @@
     }
     LoadInst* LI = new LoadInst(SrcCast,"",ci);
     StoreInst* SI = new StoreInst(LI, DestCast, ci);
-    ci->replaceAllUsesWith(
-      new CastInst(dest,PointerType::get(Type::VoidTy),"",ci));
     ci->eraseFromParent();
     return true;
   }