Loading llvm/include/llvm/CodeGen/MachineJumpTableInfo.h +5 −1 Original line number Diff line number Diff line Loading @@ -79,7 +79,11 @@ public: /// getEntryAlignment - Return the alignment of each entry in the jump table. unsigned getEntryAlignment(const TargetData &TD) const; /// getJumpTableIndex - Create a new jump table or return an existing one. /// createJumpTableIndex - Create a new jump table. /// unsigned createJumpTableIndex(const std::vector<MachineBasicBlock*> &DestBBs); /// getJumpTableIndex - Return the index for an existing jump table. /// unsigned getJumpTableIndex(const std::vector<MachineBasicBlock*> &DestBBs); Loading llvm/lib/CodeGen/MachineFunction.cpp +12 −3 Original line number Diff line number Diff line Loading @@ -594,16 +594,25 @@ unsigned MachineJumpTableInfo::getEntryAlignment(const TargetData &TD) const { return ~0; } /// getJumpTableIndex - Create a new jump table entry in the jump table info /// or return an existing one. /// createJumpTableIndex - Create a new jump table entry in the jump table info. /// unsigned MachineJumpTableInfo::getJumpTableIndex( unsigned MachineJumpTableInfo::createJumpTableIndex( const std::vector<MachineBasicBlock*> &DestBBs) { assert(!DestBBs.empty() && "Cannot create an empty jump table!"); JumpTables.push_back(MachineJumpTableEntry(DestBBs)); return JumpTables.size()-1; } /// getJumpTableIndex - Return the index for an existing jump table entry in /// the jump table info. unsigned MachineJumpTableInfo::getJumpTableIndex( const std::vector<MachineBasicBlock*> &DestBBs) { for (unsigned i = 0, e = JumpTables.size(); i != e; ++i) if (JumpTables[i].MBBs == DestBBs) return i; assert(false && "getJumpTableIndex failed to find matching table"); return ~0; } /// ReplaceMBBInJumpTables - If Old is the target of any jump tables, update /// the jump tables to branch to New instead. Loading llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -1674,11 +1674,10 @@ bool SelectionDAGBuilder::handleJTSwitchCase(CaseRec& CR, } } // Create a jump table index for this jump table, or return an existing // one. // Create a jump table index for this jump table. unsigned JTEncoding = TLI.getJumpTableEncoding(); unsigned JTI = CurMF->getOrCreateJumpTableInfo(JTEncoding) ->getJumpTableIndex(DestBBs); ->createJumpTableIndex(DestBBs); // Set the jump table information so that we can codegen it as a second // MachineBasicBlock Loading Loading
llvm/include/llvm/CodeGen/MachineJumpTableInfo.h +5 −1 Original line number Diff line number Diff line Loading @@ -79,7 +79,11 @@ public: /// getEntryAlignment - Return the alignment of each entry in the jump table. unsigned getEntryAlignment(const TargetData &TD) const; /// getJumpTableIndex - Create a new jump table or return an existing one. /// createJumpTableIndex - Create a new jump table. /// unsigned createJumpTableIndex(const std::vector<MachineBasicBlock*> &DestBBs); /// getJumpTableIndex - Return the index for an existing jump table. /// unsigned getJumpTableIndex(const std::vector<MachineBasicBlock*> &DestBBs); Loading
llvm/lib/CodeGen/MachineFunction.cpp +12 −3 Original line number Diff line number Diff line Loading @@ -594,16 +594,25 @@ unsigned MachineJumpTableInfo::getEntryAlignment(const TargetData &TD) const { return ~0; } /// getJumpTableIndex - Create a new jump table entry in the jump table info /// or return an existing one. /// createJumpTableIndex - Create a new jump table entry in the jump table info. /// unsigned MachineJumpTableInfo::getJumpTableIndex( unsigned MachineJumpTableInfo::createJumpTableIndex( const std::vector<MachineBasicBlock*> &DestBBs) { assert(!DestBBs.empty() && "Cannot create an empty jump table!"); JumpTables.push_back(MachineJumpTableEntry(DestBBs)); return JumpTables.size()-1; } /// getJumpTableIndex - Return the index for an existing jump table entry in /// the jump table info. unsigned MachineJumpTableInfo::getJumpTableIndex( const std::vector<MachineBasicBlock*> &DestBBs) { for (unsigned i = 0, e = JumpTables.size(); i != e; ++i) if (JumpTables[i].MBBs == DestBBs) return i; assert(false && "getJumpTableIndex failed to find matching table"); return ~0; } /// ReplaceMBBInJumpTables - If Old is the target of any jump tables, update /// the jump tables to branch to New instead. Loading
llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -1674,11 +1674,10 @@ bool SelectionDAGBuilder::handleJTSwitchCase(CaseRec& CR, } } // Create a jump table index for this jump table, or return an existing // one. // Create a jump table index for this jump table. unsigned JTEncoding = TLI.getJumpTableEncoding(); unsigned JTI = CurMF->getOrCreateJumpTableInfo(JTEncoding) ->getJumpTableIndex(DestBBs); ->createJumpTableIndex(DestBBs); // Set the jump table information so that we can codegen it as a second // MachineBasicBlock Loading