mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
Add bundle aware API for querying instruction properties and switch the code
generator to it. For non-bundle instructions, these behave exactly the same as the MC layer API. For properties like mayLoad / mayStore, look into the bundle and if any of the bundled instructions has the property it would return true. For properties like isPredicable, only return true if *all* of the bundled instructions have the property. For properties like canFoldAsLoad, isCompare, conservatively return false for bundles. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146026 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -140,7 +140,7 @@ void MSP430FrameLowering::emitEpilogue(MachineFunction &MF,
|
||||
while (MBBI != MBB.begin()) {
|
||||
MachineBasicBlock::iterator PI = prior(MBBI);
|
||||
unsigned Opc = PI->getOpcode();
|
||||
if (Opc != MSP430::POP16r && !PI->getDesc().isTerminator())
|
||||
if (Opc != MSP430::POP16r && !PI->isTerminator())
|
||||
break;
|
||||
--MBBI;
|
||||
}
|
||||
|
@@ -158,13 +158,12 @@ ReverseBranchCondition(SmallVectorImpl<MachineOperand> &Cond) const {
|
||||
}
|
||||
|
||||
bool MSP430InstrInfo::isUnpredicatedTerminator(const MachineInstr *MI) const {
|
||||
const MCInstrDesc &MCID = MI->getDesc();
|
||||
if (!MCID.isTerminator()) return false;
|
||||
if (!MI->isTerminator()) return false;
|
||||
|
||||
// Conditional branch is a special case.
|
||||
if (MCID.isBranch() && !MCID.isBarrier())
|
||||
if (MI->isBranch() && !MI->isBarrier())
|
||||
return true;
|
||||
if (!MCID.isPredicable())
|
||||
if (!MI->isPredicable())
|
||||
return true;
|
||||
return !isPredicated(MI);
|
||||
}
|
||||
@@ -189,7 +188,7 @@ bool MSP430InstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,
|
||||
|
||||
// A terminator that isn't a branch can't easily be handled
|
||||
// by this analysis.
|
||||
if (!I->getDesc().isBranch())
|
||||
if (!I->isBranch())
|
||||
return true;
|
||||
|
||||
// Cannot handle indirect branches.
|
||||
|
Reference in New Issue
Block a user