LLVM: llvm::MachineJumpTableInfo Class Reference (original) (raw)
#include "[llvm/CodeGen/MachineJumpTableInfo.h](MachineJumpTableInfo%5F8h%5Fsource.html)"
| Public Types | |
|---|---|
| enum | JTEntryKind { EK_BlockAddress, EK_GPRel64BlockAddress, EK_GPRel32BlockAddress, EK_LabelDifference32, EK_LabelDifference64, EK_Inline, EK_Custom32 } |
| JTEntryKind - This enum indicates how each entry of the jump table is represented and emitted. More... |
| Public Member Functions | |
|---|---|
| MachineJumpTableInfo (JTEntryKind Kind) | |
| JTEntryKind | getEntryKind () const |
| LLVM_ABI unsigned | getEntrySize (const DataLayout &TD) const |
| getEntrySize - Return the size of each entry in the jump table. | |
| LLVM_ABI unsigned | getEntryAlignment (const DataLayout &TD) const |
| getEntryAlignment - Return the alignment of each entry in the jump table. | |
| LLVM_ABI unsigned | createJumpTableIndex (const std::vector< MachineBasicBlock * > &DestBBs) |
| createJumpTableIndex - Create a new jump table. | |
| bool | isEmpty () const |
| isEmpty - Return true if there are no jump tables. | |
| const std::vector< MachineJumpTableEntry > & | getJumpTables () const |
| LLVM_ABI bool | updateJumpTableEntryHotness (size_t JTI, MachineFunctionDataHotness Hotness) |
| void | RemoveJumpTable (unsigned Idx) |
| RemoveJumpTable - Mark the specific index as being dead. | |
| LLVM_ABI bool | RemoveMBBFromJumpTables (MachineBasicBlock *MBB) |
| RemoveMBBFromJumpTables - If MBB is present in any jump tables, remove it. | |
| LLVM_ABI bool | ReplaceMBBInJumpTables (MachineBasicBlock *Old, MachineBasicBlock *New) |
| ReplaceMBBInJumpTables - If Old is the target of any jump tables, update the jump tables to branch to New instead. | |
| LLVM_ABI bool | ReplaceMBBInJumpTable (unsigned Idx, MachineBasicBlock *Old, MachineBasicBlock *New) |
| ReplaceMBBInJumpTable - If Old is a target of the jump tables, update the jump table to branch to New instead. | |
| LLVM_ABI void | print (raw_ostream &OS) const |
| print - Used by the MachineFunction printer to print information about jump tables. | |
| LLVM_ABI void | dump () const |
| dump - Call to stderr. |
Definition at line 48 of file MachineJumpTableInfo.h.
◆ JTEntryKind
JTEntryKind - This enum indicates how each entry of the jump table is represented and emitted.
| Enumerator | |
|---|---|
| EK_BlockAddress | EK_BlockAddress - Each entry is a plain address of block, e.g.: .word LBB123. |
| EK_GPRel64BlockAddress | EK_GPRel64BlockAddress - Each entry is an address of block, encoded with a relocation as gp-relative, e.g.: .gpdword LBB123. |
| EK_GPRel32BlockAddress | EK_GPRel32BlockAddress - Each entry is an address of block, encoded with a relocation as gp-relative, e.g.: .gprel32 LBB123. |
| EK_LabelDifference32 | EK_LabelDifference32 - Each entry is the address of the block minus the address of the jump table. This is used for PIC jump tables where gprel32 is not supported. e.g.: .word LBB123 - LJTI1_2 If the .set directive is supported, this is emitted as: .set L4_5_set_123, LBB123 - LJTI1_2 .word L4_5_set_123 |
| EK_LabelDifference64 | EK_LabelDifference64 - Each entry is the address of the block minus the address of the jump table. This is used for PIC jump tables where gprel64 is not supported. e.g.: .quad LBB123 - LJTI1_2 |
| EK_Inline | EK_Inline - Jump table entries are emitted inline at their point of use. It is the responsibility of the target to emit the entries. |
| EK_Custom32 | EK_Custom32 - Each entry is a 32-bit value that is custom lowered by the TargetLowering::LowerCustomJumpTableEntry hook. |
Definition at line 52 of file MachineJumpTableInfo.h.
| llvm::MachineJumpTableInfo::MachineJumpTableInfo ( JTEntryKind Kind) | inlineexplicit |
|---|
◆ createJumpTableIndex()
◆ dump()
◆ getEntryAlignment()
getEntryAlignment - Return the alignment of each entry in the jump table.
Return the alignment of each entry in the jump table.
Definition at line 1356 of file MachineFunction.cpp.
References EK_BlockAddress, EK_Custom32, EK_GPRel32BlockAddress, EK_GPRel64BlockAddress, EK_Inline, EK_LabelDifference32, EK_LabelDifference64, llvm::DataLayout::getABIIntegerTypeAlignment(), getEntryKind(), llvm::DataLayout::getPointerABIAlignment(), llvm_unreachable, and llvm::Align::value().
◆ getEntryKind()
| JTEntryKind llvm::MachineJumpTableInfo::getEntryKind ( ) const | inline |
|---|
◆ getEntrySize()
getEntrySize - Return the size of each entry in the jump table.
Return the size of each entry in the jump table.
Definition at line 1336 of file MachineFunction.cpp.
References EK_BlockAddress, EK_Custom32, EK_GPRel32BlockAddress, EK_GPRel64BlockAddress, EK_Inline, EK_LabelDifference32, EK_LabelDifference64, getEntryKind(), llvm::DataLayout::getPointerSize(), and llvm_unreachable.
Referenced by llvm::AsmPrinter::emitJumpTableEntry(), and llvm::BPFAsmPrinter::emitJumpTableInfo().
◆ getJumpTables()
◆ isEmpty()
| bool llvm::MachineJumpTableInfo::isEmpty ( ) const | inline |
|---|
◆ print()
| void MachineJumpTableInfo::print | ( | raw_ostream & | OS | ) | const |
|---|
◆ RemoveJumpTable()
| void llvm::MachineJumpTableInfo::RemoveJumpTable ( unsigned Idx) | inline |
|---|
◆ RemoveMBBFromJumpTables()
RemoveMBBFromJumpTables - If MBB is present in any jump tables, remove it.
If MBB is present in any jump tables, remove it.
Definition at line 1407 of file MachineFunction.cpp.
References MBB.
◆ ReplaceMBBInJumpTable()
◆ ReplaceMBBInJumpTables()
◆ updateJumpTableEntryHotness()
The documentation for this class was generated from the following files:
- include/llvm/CodeGen/MachineJumpTableInfo.h
- lib/CodeGen/MachineFunction.cpp