From 89fe570958f8b82df9a9c3b4c251ecba9753272a Mon Sep 17 00:00:00 2001 From: Philip Reames Date: Tue, 12 May 2015 23:39:23 +0000 Subject: [PlaceSafepoints] Followup to commit L237172 Responding to review feedback from http://reviews.llvm.org/D9585 1) Remove a variable shadow by converting the outer loop to a range for loop. We never really used the 'i' variable which was being shadowed. 2) Reduce DominatorTree recalculations by passing the DT to SplitEdge. llvm-svn: 237212 --- llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'llvm/lib/Transforms') diff --git a/llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp b/llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp index b5124b7adc4..ff3d67a6548 100644 --- a/llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp +++ b/llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp @@ -606,13 +606,11 @@ bool PlaceSafepoints::runOnFunction(Function &F) { PollLocations.end()); // Insert a poll at each point the analysis pass identified - for (size_t i = 0; i < PollLocations.size(); i++) { + // The poll location must be the terminator of a loop latch block. + for (TerminatorInst *Term : PollLocations) { // We are inserting a poll, the function is modified modified = true; - - // The poll location must be the terminator of a loop latch block. - TerminatorInst *Term = PollLocations[i]; - + std::vector ParsePoints; if (SplitBackedge) { // Split the backedge of the loop and insert the poll within that new @@ -639,11 +637,8 @@ bool PlaceSafepoints::runOnFunction(Function &F) { // date and use a more natural merged loop. SetVector SplitBackedges; for (BasicBlock *Header : Headers) { - BasicBlock *NewBB = SplitEdge(Term->getParent(), Header, nullptr); - SplitBackedges.insert(NewBB); - } - DT.recalculate(F); - for (BasicBlock *NewBB : SplitBackedges) { + BasicBlock *NewBB = SplitEdge(Term->getParent(), Header, &DT); + std::vector RuntimeCalls; InsertSafepointPoll(DT, NewBB->getTerminator(), RuntimeCalls); NumBackedgeSafepoints++; -- cgit v1.2.3