mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-15 05:24:01 +00:00
Fix an issue with the MergeBasicBlockIntoOnlyPred() helper function where it did
not properly handle the case where the predecessor block was the entry block to the function. The only in-tree client of this is JumpThreading, which worked around the issue in its own code. This patch moves the solution into the helper so that JumpThreading (and other clients) do not have to replicate the same fix everywhere. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212875 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -509,6 +509,11 @@ void llvm::MergeBasicBlockIntoOnlyPred(BasicBlock *DestBB, Pass *P) {
|
||||
PredBB->getTerminator()->eraseFromParent();
|
||||
DestBB->getInstList().splice(DestBB->begin(), PredBB->getInstList());
|
||||
|
||||
// If the PredBB is the entry block of the function, move DestBB up to
|
||||
// become the entry block after we erase PredBB.
|
||||
if (PredBB == &DestBB->getParent()->getEntryBlock())
|
||||
DestBB->moveAfter(PredBB);
|
||||
|
||||
if (P) {
|
||||
if (DominatorTreeWrapperPass *DTWP =
|
||||
P->getAnalysisIfAvailable<DominatorTreeWrapperPass>()) {
|
||||
|
Reference in New Issue
Block a user