LLVM 24.0.0git
llvm::lowertypetests Namespace Reference

Classes

struct  BitSetBuilder
struct  BitSetInfo
struct  ByteArrayBuilder
 This class is used to build a byte array containing overlapping bit sets. More...
class  GlobalLayoutBuilder
 This class implements a layout algorithm for globals referenced by bit sets that tries to keep members of small bit sets together. More...

Enumerations

enum class  DropTestKind { Assume , All }
 Specifies how to drop type tests. More...

Functions

LLVM_ABI bool isJumpTableCanonical (Function *F)
LLVM_ABI bool hasTypeMetadata (const GlobalObject &GO)
 Returns whether a global or its associated global has attached type metadata.
LLVM_ABI SetVector< GlobalValue * > findCfiFunctions (Module &M)
 Finds all functions and aliases in M that may need CFI jump table entries.
LLVM_ABI SetVector< uint64_t > findCfiTypeIds (const Module &M)
 Finds all 64-bit numeric type identifiers in M used for cross-DSO CFI.
LLVM_ABI void createCfiMetadata (Module &DestM, const Module &SrcM, ArrayRef< GlobalValue * > CfiFunctions, ProfileSummaryInfo &PSI, function_ref< const BlockFrequencyInfo &(Function &)> BFIGetter)
 Creates cfi.functions, aliases, and symvers named metadata in DestM for CFI functions in CfiFunctions from source module SrcM.
LLVM_ABI bool cleanUpTypeCheckedLoad (Module &M, Function &CheckedLoadFn, bool IsRelative)
 Lower @llvm.type.checked.load[.relative] calls to the guarded load with the check assumed true, and erase the declaration once it has no users.

Enumeration Type Documentation

◆ DropTestKind

Specifies how to drop type tests.

Enumerator
Assume 
All 

Drop only llvm.assumes using type test value.

Definition at line 236 of file LowerTypeTests.h.

Function Documentation

◆ cleanUpTypeCheckedLoad()

bool llvm::lowertypetests::cleanUpTypeCheckedLoad ( Module & M,
Function & CheckedLoadFn,
bool IsRelative )

Lower @llvm.type.checked.load[.relative] calls to the guarded load with the check assumed true, and erase the declaration once it has no users.

Returns true if anything changed. Shared with FatLTOCleanup.

Definition at line 2423 of file LowerTypeTests.cpp.

References Changed, llvm::IRBuilderBase::CreateInsertValue(), llvm::IRBuilderBase::CreateIntrinsicWithoutFolding(), llvm::IRBuilderBase::CreateLoad(), llvm::IRBuilderBase::CreatePtrAdd(), llvm::dbgs(), DEBUG_TYPE, llvm::dyn_cast(), llvm::Function::eraseFromParent(), llvm::PoisonValue::get(), llvm::ConstantInt::getTrue(), I, LLVM_DEBUG, llvm::Load, llvm::make_early_inc_range(), llvm::Offset, llvm::True, and llvm::Value::users().

Referenced by dropTypeTests(), and llvm::FatLtoCleanup::run().

◆ createCfiMetadata()

void llvm::lowertypetests::createCfiMetadata ( Module & DestM,
const Module & SrcM,
ArrayRef< GlobalValue * > CfiFunctions,
ProfileSummaryInfo & PSI,
function_ref< const BlockFrequencyInfo &(Function &)> BFIGetter )

Creates cfi.functions, aliases, and symvers named metadata in DestM for CFI functions in CfiFunctions from source module SrcM.

Definition at line 545 of file LowerTypeTests.cpp.

References createCfiAliasesMetadata(), createCfiFunctionsMetadata(), and createCfiSymversMetadata().

◆ findCfiFunctions()

SetVector< GlobalValue * > llvm::lowertypetests::findCfiFunctions ( Module & M)

Finds all functions and aliases in M that may need CFI jump table entries.

Definition at line 316 of file LowerTypeTests.cpp.

References A(), llvm::dyn_cast(), F, hasTypeMetadata(), and llvm::SetVector< T, Vector, Set, N >::insert().

◆ findCfiTypeIds()

SetVector< uint64_t > llvm::lowertypetests::findCfiTypeIds ( const Module & M)

Finds all 64-bit numeric type identifiers in M used for cross-DSO CFI.

Definition at line 344 of file LowerTypeTests.cpp.

References assert(), llvm::cast(), extractNumericTypeId(), I, llvm::SetVector< T, Vector, Set, N >::insert(), and llvm::isa().

◆ hasTypeMetadata()

bool llvm::lowertypetests::hasTypeMetadata ( const GlobalObject & GO)

Returns whether a global or its associated global has attached type metadata.

Definition at line 307 of file LowerTypeTests.cpp.

References llvm::dyn_cast(), llvm::dyn_cast_or_null(), llvm::GlobalObject::getMetadata(), and llvm::GlobalObject::hasMetadata().

Referenced by findCfiFunctions().

◆ isJumpTableCanonical()

bool llvm::lowertypetests::isJumpTableCanonical ( Function * F)

Definition at line 297 of file LowerTypeTests.cpp.

References llvm::mdconst::extract_or_null(), and F.

Referenced by createCfiFunctionsMetadata().