mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
[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
This commit is contained in:
parent
d59f970668
commit
90b5eb2319
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user