Commit 3e7b9913 authored by Tanya Lattner's avatar Tanya Lattner
Browse files

Merge r98845 from mainline.

llvm-svn: 99291
parent 95e705db
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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);
  
+12 −3
Original line number Diff line number Diff line
@@ -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.
+2 −3
Original line number Diff line number Diff line
@@ -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