From 3a184f903c4dbd134653d49219db9a7be12f211d Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Tue, 28 Feb 2012 23:52:31 +0000 Subject: Instructions inside a bundle have the same number as the bundle itself. SlotIndexes are not assigned to instructions inside bundles, but it is still valid to look up the index of those instructions. The reverse getInstructionFromIndex() will return the first instruction in the bundle. llvm-svn: 151672 --- llvm/include/llvm/CodeGen/SlotIndexes.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'llvm') diff --git a/llvm/include/llvm/CodeGen/SlotIndexes.h b/llvm/include/llvm/CodeGen/SlotIndexes.h index 05daddbcffb..6c09526b59d 100644 --- a/llvm/include/llvm/CodeGen/SlotIndexes.h +++ b/llvm/include/llvm/CodeGen/SlotIndexes.h @@ -493,8 +493,12 @@ namespace llvm { } /// Returns the base index for the given instruction. - SlotIndex getInstructionIndex(const MachineInstr *instr) const { - Mi2IndexMap::const_iterator itr = mi2iMap.find(instr); + SlotIndex getInstructionIndex(const MachineInstr *MI) const { + // Instructions inside a bundle have the same number as the bundle itself. + MachineBasicBlock::const_instr_iterator I = MI; + while (I->isInsideBundle()) + --I; + Mi2IndexMap::const_iterator itr = mi2iMap.find(I); assert(itr != mi2iMap.end() && "Instruction not found in maps."); return itr->second; } -- cgit v1.2.3