diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-01-10 01:29:42 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-01-10 01:29:42 +0000 |
| commit | 55a7be237e605f6a5e6be587e9cf0c4b20e47047 (patch) | |
| tree | 6a5777b529a28bbde669a875d511caa89cdc56c8 | |
| parent | ad5f00ea2dbb281565b13a5a303a7d1103e12fd5 (diff) | |
| download | bcm5719-llvm-55a7be237e605f6a5e6be587e9cf0c4b20e47047.tar.gz bcm5719-llvm-55a7be237e605f6a5e6be587e9cf0c4b20e47047.zip | |
Support headerless bundles in MachineInstr::hasProperty().
This function can still work without a BUNDLE header instruction.
llvm-svn: 172029
| -rw-r--r-- | llvm/include/llvm/CodeGen/MachineInstr.h | 2 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/MachineInstr.cpp | 12 |
2 files changed, 6 insertions, 8 deletions
diff --git a/llvm/include/llvm/CodeGen/MachineInstr.h b/llvm/include/llvm/CodeGen/MachineInstr.h index 3c7611f6a82..3d2c61761c6 100644 --- a/llvm/include/llvm/CodeGen/MachineInstr.h +++ b/llvm/include/llvm/CodeGen/MachineInstr.h @@ -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. diff --git a/llvm/lib/CodeGen/MachineInstr.cpp b/llvm/lib/CodeGen/MachineInstr.cpp index 92f6a7f7699..cdf46b631f9 100644 --- a/llvm/lib/CodeGen/MachineInstr.cpp +++ b/llvm/lib/CodeGen/MachineInstr.cpp @@ -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, |

