mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-19 08:35:45 +00:00
CodeGen: Make MachineBasicBlock::back skip to the beginning of the last bundle.
This makes front/back symmetric with begin/end, avoiding some confusion. Added instr_front/instr_back for the old behavior, corresponding to instr_begin/instr_end. Audited all three in-tree users of back(), all of them look like they don't want to look inside bundles. Fixes an assertion (PR19815) when generating debug info on mips, where a delay slot was bundled at the end of a branch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209580 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -33,7 +33,6 @@
|
||||
#include "llvm/CodeGen/LiveVariables.h"
|
||||
#include "llvm/CodeGen/MachineFrameInfo.h"
|
||||
#include "llvm/CodeGen/MachineFunctionPass.h"
|
||||
#include "llvm/CodeGen/MachineInstrBundle.h"
|
||||
#include "llvm/CodeGen/MachineMemOperand.h"
|
||||
#include "llvm/CodeGen/MachineRegisterInfo.h"
|
||||
#include "llvm/IR/BasicBlock.h"
|
||||
@@ -578,8 +577,8 @@ MachineVerifier::visitMachineBasicBlockBefore(const MachineBasicBlock *MBB) {
|
||||
report("MBB exits via unconditional fall-through but its successor "
|
||||
"differs from its CFG successor!", MBB);
|
||||
}
|
||||
if (!MBB->empty() && getBundleStart(&MBB->back())->isBarrier() &&
|
||||
!TII->isPredicated(getBundleStart(&MBB->back()))) {
|
||||
if (!MBB->empty() && (&MBB->back())->isBarrier() &&
|
||||
!TII->isPredicated((&MBB->back()))) {
|
||||
report("MBB exits via unconditional fall-through but ends with a "
|
||||
"barrier instruction!", MBB);
|
||||
}
|
||||
@@ -599,10 +598,10 @@ MachineVerifier::visitMachineBasicBlockBefore(const MachineBasicBlock *MBB) {
|
||||
if (MBB->empty()) {
|
||||
report("MBB exits via unconditional branch but doesn't contain "
|
||||
"any instructions!", MBB);
|
||||
} else if (!getBundleStart(&MBB->back())->isBarrier()) {
|
||||
} else if (!(&MBB->back())->isBarrier()) {
|
||||
report("MBB exits via unconditional branch but doesn't end with a "
|
||||
"barrier instruction!", MBB);
|
||||
} else if (!getBundleStart(&MBB->back())->isTerminator()) {
|
||||
} else if (!(&MBB->back())->isTerminator()) {
|
||||
report("MBB exits via unconditional branch but the branch isn't a "
|
||||
"terminator instruction!", MBB);
|
||||
}
|
||||
@@ -630,10 +629,10 @@ MachineVerifier::visitMachineBasicBlockBefore(const MachineBasicBlock *MBB) {
|
||||
if (MBB->empty()) {
|
||||
report("MBB exits via conditional branch/fall-through but doesn't "
|
||||
"contain any instructions!", MBB);
|
||||
} else if (getBundleStart(&MBB->back())->isBarrier()) {
|
||||
} else if ((&MBB->back())->isBarrier()) {
|
||||
report("MBB exits via conditional branch/fall-through but ends with a "
|
||||
"barrier instruction!", MBB);
|
||||
} else if (!getBundleStart(&MBB->back())->isTerminator()) {
|
||||
} else if (!(&MBB->back())->isTerminator()) {
|
||||
report("MBB exits via conditional branch/fall-through but the branch "
|
||||
"isn't a terminator instruction!", MBB);
|
||||
}
|
||||
@@ -658,10 +657,10 @@ MachineVerifier::visitMachineBasicBlockBefore(const MachineBasicBlock *MBB) {
|
||||
if (MBB->empty()) {
|
||||
report("MBB exits via conditional branch/branch but doesn't "
|
||||
"contain any instructions!", MBB);
|
||||
} else if (!getBundleStart(&MBB->back())->isBarrier()) {
|
||||
} else if (!MBB->back().isBarrier()) {
|
||||
report("MBB exits via conditional branch/branch but doesn't end with a "
|
||||
"barrier instruction!", MBB);
|
||||
} else if (!getBundleStart(&MBB->back())->isTerminator()) {
|
||||
} else if (!MBB->back().isTerminator()) {
|
||||
report("MBB exits via conditional branch/branch but the branch "
|
||||
"isn't a terminator instruction!", MBB);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user