LLVM 17.0.0git
llvm::MachineJumpTableInfo Class Reference

#include "llvm/CodeGen/MachineJumpTableInfo.h"

## Public Types

enum  JTEntryKind {
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

unsigned getEntrySize (const DataLayout &TD) const
getEntrySize - Return the size of each entry in the jump table.

unsigned getEntryAlignment (const DataLayout &TD) const
getEntryAlignment - Return the alignment of each entry in the jump table.

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

void RemoveJumpTable (unsigned Idx)
RemoveJumpTable - Mark the specific index as being dead.

bool RemoveMBBFromJumpTables (MachineBasicBlock *MBB)
RemoveMBBFromJumpTables - If MBB is present in any jump tables, remove it.

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.

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.

void print (raw_ostream &OS) const
print - Used by the MachineFunction printer to print information about jump tables.

void dump () const
dump - Call to stderr.

## Detailed Description

Definition at line 42 of file MachineJumpTableInfo.h.

## ◆ JTEntryKind

JTEntryKind - This enum indicates how each entry of the jump table is represented and emitted.

Enumerator

EK_BlockAddress - Each entry is a plain address of block, e.g.: .word LBB123.

EK_GPRel64BlockAddress - Each entry is an address of block, encoded with a relocation as gp-relative, e.g.: .gpdword LBB123.

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_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 46 of file MachineJumpTableInfo.h.

## ◆ MachineJumpTableInfo()

 llvm::MachineJumpTableInfo::MachineJumpTableInfo ( JTEntryKind Kind )
inlineexplicit

Definition at line 82 of file MachineJumpTableInfo.h.

## ◆ createJumpTableIndex()

 unsigned MachineJumpTableInfo::createJumpTableIndex ( const std::vector< MachineBasicBlock * > & DestBBs )

createJumpTableIndex - Create a new jump table.

Create a new jump table entry in the jump table info.

Definition at line 1273 of file MachineFunction.cpp.

References assert().

## ◆ dump()

 LLVM_DUMP_METHOD void MachineJumpTableInfo::dump ( ) const

dump - Call to stderr.

Definition at line 1335 of file MachineFunction.cpp.

References llvm::dbgs(), and print().

## ◆ getEntryAlignment()

 unsigned MachineJumpTableInfo::getEntryAlignment ( const DataLayout & TD ) const

getEntryAlignment - Return the alignment of each entry in the jump table.

Return the alignment of each entry in the jump table.

Definition at line 1253 of file MachineFunction.cpp.

Referenced by llvm::AsmPrinter::emitJumpTableInfo().

## ◆ getEntryKind()

 JTEntryKind llvm::MachineJumpTableInfo::getEntryKind ( ) const
inline

Definition at line 84 of file MachineJumpTableInfo.h.

## ◆ getEntrySize()

 unsigned MachineJumpTableInfo::getEntrySize ( const DataLayout & TD ) const

getEntrySize - Return the size of each entry in the jump table.

Return the size of each entry in the jump table.

Definition at line 1234 of file MachineFunction.cpp.

## ◆ getJumpTables()

 const std::vector< MachineJumpTableEntry > & llvm::MachineJumpTableInfo::getJumpTables ( ) const
inline

## ◆ isEmpty()

 bool llvm::MachineJumpTableInfo::isEmpty ( ) const
inline

isEmpty - Return true if there are no jump tables.

Definition at line 97 of file MachineJumpTableInfo.h.

## ◆ print()

 void MachineJumpTableInfo::print ( raw_ostream & OS ) const

print - Used by the MachineFunction printer to print information about jump tables.

Implemented in MachineFunction.cpp

Definition at line 1318 of file MachineFunction.cpp.

References MBB, llvm::printJumpTableEntryReference(), and llvm::printMBBReference().

Referenced by dump(), and llvm::MachineFunction::print().

## ◆ RemoveJumpTable()

 void llvm::MachineJumpTableInfo::RemoveJumpTable ( unsigned Idx )
inline

RemoveJumpTable - Mark the specific index as being dead.

This will prevent it from being emitted.

Definition at line 105 of file MachineJumpTableInfo.h.

References Idx.

Referenced by llvm::BranchFolder::OptimizeFunction().

## ◆ RemoveMBBFromJumpTables()

 bool MachineJumpTableInfo::RemoveMBBFromJumpTables ( MachineBasicBlock * MBB )

RemoveMBBFromJumpTables - If MBB is present in any jump tables, remove it.

If MBB is present in any jump tables, remove it.

Definition at line 1292 of file MachineFunction.cpp.

References MBB.

Referenced by llvm::MachineFunction::deleteMachineBasicBlock().

## ◆ ReplaceMBBInJumpTable()

 bool MachineJumpTableInfo::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.

If Old is a target of the jump tables, update the jump table to branch to New instead.

Definition at line 1304 of file MachineFunction.cpp.

References assert(), Idx, MBB, and llvm::MachineJumpTableEntry::MBBs.

Referenced by ReplaceMBBInJumpTables().

## ◆ ReplaceMBBInJumpTables()

 bool MachineJumpTableInfo::ReplaceMBBInJumpTables ( MachineBasicBlock * Old, MachineBasicBlock * New )

ReplaceMBBInJumpTables - If Old is the target of any jump tables, update the jump tables to branch to New instead.

If Old is the target of any jump tables, update the jump tables to branch to New instead.

Definition at line 1282 of file MachineFunction.cpp.

References assert(), and ReplaceMBBInJumpTable().

The documentation for this class was generated from the following files: