[llvm-commits] [llvm] r50770 - /llvm/trunk/lib/Transforms/Scalar/LoopDeletion.cpp
Chris Lattner
clattner at apple.com
Tue May 6 16:46:32 PDT 2008
On May 6, 2008, at 3:34 PM, Evan Cheng wrote:
> Thanks. Can you check if this fix Povray?
Owen, please disable loop-deletion from Opt and llvm-backend.cpp by
default until after the release branch, thanks.
-Chris
>
>
> Evan
>
> On May 6, 2008, at 1:55 PM, Owen Anderson <resistor at mac.com> wrote:
>
>> Author: resistor
>> Date: Tue May 6 15:55:16 2008
>> New Revision: 50770
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=50770&view=rev
>> Log:
>> We need to update PHIs containing the exiting block, not the exit
>> block. We really should come up with better names for these.
>>
>> Modified:
>> llvm/trunk/lib/Transforms/Scalar/LoopDeletion.cpp
>>
>> Modified: llvm/trunk/lib/Transforms/Scalar/LoopDeletion.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopDeletion.cpp?rev=50770&r1=50769&r2=50770&view=diff
>>
>> ===
>> ===
>> ===
>> =====================================================================
>> --- llvm/trunk/lib/Transforms/Scalar/LoopDeletion.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Scalar/LoopDeletion.cpp Tue May 6
>> 15:55:16 2008
>> @@ -192,8 +192,9 @@
>> return false;
>>
>> // Now that we know the removal is safe, remove the loop by
>> changing the
>> - // branch from the preheader to go to the single exiting block.
>> + // branch from the preheader to go to the single exit block.
>> BasicBlock* exitBlock = exitBlocks[0];
>> + BasicBlock* exitingBlock = exitingBlocks[0];
>>
>> // Because we're deleting a large chunk of code at once, the
>> sequence in which
>> // we remove things is very important to avoid invalidation
>> issues. Don't
>> @@ -218,7 +219,7 @@
>> // the preheader instead of the exiting block.
>> BasicBlock::iterator BI = exitBlock->begin();
>> while (PHINode* P = dyn_cast<PHINode>(BI)) {
>> - P->replaceUsesOfWith(exitBlock, preheader);
>> + P->replaceUsesOfWith(exitingBlock, preheader);
>> BI++;
>> }
>>
>> @@ -253,8 +254,12 @@
>> // NOTE: This iteration is safe because erasing the block does not
>> remove its
>> // entry from the loop's block list. We do that in the next
>> section.
>> for (Loop::block_iterator LI = L->block_begin(), LE = L->block_end
>> ();
>> - LI != LE; ++LI)
>> + LI != LE; ++LI) {
>> + for (Value::use_iterator UI = (*LI)->use_begin(), UE = (*LI)-
>>> use_end();
>> + UI != UE; ++UI)
>> + (*UI)->dump();
>> (*LI)->eraseFromParent();
>> + }
>>
>> // Finally, the blocks from loopinfo. This has to happen late
>> because
>> // otherwise our loop iterators won't work.
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list