Factor a bunch of functionality related to memcpy and memset transforms out of 
GVN and into its own pass.

llvm-svn: 49419
diff --git a/llvm/tools/llvm-ld/Optimize.cpp b/llvm/tools/llvm-ld/Optimize.cpp
index 31b0bf0..aff228d3 100644
--- a/llvm/tools/llvm-ld/Optimize.cpp
+++ b/llvm/tools/llvm-ld/Optimize.cpp
@@ -169,6 +169,7 @@
     addPass(Passes, createGlobalsModRefPass());      // IP alias analysis
 
     addPass(Passes, createLICMPass());               // Hoist loop invariants
+    addPass(Passes, createMemCpyOptPass());          // Remove dead memcpy's
     addPass(Passes, createGVNPass());                  // Remove redundancies
     addPass(Passes, createDeadStoreEliminationPass()); // Nuke dead stores