From 4d588bceb035589ade874f432d70a41bb7ec6273 Mon Sep 17 00:00:00 2001 From: Duncan Sands Date: Wed, 1 Sep 2010 10:29:33 +0000 Subject: If PrototypeValue is erased in the middle of using the SSAUpdator then the SSAUpdator may access freed memory. Instead, simply pass in the type and name explicitly, which is all that was used anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112699 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/LICM.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/Transforms/Scalar/LICM.cpp') diff --git a/lib/Transforms/Scalar/LICM.cpp b/lib/Transforms/Scalar/LICM.cpp index fa71ab5..85ed358 100644 --- a/lib/Transforms/Scalar/LICM.cpp +++ b/lib/Transforms/Scalar/LICM.cpp @@ -526,7 +526,7 @@ void LICM::sink(Instruction &I) { SSAUpdater SSA(&NewPHIs); if (!I.use_empty()) - SSA.Initialize(&I); + SSA.Initialize(I.getType(), I.getName()); // Insert a copy of the instruction in each exit block of the loop that is // dominated by the instruction. Each exit block is known to only be in the @@ -728,7 +728,7 @@ void LICM::PromoteAliasSet(AliasSet &AS) { SomeValue = LoopUses[0]; else SomeValue = cast(LoopUses[0])->getOperand(0); - SSA.Initialize(SomeValue); + SSA.Initialize(SomeValue->getType(), SomeValue->getName()); // First step: bucket up uses of the pointers by the block they occur in. // This is important because we have to handle multiple defs/uses in a block -- cgit v1.1