mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-21 08:17:40 +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:
@@ -573,12 +573,12 @@ bool IfConverter::ValidDiamond(BBInfo &TrueBBI, BBInfo &FalseBBI,
|
||||
// blocks, move the end iterators up past any branch instructions.
|
||||
while (TIE != TIB) {
|
||||
--TIE;
|
||||
if (!TIE->getDesc().isBranch())
|
||||
if (!TIE->isBranch())
|
||||
break;
|
||||
}
|
||||
while (FIE != FIB) {
|
||||
--FIE;
|
||||
if (!FIE->getDesc().isBranch())
|
||||
if (!FIE->isBranch())
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -651,12 +651,11 @@ void IfConverter::ScanInstructions(BBInfo &BBI) {
|
||||
if (I->isDebugValue())
|
||||
continue;
|
||||
|
||||
const MCInstrDesc &MCID = I->getDesc();
|
||||
if (MCID.isNotDuplicable())
|
||||
if (I->isNotDuplicable())
|
||||
BBI.CannotBeCopied = true;
|
||||
|
||||
bool isPredicated = TII->isPredicated(I);
|
||||
bool isCondBr = BBI.IsBrAnalyzable && MCID.isConditionalBranch();
|
||||
bool isCondBr = BBI.IsBrAnalyzable && I->isConditionalBranch();
|
||||
|
||||
if (!isCondBr) {
|
||||
if (!isPredicated) {
|
||||
@@ -1395,9 +1394,8 @@ void IfConverter::CopyAndPredicateBlock(BBInfo &ToBBI, BBInfo &FromBBI,
|
||||
|
||||
for (MachineBasicBlock::iterator I = FromBBI.BB->begin(),
|
||||
E = FromBBI.BB->end(); I != E; ++I) {
|
||||
const MCInstrDesc &MCID = I->getDesc();
|
||||
// Do not copy the end of the block branches.
|
||||
if (IgnoreBr && MCID.isBranch())
|
||||
if (IgnoreBr && I->isBranch())
|
||||
break;
|
||||
|
||||
MachineInstr *MI = MF.CloneMachineInstr(I);
|
||||
|
||||
Reference in New Issue
Block a user