From 90b5eb23197b726608351a5b524d674ae5be7e59 Mon Sep 17 00:00:00 2001 From: Philip Reames Date: Tue, 26 May 2015 21:16:42 +0000 Subject: [PATCH] [PlaceSafepoints] Entry safepoint location doesn't need to be a terminator Long ago, the poll insertion code assumed that the insertion site was a terminator. As a result, the entry selection code would split a basic block to ensure it could pass a terminator. The insertion code was updated quite a while ago - possibly before it ever landed upstream - but the now redundant work was never removed. While I'm at it, remove a comment which doesn't apply to the upstreamed code. NFC intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238254 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/PlaceSafepoints.cpp | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/lib/Transforms/Scalar/PlaceSafepoints.cpp b/lib/Transforms/Scalar/PlaceSafepoints.cpp index 3e3ea39bdb1..3e7deeba9f2 100644 --- a/lib/Transforms/Scalar/PlaceSafepoints.cpp +++ b/lib/Transforms/Scalar/PlaceSafepoints.cpp @@ -417,12 +417,6 @@ static Instruction *findLocationForEntrySafepoint(Function &F, // that can grow the stack. This, combined with backedge polls, // give us all the progress guarantees we need. - // Due to the way the frontend generates IR, we may have a couple of initial - // basic blocks before the first bytecode. These will be single-entry - // single-exit blocks which conceptually are just part of the first 'real - // basic block'. Since we don't have deopt state until the first bytecode, - // walk forward until we've found the first unconditional branch or merge. - // hasNextInstruction and nextInstruction are used to iterate // through a "straight line" execution sequence. @@ -465,17 +459,7 @@ static Instruction *findLocationForEntrySafepoint(Function &F, assert((hasNextInstruction(cursor) || cursor->isTerminator()) && "either we stopped because of a call, or because of terminator"); - if (cursor->isTerminator()) { - return cursor; - } - - BasicBlock *BB = cursor->getParent(); - SplitBlock(BB, cursor, &DT); - - // SplitBlock updates the DT - DEBUG(DT.verifyDomTree()); - - return BB->getTerminator(); + return cursor; } /// Identify the list of call sites which need to be have parseable state -- 2.34.1