From: Andrew Trick Date: Wed, 8 Feb 2012 02:17:25 +0000 (+0000) Subject: Added MachineInstr::isBundled() to check if an instruction is part of a bundle. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=99a7a13f4aa5bf8f272c95f7b09ba997d2b30a35;p=oota-llvm.git Added MachineInstr::isBundled() to check if an instruction is part of a bundle. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150044 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/CodeGen/MachineInstr.h b/include/llvm/CodeGen/MachineInstr.h index f1c1cd129f8..9a8ac7c029e 100644 --- a/include/llvm/CodeGen/MachineInstr.h +++ b/include/llvm/CodeGen/MachineInstr.h @@ -230,6 +230,10 @@ public: clearFlag(InsideBundle); } + /// isBundled - Return true if this instruction part of a bundle. This is true + /// if either itself or its following instruction is marked "InsideBundle". + bool isBundled() const; + /// getDebugLoc - Returns the debug location id of this MachineInstr. /// DebugLoc getDebugLoc() const { return debugLoc; } diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp index cea75ef4b4d..4da4997ab67 100644 --- a/lib/CodeGen/LiveIntervalAnalysis.cpp +++ b/lib/CodeGen/LiveIntervalAnalysis.cpp @@ -904,7 +904,7 @@ void LiveIntervals::moveInstr(MachineBasicBlock::iterator insertPt, assert((insertPt == mbb->end() || insertPt->getParent() == mbb) && "Cannot handle moves across basic block boundaries."); assert(&*insertPt != mi && "No-op move requested?"); - assert(!mi->isInsideBundle() && "Can't handle bundled instructions yet."); + assert(!mi->isBundled() && "Can't handle bundled instructions yet."); // Grab the original instruction index. SlotIndex origIdx = indexes_->getInstructionIndex(mi); diff --git a/lib/CodeGen/MachineInstr.cpp b/lib/CodeGen/MachineInstr.cpp index de2082a779b..fc5822da077 100644 --- a/lib/CodeGen/MachineInstr.cpp +++ b/lib/CodeGen/MachineInstr.cpp @@ -890,6 +890,16 @@ unsigned MachineInstr::getNumExplicitOperands() const { return NumOperands; } +/// isBundled - Return true if this instruction part of a bundle. This is true +/// if either itself or its following instruction is marked "InsideBundle". +bool MachineInstr::isBundled() const { + if (isInsideBundle()) + return true; + MachineBasicBlock::const_instr_iterator nextMI = this; + ++nextMI; + return nextMI != Parent->instr_end() && nextMI->isInsideBundle(); +} + bool MachineInstr::isStackAligningInlineAsm() const { if (isInlineAsm()) { unsigned ExtraInfo = getOperand(InlineAsm::MIOp_ExtraInfo).getImm();