mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
Whitespace changes, comment clarification. No functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91274 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a937f220e1
commit
85de1e5bad
@ -286,11 +286,10 @@ public:
|
||||
/// just return false, leaving TBB/FBB null.
|
||||
/// 2. If this block ends with only an unconditional branch, it sets TBB to be
|
||||
/// the destination block.
|
||||
/// 3. If this block ends with an conditional branch and it falls through to
|
||||
/// a successor block, it sets TBB to be the branch destination block and
|
||||
/// a list of operands that evaluate the condition. These
|
||||
/// operands can be passed to other TargetInstrInfo methods to create new
|
||||
/// branches.
|
||||
/// 3. If this block ends with a conditional branch and it falls through to a
|
||||
/// successor block, it sets TBB to be the branch destination block and a
|
||||
/// list of operands that evaluate the condition. These operands can be
|
||||
/// passed to other TargetInstrInfo methods to create new branches.
|
||||
/// 4. If this block ends with a conditional branch followed by an
|
||||
/// unconditional branch, it returns the 'true' destination in TBB, the
|
||||
/// 'false' destination in FBB, and a list of operands that evaluate the
|
||||
|
@ -483,16 +483,16 @@ bool MachineBasicBlock::CorrectExtraCFGEdges(MachineBasicBlock *DestA,
|
||||
MachineFunction::iterator FallThru =
|
||||
llvm::next(MachineFunction::iterator(this));
|
||||
|
||||
// If this block ends with a conditional branch that falls through to its
|
||||
// successor, set DestB as the successor.
|
||||
if (isCond) {
|
||||
// If this block ends with a conditional branch that falls through to its
|
||||
// successor, set DestB as the successor.
|
||||
if (DestB == 0 && FallThru != getParent()->end()) {
|
||||
DestB = FallThru;
|
||||
AddedFallThrough = true;
|
||||
}
|
||||
} else {
|
||||
// If this is an unconditional branch with no explicit dest, it must just be
|
||||
// a fallthrough into DestB.
|
||||
// a fallthrough into DestA.
|
||||
if (DestA == 0 && FallThru != getParent()->end()) {
|
||||
DestA = FallThru;
|
||||
AddedFallThrough = true;
|
||||
|
@ -1624,14 +1624,17 @@ bool X86InstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I = MBB.end();
|
||||
while (I != MBB.begin()) {
|
||||
--I;
|
||||
// Working from the bottom, when we see a non-terminator
|
||||
// instruction, we're done.
|
||||
|
||||
// Working from the bottom, when we see a non-terminator instruction, we're
|
||||
// done.
|
||||
if (!isBrAnalysisUnpredicatedTerminator(I, *this))
|
||||
break;
|
||||
// A terminator that isn't a branch can't easily be handled
|
||||
// by this analysis.
|
||||
|
||||
// A terminator that isn't a branch can't easily be handled by this
|
||||
// analysis.
|
||||
if (!I->getDesc().isBranch())
|
||||
return true;
|
||||
|
||||
// Handle unconditional branches.
|
||||
if (I->getOpcode() == X86::JMP) {
|
||||
if (!AllowModify) {
|
||||
@ -1642,8 +1645,10 @@ bool X86InstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,
|
||||
// If the block has any instructions after a JMP, delete them.
|
||||
while (llvm::next(I) != MBB.end())
|
||||
llvm::next(I)->eraseFromParent();
|
||||
|
||||
Cond.clear();
|
||||
FBB = 0;
|
||||
|
||||
// Delete the JMP if it's equivalent to a fall-through.
|
||||
if (MBB.isLayoutSuccessor(I->getOperand(0).getMBB())) {
|
||||
TBB = 0;
|
||||
@ -1651,14 +1656,17 @@ bool X86InstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,
|
||||
I = MBB.end();
|
||||
continue;
|
||||
}
|
||||
|
||||
// TBB is used to indicate the unconditinal destination.
|
||||
TBB = I->getOperand(0).getMBB();
|
||||
continue;
|
||||
}
|
||||
|
||||
// Handle conditional branches.
|
||||
X86::CondCode BranchCode = GetCondFromBranchOpc(I->getOpcode());
|
||||
if (BranchCode == X86::COND_INVALID)
|
||||
return true; // Can't handle indirect branch.
|
||||
|
||||
// Working from the bottom, handle the first conditional branch.
|
||||
if (Cond.empty()) {
|
||||
FBB = TBB;
|
||||
@ -1666,24 +1674,26 @@ bool X86InstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,
|
||||
Cond.push_back(MachineOperand::CreateImm(BranchCode));
|
||||
continue;
|
||||
}
|
||||
// Handle subsequent conditional branches. Only handle the case
|
||||
// where all conditional branches branch to the same destination
|
||||
// and their condition opcodes fit one of the special
|
||||
// multi-branch idioms.
|
||||
|
||||
// Handle subsequent conditional branches. Only handle the case where all
|
||||
// conditional branches branch to the same destination and their condition
|
||||
// opcodes fit one of the special multi-branch idioms.
|
||||
assert(Cond.size() == 1);
|
||||
assert(TBB);
|
||||
// Only handle the case where all conditional branches branch to
|
||||
// the same destination.
|
||||
|
||||
// Only handle the case where all conditional branches branch to the same
|
||||
// destination.
|
||||
if (TBB != I->getOperand(0).getMBB())
|
||||
return true;
|
||||
X86::CondCode OldBranchCode = (X86::CondCode)Cond[0].getImm();
|
||||
|
||||
// If the conditions are the same, we can leave them alone.
|
||||
X86::CondCode OldBranchCode = (X86::CondCode)Cond[0].getImm();
|
||||
if (OldBranchCode == BranchCode)
|
||||
continue;
|
||||
// If they differ, see if they fit one of the known patterns.
|
||||
// Theoretically we could handle more patterns here, but
|
||||
// we shouldn't expect to see them if instruction selection
|
||||
// has done a reasonable job.
|
||||
|
||||
// If they differ, see if they fit one of the known patterns. Theoretically,
|
||||
// we could handle more patterns here, but we shouldn't expect to see them
|
||||
// if instruction selection has done a reasonable job.
|
||||
if ((OldBranchCode == X86::COND_NP &&
|
||||
BranchCode == X86::COND_E) ||
|
||||
(OldBranchCode == X86::COND_E &&
|
||||
@ -1696,6 +1706,7 @@ bool X86InstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,
|
||||
BranchCode = X86::COND_NE_OR_P;
|
||||
else
|
||||
return true;
|
||||
|
||||
// Update the MachineOperand.
|
||||
Cond[0].setImm(BranchCode);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user