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: