diff options
| -rw-r--r-- | llvm/include/llvm/CodeGen/MachineJumpTableInfo.h | 5 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/MachineFunction.cpp | 27 | 
2 files changed, 24 insertions, 8 deletions
diff --git a/llvm/include/llvm/CodeGen/MachineJumpTableInfo.h b/llvm/include/llvm/CodeGen/MachineJumpTableInfo.h index 3ff2f2e8c7a..57c65c80a48 100644 --- a/llvm/include/llvm/CodeGen/MachineJumpTableInfo.h +++ b/llvm/include/llvm/CodeGen/MachineJumpTableInfo.h @@ -69,6 +69,11 @@ public:    /// the jump tables to branch to New instead.    bool ReplaceMBBInJumpTables(MachineBasicBlock *Old, MachineBasicBlock *New); +  /// ReplaceMBBInJumpTable - If Old is a target of the jump tables, update +  /// the jump table to branch to New instead. +  bool ReplaceMBBInJumpTable(unsigned Idx, MachineBasicBlock *Old, +                             MachineBasicBlock *New); +    /// getEntrySize - Returns the size of an individual field in a jump table.     ///    unsigned getEntrySize() const { return EntrySize; } diff --git a/llvm/lib/CodeGen/MachineFunction.cpp b/llvm/lib/CodeGen/MachineFunction.cpp index e125638d3a3..3df88fca437 100644 --- a/llvm/lib/CodeGen/MachineFunction.cpp +++ b/llvm/lib/CodeGen/MachineFunction.cpp @@ -545,14 +545,25 @@ MachineJumpTableInfo::ReplaceMBBInJumpTables(MachineBasicBlock *Old,                                               MachineBasicBlock *New) {    assert(Old != New && "Not making a change?");    bool MadeChange = false; -  for (size_t i = 0, e = JumpTables.size(); i != e; ++i) { -    MachineJumpTableEntry &JTE = JumpTables[i]; -    for (size_t j = 0, e = JTE.MBBs.size(); j != e; ++j) -      if (JTE.MBBs[j] == Old) { -        JTE.MBBs[j] = New; -        MadeChange = true; -      } -  } +  for (size_t i = 0, e = JumpTables.size(); i != e; ++i) +    ReplaceMBBInJumpTable(i, Old, New); +  return MadeChange; +} + +/// ReplaceMBBInJumpTable - If Old is a target of the jump tables, update +/// the jump table to branch to New instead. +bool +MachineJumpTableInfo::ReplaceMBBInJumpTable(unsigned Idx, +                                            MachineBasicBlock *Old, +                                            MachineBasicBlock *New) { +  assert(Old != New && "Not making a change?"); +  bool MadeChange = false; +  MachineJumpTableEntry &JTE = JumpTables[Idx]; +  for (size_t j = 0, e = JTE.MBBs.size(); j != e; ++j) +    if (JTE.MBBs[j] == Old) { +      JTE.MBBs[j] = New; +      MadeChange = true; +    }    return MadeChange;  }  | 

