[llvm-commits] [llvm] r77285 - /llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp

Dan Gohman gohman at apple.com
Mon Jul 27 17:37:06 PDT 2009


Author: djg
Date: Mon Jul 27 19:37:06 2009
New Revision: 77285

URL: http://llvm.org/viewvc/llvm-project?rev=77285&view=rev
Log:
Grab the LLVMContext and parent Module of SI ahead of the
point where SI can get deleted. This fixes a use of free'd memory.
This fixes Externals/Povray.

Modified:
    llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp?rev=77285&r1=77284&r2=77285&view=diff

==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp Mon Jul 27 19:37:06 2009
@@ -352,6 +352,8 @@
 
   TargetData &TD = getAnalysis<TargetData>();
   AliasAnalysis &AA = getAnalysis<AliasAnalysis>();
+  LLVMContext &Context = SI->getContext();
+  Module *M = SI->getParent()->getParent()->getParent();
 
   // Okay, so we now have a single store that can be splatable.  Scan to find
   // all subsequent stores of the same value to offset from the same pointer.
@@ -431,8 +433,7 @@
   
     if (MemSetF == 0) {
       const Type *Tys[] = {Type::Int64Ty};
-      MemSetF = Intrinsic::getDeclaration(SI->getParent()->getParent()
-                                          ->getParent(), Intrinsic::memset,
+      MemSetF = Intrinsic::getDeclaration(M, Intrinsic::memset,
                                           Tys, 1);
    }
     
@@ -440,7 +441,7 @@
     StartPtr = Range.StartPtr;
   
     // Cast the start ptr to be i8* as memset requires.
-    const Type *i8Ptr = SI->getContext().getPointerTypeUnqual(Type::Int8Ty);
+    const Type *i8Ptr = Context.getPointerTypeUnqual(Type::Int8Ty);
     if (StartPtr->getType() != i8Ptr)
       StartPtr = new BitCastInst(StartPtr, i8Ptr, StartPtr->getName(),
                                  InsertPt);





More information about the llvm-commits mailing list