mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-20 16:17:38 +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:
@@ -538,8 +538,8 @@ bool MachineBasicBlock::canFallThrough() {
|
||||
// Barrier is predicated and thus no longer an actual control barrier. This
|
||||
// is over-conservative though, because if an instruction isn't actually
|
||||
// predicated we could still treat it like a barrier.
|
||||
return empty() || !back().getDesc().isBarrier() ||
|
||||
back().getDesc().isPredicable();
|
||||
return empty() || !back().isBarrier() ||
|
||||
back().isPredicable();
|
||||
}
|
||||
|
||||
// If there is no branch, control always falls through.
|
||||
@@ -737,7 +737,7 @@ void MachineBasicBlock::ReplaceUsesOfBlockWith(MachineBasicBlock *Old,
|
||||
MachineBasicBlock::insn_iterator I = insn_end();
|
||||
while (I != insn_begin()) {
|
||||
--I;
|
||||
if (!I->getDesc().isTerminator()) break;
|
||||
if (!I->isTerminator()) break;
|
||||
|
||||
// Scan the operands of this machine instruction, replacing any uses of Old
|
||||
// with New.
|
||||
|
||||
Reference in New Issue
Block a user