20 #ifndef LLVM_CODEGEN_MACHINEJUMPTABLEINFO_H 21 #define LLVM_CODEGEN_MACHINEJUMPTABLEINFO_H 29 class MachineBasicBlock;
37 std::vector<MachineBasicBlock*>
MBBs;
81 std::vector<MachineJumpTableEntry> JumpTables;
88 unsigned getEntrySize(
const DataLayout &TD)
const;
90 unsigned getEntryAlignment(
const DataLayout &TD)
const;
94 unsigned createJumpTableIndex(
const std::vector<MachineBasicBlock*> &DestBBs);
98 bool isEmpty()
const {
return JumpTables.empty(); }
107 JumpTables[Idx].MBBs.clear();
A parsed version of the target data layout string in and methods for querying it. ...
const std::vector< MachineJumpTableEntry > & getJumpTables() const
This class represents lattice values for constants.
EK_Inline - Jump table entries are emitted inline at their point of use.
void RemoveJumpTable(unsigned Idx)
RemoveJumpTable - Mark the specific index as being dead.
JTEntryKind
JTEntryKind - This enum indicates how each entry of the jump table is represented and emitted...
EK_LabelDifference32 - Each entry is the address of the block minus the address of the jump table...
EK_BlockAddress - Each entry is a plain address of block, e.g.
EK_GPRel64BlockAddress - Each entry is an address of block, encoded with a relocation as gp-relative...
void dump(const SparseBitVector< ElementSize > &LHS, raw_ostream &out)
static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val)
Printable printJumpTableEntryReference(unsigned Idx)
Prints a jump table entry reference.
MachineJumpTableEntry(const std::vector< MachineBasicBlock *> &M)
std::vector< MachineBasicBlock * > MBBs
MBBs - The vector of basic blocks from which to create the jump table.
MachineJumpTableEntry - One jump table in the jump table info.
MachineJumpTableInfo(JTEntryKind Kind)
bool isEmpty() const
isEmpty - Return true if there are no jump tables.
JTEntryKind getEntryKind() const
This class implements an extremely fast bulk output stream that can only output to a stream...
EK_GPRel32BlockAddress - Each entry is an address of block, encoded with a relocation as gp-relative...
Simple wrapper around std::function<void(raw_ostream&)>.