mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +00:00
Support headerless bundles in MachineInstr::hasProperty().
This function can still work without a BUNDLE header instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172029 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
86441169da
commit
b11f050434
@ -314,7 +314,7 @@ public:
|
||||
/// instruction bundles.
|
||||
bool hasProperty(unsigned MCFlag, QueryType Type = AnyInBundle) const {
|
||||
// Inline the fast path.
|
||||
if (Type == IgnoreBundle || !isBundle())
|
||||
if (Type == IgnoreBundle || !isBundled())
|
||||
return getDesc().getFlags() & (1 << MCFlag);
|
||||
|
||||
// If we have a bundle, take the slow path.
|
||||
|
@ -752,20 +752,18 @@ void MachineInstr::addMemOperand(MachineFunction &MF,
|
||||
}
|
||||
|
||||
bool MachineInstr::hasPropertyInBundle(unsigned Mask, QueryType Type) const {
|
||||
const MachineBasicBlock *MBB = getParent();
|
||||
MachineBasicBlock::const_instr_iterator MII = *this; ++MII;
|
||||
while (MII != MBB->end() && MII->isInsideBundle()) {
|
||||
for (MachineBasicBlock::const_instr_iterator MII = this;; ++MII) {
|
||||
if (MII->getDesc().getFlags() & Mask) {
|
||||
if (Type == AnyInBundle)
|
||||
return true;
|
||||
} else {
|
||||
if (Type == AllInBundle)
|
||||
if (Type == AllInBundle && !MII->isBundle())
|
||||
return false;
|
||||
}
|
||||
++MII;
|
||||
// This was the last instruction in the bundle.
|
||||
if (!MII->isBundledWithSucc())
|
||||
return Type == AllInBundle;
|
||||
}
|
||||
|
||||
return Type == AllInBundle;
|
||||
}
|
||||
|
||||
bool MachineInstr::isIdenticalTo(const MachineInstr *Other,
|
||||
|
Loading…
Reference in New Issue
Block a user