LLVM 20.0.0git
Public Attributes | List of all members
llvm::jitlink::PassConfiguration Struct Reference

An LinkGraph pass configuration, consisting of a list of pre-prune, post-prune, and post-fixup passes. More...

#include "llvm/ExecutionEngine/JITLink/JITLink.h"

Public Attributes

LinkGraphPassList PrePrunePasses
 Pre-prune passes.
 
LinkGraphPassList PostPrunePasses
 Post-prune passes.
 
LinkGraphPassList PostAllocationPasses
 Post-allocation passes.
 
LinkGraphPassList PreFixupPasses
 Pre-fixup passes.
 
LinkGraphPassList PostFixupPasses
 Post-fixup passes.
 

Detailed Description

An LinkGraph pass configuration, consisting of a list of pre-prune, post-prune, and post-fixup passes.

Definition at line 1806 of file JITLink.h.

Member Data Documentation

◆ PostAllocationPasses

LinkGraphPassList llvm::jitlink::PassConfiguration::PostAllocationPasses

Post-allocation passes.

These passes are called on the graph after memory has been allocated and defined nodes have been assigned their final addresses, but before the context has been notified of these addresses. At this point externals have not been resolved, and symbol content has not yet been copied into working memory.

Notable use cases: Setting up data structures associated with addresses of defined symbols (e.g. a mapping of __dso_handle to JITDylib* for the JIT runtime) – using a PostAllocationPass for this ensures that the data structures are in-place before any query for resolved symbols can complete.

Definition at line 1837 of file JITLink.h.

Referenced by llvm::jitlink::ELFJITLinker_i386::ELFJITLinker_i386(), llvm::jitlink::ELFJITLinker_ppc64< Endianness >::ELFJITLinker_ppc64(), llvm::jitlink::ELFJITLinker_riscv::ELFJITLinker_riscv(), llvm::jitlink::ELFJITLinker_x86_64::ELFJITLinker_x86_64(), llvm::jitlink::JITLinkerBase::linkPhase2(), and llvm::orc::DebugObjectManagerPlugin::modifyPassConfig().

◆ PostFixupPasses

LinkGraphPassList llvm::jitlink::PassConfiguration::PostFixupPasses

Post-fixup passes.

These passes are called on the graph after block contents has been copied to working memory, and fixups applied. Blocks have been updated to point to their fixed up content.

Notable use cases: Testing and validation.

Definition at line 1857 of file JITLink.h.

Referenced by llvm::jitlink::JITLinkerBase::linkPhase3(), and llvm::orc::EHFrameRegistrationPlugin::modifyPassConfig().

◆ PostPrunePasses

LinkGraphPassList llvm::jitlink::PassConfiguration::PostPrunePasses

Post-prune passes.

These passes are called on the graph after dead stripping, but before memory is allocated or nodes assigned their final addresses.

Notable use cases: Building GOT, stub, and TLV symbols.

Definition at line 1822 of file JITLink.h.

Referenced by llvm::jitlink::JITLinkerBase::linkPhase1().

◆ PreFixupPasses

LinkGraphPassList llvm::jitlink::PassConfiguration::PreFixupPasses

Pre-fixup passes.

These passes are called on the graph after memory has been allocated, content copied into working memory, and all nodes (including externals) have been assigned their final addresses, but before any fixups have been applied.

Notable use cases: Late link-time optimizations like GOT and stub elimination.

Definition at line 1848 of file JITLink.h.

Referenced by llvm::jitlink::JITLinkerBase::linkPhase3().

◆ PrePrunePasses

LinkGraphPassList llvm::jitlink::PassConfiguration::PrePrunePasses

Pre-prune passes.

These passes are called on the graph after it is built, and before any symbols have been pruned. Graph nodes still have their original vmaddrs.

Notable use cases: Marking symbols live or should-discard.

Definition at line 1814 of file JITLink.h.

Referenced by llvm::jitlink::JITLinkerBase::linkPhase1(), and llvm::orc::DebugInfoPreservationPlugin::modifyPassConfig().


The documentation for this struct was generated from the following file: