LLVM 20.0.0git
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
llvm Namespace Reference

This is an optimization pass for GlobalISel generic memory operations. More...

Namespaces

namespace  AA
 Abstract Attribute helper functions.
 
namespace  AArch64
 
namespace  AArch64_AM
 AArch64_AM - AArch64 Addressing Mode Stuff.
 
namespace  AArch64_IMM
 
namespace  AArch64_MC
 
namespace  AArch64AT
 
namespace  AArch64BTIHint
 
namespace  AArch64CC
 
namespace  AArch64DB
 
namespace  AArch64DBnXS
 
namespace  AArch64DC
 
namespace  AArch64ExactFPImm
 
namespace  AArch64GISelUtils
 
namespace  AArch64IC
 
namespace  AArch64II
 
namespace  AArch64ISB
 
namespace  AArch64ISD
 
namespace  AArch64Layout
 
namespace  AArch64PACKey
 
namespace  AArch64PAuth
 
namespace  AArch64PHint
 
namespace  AArch64PRFM
 
namespace  AArch64PSBHint
 
namespace  AArch64PState
 
namespace  AArch64RPRFM
 
namespace  AArch64SE
 
namespace  AArch64SME
 
namespace  AArch64SVCR
 
namespace  AArch64SVEPredPattern
 
namespace  AArch64SVEPRFM
 
namespace  AArch64SVEVecLenSpecifier
 
namespace  AArch64SysReg
 
namespace  AArch64TLBI
 
namespace  AArch64TSB
 
namespace  adl_detail
 
namespace  afdo_detail
 
namespace  AMDGPU
 
namespace  AMDGPUAS
 OpenCL uses address spaces to differentiate between various memory regions on the hardware.
 
namespace  AMDGPUAsmVariants
 
namespace  AMDGPUISD
 
namespace  amdhsa
 
namespace  APIntOps
 
namespace  ARCCC
 
namespace  ArchYAML
 
namespace  ARCISD
 
namespace  ARM
 Define some predicates that are used for node matching.
 
namespace  ARM_AM
 ARM_AM - ARM Addressing Mode Stuff.
 
namespace  ARM_ISB
 
namespace  ARM_MB
 
namespace  ARM_MC
 
namespace  ARM_PROC
 
namespace  ARM_TSB
 
namespace  ARMBankedReg
 
namespace  ARMBuildAttrs
 
namespace  ARMCC
 
namespace  ARMCP
 
namespace  ARMII
 ARMII - This namespace holds all of the target specific flags that instruction info tracks.
 
namespace  ARMISD
 
namespace  ARMRI
 Register allocation hints.
 
namespace  ARMSysReg
 
namespace  ARMVCC
 
namespace  at
 Assignment Tracking (at).
 
namespace  AttributeFuncs
 
namespace  AVR
 Contains the AVR backend.
 
namespace  AVRCC
 
namespace  AVRII
 
namespace  AVRISD
 
namespace  bfi_detail
 
namespace  binaryformat
 
namespace  bitc
 
namespace  bitfields_details
 
namespace  BitmaskEnumDetail
 
namespace  BPF
 
namespace  BPFISD
 
namespace  BTF
 
namespace  callable_detail
 
namespace  CallingConv
 CallingConv Namespace - This namespace contains an enum with a value for the well-known calling conventions.
 
namespace  cfg
 
namespace  cgdata
 
namespace  Check
 
namespace  cl
 This namespace contains all of the command line option processing machinery.
 
namespace  codegen
 
namespace  CodeGenOpt
 
namespace  codegenoptions
 
namespace  codelayout
 
namespace  CodeModel
 
namespace  codeview
 
namespace  CodeViewYAML
 
namespace  COFF
 
namespace  COFFYAML
 
namespace  compression
 
namespace  consthoist
 A private "module" namespace for types and utilities used by ConstantHoisting.
 
namespace  ConverterEBCDIC
 
namespace  coro
 
namespace  coverage
 
namespace  CSKY
 
namespace  CSKYAttrs
 
namespace  CSKYCP
 
namespace  CSKYII
 
namespace  CSKYISD
 
namespace  CSKYOp
 
namespace  ctx_profile
 
namespace  densemap
 
namespace  detail
 These are wrappers over isa* function that allow them to be used in generic algorithms such as llvm:all_of, llvm::none_of, etc.
 
namespace  details
 
namespace  DomTreeBuilder
 
namespace  DOT
 
namespace  driver
 
namespace  dwarf
 Calculates the starting offsets for various sections within the .debug_names section.
 
namespace  dwarf_linker
 
namespace  DWARFFlavour
 Flavour of dwarf regnumbers.
 
namespace  DWARFYAML
 
namespace  dxbc
 
namespace  DXContainerYAML
 
namespace  dxil
 
namespace  ELF
 
namespace  ELFAttrs
 
namespace  ELFYAML
 
namespace  EngineKind
 
namespace  FloatABI
 
namespace  fp
 
namespace  FPOpFusion
 
namespace  fuzzerop
 
namespace  GCOV
 
namespace  GISelAddressing
 
namespace  GOFF
 
namespace  GOFFYAML
 
namespace  GraphProgram
 
namespace  gsym
 
namespace  gvn
 A private "module" namespace for types and utilities used by GVN.
 
namespace  GVNExpression
 
namespace  hashbuilder_detail
 
namespace  hashing
 
namespace  Hexagon
 
namespace  Hexagon_MC
 
namespace  HexagonAttrs
 
namespace  HexagonFUnits
 
namespace  HexagonII
 HexagonII - This namespace holds all of the target specific flags that instruction info tracks.
 
namespace  HexagonISD
 
namespace  HexagonMCInstrInfo
 
namespace  HexStyle
 
namespace  hlsl
 
namespace  HWASanAccessInfo
 
namespace  IDFCalculatorDetail
 
namespace  ifs
 
namespace  ilist_detail
 
namespace  IndexedCGData
 
namespace  IndexedInstrProf
 
namespace  InlineConstants
 
namespace  internal
 
namespace  IntervalMapImpl
 IntervalMapImpl - Namespace used for IntervalMap implementation details.
 
namespace  Intrinsic
 This namespace contains an enum with a value for every intrinsic/builtin function known by LLVM.
 
namespace  IRSimilarity
 
namespace  irsymtab
 
namespace  ISD
 ISD namespace - This namespace contains an enum which represents all of the SelectionDAG node types and value types.
 
namespace  itanium_demangle
 
 
namespace  json
 
namespace  JumpTable
 
namespace  jumpthreading
 A private "module" namespace for types and utilities used by JumpThreading.
 
namespace  Lanai
 
namespace  LanaiII
 
namespace  LanaiISD
 
namespace  LCOMM
 
namespace  legacy
 
namespace  LegacyLegalizeActions
 
namespace  LegalityPredicates
 
namespace  LegalizeActions
 
namespace  LegalizeMutations
 
namespace  lltok
 
namespace  Loc
 
namespace  logicalview
 
namespace  LoongArch
 
namespace  LoongArchABI
 
namespace  LoongArchII
 
namespace  LoongArchISD
 
namespace  LoongArchMatInt
 
namespace  lowertypetests
 
namespace  LPAC
 
namespace  LPCC
 
namespace  lto
 
namespace  M68k
 Define some predicates that are used for node matching.
 
namespace  M68kBeads
 
namespace  M68kII
 This namespace holds all of the target specific flags that instruction info tracks.
 
namespace  M68kISD
 
namespace  MachO
 
namespace  MachOYAML
 
namespace  mc
 
namespace  mca
 
namespace  MCD
 
namespace  mcdwarf
 
namespace  mcdxbc
 
namespace  MCID
 
namespace  MCOI
 
namespace  MCParserUtils
 
namespace  mdconst
 Transitional API for extracting constants from Metadata.
 
namespace  memprof
 
namespace  memtag
 
namespace  minidump
 
namespace  MinidumpYAML
 
namespace  MIPatternMatch
 
namespace  Mips
 
namespace  Mips16HardFloatInfo
 
namespace  MIPS_MC
 
namespace  MipsII
 MipsII - This namespace holds all of the target specific flags that instruction info tracks.
 
namespace  MipsISD
 
namespace  MISched
 
namespace  misexpect
 
namespace  ms_demangle
 
namespace  msf
 
namespace  msgpack
 
namespace  MSP430
 
namespace  MSP430Attrs
 
namespace  MSP430ISD
 
namespace  MSSAHelpers
 
namespace  N86
 Native X86 register numbers.
 
namespace  numbers
 Mathematical constants.
 
namespace  NVPTX
 
namespace  NVPTXAS
 
namespace  NVPTXCC
 
namespace  NVPTXII
 
namespace  NVPTXISD
 
namespace  nvvm
 
namespace  objcarc
 
namespace  objcopy
 
namespace  object
 
namespace  offloading
 
namespace  OffloadYAML
 
namespace  OMF
 
namespace  omp
 
namespace  opt
 
namespace  orc
 
namespace  ore
 Add a small namespace to avoid name clashes with the classes used in the streaming interface.
 
namespace  outliner
 
namespace  parallel
 
namespace  PatternMatch
 
namespace  PBQP
 
namespace  pdb
 
namespace  pgo
 
namespace  PICLevel
 
namespace  PICStyles
 The X86 backend supports a number of different styles of PIC.
 
namespace  PIELevel
 
namespace  pointer_union_detail
 
namespace  PPC
 Define some predicates that are used for node matching.
 
namespace  PPCII
 PPCII - This namespace holds all of the PowerPC target-specific per-instruction flags.
 
namespace  PPCISD
 
namespace  R600
 
namespace  R600InstrFlags
 
namespace  RawInstrProf
 
namespace  rdf
 
namespace  reassociate
 A private "module" namespace for types and utilities used by Reassociate.
 
namespace  RegState
 
namespace  Reloc
 
namespace  remarks
 
namespace  RISCV
 
namespace  RISCVABI
 
namespace  RISCVAttrs
 
namespace  RISCVCC
 
namespace  RISCVFeatures
 
namespace  RISCVFenceField
 
namespace  RISCVFPRndMode
 
namespace  RISCVII
 
namespace  RISCVInsnOpcode
 
namespace  RISCVISAUtils
 
namespace  RISCVISD
 
namespace  RISCVLoadFPImm
 
namespace  RISCVMatInt
 
namespace  RISCVOp
 
namespace  RISCVRI
 
namespace  RISCVRVC
 
namespace  RISCVSysReg
 
namespace  RISCVTuneInfoTable
 
namespace  RISCVVIntrinsicsTable
 
namespace  RISCVVInversePseudosTable
 
namespace  RISCVVPseudosTable
 
namespace  RISCVVType
 
namespace  RISCVVXRndMode
 
namespace  RISCVZC
 
namespace  RTLIB
 
namespace  safestack
 
namespace  sampleprof
 
namespace  sampleprofutil
 
namespace  sandboxir
 
namespace  ScaledNumbers
 
namespace  SCEVPatternMatch
 
namespace  Sched
 
namespace  SDPatternMatch
 
namespace  SharedLiveDebugValues
 
namespace  SI
 
namespace  SIEncodingFamily
 
namespace  SIInstrFlags
 
namespace  SIOutMods
 
namespace  SISched
 
namespace  SISrcMods
 
namespace  slpvectorizer
 A private "module" namespace for types and utilities used by this pass.
 
namespace  Sparc
 
namespace  SparcASITag
 
namespace  SparcPrefetchTag
 
namespace  SPCC
 
namespace  SPII
 SPII - This namespace holds all of the target specific flags that instruction info tracks.
 
namespace  SPIRV
 
namespace  SPISD
 
namespace  support
 
namespace  SwitchCG
 
namespace  symbolize
 
namespace  SymbolRewriter
 
namespace  SyncScope
 
namespace  sys
 
namespace  SystemZ
 
namespace  SYSTEMZAS
 
namespace  SystemZCP
 
namespace  SystemZICMP
 
namespace  SystemZII
 
namespace  SystemZISD
 
namespace  SystemZMC
 
namespace  TableGen
 
namespace  TailPredication
 
namespace  TargetOpcode
 Invariant opcodes: All instruction sets have these as their low opcodes.
 
namespace  TargetStackID
 
namespace  telemetry
 
namespace  tgtok
 
namespace  ThinLTOCodeGeneratorImpl
 ThinLTOCodeGeneratorImpl - Namespace used for ThinLTOCodeGenerator implementation details.
 
namespace  ThreadModel
 
namespace  TLSModel
 
namespace  TPLoop
 
namespace  trailing_objects_internal
 
namespace  unittest
 
namespace  VE
 
namespace  VECC
 
namespace  VEII
 VEII - This namespace holds all of the Aurora VE target-specific per-instruction flags.
 
namespace  VEISD
 
namespace  VERD
 
namespace  VFABI
 
namespace  vfs
 
namespace  VNCoercion
 
namespace  VPlanPatternMatch
 
namespace  vputils
 
namespace  wasm
 
namespace  WasmYAML
 
namespace  WebAssembly
 
namespace  WebAssemblyII
 
namespace  WebAssemblyISD
 
namespace  wholeprogramdevirt
 
namespace  Win64EH
 
namespace  windows_manifest
 
namespace  WinEH
 
namespace  X86
 Define some predicates that are used for node matching.
 
namespace  X86_MC
 
namespace  X86AS
 
namespace  X86Disassembler
 
namespace  X86II
 X86II - This namespace holds all of the target specific flags that instruction info tracks.
 
namespace  X86ISD
 
namespace  XCOFF
 
namespace  XCOFFYAML
 
namespace  XCore
 
namespace  XCoreISD
 
namespace  xray
 
namespace  Xtensa
 
namespace  XtensaCP
 
namespace  XtensaISD
 
namespace  yaml
 
namespace  ZeroCallUsedRegs
 

Classes

class  A57ChainingConstraint
 Add the accumulator chaining constraint to a PBQP graph. More...
 
struct  AAAddressSpace
 An abstract interface for address space information. More...
 
struct  AAAlign
 An abstract interface for all align attributes. More...
 
struct  AAAllocationInfo
 
struct  AAAssumptionInfo
 An abstract attribute for getting assumption information. More...
 
struct  AACacheLoc
 Cache key for BasicAA results. More...
 
class  AACallEdgeIterator
 An Iterator for call edges, creates AACallEdges attributes in a lazy way. More...
 
struct  AACallEdges
 An abstract state for querying live call edges. More...
 
struct  AACallGraphNode
 
struct  AADenormalFPMath
 An abstract Attribute for specializing "dynamic" components of "denormal-fp-math" and "denormal-fp-math-f32" to a known denormal mode. More...
 
struct  AADepGraph
 The data structure for the dependency graph. More...
 
struct  AADepGraphNode
 } More...
 
struct  AADereferenceable
 An abstract interface for all dereferenceable attribute. More...
 
class  AAEvaluator
 
struct  AAExecutionDomain
 
struct  AAGlobalValueInfo
 An abstract interface for llvm::GlobalValue information interference. More...
 
struct  AAHeapToStack
 
struct  AAIndirectCallInfo
 An abstract interface for indirect call information interference. More...
 
struct  AAInstanceInfo
 An abstract interface to track if a value leaves it's defining function instance. More...
 
struct  AAInterFnReachability
 An abstract Attribute for computing reachability between functions. More...
 
struct  AAIntraFnReachability
 An abstract interface to determine reachability of point A to B. More...
 
struct  AAIsDead
 An abstract interface for liveness abstract attribute. More...
 
class  AAManager
 A manager for alias analyses. More...
 
struct  AAMDNodes
 A collection of metadata nodes that might be associated with a memory access used by the alias-analysis infrastructure. More...
 
struct  AAMemoryBehavior
 An abstract interface for memory access kind related attributes (readnone/readonly/writeonly). More...
 
struct  AAMemoryLocation
 An abstract interface for all memory location attributes (readnone/argmemonly/inaccessiblememonly/inaccessibleorargmemonly). More...
 
struct  AAMustProgress
 An abstract interface for all nonnull attributes. More...
 
struct  AANoAlias
 An abstract interface for all noalias attributes. More...
 
struct  AANoCapture
 An abstract interface for all nocapture attributes. More...
 
struct  AANoFPClass
 
struct  AANoFree
 An AbstractAttribute for nofree. More...
 
struct  AANonConvergent
 An abstract Attribute for determining the necessity of the convergent attribute. More...
 
struct  AANonNull
 An abstract interface for all nonnull attributes. More...
 
struct  AANoRecurse
 An abstract attribute for norecurse. More...
 
struct  AANoReturn
 An AbstractAttribute for noreturn. More...
 
struct  AANoSync
 
struct  AANoUndef
 An abstract interface for all noundef attributes. More...
 
struct  AANoUnwind
 
struct  AAPointerInfo
 An abstract interface for struct information. More...
 
struct  AAPotentialConstantValues
 An abstract interface for potential values analysis. More...
 
struct  AAPotentialValues
 
struct  AAPrivatizablePtr
 An abstract interface for privatizability. More...
 
class  AAQueryInfo
 This class stores info we want to provide to or retain within an alias query. More...
 
class  AArch64_COFFTargetObjectFile
 This implementation is used for AArch64 COFF targets. More...
 
class  AArch64_ELFTargetObjectFile
 This implementation is used for AArch64 ELF targets (Linux in particular). More...
 
class  AArch64_MachoTargetObjectFile
 AArch64_MachoTargetObjectFile - This TLOF implementation is used for Darwin. More...
 
class  AArch64AppleInstPrinter
 
class  AArch64AuthMCExpr
 
class  AArch64beTargetMachine
 
class  AArch64CallLowering
 
class  AArch64Disassembler
 
class  AArch64ExternalSymbolizer
 
class  AArch64FrameLowering
 
class  AArch64FunctionInfo
 AArch64FunctionInfo - This class is derived from MachineFunctionInfo and contains private AArch64-specific information for each MachineFunction. More...
 
class  AArch64GenRegisterBankInfo
 
class  AArch64InstPrinter
 
class  AArch64InstrInfo
 
class  AArch64LegalizerInfo
 
class  AArch64leTargetMachine
 
struct  AArch64MCAsmInfoDarwin
 
struct  AArch64MCAsmInfoELF
 
struct  AArch64MCAsmInfoGNUCOFF
 
struct  AArch64MCAsmInfoMicrosoftCOFF
 
class  AArch64MCExpr
 
class  AArch64MCInstLower
 AArch64MCInstLower - This class is used to lower an MachineInstr into an MCInst. More...
 
class  AArch64PostRASchedStrategy
 A MachineSchedStrategy implementation for AArch64 post RA scheduling. More...
 
class  AArch64RegisterBankInfo
 This class provides the information for the target register banks. More...
 
class  AArch64RegisterInfo
 
class  AArch64SelectionDAGInfo
 
class  AArch64Subtarget
 
class  AArch64TargetELFStreamer
 
class  AArch64TargetLowering
 
class  AArch64TargetMachine
 
class  AArch64TargetStreamer
 
class  AArch64TargetWinCOFFStreamer
 
class  AArch64TTIImpl
 
class  AAResultBase
 A base class to help implement the function alias analysis results concept. More...
 
class  AAResults
 
class  AAResultsWrapperPass
 A wrapper pass to provide the legacy pass manager access to a suitably prepared AAResults object. More...
 
struct  AAUndefinedBehavior
 An abstract attribute for undefined behavior. More...
 
struct  AAUnderlyingObjects
 An abstract attribute for getting all assumption underlying objects. More...
 
struct  AAValueConstantRange
 An abstract interface for range value analysis. More...
 
struct  AAValueSimplify
 An abstract interface for value simplify abstract attribute. More...
 
struct  AAWillReturn
 An abstract attribute for willreturn. More...
 
struct  AbstractAttribute
 Base struct for all "concrete attribute" deductions. More...
 
class  AbstractCallSite
 AbstractCallSite. More...
 
class  AbstractDependenceGraphBuilder
 This abstract builder class defines a set of high-level steps for creating DDG-like graphs. More...
 
class  AbstractLatticeFunction
 AbstractLatticeFunction - This class is implemented by the dataflow instance to specify what the lattice values are and how they handle merges etc. More...
 
class  AbstractSlotTrackerStorage
 Abstract interface of slot tracker storage. More...
 
struct  AbstractState
 An interface to query the internal state of an abstract attribute. More...
 
class  AccelTable
 This class holds an abstract representation of an Accelerator Table, consisting of a sequence of buckets, each bucket containint a sequence of HashData entries. More...
 
class  AccelTableBase
 A base class holding non-template-dependant functionality of the AccelTable class. More...
 
class  AccelTableData
 Interface which the different types of accelerator table data have to conform. More...
 
struct  AccessAsInstructionInfo
 Helper for AA::PointerInfo::Access DenseMap/Set usage ignoring everythign but the instruction. More...
 
struct  ADCEPass
 A DCE pass that assumes instructions are dead until proven otherwise. More...
 
struct  add_const_past_pointer
 If T is a pointer to X, return a pointer to const X. More...
 
struct  add_const_past_pointer< T, std::enable_if_t< std::is_pointer_v< T > > >
 
struct  add_lvalue_reference_if_not_pointer
 If T is a pointer, just return it. If it is not, return T&. More...
 
struct  add_lvalue_reference_if_not_pointer< T, std::enable_if_t< std::is_pointer_v< T > > >
 
class  AddDiscriminatorsPass
 
class  AddOperator
 
class  AddressPool
 
class  AddressProbesMap
 
class  AddressRange
 A class that represents an address range. More...
 
class  AddressRanges
 The AddressRanges class helps normalize address range collections. More...
 
class  AddressRangesBase
 The AddressRangesBase class presents the base functionality for the normalized address ranges collection. More...
 
class  AddressRangesMap
 AddressRangesMap class maps values to the address ranges. More...
 
class  AddressRangeValuePair
 
struct  AddressSanitizerOptions
 
class  AddressSanitizerPass
 Public interface to the address sanitizer module pass for instrumenting code to check for various memory errors. More...
 
class  AddrLabelMap
 
class  AddrSpaceCastInst
 This class represents a conversion between pointers from one address space to another. More...
 
class  AddrSpaceCastOperator
 
class  AddrSpaceCastSDNode
 
class  AggressiveAntiDepBreaker
 
class  AggressiveAntiDepState
 Contains all the state necessary for anti-dep breaking. More...
 
class  AggressiveInstCombinePass
 
class  AIXCCState
 
class  AIXException
 
struct  AliasMatchingData
 Tablegenerated data structures needed to match alias patterns. More...
 
struct  AliasPattern
 Data for each alias pattern. More...
 
struct  AliasPatternCond
 
class  AliasResult
 The possible results of an alias query. More...
 
class  AliasScopeNode
 This is a simple wrapper around an MDNode which provides a higher-level interface by hiding the details of how alias analysis information is encoded in its operands. More...
 
class  AliasSet
 
class  AliasSetsPrinterPass
 
class  AliasSetTracker
 
class  AliasSummary
 Alias summary information. More...
 
struct  Align
 This struct is a compact representation of a valid (non-zero power of two) alignment. More...
 
struct  AlignedCharArrayUnion
 A suitably aligned and sized character array member which can hold elements of any type. More...
 
struct  AlignmentFromAssumptionsPass
 
class  AllAnalysesOn
 This templated class represents "all analyses that operate over \<a particular IR unit\>" (e.g. More...
 
class  AllocaHolder
 
class  AllocaInst
 an instruction to allocate memory on the stack More...
 
struct  AllocaPackedValues
 
class  AllocationOrder
 
class  AllocatorBase
 CRTP base class providing obvious overloads for the core Allocate() methods of LLVM-style allocators. More...
 
class  AllocatorList
 A linked-list with a custom, local allocator. More...
 
struct  AllocInfo
 Summary of memprof metadata on allocations. More...
 
class  AlwaysInlinerPass
 Inlines functions marked as "always_inline". More...
 
class  AMDGPUAA
 Analysis pass providing a never-invalidated alias analysis result. More...
 
class  AMDGPUAAResult
 A simple AA result that uses TBAA metadata to answer queries. More...
 
class  AMDGPUAAWrapperPass
 Legacy wrapper pass to provide the AMDGPUAAResult object. More...
 
struct  AMDGPUAlwaysInlinePass
 
class  AMDGPUAnnotateUniformValuesPass
 
class  AMDGPUArgumentUsageInfo
 
class  AMDGPUAsmPrinter
 
struct  AMDGPUAtomicOptimizerPass
 
struct  AMDGPUAttributorOptions
 
class  AMDGPUAttributorPass
 
class  AMDGPUCallLowering
 
class  AMDGPUCodeGenPassBuilder
 
class  AMDGPUCodeGenPreparePass
 
class  AMDGPUCombinerHelper
 
class  AMDGPUCtorDtorLoweringPass
 Lower llvm.global_ctors and llvm.global_dtors to special kernels. More...
 
class  AMDGPUDAGToDAGISel
 AMDGPU specific code to select AMDGPU machine instructions for SelectionDAG operations. More...
 
class  AMDGPUDAGToDAGISelLegacy
 
class  AMDGPUDisassembler
 
class  AMDGPUExternalAAWrapper
 
class  AMDGPUFrameLowering
 Information about the stack frame layout on the AMDGPU targets. More...
 
struct  AMDGPUFunctionArgInfo
 
class  AMDGPUGenRegisterBankInfo
 This class provides the information for the target register banks. More...
 
class  AMDGPUGWSResourcePseudoSourceValue
 
struct  AMDGPUImageIntrinsicOptimizerPass
 
class  AMDGPUInstPrinter
 
class  AMDGPUInstrInfo
 
class  AMDGPUInstructionSelector
 
class  AMDGPUISelDAGToDAGPass
 
class  AMDGPULateCodeGenPreparePass
 
class  AMDGPULegalizerInfo
 
class  AMDGPULibCalls
 
class  AMDGPULibFunc
 Wrapper class for AMDGPULIbFuncImpl. More...
 
class  AMDGPULibFuncBase
 
class  AMDGPULibFuncImpl
 
struct  AMDGPULowerBufferFatPointersPass
 
class  AMDGPULowerKernelArgumentsPass
 
struct  AMDGPULowerKernelAttributesPass
 
struct  AMDGPULowerModuleLDSPass
 
class  AMDGPUMachineFunction
 
class  AMDGPUMachineModuleInfo
 
class  AMDGPUMangledLibFunc
 
class  AMDGPUMCAsmInfo
 
class  AMDGPUMCExpr
 AMDGPU target specific MCExpr operations. More...
 
class  AMDGPUMIRFormatter
 
class  AMDGPUOpenCLEnqueuedBlockLoweringPass
 
class  AMDGPUPALMetadata
 
class  AMDGPUPassConfig
 
class  AMDGPUPerfHintAnalysis
 
struct  AMDGPUPerfHintAnalysisPass
 
class  AMDGPUPreloadKernArgPrologPass
 
struct  AMDGPUPrintfRuntimeBindingPass
 
struct  AMDGPUPromoteAllocaPass
 
struct  AMDGPUPromoteAllocaToVectorPass
 
struct  AMDGPUPromoteKernelArgumentsPass
 
class  AMDGPUPseudoSourceValue
 
class  AMDGPURegisterBankInfo
 
class  AMDGPURemoveIncompatibleFunctionsPass
 
struct  AMDGPUResourceUsageAnalysis
 
class  AMDGPURewriteUndefForPHIPass
 
class  AMDGPUSelectionDAGInfo
 
struct  AMDGPUSimplifyLibCallsPass
 
class  AMDGPUSplitModulePass
 Splits the module M into N linkable partitions. More...
 
class  AMDGPUSubtarget
 
struct  AMDGPUSwLowerLDSPass
 
class  AMDGPUSymbolizer
 
class  AMDGPUTargetAsmStreamer
 
class  AMDGPUTargetELFStreamer
 
class  AMDGPUTargetLowering
 
class  AMDGPUTargetMachine
 
class  AMDGPUTargetObjectFile
 
class  AMDGPUTargetStreamer
 
class  AMDGPUTTIImpl
 
class  AMDGPUUnifyDivergentExitNodesPass
 
struct  AMDGPUUnifyMetadataPass
 
class  AMDGPUUnmangledLibFunc
 
struct  AMDGPUUseNativeCallsPass
 
struct  AnalysisGetter
 Wrapper for FunctionAnalysisManager. More...
 
struct  AnalysisInfoMixin
 A CRTP mix-in that provides informational APIs needed for analysis passes. More...
 
struct  AnalysisKey
 A special type used by analysis passes to provide an address that identifies that particular analysis pass type. More...
 
class  AnalysisManager
 A container for analyses that lazily runs them and caches their results. More...
 
class  AnalysisResolver
 AnalysisResolver - Simple interface used by Pass objects to pull all analysis information out of pass manager that is responsible to manage the pass. More...
 
struct  AnalysisSetKey
 A special type used to provide an address that identifies a set of related analyses. More...
 
class  AnalysisUsage
 Represent the analysis usage information of a pass. More...
 
struct  Annotation2MetadataPass
 Pass to convert @llvm.global.annotations to !annotation metadata. More...
 
struct  AnnotationRemarksPass
 
class  Annotations
 Annotations lets you mark points and ranges inside source code, for tests: More...
 
struct  AnonStructTypeKeyInfo
 
class  AnonymousNameInit
 "anonymous_n" - Represent an anonymous record name More...
 
class  AntiDepBreaker
 This class works in conjunction with the post-RA scheduler to rename registers to break register anti-dependencies (WAR hazards). More...
 
class  Any
 
class  AnyCoroEndInst
 
class  AnyCoroIdInst
 This represents a common base class for llvm.coro.id instructions. More...
 
class  AnyCoroIdRetconInst
 This represents either the llvm.coro.id.retcon or llvm.coro.id.retcon.once instruction. More...
 
class  AnyCoroSuspendInst
 
class  AnyMemCpyInst
 This class represents any memcpy intrinsic i.e. More...
 
class  AnyMemIntrinsic
 
class  AnyMemMoveInst
 This class represents any memmove intrinsic i.e. More...
 
class  AnyMemSetInst
 This class represents any memset intrinsic. More...
 
class  AnyMemTransferInst
 
class  APByteStreamer
 
class  APFixedPoint
 The APFixedPoint class works similarly to APInt/APSInt in that it is a functional replacement for a scaled integer. More...
 
class  APFloat
 
struct  APFloatBase
 A self-contained host- and target-independent arbitrary-precision floating-point software implementation. More...
 
class  APInt
 Class for arbitrary precision integers. More...
 
class  AppendingBinaryByteStream
 An implementation of WritableBinaryStream which can write at its end causing the underlying data to grow. More...
 
class  AppleAcceleratorTable
 This implements the Apple accelerator table format, a precursor of the DWARF 5 accelerator table format. More...
 
class  AppleAccelTableData
 A base class for different implementations of Data classes for Apple Accelerator Tables. More...
 
class  AppleAccelTableOffsetData
 Accelerator table data implementation for simple Apple accelerator tables with just a DIE reference. More...
 
class  AppleAccelTableStaticOffsetData
 Accelerator table data implementation for simple Apple accelerator tables with a DIE offset but no actual DIE pointer. More...
 
class  AppleAccelTableStaticTypeData
 Accelerator table data implementation for type accelerator tables with a DIE offset but no actual DIE pointer. More...
 
class  AppleAccelTableTypeData
 Accelerator table data implementation for Apple type accelerator tables. More...
 
class  APSInt
 An arbitrary precision integer that knows its signedness. More...
 
class  ARCFrameLowering
 
class  ARCFunctionInfo
 ARCFunctionInfo - This class is derived from MachineFunction private ARC target-specific information for each MachineFunction. More...
 
class  ARCInstPrinter
 
class  ARCInstrInfo
 
class  ARCMCAsmInfo
 
class  ARCMCInstLower
 This class is used to lower an MachineInstr into an MCInst. More...
 
struct  ARCRegisterInfo
 
class  ARCSubtarget
 
class  ARCTargetLowering
 
class  ARCTargetMachine
 
class  ARCTargetStreamer
 
class  ARCTTIImpl
 
struct  ArgDescriptor
 
struct  ArgInfo
 Helper struct shared between Function Specialization and SCCP Solver. More...
 
class  Argument
 This class represents an incoming formal argument to a Function. More...
 
class  ArgumentInit
 
class  ArgumentPromotionPass
 Argument promotion pass. More...
 
class  ARMAsmBackend
 
class  ARMAsmBackendDarwin
 
class  ARMAsmBackendELF
 
class  ARMAsmBackendWinCOFF
 
class  ARMAsmPrinter
 
class  ARMAttributeParser
 
class  ARMBankConflictHazardRecognizer
 
class  ARMBaseInstrInfo
 
class  ARMBaseRegisterInfo
 
class  ARMBaseTargetMachine
 
class  ARMBasicBlockUtils
 
class  ARMBETargetMachine
 ARM/Thumb big endian target machine. More...
 
class  ARMBlockPlacement
 
class  ARMCallLowering
 
class  ARMCOFFMCAsmInfoGNU
 
class  ARMCOFFMCAsmInfoMicrosoft
 
class  ARMConstantPoolConstant
 ARMConstantPoolConstant - ARM-specific constant pool values for Constants, Functions, and BlockAddresses. More...
 
class  ARMConstantPoolMBB
 ARMConstantPoolMBB - ARM-specific constantpool value of a machine basic block. More...
 
class  ARMConstantPoolSymbol
 ARMConstantPoolSymbol - ARM-specific constantpool values for external symbols. More...
 
class  ARMConstantPoolValue
 ARMConstantPoolValue - ARM specific constantpool value. More...
 
class  ARMELFMCAsmInfo
 
class  ARMElfTargetObjectFile
 
class  ARMException
 
class  ARMFrameLowering
 
class  ARMFunctionInfo
 ARMFunctionInfo - This class is derived from MachineFunctionInfo and contains private ARM-specific information for each MachineFunction. More...
 
class  ARMGenRegisterBankInfo
 
class  ARMHazardRecognizerFPMLx
 
class  ARMInstPrinter
 
class  ARMInstrInfo
 
class  ARMJITSymbolFlags
 ARM-specific JIT symbol flags. More...
 
class  ARMLegalizerInfo
 
class  ARMLETargetMachine
 ARM/Thumb little endian target machine. More...
 
class  ARMMCAsmInfoDarwin
 
class  ARMMCExpr
 
class  ARMOverrideBypasses
 Post-process the DAG to create cluster edges between instrs that may be fused by the processor into a single operation. More...
 
class  ARMRegisterBankInfo
 This class provides the information for the target register banks. More...
 
struct  ARMRegisterInfo
 
class  ARMSelectionDAGInfo
 
class  ARMSubtarget
 
class  ARMTargetLowering
 
class  ARMTargetStreamer
 
class  ARMTTIImpl
 
class  ArrayRecycler
 Recycle small arrays allocated from a BumpPtrAllocator. More...
 
class  ArrayRef
 ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory), i.e. More...
 
class  ArrayType
 Class to represent array types. More...
 
struct  ASanAccessInfo
 
struct  ASanStackFrameLayout
 
struct  ASanStackVariableDescription
 
class  AShrOperator
 
class  AsmCommentConsumer
 A callback class which is notified of each comment in an assembly file as it is lexed. More...
 
class  AsmCond
 AsmCond - Class to support conditional assembly. More...
 
struct  AsmFieldInfo
 
class  AsmLexer
 AsmLexer - Lexer class for assembly files. More...
 
class  AsmPrinter
 This class is intended to be used as a driving class for all asm writers. More...
 
class  AsmPrinterHandler
 Collects and handles AsmPrinter objects required to build debug or EH information. More...
 
struct  AsmRewrite
 
class  AsmToken
 Target independent representation for an assembler token. More...
 
struct  AsmTypeInfo
 
class  AssemblerConstantPools
 
class  AssemblyAnnotationWriter
 
class  AssertAlignSDNode
 An SDNode that records if a register contains a value that is guaranteed to be aligned accordingly. More...
 
class  AssertingVH
 Value handle that asserts if the Value is deleted. More...
 
class  AssignGUIDPass
 Assign a GUID to functions as metadata. More...
 
class  AssignmentTrackingAnalysis
 
class  AssignmentTrackingPass
 Convert @llvm.dbg.declare intrinsics into sets of @llvm.dbg.assign intrinsics by treating stores to the dbg.declare'd address as assignments to the variable. More...
 
struct  AssumeBuilderPass
 This pass will try to build an llvm.assume for every instruction in the function. More...
 
class  AssumeInst
 This represents the llvm.assume intrinsic. More...
 
struct  AssumeSimplifyPass
 This pass attempts to minimize the number of assume without loosing any information. More...
 
class  AssumptionAnalysis
 A function analysis which provides an AssumptionCache. More...
 
class  AssumptionCache
 A cache of @llvm.assume calls within a function. More...
 
class  AssumptionCacheTracker
 An immutable pass that tracks lazily created AssumptionCache objects. More...
 
class  AssumptionPrinterPass
 Printer pass for the AssumptionAnalysis results. More...
 
class  AtomicCmpXchgInst
 An instruction that atomically checks whether a specified value is in a memory location, and, if it is, stores a new value there. More...
 
class  AtomicExpandPass
 
class  AtomicInfo
 
class  AtomicMemCpyInst
 This class represents the atomic memcpy intrinsic i.e. More...
 
class  AtomicMemIntrinsic
 
class  AtomicMemMoveInst
 This class represents the atomic memmove intrinsic i.e. More...
 
class  AtomicMemSetInst
 This class represents atomic memset intrinsic. More...
 
class  AtomicMemTransferInst
 
class  AtomicRMWInst
 an instruction that atomically reads a memory location, combines it with another value, and then stores the result back. More...
 
class  AtomicSDNode
 This is an SDNode representing atomic operations. More...
 
class  AttrBuilder
 
class  Attribute
 
class  AttributeBitSet
 
class  AttributeImpl
 
struct  AttributeLinkedOffsetFixup
 
class  AttributeList
 
class  AttributeListImpl
 
class  AttributeMask
 
class  AttributeSet
 
class  AttributeSetNode
 
struct  Attributor
 The fixpoint analysis framework that orchestrates the attribute deduction. More...
 
struct  AttributorCallGraph
 
struct  AttributorCGSCCPass
 
struct  AttributorConfig
 Configuration for the Attributor. More...
 
struct  AttributorLightCGSCCPass
 A more lightweight version of the Attributor which only runs attribute inference but no simplifications. More...
 
struct  AttributorLightPass
 A more lightweight version of the Attributor which only runs attribute inference but no simplifications. More...
 
struct  AttributorPass
 } More...
 
struct  AutoInitRemark
 Special case for -ftrivial-auto-var-init remarks. More...
 
class  Automaton
 A deterministic finite-state automaton. More...
 
class  AVRAsmBackend
 Utilities for manipulating generated AVR machine code. More...
 
class  AVRAsmPrinter
 An AVR assembly code printer. More...
 
class  AVRELFObjectWriter
 Writes AVR machine code into an ELF32 object file. More...
 
class  AVRELFStreamer
 A target streamer for an AVR ELF object file. More...
 
struct  AVRFrameAnalyzer
 The frame analyzer pass. More...
 
class  AVRFrameLowering
 Utilities for creating function call frames. More...
 
class  AVRInstPrinter
 Prints AVR instructions to a textual stream. More...
 
class  AVRInstrInfo
 Utilities related to the AVR instruction set. More...
 
class  AVRMachineFunctionInfo
 Contains AVR-specific information for each MachineFunction. More...
 
class  AVRMCAsmInfo
 Specifies the format of AVR assembly files. More...
 
class  AVRMCCodeEmitter
 Writes AVR machine code to a stream. More...
 
class  AVRMCELFStreamer
 
class  AVRMCExpr
 A expression in AVR machine code. More...
 
class  AVRMCInstLower
 Lowers MachineInstr objects into MCInst objects. More...
 
class  AVRRegisterInfo
 Utilities relating to AVR registers. More...
 
class  AVRSelectionDAGInfo
 Holds information about the AVR instruction selection DAG. More...
 
class  AVRSubtarget
 A specific AVR target MCU. More...
 
class  AVRTargetAsmStreamer
 A target streamer for textual AVR assembly code. More...
 
class  AVRTargetLowering
 Performs target lowering for the AVR. More...
 
class  AVRTargetMachine
 A generic AVR implementation. More...
 
class  AVRTargetObjectFile
 Lowering for an AVR ELF32 object file. More...
 
class  AVRTargetStreamer
 A generic AVR target output stream. More...
 
class  BalancedPartitioning
 
struct  BalancedPartitioningConfig
 Algorithm parameters; default values are tuned on real-world binaries. More...
 
class  BaseIndexOffset
 Helper struct to parse and store a memory address as base + index + offset. More...
 
class  BaseRecord
 
class  BasicAA
 Analysis pass providing a never-invalidated alias analysis result. More...
 
class  BasicAAResult
 This is the AA result object for the basic, local, and stateless alias analysis. More...
 
class  BasicAAWrapperPass
 Legacy wrapper pass to provide the BasicAAResult object. More...
 
class  BasicBlock
 LLVM Basic Block Representation. More...
 
class  BasicBlockEdge
 
struct  BasicBlockInfo
 BasicBlockInfo - Information about the offset and size of a single basic block. More...
 
class  BasicBlockPathCloning
 
class  BasicBlockSDNode
 
class  BasicBlockSectionsProfileReader
 
class  BasicBlockSectionsProfileReaderAnalysis
 Analysis pass providing the BasicBlockSectionsProfileReader. More...
 
class  BasicBlockSectionsProfileReaderWrapperPass
 
struct  BasicDIEUnit
 
class  BasicTTIImpl
 Concrete BasicTTIImpl that can be used if no further customization is needed. More...
 
class  BasicTTIImplBase
 Base class which can be used to help build a TTI implementation. More...
 
class  BatchAAResults
 This class is a wrapper over an AAResults, and it is intended to be used only when there are no IR changes inbetween queries. More...
 
struct  BBClusterInfo
 
class  BCArray
 Represents an array of some other type. More...
 
class  BCBlob
 Represents an untyped blob of bytes. More...
 
class  BCBlockRAII
 RAII object to pair entering and exiting a sub-block. More...
 
class  BCChar6
 Represents a character encoded in LLVM's Char6 encoding. More...
 
struct  BCDumpOptions
 
class  BCFixed
 Represents a fixed-width value in a bitcode record. More...
 
class  BCGenericRecordLayout
 Represents a single bitcode record type. More...
 
class  BCLiteral
 Represents a literal operand in a bitcode record. More...
 
class  BCRecordLayout
 A record with a fixed record code. More...
 
class  BCVBR
 Represents a variable-width value in a bitcode record. More...
 
struct  BDCEPass
 
class  bf_iterator
 
class  bf_iterator_storage
 
struct  BFIDOTGraphTraitsBase
 
class  BinaryByteStream
 An implementation of BinaryStream which holds its entire data set in a single contiguous buffer. More...
 
class  BinaryConstantExpr
 BinaryConstantExpr - This class is private to Constants.cpp, and is used behind the scenes to implement binary constant exprs. More...
 
class  BinaryInstrProfCorrelator
 BinaryInstrProfCorrelator - A child of InstrProfCorrelatorImpl that takes an object file as input to correlate profiles. More...
 
class  BinaryItemStream
 BinaryItemStream represents a sequence of objects stored in some kind of external container but for which it is useful to view as a stream of contiguous bytes. More...
 
struct  BinaryItemTraits
 
struct  BinaryItemTraits< codeview::CVSymbol >
 
struct  BinaryItemTraits< codeview::CVType >
 
struct  BinaryItemTraits< llvm::codeview::CVType >
 
class  BinaryOperation
 Class representing a single binary operation in the AST of an expression. More...
 
class  BinaryOperator
 
class  BinaryOpIntrinsic
 This class represents an intrinsic that is based on a binary operation. More...
 
class  BinaryStream
 An interface for accessing data in a stream-like format, but which discourages copying. More...
 
class  BinaryStreamError
 Base class for errors originating when parsing raw PDB files. More...
 
class  BinaryStreamReader
 Provides read only access to a subclass of BinaryStream. More...
 
class  BinaryStreamRef
 BinaryStreamRef is to BinaryStream what ArrayRef is to an Array. More...
 
class  BinaryStreamRefBase
 Common stuff for mutable and immutable StreamRefs. More...
 
class  BinaryStreamWriter
 Provides write only access to a subclass of WritableBinaryStream. More...
 
struct  BinarySubstreamRef
 
class  BinOpInit
 !op (X, Y) - Combine two inits. More...
 
class  BitCastInst
 This class represents a no-op cast from one type to another. More...
 
class  BitCastOperator
 
class  BitCodeAbbrev
 BitCodeAbbrev - This class represents an abbreviation record. More...
 
class  BitCodeAbbrevOp
 BitCodeAbbrevOp - This describes one or more operands in an abbreviation. More...
 
class  BitcodeAnalyzer
 
struct  BitcodeFileContents
 
struct  BitcodeLTOInfo
 Basic information extracted from a bitcode module to be used for LTO. More...
 
class  BitcodeModule
 Represents a module in a bitcode file. More...
 
class  BitcodeReaderValueList
 
class  BitcodeWriter
 
class  BitcodeWriterPass
 Pass for writing a module of IR out to a bitcode file. More...
 
struct  Bitfield
 Holds functions to get, set or test bitfields. More...
 
class  BitInit
 'true'/'false' - Represent a concrete initializer for a bit. More...
 
struct  BitIntegerState
 Specialization of the integer state for a bit-wise encoding. More...
 
class  BitMaskClassIterator
 This class encapuslates the logic to iterate over bitmask returned by the various RegClass related APIs. More...
 
class  BitRecTy
 'bit' - Represent a single bit More...
 
class  Bitset
 This is a constexpr reimplementation of a subset of std::bitset. More...
 
class  BitsInit
 '{ a, b, c }' - Represents an initializer for a BitsRecTy value. More...
 
class  BitsRecTy
 'bits<n>' - Represent a fixed number of bits More...
 
class  BitstreamBlockInfo
 This class maintains the abbreviations read from a block info block. More...
 
class  BitstreamCursor
 This represents a position within a bitcode file, implemented on top of a SimpleBitstreamCursor. More...
 
struct  BitstreamEntry
 When advancing through a bitstream cursor, each advance can discover a few different kinds of entries: More...
 
class  BitstreamWriter
 
struct  BitTracker
 
class  BitVector
 
class  BLAKE3
 A class that wraps the BLAKE3 algorithm. More...
 
class  BlockAddress
 The address of a basic block. More...
 
class  BlockAddressSDNode
 
class  BlockCoverageInference
 
class  BlockDataT
 
struct  BlockExtractorPass
 
class  BlockFrequency
 
class  BlockFrequencyAnalysis
 Analysis pass which computes BlockFrequencyInfo. More...
 
class  BlockFrequencyInfo
 BlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation to estimate IR basic block frequencies. More...
 
class  BlockFrequencyInfoImpl
 Shared implementation for block frequency analysis. More...
 
class  BlockFrequencyInfoImplBase
 Base class for BlockFrequencyInfoImpl. More...
 
class  BlockFrequencyInfoWrapperPass
 Legacy analysis pass which computes BlockFrequencyInfo. More...
 
class  BlockFrequencyPrinterPass
 Printer pass for the BlockFrequencyInfo results. More...
 
class  BlockToIndexMapping
 
class  BlotMapVector
 An associative container with fast insertion-order (deterministic) iteration over its elements. More...
 
struct  BooleanState
 Simple wrapper for a single bit (boolean) state. More...
 
class  BoundsCheckingPass
 A pass to instrument code and perform run-time bounds checking on loads, stores, and other memory intrinsics. More...
 
class  BPFAbstractMemberAccessPass
 
class  BPFAdjustOptPass
 
class  BPFASpaceCastSimplifyPass
 
class  BPFCallLowering
 
class  BPFCoreSharedInfo
 
class  BPFFrameLowering
 
class  BPFGenRegisterBankInfo
 
class  BPFInstPrinter
 
class  BPFInstrInfo
 
class  BPFIRPeepholePass
 
class  BPFLegalizerInfo
 This class provides the information for the BPF target legalizer for GlobalISel. More...
 
class  BPFMCAsmInfo
 
class  BPFMCInstLower
 
class  BPFPreserveDITypePass
 
class  BPFPreserveStaticOffsetPass
 
class  BPFRegisterBankInfo
 
struct  BPFRegisterInfo
 
class  BPFSelectionDAGInfo
 
class  BPFSubtarget
 
class  BPFTargetLowering
 
class  BPFTargetMachine
 
class  BPFTTIImpl
 
class  BPFunctionNode
 A function with a set of utility nodes where it is beneficial to order two functions close together if they have similar utility nodes. More...
 
struct  BPIPassTrait
 Simple trait class that provides a mapping between BPI passes and the corresponding BPInfo. More...
 
struct  BPIPassTrait< LazyBranchProbabilityInfoPass >
 
class  BranchFolder
 
class  BranchInst
 Conditional or Unconditional Branch instruction. More...
 
class  BranchProbability
 
class  BranchProbabilityAnalysis
 Analysis pass which computes BranchProbabilityInfo. More...
 
class  BranchProbabilityInfo
 Analysis providing branch probability information. More...
 
class  BranchProbabilityInfoWrapperPass
 Legacy analysis pass which computes BranchProbabilityInfo. More...
 
class  BranchProbabilityPrinterPass
 Printer pass for the BranchProbabilityAnalysis results. More...
 
struct  BreakCriticalEdgesPass
 
class  BreakFalseDeps
 
struct  BrokenLink
 A broken link in the keep chain. More...
 
class  BTFContext
 
class  BTFDebug
 Collect and emit BTF information. More...
 
struct  BTFFieldReloc
 Represent one field relocation. More...
 
struct  BTFFuncInfo
 Represent one func and its type id. More...
 
class  BTFKindDataSec
 Handle data sections. More...
 
class  BTFKindVar
 Handle variable instances. More...
 
struct  BTFLineInfo
 Represent one line info. More...
 
class  BTFParser
 
class  BTFStringTable
 String table. More...
 
class  BTFTypeArray
 Handle array type. More...
 
class  BTFTypeBase
 The base class for BTF type generation. More...
 
class  BTFTypeDeclTag
 Handle decl tags. More...
 
class  BTFTypeDerived
 Handle several derived types include pointer, const, volatile, typedef and restrict. More...
 
class  BTFTypeEnum
 Handle enumerate type. More...
 
class  BTFTypeEnum64
 Handle 64-bit enumerate type. More...
 
class  BTFTypeFloat
 Handle binary floating point type. More...
 
class  BTFTypeFunc
 Handle subprogram. More...
 
class  BTFTypeFuncProto
 Handle function pointer. More...
 
class  BTFTypeFwd
 Handle struct or union forward declaration. More...
 
class  BTFTypeInt
 Handle int type. More...
 
class  BTFTypeStruct
 Handle struct/union type. More...
 
class  BTFTypeTypeTag
 
class  buffer_ostream
 
class  buffer_unique_ostream
 
class  BufferByteStreamer
 
class  BuildVectorSDNode
 A "pseudo-class" with methods for operating on BUILD_VECTORs. More...
 
class  BumpPtrAllocatorImpl
 Allocate memory in an ever growing pool, as if by bump-pointer. More...
 
class  ByteProvider
 Represents known origin of an individual byte in combine pattern. More...
 
class  ByteStreamer
 
class  CacheCost
 CacheCost represents the estimated cost of a inner loop as the number of cache lines used by the memory references it contains. More...
 
class  CachedFileStream
 This class wraps an output stream for a file. More...
 
class  CachedHashString
 A container which contains a string, which it owns, plus a precomputed hash. More...
 
class  CachedHashStringRef
 A container which contains a StringRef plus a precomputed hash. More...
 
struct  CachePruningPolicy
 Policy for the pruneCache() function. More...
 
struct  CalculateSmallVectorDefaultInlinedElements
 Helper class for calculating the default number of inline elements for SmallVector<T>. More...
 
class  CallbackVH
 Value handle with callbacks on RAUW and destruction. More...
 
class  CallBase
 Base class for all callable instructions (InvokeInst and CallInst) Holds everything related to calling a function. More...
 
class  CallBrInst
 CallBr instruction, tracking function calls that may not return control but instead transfer it to a third location. More...
 
class  CallBrPreparePass
 
class  CalledValuePropagationPass
 
struct  CalleeInfo
 Class to accumulate and hold information about a callee. More...
 
class  CalleeSavedInfo
 The CalleeSavedInfo class tracks the information need to locate where a callee saved register is in the current frame. More...
 
class  CallEntryPseudoSourceValue
 
class  CallGraph
 The basic data container for the call graph of a Module of IR. More...
 
class  CallGraphAnalysis
 An analysis pass to compute the CallGraph for a Module. More...
 
class  CallGraphDOTInfo
 
class  CallGraphDOTPrinterPass
 Pass for printing the call graph to a dot file. More...
 
class  CallGraphNode
 A node in the call graph for a module. More...
 
class  CallGraphPrinterPass
 Printer pass for the CallGraphAnalysis results. More...
 
class  CallGraphSCC
 CallGraphSCC - This is a single SCC that a CallGraphSCCPass is run on. More...
 
class  CallGraphSCCPass
 
class  CallGraphSCCsPrinterPass
 Printer pass for the summarized CallGraphAnalysis results. More...
 
class  CallGraphUpdater
 Wrapper to unify "old style" CallGraph and "new style" LazyCallGraph. More...
 
class  CallGraphViewerPass
 Pass for viewing the call graph. More...
 
class  CallGraphWrapperPass
 The ModulePass which wraps up a CallGraph and the logic to build it. More...
 
class  CallInfo
 
class  CallInst
 This class represents a function call, abstracting a target machine's calling convention. More...
 
class  CallLowering
 
struct  CallSiteFormat
 
struct  CallsiteInfo
 Summary of memprof callsite metadata. More...
 
struct  CallSiteSplittingPass
 
class  CanonicalizeAliasesPass
 Simple pass that canonicalizes aliases. More...
 
class  CanonicalizeFreezeInLoopsPass
 A pass that canonicalizes freeze instructions in a loop. More...
 
class  CanonicalLoopInfo
 Class to represented the control flow structure of an OpenMP canonical loop. More...
 
struct  CaptureAnalysis
 Virtual base class for providers of capture analysis. More...
 
class  CaptureInfo
 Represents which components of the pointer may be captured in which location. More...
 
struct  CaptureTracker
 This callback is used in conjunction with PointerMayBeCaptured. More...
 
struct  cast_convert_val
 
struct  cast_convert_val< To, FromTy *, FromTy * >
 
struct  cast_convert_val< To, FromTy, FromTy >
 
struct  cast_retty
 
struct  cast_retty_impl
 
struct  cast_retty_impl< To, const From * >
 
struct  cast_retty_impl< To, const From *const >
 
struct  cast_retty_impl< To, const From >
 
struct  cast_retty_impl< To, From * >
 
struct  cast_retty_impl< To, std::unique_ptr< From > >
 
struct  cast_retty_wrap
 
struct  cast_retty_wrap< To, FromTy, FromTy >
 
class  CastConstantExpr
 CastConstantExpr - This class is private to Constants.cpp, and is used behind the scenes to implement cast constant exprs. More...
 
struct  CastInfo
 This struct provides a method for customizing the way a cast is performed. More...
 
struct  CastInfo< To, const PointerUnion< PTs... > >
 
struct  CastInfo< To, From, std::enable_if_t<!is_simple_type< From >::value > >
 This struct provides an overload for CastInfo where From has simplify_type defined. More...
 
struct  CastInfo< To, PointerUnion< PTs... > >
 
struct  CastInfo< To, std::optional< From > >
 Provide a CastInfo specialized for std::optional<From>. More...
 
struct  CastInfo< To, std::unique_ptr< From > >
 Provide a CastInfo specialized for std::unique_ptr. More...
 
struct  CastInfoPointerUnionImpl
 We can't (at least, at this moment with C++14) declare CastInfo as a friend of PointerUnion like this: More...
 
class  CastInst
 This is the base class for all instructions that perform data casts. More...
 
struct  CastIsPossible
 This struct provides a way to check if a given cast is possible. More...
 
struct  CastIsPossible< To, From, std::enable_if_t< std::is_base_of_v< To, From > > >
 Upcasting (from derived to base) and casting from a type to itself should always be possible. More...
 
struct  CastIsPossible< To, std::optional< From > >
 
class  CatchPadInst
 
class  CatchReturnInst
 
class  CatchSwitchInst
 
class  CCState
 CCState - This class holds information needed while lowering arguments and return values. More...
 
class  CCValAssign
 CCValAssign - Represent assignment of one arg/retval to a location. More...
 
class  CFGAnalyses
 Represents analyses that only rely on functions' control flow. More...
 
class  CFGMST
 An union-find based Minimum Spanning Tree for CFG. More...
 
class  CFGOnlyPrinterPass
 
class  CFGOnlyViewerPass
 
class  CFGPrinterPass
 
class  CFGSCCPrinterPass
 
class  CFGuardPass
 
class  CFGViewerPass
 
class  CFIFixup
 
class  CGDataError
 
class  CGDataOStream
 A wrapper class to abstract writer stream with support of bytes back patching. More...
 
struct  CGDataPatchItem
 A struct to define how the data stream should be patched. More...
 
struct  CGPassBuilderOption
 
class  CGProfilePass
 
class  CGSCCToFunctionPassAdaptor
 Adaptor that maps from a SCC to its functions. More...
 
struct  CGSCCUpdateResult
 Support structure for SCC passes to communicate updates the call graph back to the CGSCC pass manager infrastructure. More...
 
class  ChangeReporter
 
struct  CHIArg
 
class  circular_raw_ostream
 circular_raw_ostream - A raw_ostream which can save its data to a circular buffer, or can pass it through directly to an underlying stream if specified with a buffer of zero. More...
 
struct  ClassInfo
 
class  Clause
 
class  ClauseVal
 
class  CleanupInstaller
 
class  CleanupPadInst
 
class  CleanupReturnInst
 
struct  ClonedCodeInfo
 This struct can be used to capture information about code being cloned, while it is being cloned. More...
 
struct  ClrEHUnwindMapEntry
 
class  ClusteredLowOccStage
 
class  CmpInst
 This class is the base class for the comparison instructions. More...
 
class  CmpIntrinsic
 This class represents a ucmp/scmp intrinsic. More...
 
class  CmpPredicate
 An abstraction over a floating-point predicate, and a pack of an integer predicate with samesign information. More...
 
class  CoalescerPair
 A helper class for register coalescers. More...
 
class  CoalescingBitVector
 A bitvector that, under the hood, relies on an IntervalMap to coalesce elements into intervals. More...
 
class  CodeExtractor
 Utility class for extracting code into a new function. More...
 
class  CodeExtractorAnalysisCache
 A cache for the CodeExtractor analysis. More...
 
class  CodeGenCoverage
 
class  CodeGenData
 
class  CodeGenDataReader
 
class  CodeGenDataWriter
 
class  CodeGenPassBuilder
 This class provides access to building LLVM's passes. More...
 
class  CodeGenPreparePass
 
class  CodeGenTargetMachineImpl
 implements a set of functionality in the TargetMachine class for targets that make use of the independent code generator (CodeGen) library. More...
 
struct  CodeMetrics
 Utility to calculate the size and a few similar metrics for a set of basic blocks. More...
 
class  CodeViewContext
 Holds state from .cv_file and .cv_loc directives for later emission. More...
 
class  CodeViewDebug
 Collects and handles line tables information in a CodeView format. More...
 
class  CollectorMetadataAnalysis
 An analysis pass which caches information about the entire Module. More...
 
class  CombinationGenerator
 
class  Combiner
 Combiner implementation. More...
 
class  CombinerHelper
 
struct  CombinerInfo
 
class  Comdat
 
struct  CommonHandleTraits
 
struct  CompileUnitIdentifiers
 
struct  ComplexDeinterleavingPass
 
class  concat_iterator
 Iterator wrapper that concatenates sequences together. More...
 
class  ConcreteOperator
 A helper template for defining operators for individual opcodes. More...
 
class  ConcurrentHashTableByPtr
 
class  ConcurrentHashTableInfoByPtr
 ConcurrentHashTable - is a resizeable concurrent hashtable. More...
 
class  CondCodeSDNode
 
struct  CondContext
 Evaluate query assuming this condition holds. More...
 
class  CondOpInit
 !cond(condition_1: value1, ... , condition_n: value) Selects the first value for which condition is true. More...
 
class  ConnectedVNInfoEqClasses
 ConnectedVNInfoEqClasses - Helper class that can divide VNInfos in a LiveInterval into equivalence clases of connected components. More...
 
struct  const_pointer_or_const_ref
 
struct  const_pointer_or_const_ref< T, std::enable_if_t< std::is_pointer_v< T > > >
 
class  const_set_bits_iterator_impl
 ForwardIterator for the bits that are set. More...
 
class  Constant
 This is an important base class in LLVM. More...
 
class  ConstantAggregate
 Base class for aggregate constants (with operands). More...
 
class  ConstantAggregateZero
 All zero aggregate value. More...
 
struct  ConstantAggrKeyType
 
class  ConstantArray
 ConstantArray - Constant Array Declarations. More...
 
class  ConstantAsMetadata
 
class  ConstantData
 Base class for constants with no operands. More...
 
class  ConstantDataArray
 An array constant whose element type is a simple 1/2/4/8-byte integer or float/double, and whose elements are just simple data values (i.e. More...
 
struct  ConstantDataArraySlice
 Represents offset+length into a ConstantDataArray. More...
 
class  ConstantDataSequential
 ConstantDataSequential - A vector or array constant whose element type is a simple 1/2/4/8-byte integer or half/bfloat/float/double, and whose elements are just simple data values (i.e. More...
 
class  ConstantDataVector
 A vector constant whose element type is a simple 1/2/4/8-byte integer or float/double, and whose elements are just simple data values (i.e. More...
 
class  ConstantExpr
 A constant value that is initialized with an expression using other constant values. More...
 
struct  ConstantExprKeyType
 
class  ConstantFolder
 ConstantFolder - Create constants with minimum, target independent, folding. More...
 
class  ConstantFP
 ConstantFP - Floating Point Values [float, double]. More...
 
class  ConstantFPRange
 This class represents a range of floating-point values. More...
 
class  ConstantFPSDNode
 
class  ConstantHoistingPass
 
struct  ConstantInfo
 
struct  ConstantInfo< ConstantArray >
 
struct  ConstantInfo< ConstantExpr >
 
struct  ConstantInfo< ConstantPtrAuth >
 
struct  ConstantInfo< ConstantStruct >
 
struct  ConstantInfo< ConstantVector >
 
struct  ConstantInfo< InlineAsm >
 
class  ConstantInt
 This is the shared class of boolean and integer constants. More...
 
class  ConstantMergePass
 A pass that merges duplicate global constants into a single constant. More...
 
class  ConstantPointerNull
 A constant pointer value that points to null. More...
 
class  ConstantPool
 
struct  ConstantPoolEntry
 
class  ConstantPoolSDNode
 
class  ConstantPtrAuth
 A signed pointer, in the ptrauth sense. More...
 
struct  ConstantPtrAuthKeyType
 
class  ConstantRange
 This class represents a range of values. More...
 
class  ConstantRangeAttributeImpl
 
class  ConstantRangeList
 This class represents a list of constant ranges. More...
 
class  ConstantRangeListAttributeImpl
 
class  ConstantSDNode
 
class  ConstantStruct
 
class  ConstantTargetNone
 A constant target extension type default initializer. More...
 
class  ConstantTokenNone
 A constant token which is empty. More...
 
class  ConstantUniqueMap
 
class  ConstantVector
 Constant Vector Declarations. More...
 
class  ConstMIBundleOperands
 ConstMIBundleOperands - Iterate over all operands in a const bundle of machine instructions. More...
 
class  ConstrainedFPCmpIntrinsic
 Constrained floating point compare intrinsics. More...
 
class  ConstrainedFPIntrinsic
 This is the common base class for constrained floating point intrinsics. More...
 
class  ConstraintEliminationPass
 
class  ConstraintSystem
 
struct  ConstStrippingForwardingCast
 Provides a cast trait that strips const from types to make it easier to implement a const-version of a non-const cast. More...
 
class  ContextAndReplaceableUses
 Pointer to the context, with optional RAUW support. More...
 
struct  ContextTotalSize
 
class  ContextTrieNode
 
class  ContextualFoldingSet
 ContextualFoldingSet - This template class is a further refinement of FoldingSet which provides a context argument when calling Profile on its nodes. More...
 
struct  ContextualFoldingSetTrait
 ContextualFoldingSetTrait - Like FoldingSetTrait, but for ContextualFoldingSets. More...
 
struct  ContextWorklistItem
 This class represents an item in the work list. More...
 
struct  ControlFlowHub
 Given a set of branch descriptors [BB, Succ0, Succ1], create a "hub" such that the control flow from each BB to a successor is now split into two edges, one from BB to the hub and another from the hub to the successor. More...
 
class  ControlHeightReductionPass
 
class  ConvergenceControlInst
 Represents calls to the llvm.experimintal.convergence.* intrinsics. More...
 
class  ConvergingVLIWScheduler
 
class  CoroAlignInst
 This represents the llvm.coro.align instruction. More...
 
class  CoroAllocaAllocInst
 This represents the llvm.coro.alloca.alloc instruction. More...
 
class  CoroAllocaFreeInst
 This represents the llvm.coro.alloca.free instruction. More...
 
class  CoroAllocaGetInst
 This represents the llvm.coro.alloca.get instruction. More...
 
class  CoroAllocInst
 This represents the llvm.coro.alloc instruction. More...
 
struct  CoroAnnotationElidePass
 
class  CoroAsyncContextAllocInst
 This represents the llvm.coro.context.alloc instruction. More...
 
class  CoroAsyncContextDeallocInst
 This represents the llvm.coro.context.dealloc instruction. More...
 
class  CoroAsyncEndInst
 This represents the llvm.coro.end instruction. More...
 
class  CoroAsyncResumeInst
 This represents the llvm.coro.async.resume instruction. More...
 
class  CoroAsyncSizeReplace
 This represents the llvm.coro.async.size.replace instruction. More...
 
class  CoroAwaitSuspendInst
 This represents the llvm.coro.await.suspend.{void,bool,handle} instructions. More...
 
class  CoroBeginInst
 This class represents the llvm.coro.begin or llvm.coro.begin.custom.abi instructions. More...
 
struct  CoroCleanupPass
 
struct  CoroConditionalWrapper
 
struct  CoroEarlyPass
 
struct  CoroElidePass
 
class  CoroEndInst
 This represents the llvm.coro.end instruction. More...
 
class  CoroEndResults
 This represents the llvm.end.results instruction. More...
 
class  CoroFrameInst
 This represents the llvm.coro.frame instruction. More...
 
class  CoroFreeInst
 This represents the llvm.coro.free instruction. More...
 
class  CoroIdAsyncInst
 This represents the llvm.coro.id.async instruction. More...
 
class  CoroIdInst
 This represents the llvm.coro.id instruction. More...
 
class  CoroIdRetconInst
 This represents the llvm.coro.id.retcon instruction. More...
 
class  CoroIdRetconOnceInst
 This represents the llvm.coro.id.retcon.once instruction. More...
 
class  CoroPromiseInst
 This represents the llvm.coro.promise instruction. More...
 
class  CoroSaveInst
 This represents the llvm.coro.save instruction. More...
 
class  CoroSizeInst
 This represents the llvm.coro.size instruction. More...
 
struct  CoroSplitPass
 
class  CoroSubFnInst
 This class represents the llvm.coro.subfn.addr instruction. More...
 
class  CoroSuspendAsyncInst
 This represents the llvm.coro.suspend.async instruction. More...
 
class  CoroSuspendInst
 This represents the llvm.coro.suspend instruction. More...
 
class  CoroSuspendRetconInst
 This represents the llvm.coro.suspend.retcon instruction. More...
 
struct  CorrelatedValuePropagationPass
 
class  CostBenefitPair
 
class  CostModelPrinterPass
 Printer pass for cost modeling results. More...
 
struct  CostTblEntryT
 Cost Table Entry. More...
 
struct  CountSumOrPercent
 
struct  CountVisitsPass
 
class  CrashRecoveryContext
 Crash recovery helper object. More...
 
class  CrashRecoveryContextCleanup
 Abstract base class of cleanup handlers. More...
 
class  CrashRecoveryContextCleanupBase
 Base class of cleanup handler that controls recovery of resources of the given type. More...
 
class  CrashRecoveryContextCleanupRegistrar
 Helper class for managing resource cleanups. More...
 
class  CrashRecoveryContextDeleteCleanup
 Cleanup handler that reclaims resource by calling 'delete' on it. More...
 
class  CrashRecoveryContextDestructorCleanup
 Cleanup handler that reclaims resource by calling destructor on it. More...
 
class  CrashRecoveryContextReleaseRefCleanup
 Cleanup handler that reclaims resource by calling its method 'Release'. More...
 
class  CriticalAntiDepBreaker
 
struct  CriticalEdgeSplittingOptions
 Option class for critical edge splitting. More...
 
class  CrossDSOCFIPass
 
struct  CryptContextTraits
 
class  CSEConfigBase
 
class  CSEConfigConstantOnly
 
class  CSEConfigFull
 
class  CSEMIRBuilder
 Defines a builder that does CSE of MachineInstructions using GISelCSEInfo. More...
 
class  CSKYAsmBackend
 
class  CSKYAsmPrinter
 
class  CSKYAttributeParser
 
class  CSKYConstantPool
 
class  CSKYConstantPoolConstant
 CSKY-specific constant pool values for Constants, Functions, and BlockAddresses. More...
 
class  CSKYConstantPoolJT
 CSKY-specific constantpool value of a jump table. More...
 
class  CSKYConstantPoolMBB
 CSKYConstantPoolMBB - CSKY-specific constantpool value of a machine basic block. More...
 
class  CSKYConstantPoolSymbol
 CSKYConstantPoolSymbol - CSKY-specific constantpool values for external symbols. More...
 
class  CSKYConstantPoolValue
 CSKYConstantPoolValue - CSKY specific constantpool value. More...
 
class  CSKYELFStreamer
 
class  CSKYELFTargetObjectFile
 
class  CSKYFrameLowering
 
class  CSKYInstPrinter
 
class  CSKYInstrInfo
 
class  CSKYMachineFunctionInfo
 
class  CSKYMCAsmInfo
 
class  CSKYMCCodeEmitter
 
class  CSKYMCExpr
 
class  CSKYMCInstLower
 
class  CSKYRegisterInfo
 
class  CSKYSubtarget
 
class  CSKYTargetAsmStreamer
 
class  CSKYTargetELFStreamer
 
class  CSKYTargetLowering
 
class  CSKYTargetMachine
 
class  CSKYTargetStreamer
 
class  CtxProfAnalysis
 
class  CtxProfAnalysisPrinterPass
 
struct  CxxUnwindMapEntry
 
class  CycleAnalysis
 Analysis pass which computes a CycleInfo. More...
 
struct  CycleGraphTraits
 GraphTraits for iterating over a sub-tree of the CycleT tree. More...
 
class  CycleInfoPrinterPass
 
struct  CycleInfoVerifierPass
 
class  CycleInfoWrapperPass
 Legacy analysis pass which computes a CycleInfo. More...
 
class  DAGDeltaAlgorithm
 DAGDeltaAlgorithm - Implements a "delta debugging" algorithm for minimizing directed acyclic graphs using a predicate function. More...
 
class  DagInit
 (v a, b) - Represent a DAG tree value. More...
 
class  DagRecTy
 'dag' - Represent a dag fragment More...
 
class  DAGTypeLegalizer
 This takes an arbitrary SelectionDAG as input and hacks on it until only value types the target machine can handle are left. More...
 
class  DataDependenceGraph
 Data Dependency Graph. More...
 
class  DataExtractor
 
class  DataFlowSanitizerPass
 
class  DataLayout
 A parsed version of the target data layout string in and methods for querying it. More...
 
class  DbgAssignIntrinsic
 This represents the llvm.dbg.assign instruction. More...
 
class  DbgCallSiteParam
 Used for tracking debug info about call site parameters. More...
 
class  DbgDeclareInst
 This represents the llvm.dbg.declare instruction. More...
 
class  DbgEntity
 This class is defined as the common parent of DbgVariable and DbgLabel such that it could levarage polymorphism to extract common code for DbgVariable and DbgLabel. More...
 
class  DbgInfoIntrinsic
 This is the common base class for debug info intrinsics. More...
 
class  DbgLabel
 This class is used to track label information. More...
 
class  DbgLabelInst
 This represents the llvm.dbg.label instruction. More...
 
class  DbgLabelInstrMap
 For each inlined instance of a source-level label, keep the corresponding DBG_LABEL instruction. More...
 
class  DbgLabelRecord
 Records a position in IR for a source label (DILabel). More...
 
class  DbgMarker
 Per-instruction record of debug-info. More...
 
class  DbgRecord
 Base class for non-instruction debug metadata records that have positions within IR. More...
 
class  DbgRecordParamRef
 A typed tracking MDNode reference that does not require a definition for its parameter type. More...
 
class  DbgValueHistoryMap
 For each user variable, keep a list of instruction ranges where this variable is accessible. More...
 
class  DbgValueInst
 This represents the llvm.dbg.value instruction. More...
 
class  DbgValueLoc
 The location of a single variable, composed of an expression and 0 or more DbgValueLocEntries. More...
 
class  DbgValueLocEntry
 A single location or constant within a variable location description, with either a single entry (with an optional DIExpression) used for a DBG_VALUE, or a list of entries used for a DBG_VALUE_LIST. More...
 
class  DbgVariable
 This class is used to track local variable information. More...
 
struct  DbgVariableFragmentInfo
 
class  DbgVariableIntrinsic
 This is the common base class for debug info intrinsics for variables. More...
 
struct  DbgVariableLocation
 Represents the location at which a variable is stored. More...
 
class  DbgVariableRecord
 Record of a variable value-assignment, aka a non instruction representation of the dbg.value intrinsic. More...
 
class  DCData
 
class  DCEPass
 Basic Dead Code Elimination pass. More...
 
class  DDGAnalysis
 Analysis pass that builds the DDG for a loop. More...
 
class  DDGAnalysisPrinterPass
 Textual printer pass for the DDG of a loop. More...
 
class  DDGBuilder
 Concrete implementation of a pure data dependence graph builder. More...
 
class  DDGDotPrinterPass
 
class  DDGEdge
 Data Dependency Graph Edge. More...
 
class  DDGNode
 Data Dependence Graph Node The graph can represent the following types of nodes: More...
 
class  DeadArgumentEliminationPass
 Eliminate dead arguments (and return values) from functions. More...
 
class  DeadLaneDetector
 
class  DeadMachineInstructionElimPass
 
class  DebugAssignmentTrackingAnalysis
 
class  DebugAssignmentTrackingPrinterPass
 
class  DebugCounter
 
class  DebugEpochBase
 
class  DebugHandlerBase
 Base class for debug information backends. More...
 
class  DebugifyCustomPassManager
 DebugifyCustomPassManager wraps each pass with the debugify passes if needed. More...
 
class  DebugifyEachInstrumentation
 
class  DebuginfodCollection
 Tracks a collection of debuginfod artifacts on the local filesystem. More...
 
class  DebuginfodFetcher
 
class  DebuginfodLog
 
struct  DebuginfodLogEntry
 
struct  DebuginfodServer
 
class  DebugInfoFinder
 Utility to find all debug info in a module. More...
 
struct  DebugInfoSize
 Hold the input and output of the debug info size in bytes. More...
 
class  DebugLoc
 A debug info location. More...
 
class  DebugLocDwarfExpression
 DwarfExpression implementation for .debug_loc entries. More...
 
class  DebugLocEntry
 This struct describes location entries emitted in the .debug_loc section. More...
 
class  DebugLocStream
 Byte stream of .debug_loc entries. More...
 
class  DebugNamesAbbrev
 
class  DebugValueUser
 Base class for tracking ValueAsMetadata/DIArgLists with user lookups and Owner callbacks outside of ValueAsMetadata. More...
 
class  DebugVariable
 Identifies a unique instance of a variable. More...
 
class  DebugVariableAggregate
 Identifies a unique instance of a whole variable (discards/ignores fragment information). More...
 
struct  decimalInfo
 
struct  DecIntegerState
 Specialization of the integer state for a decreasing value, hence 0 is the best state and ~0u the worst. More...
 
class  DecoderUInt128
 
struct  DecomposedBitTest
 Represents the operation icmp (X & Mask) pred C, where pred can only be eq or ne. More...
 
struct  def_chain_iterator
 Walks the defining accesses of MemoryDefs. More...
 
struct  DefaultAnalysisGraphTraits
 Default traits class for extracting a graph from an analysis pass. More...
 
struct  DefaultContextualFoldingSetTrait
 DefaultContextualFoldingSetTrait - Like DefaultFoldingSetTrait, but for ContextualFoldingSets. More...
 
struct  DefaultDoCastIfPossible
 This cast trait just provides the default implementation of doCastIfPossible to make CastInfo specializations more declarative. More...
 
struct  DefaultDOTGraphTraits
 DefaultDOTGraphTraits - This class provides the default implementations of all of the DOTGraphTraits methods. More...
 
class  DefaultEvictionAdvisor
 
struct  DefaultFoldingSetTrait
 DefaultFoldingSetTrait - This class provides default implementations for FoldingSetTrait implementations. More...
 
class  DefaultInlineAdvice
 
class  DefaultInlineAdvisor
 The default (manual heuristics) implementation of the InlineAdvisor. More...
 
class  DefaultPriorityAdvisor
 
class  DefaultVLIWScheduler
 
class  DefInit
 AL - Represent a reference to a 'def' in the description. More...
 
struct  DefinitionAndSourceRegister
 Simple struct used to hold a Register value and the instruction which defines it. More...
 
struct  DefsetRecord
 
class  DelayedMCExprs
 
struct  DelimitedScope
 
struct  DelinearizationPrinterPass
 
class  DeltaAlgorithm
 DeltaAlgorithm - Implements the delta debugging algorithm (A. More...
 
class  DeltaTree
 DeltaTree - a multiway search tree (BTree) structure with some fancy features. More...
 
class  DemandedBits
 
class  DemandedBitsAnalysis
 An analysis that produces DemandedBits for a function. More...
 
class  DemandedBitsPrinterPass
 Printer pass for DemandedBits. More...
 
struct  DenormalFPMathState
 
struct  DenormalMode
 Represent subnormal handling kind for floating point instruction inputs and outputs. More...
 
class  DenseMap
 
class  DenseMapBase
 
struct  DenseMapInfo
 An information struct used to provide DenseMap with the various necessary components for a given value type T. More...
 
struct  DenseMapInfo< AA::RangeTy >
 Helper that allows RangeTy as a key in a DenseMap. More...
 
struct  DenseMapInfo< AA::ValueAndContext >
 
struct  DenseMapInfo< AA::ValueScope >
 
struct  DenseMapInfo< AACacheLoc >
 
struct  DenseMapInfo< AAMDNodes >
 
struct  DenseMapInfo< AAPointerInfo::Access >
 Helper for AA::PointerInfo::Access DenseMap/Set usage. More...
 
struct  DenseMapInfo< APFixedPoint >
 
struct  DenseMapInfo< APFloat >
 
struct  DenseMapInfo< APInt, void >
 Provide DenseMapInfo for APInt. More...
 
struct  DenseMapInfo< APSInt, void >
 Provide DenseMapInfo for APSInt, using the DenseMapInfo for APInt. More...
 
struct  DenseMapInfo< ArrayRef< T >, void >
 
struct  DenseMapInfo< AssertingVH< T > >
 
struct  DenseMapInfo< at::VarRecord >
 
struct  DenseMapInfo< Attribute::AttrKind >
 
struct  DenseMapInfo< AttributeList, void >
 
struct  DenseMapInfo< AttributeSet, void >
 
struct  DenseMapInfo< BasicBlock::iterator >
 
struct  DenseMapInfo< BasicBlockEdge >
 
struct  DenseMapInfo< BitVector >
 
struct  DenseMapInfo< CachedHashString >
 
struct  DenseMapInfo< CachedHashStringRef >
 
struct  DenseMapInfo< CallValue >
 
struct  DenseMapInfo< char >
 
struct  DenseMapInfo< codeview::GloballyHashedType >
 
struct  DenseMapInfo< codeview::LocallyHashedType >
 
struct  DenseMapInfo< codeview::TypeIndex >
 
struct  DenseMapInfo< CodeViewDebug::LocalVarDef >
 
struct  DenseMapInfo< const AA::InstExclusionSetTy * >
 
struct  DenseMapInfo< const Expression * >
 
struct  DenseMapInfo< const SwitchSuccWrapper * >
 
struct  DenseMapInfo< coverage::CounterExpression >
 Provide DenseMapInfo for CounterExpression. More...
 
struct  DenseMapInfo< CSKYTargetStreamer::SymbolIndex >
 
struct  DenseMapInfo< DebugVariable >
 
struct  DenseMapInfo< DebugVariableAggregate >
 
struct  DenseMapInfo< DIExpression::FragmentInfo >
 
struct  DenseMapInfo< DivRemMapKey >
 
struct  DenseMapInfo< ElementCount, void >
 
struct  DenseMapInfo< Enum, std::enable_if_t< std::is_enum_v< Enum > > >
 
struct  DenseMapInfo< FixedPointSemantics >
 
struct  DenseMapInfo< FrozenIndPHIInfo >
 
struct  DenseMapInfo< FunctionSummary::ConstVCall >
 
struct  DenseMapInfo< FunctionSummary::VFuncId >
 
struct  DenseMapInfo< GEPValue >
 
struct  DenseMapInfo< gsym::FileEntry >
 
struct  DenseMapInfo< GVNPass::Expression >
 
struct  DenseMapInfo< hash_code, void >
 
struct  DenseMapInfo< ImmutableList< T >, void >
 
struct  DenseMapInfo< IndexCall >
 
struct  DenseMapInfo< int >
 
struct  DenseMapInfo< IRPosition >
 Helper that allows IRPosition as a key in a DenseMap. More...
 
struct  DenseMapInfo< LLT >
 
struct  DenseMapInfo< llvm::sys::fs::UniqueID >
 
struct  DenseMapInfo< LocationSize >
 
struct  DenseMapInfo< LocIdx >
 
struct  DenseMapInfo< long >
 
struct  DenseMapInfo< long long >
 
struct  DenseMapInfo< LoweredPHIRecord >
 
struct  DenseMapInfo< MachineOperand >
 
struct  DenseMapInfo< MBBSectionID >
 
struct  DenseMapInfo< MCRegister >
 
struct  DenseMapInfo< MemOpKey >
 Provide DenseMapInfo for MemOpKey. More...
 
struct  DenseMapInfo< MemoryLocation >
 
struct  DenseMapInfo< MemoryLocOrCall >
 
struct  DenseMapInfo< minidump::StreamType >
 
struct  DenseMapInfo< object::SectionRef >
 
struct  DenseMapInfo< OffsetAndUnitID >
 
struct  DenseMapInfo< omp::TraitProperty >
 
struct  DenseMapInfo< orc::AllocGroup >
 
struct  DenseMapInfo< orc::ExecutorAddr >
 
struct  DenseMapInfo< orc::MemProt >
 
struct  DenseMapInfo< orc::NonOwningSymbolStringPtr >
 
struct  DenseMapInfo< orc::SymbolStringPtr >
 
struct  DenseMapInfo< PointerEmbeddedInt< IntT, Bits > >
 
struct  DenseMapInfo< PointerIntPair< PointerTy, IntBits, IntType >, void >
 
struct  DenseMapInfo< PointerSumType< TagT, MemberTs... > >
 
struct  DenseMapInfo< PointerUnion< PTs... > >
 
struct  DenseMapInfo< PoisoningVH< T > >
 
struct  DenseMapInfo< ReachabilityQueryInfo< ToTy > * >
 
struct  DenseMapInfo< Register >
 
struct  DenseMapInfo< SampleContext >
 
struct  DenseMapInfo< sampleprof::FunctionId, void >
 Template specialization for FunctionId so that it can be used in LLVM map containers. More...
 
struct  DenseMapInfo< sandboxir::Context::CallbackID >
 
struct  DenseMapInfo< ScalarEvolution::FoldID >
 
struct  DenseMapInfo< SDValue >
 
struct  DenseMapInfo< short >
 
struct  DenseMapInfo< SimpleValue >
 
struct  DenseMapInfo< SlotWithTag >
 
struct  DenseMapInfo< SmallBitVector >
 
struct  DenseMapInfo< SpecSig >
 
struct  DenseMapInfo< std::pair< const MCSymbol *, MCSymbolRefExpr::VariantKind > >
 
struct  DenseMapInfo< std::pair< T, U > >
 
struct  DenseMapInfo< std::tuple< Ts... > >
 
struct  DenseMapInfo< std::variant< Ts... > >
 
struct  DenseMapInfo< StringRef, void >
 
struct  DenseMapInfo< SymbolsMapKey >
 
struct  DenseMapInfo< T * >
 
struct  DenseMapInfo< TargetInstrInfo::RegSubRegPair >
 Provide DenseMapInfo for TargetInstrInfo::RegSubRegPair. More...
 
struct  DenseMapInfo< typename CallsiteContextGraph< IndexCallsiteContextGraph, FunctionSummary, IndexCall >::CallInfo >
 
struct  DenseMapInfo< typename CallsiteContextGraph< ModuleCallsiteContextGraph, Function, Instruction * >::CallInfo >
 
struct  DenseMapInfo< UniqueBBID >
 
struct  DenseMapInfo< unsigned >
 
struct  DenseMapInfo< unsigned char >
 
struct  DenseMapInfo< unsigned long >
 
struct  DenseMapInfo< unsigned long long >
 
struct  DenseMapInfo< unsigned short >
 
struct  DenseMapInfo< ValueIDNum >
 
struct  DenseMapInfo< ValueInfo >
 
struct  DenseMapInfo< ValueMapCallbackVH< KeyT, ValueT, Config > >
 
struct  DenseMapInfo< VariableID >
 
struct  DenseMapInfo< VersionTuple >
 
struct  DenseMapInfo< VTableSlot >
 
struct  DenseMapInfo< VTableSlotSummary >
 
struct  DenseMapInfo< wasm::WasmGlobalType, void >
 
struct  DenseMapInfo< wasm::WasmLimits, void >
 
struct  DenseMapInfo< wasm::WasmSignature, void >
 
struct  DenseMapInfo< wasm::WasmTableType, void >
 
struct  DenseMapInfo< WeakVH >
 
class  DenseMapIterator
 
class  DenseSet
 Implements a dense probed hash-table based set. More...
 
class  Dependence
 Dependence - This class represents a dependence between two memory memory references in a function. More...
 
class  DependenceAnalysis
 AnalysisPass to compute dependence information in a function. More...
 
struct  DependenceAnalysisPrinterPass
 Printer pass to dump DA results. More...
 
class  DependenceAnalysisWrapperPass
 Legacy pass manager pass to access dependence information. More...
 
class  DependenceGraphInfo
 Encapsulate some common data and functionality needed for different variations of data dependence graphs. More...
 
class  DependenceInfo
 DependenceInfo - This class is the main dependence-analysis driver. More...
 
struct  deref
 Binary functor that adapts to any other binary functor after dereferencing operands. More...
 
struct  DerefState
 State for dereferenceable attribute. More...
 
class  DerivedUser
 Extension point for the Value hierarchy. More...
 
struct  DescriptorInfo
 
struct  DestSourcePair
 
class  DetectRoundChange
 
struct  DevirtCallSite
 A call site that could be devirtualized. More...
 
class  DevirtSCCRepeatedPass
 A helper that repeats an SCC pass each time an indirect call is refined to a direct call by that pass. More...
 
struct  df_ext_iterator
 
class  df_iterator
 
struct  df_iterator_default_set
 
class  df_iterator_storage
 
class  df_iterator_storage< SetType, true >
 
struct  DFAJumpThreadingPass
 
class  DFAPacketizer
 
class  DFCalculateWorkObject
 
class  DGEdge
 Represent an edge in the directed graph. More...
 
class  DGNode
 Represent a node in the directed graph. More...
 
struct  DiagnosticHandler
 This is the base class for diagnostic handling in LLVM. More...
 
class  DiagnosticInfo
 This is the base abstract class for diagnostic reporting in the backend. More...
 
class  DiagnosticInfoDebugMetadataVersion
 Diagnostic information for debug metadata version reporting. More...
 
class  DiagnosticInfoDontCall
 
class  DiagnosticInfoGeneric
 
class  DiagnosticInfoGenericWithLoc
 
class  DiagnosticInfoIgnoringInvalidDebugMetadata
 Diagnostic information for stripping invalid debug metadata. More...
 
class  DiagnosticInfoInlineAsm
 Diagnostic information for inline asm reporting. More...
 
class  DiagnosticInfoInstrumentation
 Diagnostic information for IR instrumentation reporting. More...
 
class  DiagnosticInfoIROptimization
 Common features for diagnostics dealing with optimization remarks that are used by IR passes. More...
 
class  DiagnosticInfoISelFallback
 Diagnostic information for ISel fallback path. More...
 
class  DiagnosticInfoMIROptimization
 Common features for diagnostics dealing with optimization remarks that are used by machine passes. More...
 
class  DiagnosticInfoMIRParser
 Diagnostic information for machine IR parser. More...
 
class  DiagnosticInfoMisExpect
 Diagnostic information for MisExpect analysis. More...
 
class  DiagnosticInfoOptimizationBase
 Common features for diagnostics dealing with optimization remarks that are used by both IR and MIR passes. More...
 
class  DiagnosticInfoOptimizationFailure
 Diagnostic information for optimization failures. More...
 
class  DiagnosticInfoPGOProfile
 Diagnostic information for the PGO profiler. More...
 
class  DiagnosticInfoRegAllocFailure
 
class  DiagnosticInfoResourceLimit
 Diagnostic information for stack size etc. More...
 
class  DiagnosticInfoSampleProfile
 Diagnostic information for the sample profiler. More...
 
class  DiagnosticInfoSrcMgr
 Diagnostic information for SMDiagnostic reporting. More...
 
class  DiagnosticInfoStackSize
 
class  DiagnosticInfoUnsupported
 Diagnostic information for unsupported feature in backend. More...
 
class  DiagnosticInfoWithLocationBase
 Common features for diagnostics with an associated location. More...
 
class  DiagnosticLocation
 
struct  DiagnosticPredicate
 
class  DiagnosticPrinter
 Interface for custom diagnostic printing. More...
 
class  DiagnosticPrinterRawOStream
 Basic diagnostic printer that uses an underlying raw_ostream. More...
 
class  DIArgList
 List of ValueAsMetadata, to be used as an argument to a dbg.value intrinsic. More...
 
struct  DIArgListInfo
 DenseMapInfo for DIArgList. More...
 
struct  DIArgListKeyInfo
 
class  DIAssignID
 Assignment ID. More...
 
class  DIBasicType
 Basic type, like 'int' or 'float'. More...
 
class  DIBuilder
 
class  DICommonBlock
 Debug common block. More...
 
class  DICompileUnit
 Compile unit. More...
 
class  DICompositeType
 Composite types. More...
 
class  DIContext
 
struct  DictScope
 
class  DIDerivedType
 Derived types. More...
 
struct  DIDumpOptions
 Container for dump options that control which debug information will be dumped. More...
 
class  DIE
 A structured debug information entry. More...
 
class  DIEAbbrev
 Dwarf abbreviation, describes the organization of a debug information object. More...
 
class  DIEAbbrevData
 Dwarf abbreviation data, describes one attribute of a Dwarf abbreviation. More...
 
class  DIEAbbrevSet
 Helps unique DIEAbbrev objects and assigns abbreviation numbers. More...
 
class  DIEAddrOffset
 A BaseTypeRef DIE. More...
 
class  DIEBaseTypeRef
 A BaseTypeRef DIE. More...
 
class  DIEBlock
 DIEBlock - Represents a block of values. More...
 
class  DIEDelta
 A simple label difference DIE. More...
 
class  DIEDwarfExpression
 DwarfExpression implementation for singular DW_AT_location. More...
 
class  DIEEntry
 A pointer to another debug information entry. More...
 
class  DIEExpr
 An expression DIE. More...
 
class  DIEHash
 An object containing the capability of hashing and adding hash attributes onto a DIE. More...
 
class  DIEInlineString
 A container for inline string values. More...
 
class  DIEInteger
 An integer value DIE. More...
 
class  DIELabel
 A label DIE. More...
 
class  DIELoc
 DIELoc - Represents an expression location. More...
 
class  DIELocList
 Represents a pointer to a location list in the debug_loc section. More...
 
class  DIEnumerator
 Enumeration value. More...
 
class  DIEString
 A container for string pool string values. More...
 
class  DIEUnit
 Represents a compile or type unit. More...
 
class  DIEValue
 
class  DIEValueList
 A list of DIE values. More...
 
class  DIExpression
 DWARF expression. More...
 
class  DIExpressionCursor
 Holds a DIExpression and keeps track of how many operands have been consumed so far. More...
 
class  DIFile
 File. More...
 
class  DIGenericSubrange
 
struct  DIGlobal
 Container for description of a global variable. More...
 
class  DIGlobalVariable
 Global variables. More...
 
class  DIGlobalVariableExpression
 A pair of DIGlobalVariable and DIExpression. More...
 
class  DIImportedEntity
 An imported module (C++ using directive or similar). More...
 
class  DIInliningInfo
 A format-neutral container for inlined code description. More...
 
class  DILabel
 Label. More...
 
class  DILexicalBlock
 Debug lexical block. More...
 
class  DILexicalBlockBase
 
class  DILexicalBlockFile
 
struct  DILineInfo
 A format-neutral container for source line information. More...
 
struct  DILineInfoSpecifier
 Controls which fields of DILineInfo container should be filled with data. More...
 
struct  DILocal
 
class  DILocalScope
 A scope for locals. More...
 
class  DILocalVariable
 Local variable. More...
 
class  DILocation
 Debug location. More...
 
class  DIMacro
 Macro. More...
 
class  DIMacroFile
 Macro file. More...
 
class  DIMacroNode
 Macro Info DWARF-like metadata node. More...
 
class  DIModule
 Represents a module in the programming language, for example, a Clang module, or a Fortran module. More...
 
class  DINamespace
 Debug lexical block. More...
 
class  DINode
 Tagged DWARF-like metadata node. More...
 
class  DIObjCProperty
 
class  DirectedGraph
 Directed graph. More...
 
class  Directive
 
class  DirectiveLanguage
 
class  DirectXFrameLowering
 
struct  DirectXInstrInfo
 
struct  DirectXRegisterInfo
 
class  DirectXSubtarget
 
class  DirectXTargetLowering
 
class  DirectXTargetMachine
 
class  DirectXTTIImpl
 
struct  DisableLIRP
 Options to disable Loop Idiom Recognize, which can be shared with other passes. More...
 
class  DIScope
 Base class for scope-like contexts. More...
 
class  DistinctMDOperandPlaceholder
 Placeholder metadata for operands of distinct MDNodes. More...
 
class  DIStringType
 String type, Fortran CHARACTER(n) More...
 
class  DISubprogram
 Subprogram description. More...
 
class  DISubrange
 Array subrange. More...
 
class  DISubroutineType
 Type array for a subprogram. More...
 
class  DITemplateParameter
 Base class for template parameters. More...
 
class  DITemplateTypeParameter
 
class  DITemplateValueParameter
 
class  DIType
 Base class for types. More...
 
class  DITypeRefArray
 
class  DIVariable
 Base class for variables. More...
 
class  DivergencePropagator
 Compute divergence starting with a divergent branch. More...
 
struct  DivRemMapKey
 
struct  DivRemPairsPass
 Hoist/decompose integer division and remainder instructions to enable CFG improvements and better codegen. More...
 
struct  DomainValue
 A DomainValue is a bit like LiveIntervals' ValNo, but it also keeps track of execution domains. More...
 
class  DomConditionCache
 
class  DominanceFrontier
 
class  DominanceFrontierAnalysis
 Analysis pass which computes a DominanceFrontier. More...
 
class  DominanceFrontierBase
 DominanceFrontierBase - Common base class for computing forward and inverse dominance frontiers for a function. More...
 
class  DominanceFrontierPrinterPass
 Printer pass for the DominanceFrontier. More...
 
class  DominanceFrontierWrapperPass
 
class  DominatorTree
 Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree. More...
 
class  DominatorTreeAnalysis
 Analysis pass which computes a DominatorTree. More...
 
class  DominatorTreeBase
 Core dominator tree base class. More...
 
class  DominatorTreePrinterPass
 Printer pass for the DominatorTree. More...
 
struct  DominatorTreeVerifierPass
 Verifier pass for the DominatorTree. More...
 
class  DominatorTreeWrapperPass
 Legacy analysis pass which computes a DominatorTree. More...
 
struct  DomOnlyPrinter
 
struct  DomOnlyViewer
 
struct  DomPrinter
 
struct  DomTreeGraphTraitsBase
 
class  DomTreeNodeBase
 Base class for the actual dominator tree node. More...
 
struct  DomTreeNodeTraits
 Default DomTreeNode traits for NodeT. More...
 
struct  DomTreeNodeTraits< VPBlockBase >
 
class  DomTreeUpdater
 
struct  DomViewer
 
class  DoNothingMemorySSAWalker
 A MemorySSAWalker that does no alias queries, or anything else. More...
 
class  DotCfgChangeReporter
 
class  DotFuncBCIInfo
 
class  DOTFuncInfo
 
struct  DOTGraphTraits
 DOTGraphTraits - Template class that can be specialized to customize how graphs are converted to 'dot' graphs. More...
 
struct  DOTGraphTraits< AADepGraph * >
 
struct  DOTGraphTraits< AttributorCallGraph * >
 
struct  DOTGraphTraits< BlockFrequencyInfo * >
 
struct  DOTGraphTraits< BoUpSLP * >
 
struct  DOTGraphTraits< CallGraphDOTInfo * >
 
struct  DOTGraphTraits< const DataDependenceGraph * >
 
struct  DOTGraphTraits< const MachineFunction * >
 
struct  DOTGraphTraits< DominatorTree * >
 
struct  DOTGraphTraits< DomTreeNode * >
 
struct  DOTGraphTraits< DotCfgDiffDisplayGraph * >
 
struct  DOTGraphTraits< DotFuncBCIInfo * >
 
struct  DOTGraphTraits< DOTFuncInfo * >
 
struct  DOTGraphTraits< DOTFuncMSSAInfo * >
 
struct  DOTGraphTraits< DOTMachineFuncInfo * >
 
struct  DOTGraphTraits< MachineBlockFrequencyInfo * >
 
struct  DOTGraphTraits< MachineGadgetGraph * >
 
struct  DOTGraphTraits< PGOUseFunc * >
 
struct  DOTGraphTraits< PostDominatorTree * >
 
struct  DOTGraphTraits< RegionInfo * >
 
struct  DOTGraphTraits< RegionNode * >
 
struct  DOTGraphTraits< ScheduleDAG * >
 
struct  DOTGraphTraits< ScheduleDAGMI * >
 
struct  DOTGraphTraits< SelectionDAG * >
 
struct  DOTGraphTraits< SplitGraph >
 
class  DOTGraphTraitsModulePrinterWrapperPass
 
class  DOTGraphTraitsModuleViewerWrapperPass
 
struct  DOTGraphTraitsPrinter
 
class  DOTGraphTraitsPrinterWrapperPass
 
struct  DOTGraphTraitsViewer
 
class  DOTGraphTraitsViewerWrapperPass
 
class  DOTMachineFuncInfo
 
class  DroppedVariableStats
 A base class to collect and print dropped debug information variable statistics. More...
 
class  DroppedVariableStatsIR
 A class to collect and print dropped debug information due to LLVM IR optimization passes. More...
 
class  DSEPass
 This class implements a trivial dead store elimination. More...
 
class  DSOLocalEquivalent
 Wrapper for a function that represents a value that functionally represents the original function. More...
 
class  DstOp
 
class  DummyCGSCCPass
 This pass is required by interprocedural register allocation. More...
 
class  DummyPriorityAdvisor
 Stupid priority advisor which just enqueues in virtual register number order, for debug purposes only. More...
 
class  DuplexCandidate
 
class  Duration
 
class  DWARF5AccelTable
 
class  DWARF5AccelTableData
 The Data class implementation for DWARF v5 accelerator table. More...
 
class  DWARFAbbreviationDeclaration
 
class  DWARFAbbreviationDeclarationSet
 
class  DWARFAcceleratorTable
 The accelerator tables are designed to allow efficient random access (using a symbol name as a key) into debug info by providing an index of the debug info DIEs. More...
 
struct  DWARFAddressRange
 
struct  DWARFAttribute
 Encapsulates a DWARF attribute value and all of the data required to describe the attribute value. More...
 
class  DwarfCFIException
 
class  DwarfCompileUnit
 
class  DWARFCompileUnit
 
class  DWARFContext
 DWARFContext This data structure is the top level entity that deals with dwarf debug information parsing. More...
 
class  DWARFDataExtractor
 A DataExtractor (typically for an in-memory copy of an object-file section) plus a relocation map for that section, if there is one. More...
 
class  DwarfDebug
 Collects and handles dwarf debug information. More...
 
class  DWARFDebugAbbrev
 
class  DWARFDebugAddrTable
 A class representing an address table as specified in DWARF v5. More...
 
class  DWARFDebugAranges
 
class  DWARFDebugArangeSet
 
class  DWARFDebugFrame
 A parsed .debug_frame or .eh_frame section. More...
 
class  DWARFDebugInfoEntry
 DWARFDebugInfoEntry - A DIE with only the minimum required data. More...
 
class  DWARFDebugLine
 
class  DWARFDebugLoc
 
class  DWARFDebugLoclists
 
class  DWARFDebugMacro
 
class  DWARFDebugNames
 .debug_names section consists of one or more units. More...
 
class  DWARFDebugPubTable
 Represents structure for holding and parsing .debug_pub* tables. More...
 
class  DWARFDebugRangeList
 
class  DWARFDebugRnglist
 A class representing a single rangelist. More...
 
class  DWARFDebugRnglistTable
 
class  DWARFDie
 Utility class that carries the DWARF compile/type unit and the debug info entry in an object. More...
 
class  DwarfEHPreparePass
 
class  DwarfExpression
 Base class containing the logic for constructing DWARF expressions independently of whether they are emitted into a DIE or into a .debug_loc entry. More...
 
class  DWARFExpression
 
class  DwarfFile
 
class  DWARFFormValue
 
class  DWARFGdbIndex
 
class  DwarfInstrProfCorrelator
 DwarfInstrProfCorrelator - A child of InstrProfCorrelatorImpl that takes DWARF debug info as input to correlate profiles. More...
 
struct  DWARFListEntryBase
 A base class for DWARF list entries, such as range or location list entries. More...
 
class  DWARFListTableBase
 A class representing a table of lists as specified in the DWARF v5 standard for location lists and range lists. More...
 
class  DWARFListTableHeader
 A class representing the header of a list table such as the range list table in the .debug_rnglists section. More...
 
class  DWARFListType
 A base class for lists of entries that are extracted from a particular section, such as range lists or location lists. More...
 
struct  DWARFLocationEntry
 A single location within a location list. More...
 
struct  DWARFLocationExpression
 Represents a single DWARF expression, whose value is location-dependent. More...
 
class  DWARFLocationTable
 An abstract base class for various kinds of location tables (.debug_loc, .debug_loclists, and their dwo variants). More...
 
class  DWARFObject
 
struct  DWARFSection
 
class  DwarfStringPool
 
struct  DwarfStringPoolEntry
 Data for a string pool entry. More...
 
class  DwarfStringPoolEntryRef
 DwarfStringPoolEntryRef: Dwarf string pool entry reference. More...
 
struct  DwarfStringPoolEntryWithExtString
 DwarfStringPoolEntry with string keeping externally. More...
 
struct  DWARFTypePrinter
 
class  DWARFTypeUnit
 
class  DwarfTypeUnit
 
class  DWARFUnit
 
class  DwarfUnit
 This dwarf writer support class manages information associated with a source file. More...
 
class  DWARFUnitHeader
 Base class describing the header of any kind of "unit." Some information is specific to certain unit types. More...
 
class  DWARFUnitIndex
 
class  DWARFUnitVector
 Describe a collection of units. More...
 
class  DWARFVerifier
 A class that verifies DWARF debug information given a DWARF Context. More...
 
class  DWPError
 
class  DWPStringPool
 
class  DXContainerObjectWriter
 
class  DXILBindingMap
 
class  DXILDataScalarization
 A pass that transforms Vectors to Arrays. More...
 
class  DXILFinalizeLinkage
 
class  DXILFinalizeLinkageLegacy
 
class  DXILFlattenArrays
 A pass that transforms multidimensional arrays into one-dimensional arrays. More...
 
class  DXILIntrinsicExpansion
 A pass that transforms DXIL Intrinsics that don't have DXIL opCodes. More...
 
class  DXILMetadataAnalysis
 
class  DXILMetadataAnalysisPrinterPass
 Printer pass for the DXILMetadataAnalysis results. More...
 
class  DXILMetadataAnalysisWrapperPass
 Legacy pass. More...
 
class  DXILOpLowering
 
class  DXILPrettyPrinterPass
 A pass that prints resources in a format suitable for textual DXIL. More...
 
class  DXILResourceAccess
 
class  DXILResourceBindingAnalysis
 
class  DXILResourceBindingPrinterPass
 Printer pass for the DXILResourceBindingAnalysis results. More...
 
class  DXILResourceBindingWrapperPass
 
class  DXILResourceMDAnalysis
 Analysis pass that exposes the DXILResource for a module. More...
 
class  DXILResourceMDWrapper
 The legacy pass manager's analysis pass to compute DXIL resource information. More...
 
class  DXILResourceTypeAnalysis
 
class  DXILResourceTypeMap
 
class  DXILResourceTypeWrapperPass
 
class  DXILTranslateMetadata
 A pass that transforms DXIL Intrinsics that don't have DXIL opCodes. More...
 
class  DXILUpgradePass
 Upgrade DXIL-style metadata into their LLVM representations. More...
 
class  DynamicAPInt
 This class provides support for dynamic arbitrary-precision arithmetic. More...
 
class  EarliestEscapeAnalysis
 Context-sensitive CaptureAnalysis provider, which computes and caches the earliest common dominator closure of all captures. More...
 
class  early_inc_iterator_impl
 A pseudo-iterator adaptor that is designed to implement "early increment" style loops. More...
 
struct  EarlyCSEPass
 A simple and fast domtree-based CSE pass. More...
 
class  EarlyIfConverterPass
 
class  EarlyMachineLICMPass
 
class  EarlyTailDuplicatePass
 
class  ECError
 This class wraps a std::error_code in a Error. More...
 
class  EdgeBundles
 
class  EdgeBundlesAnalysis
 
class  EdgeBundlesWrapperLegacy
 
class  EHStreamer
 Emits exception handling directives. More...
 
class  ElementCount
 
class  ELFAttributeParser
 
class  ELFObjectWriter
 
struct  ELFRelocationEntry
 
class  EliminateAvailableExternallyPass
 A pass that transforms external global definitions into declarations. More...
 
struct  EmbedBitcodeOptions
 
class  EmbedBitcodePass
 Pass embeds a copy of the module optimized with the provided pass pipeline into a global variable. More...
 
struct  EmbeddedModelRunnerOptions
 ReleaseModeModelRunner - production mode implementation of the MLModelRunner. More...
 
class  EmptyData
 
class  EmptyMatchContext
 
class  EngineBuilder
 Builder class for ExecutionEngines. More...
 
struct  EntryExitInstrumenterPass
 
struct  EntryValueInfo
 Represents an entry-value location, or a fragment of one. More...
 
struct  enum_iteration_traits
 
struct  enum_iteration_traits< InstCounterType >
 
class  EnumAttributeImpl
 
struct  EnumEntry
 
class  EnumeratedArray
 
struct  EpilogueLoopVectorizationInfo
 Encapsulate information regarding vectorization of a loop and its epilogue. More...
 
class  EpilogueVectorizerEpilogueLoop
 
class  EpilogueVectorizerMainLoop
 A specialized derived class of inner loop vectorizer that performs vectorization of main loops in the process of vectorizing loops and their epilogues. More...
 
class  EquivalenceClasses
 EquivalenceClasses - This represents a collection of equivalence classes and supports three efficient operations: insert an element into a class of its own, union two classes, and find the class for a given element. More...
 
class  ErrataWorkaround
 
class  Error
 Lightweight error class with error context and mandatory checking. More...
 
class  ErrorAsOutParameter
 Helper for Errors used as out-parameters. More...
 
class  ErrorDiagnostic
 Class to represent an error holding a diagnostic with location information used when printing it. More...
 
class  ErrorHandlerTraits
 Helper for testing applicability of, and applying, handlers for ErrorInfo types. More...
 
class  ErrorHandlerTraits< Error(&)(ErrT &)>
 
class  ErrorHandlerTraits< Error(&)(std::unique_ptr< ErrT >)>
 Specialization for functions of the form 'Error (std::unique_ptr<ErrT>)'. More...
 
class  ErrorHandlerTraits< RetT(C::*)(const ErrT &) const >
 
class  ErrorHandlerTraits< RetT(C::*)(const ErrT &)>
 
class  ErrorHandlerTraits< RetT(C::*)(ErrT &) const >
 
class  ErrorHandlerTraits< RetT(C::*)(ErrT &)>
 
class  ErrorHandlerTraits< RetT(C::*)(std::unique_ptr< ErrT >) const >
 Specialization for member functions of the form 'RetT (std::unique_ptr<ErrT>) const'. More...
 
class  ErrorHandlerTraits< RetT(C::*)(std::unique_ptr< ErrT >)>
 Specialization for member functions of the form 'RetT (std::unique_ptr<ErrT>)'. More...
 
class  ErrorHandlerTraits< void(&)(ErrT &)>
 
class  ErrorHandlerTraits< void(&)(std::unique_ptr< ErrT >)>
 Specialization for functions of the form 'void (std::unique_ptr<ErrT>)'. More...
 
class  ErrorInfo
 Base class for user error types. More...
 
class  ErrorInfoBase
 Base class for error info classes. More...
 
class  ErrorList
 Special ErrorInfo subclass representing a list of ErrorInfos. More...
 
class  ErrorOr
 Represents either an error or a value T. More...
 
class  ErrorReported
 An error that has already been reported. More...
 
class  ErrorSuccess
 Subclass of Error for the sole purpose of identifying the success path in the type system. More...
 
class  EscapeEnumerator
 EscapeEnumerator - This is a little algorithm to find all escape points from a function so that "finally"-style code can be inserted. More...
 
class  Evaluator
 This class evaluates LLVM IR, producing the Constant representing each SSA instruction. More...
 
struct  EvictionCost
 Cost of evicting interference - used by default advisor, and the eviction chain heuristic in RegAllocGreedy. More...
 
struct  EVT
 Extended Value Type. More...
 
struct  ExactEqualsExpression
 
struct  ExecutionContext
 
class  ExecutionDomainFix
 
class  ExecutionEngine
 Abstract interface for implementation execution of LLVM modules, designed to support both interpreter and just-in-time (JIT) compiler implementations. More...
 
class  ExecutionEngineState
 Helper class for helping synchronize access to the global address map table. More...
 
class  ExistsOpInit
 !exists<type>(expr) - Dynamically determine if a record of type named expr exists. More...
 
class  ExitOnError
 Helper for check-and-exit error handling. More...
 
class  ExpandLargeDivRemPass
 
class  ExpandLargeFpConvertPass
 
class  ExpandMemCmpPass
 
class  ExpandReductionsPass
 
class  ExpandVariadicsPass
 
class  Expected
 Tagged union holding either a T or a Error. More...
 
class  ExpectedAsOutParameter
 Helper for Expected<T>s used as out-parameters. More...
 
struct  explicitly_convertible
 
struct  explicitly_convertible< From, To, std::void_t< decltype(static_cast< To >(std::declval< std::add_rvalue_reference_t< From > >()))> >
 
class  ExponentialBackoff
 A class to help implement exponential backoff. More...
 
class  Expression
 Class representing an expression and its matching format. More...
 
class  ExpressionAST
 Base class representing the AST of a given expression. More...
 
struct  ExpressionFormat
 Type representing the format an expression value should be textualized into for matching. More...
 
class  ExpressionLiteral
 Class representing an unsigned literal in the AST of an expression. More...
 
struct  ExtAddrMode
 Used to describe addressing mode similar to ExtAddrMode in CodeGenPrepare. More...
 
struct  ExternalAAWrapperPass
 A wrapper pass for external alias analyses. More...
 
class  ExternalSymbolPseudoSourceValue
 A specialized pseudo source value for holding external symbol values. More...
 
class  ExternalSymbolSDNode
 
class  ExtractElementConstantExpr
 ExtractElementConstantExpr - This class is private to Constants.cpp, and is used behind the scenes to implement extractelement constant exprs. More...
 
class  ExtractElementInst
 This instruction extracts a single (scalar) element from a VectorType value. More...
 
class  ExtractGVPass
 
class  ExtractValueInst
 This instruction extracts a struct member or array element value from an aggregate value. More...
 
class  ExtraFunctionPassManager
 A pass manager to run a set of extra function passes if the ShouldRunExtraPasses marker analysis is present. More...
 
class  ExtraLoopPassManager
 A pass manager to run a set of extra loop passes if the MarkerTy analysis is present. More...
 
class  FailureOr
 This class provides support for representing a failure result, or a valid value of type T. More...
 
class  fallible_iterator
 A wrapper class for fallible iterators. More...
 
class  FastFoldingSetNode
 FastFoldingSetNode - This is a subclass of FoldingSetNode which stores a FoldingSetNodeID value rather than requiring the node to recompute it each time it is needed. More...
 
class  FastISel
 This is a fast-path instruction selection class that generates poor code and doesn't support illegal types or non-trivial lowering, but runs quickly. More...
 
class  FastMathFlags
 Convenience struct for specifying and reasoning about fast-math flags. More...
 
class  FaultMapParser
 A parser for the __llvm_faultmaps section generated by the FaultMaps class declared in llvm/CodeGen/FaultMaps.h. More...
 
class  FaultMaps
 
class  FCmpInst
 This instruction compares its operands according to the predicate given to the constructor. More...
 
class  FeatureBitArray
 Class used to store the subtarget bits in the tables created by tablegen. More...
 
class  FeatureBitset
 Container class for subtarget features. More...
 
class  FenceInst
 An instruction for ordering other memory operations. More...
 
class  FieldInit
 X.Y - Represent a reference to a subfield of a variable. More...
 
struct  file_magic
 file_magic - An "enum class" enumeration of file types based on magic (the first N bytes of the file). More...
 
class  FileBufferByteStream
 An implementation of WritableBinaryStream backed by an llvm FileOutputBuffer. More...
 
struct  FileCache
 This type represents a file cache system that manages caching of files. More...
 
class  FileCheck
 FileCheck class takes the request and exposes various methods that use information from the request. More...
 
struct  FileCheckDiag
 Summary of a FileCheck diagnostic. More...
 
class  FileCheckPatternContext
 Class holding the Pattern global state, shared by all patterns: tables holding values of variables and whether they are defined or not at any given time in the matching process. More...
 
struct  FileCheckRequest
 Contains info about various FileCheck options. More...
 
struct  FileCheckString
 A check that we found in the input file. More...
 
class  FileCollector
 Captures file system interaction and generates data to be later replayed with the RedirectingFileSystem. More...
 
class  FileCollectorBase
 
class  FileCollectorFileSystem
 
class  FileError
 This class wraps a filename and another Error. More...
 
struct  FileHandleTraits
 
class  FileOutputBuffer
 FileOutputBuffer - This interface provides simple way to create an in-memory buffer which will be written to a file. More...
 
class  FilePermissionsApplier
 FilePermssionsApplier helps to copy permissions from an input file to an output one. More...
 
class  FileRemover
 FileRemover - This class is a simple object meant to be stack allocated. More...
 
class  filter_iterator_base
 An iterator adaptor that filters the elements of given inner iterators. More...
 
class  filter_iterator_impl
 Specialization of filter_iterator_base for forward iteration only. More...
 
class  filter_iterator_impl< WrappedIteratorT, PredicateT, std::bidirectional_iterator_tag >
 Specialization of filter_iterator_base for bidirectional iteration. More...
 
class  FinalizeISelPass
 
struct  FindHandleTraits
 
struct  FirstIndexOfType
 Find the first index where a type appears in a list of types. More...
 
struct  FirstIndexOfType< T, T, Us... >
 
struct  FirstIndexOfType< T, U, Us... >
 
class  FixAllFDIVSQRT
 
struct  FixedNumOperandTraits
 FixedNumOperandTraits - determine the allocation regime of the Use array when it is a prefix to the User object, and the number of Use objects is known at compile time. More...
 
class  FixedPointBuilder
 
class  FixedPointSemantics
 The fixed point semantics work similarly to fltSemantics. More...
 
struct  FixedScalableVFPair
 A class that represents two vectorization factors (initialized with 0 by default). More...
 
class  FixedStackPseudoSourceValue
 A specialized PseudoSourceValue for holding FixedStack values, which must include a frame index. More...
 
class  FixedStreamArray
 FixedStreamArray is similar to VarStreamArray, except with each record having a fixed-length. More...
 
class  FixedStreamArrayIterator
 
class  FixedVectorType
 Class to represent fixed width SIMD vectors. More...
 
struct  FixIrreduciblePass
 
struct  FlagEntry
 
class  FlatIt
 Marker class to iterate over the elements of a Region in flat mode. More...
 
struct  FlattenCFGPass
 
class  Float2IntPass
 
struct  FlowBlock
 A wrapper of a binary basic block. More...
 
struct  FlowFunction
 A wrapper of binary function with basic blocks and jumps. More...
 
struct  FlowJump
 A wrapper of a jump between two basic blocks. More...
 
struct  fltSemantics
 
class  FMFSource
 This provides a helper for copying FMF from an instruction or setting specified flags. More...
 
struct  FmtAlign
 Helper class to format to a Width wide field, with alignment Where within that field. More...
 
class  FoldingSet
 FoldingSet - This template class is used to instantiate a specialized implementation of the folding set to the node class T. More...
 
class  FoldingSetBase
 FoldingSetBase - Implements the folding set functionality. More...
 
class  FoldingSetBucketIterator
 
class  FoldingSetBucketIteratorImpl
 FoldingSetBucketIteratorImpl - This is the common bucket iterator support shared by all folding sets, which knows how to walk a particular bucket of a folding set hash table. More...
 
class  FoldingSetImpl
 FoldingSetImpl - An implementation detail that lets us share code between FoldingSet and ContextualFoldingSet. More...
 
class  FoldingSetIterator
 
class  FoldingSetIteratorImpl
 FoldingSetIteratorImpl - This is the common iterator support shared by all folding sets, which knows how to walk the folding set hash table. More...
 
class  FoldingSetNodeID
 FoldingSetNodeID - This class is used to gather all the unique data bits of a node. More...
 
class  FoldingSetNodeIDRef
 FoldingSetNodeIDRef - This class describes a reference to an interned FoldingSetNodeID, which can be a useful to store node id data rather than using plain FoldingSetNodeIDs, since the 32-element SmallVector is often much larger than necessary, and the possibility of heap allocation means it requires a non-trivial destructor call. More...
 
class  FoldingSetNodeWrapper
 FoldingSetNodeWrapper - This template class is used to "wrap" arbitrary types in an enclosing object so that they can be inserted into FoldingSets. More...
 
struct  FoldingSetTrait
 FoldingSetTrait - This trait class is used to define behavior of how to "profile" (in the FoldingSet parlance) an object of a given type. More...
 
struct  FoldingSetTrait< SCEV >
 
struct  FoldingSetTrait< SCEVPredicate >
 
struct  FoldingSetTrait< SDVTListNode >
 Specialize FoldingSetTrait for SDVTListNode to avoid computing temp FoldingSetNodeID and hash value. More...
 
struct  FoldingSetTrait< std::pair< T1, T2 > >
 
struct  FoldingSetTrait< T * >
 
struct  FoldingSetTrait< T, std::enable_if_t< std::is_enum< T >::value > >
 
class  FoldingSetVector
 FoldingSetVector - This template class combines a FoldingSet and a vector to provide the interface of FoldingSet but with deterministic iteration order based on the insertion order. More...
 
class  FoldOpInit
 !foldl (a, b, expr, start, lst) - Fold over a list. More...
 
struct  force_iteration_on_noniterable_enum_t
 
struct  ForceFunctionAttrsPass
 Pass which forces specific function attributes into the IR, primarily as a debugging tool. More...
 
struct  ForeachLoop
 ForeachLoop - Record the iteration state associated with a for loop. More...
 
class  FormalArgHandler
 
class  format_object
 
class  format_object_base
 This is a helper class used for handling formatted output. More...
 
struct  format_provider
 
struct  format_provider< bool >
 Implementation of format_provider<T> for type bool More...
 
struct  format_provider< codeview::GloballyHashedType >
 
struct  format_provider< codeview::GUID >
 
struct  format_provider< codeview::LocallyHashedType >
 
struct  format_provider< codeview::TypeIndex >
 
struct  format_provider< Enum, std::enable_if_t< dwarf::EnumTraits< Enum >::value > >
 Dwarf constants format_provider. More...
 
class  format_provider< llvm::iterator_range< IterT > >
 Implementation of format_provider<T> for ranges. More...
 
struct  format_provider< llvm::json::Value >
 Allow printing json::Value with formatv(). More...
 
struct  format_provider< std::chrono::duration< Rep, Period > >
 Implementation of format_provider<T> for duration types. More...
 
struct  format_provider< sys::TimePoint<> >
 Format provider for TimePoint<> More...
 
struct  format_provider< sys::UtcTime< std::chrono::seconds > >
 
struct  format_provider< T, std::enable_if_t< support::detail::use_char_formatter< T >::value > >
 Implementation of format_provider<T> for characters. More...
 
struct  format_provider< T, std::enable_if_t< support::detail::use_double_formatter< T >::value > >
 Implementation of format_provider<T> for floating point types. More...
 
struct  format_provider< T, std::enable_if_t< support::detail::use_integral_formatter< T >::value > >
 Implementation of format_provider<T> for integral arithmetic types. More...
 
struct  format_provider< T, std::enable_if_t< support::detail::use_pointer_formatter< T >::value > >
 Implementation of format_provider<T> for integral pointer types. More...
 
struct  format_provider< T, std::enable_if_t< support::detail::use_string_formatter< T >::value > >
 Implementation of format_provider<T> for c-style strings and string objects such as std::string and llvm::StringRef. More...
 
struct  format_provider< Twine >
 Implementation of format_provider<T> for llvm::Twine. More...
 
class  FormatAdapter
 
class  formatted_raw_ostream
 formatted_raw_ostream - A raw_ostream that wraps another one and keeps track of line and column position, allowing padding out to specific column boundaries and querying the number of lines written to the stream. More...
 
class  FormattedBytes
 
class  FormattedNumber
 This is a helper class used for format_hex() and format_decimal(). More...
 
class  FormattedString
 This is a helper class for left_justify, right_justify, and center_justify. More...
 
class  formatv_object
 
class  formatv_object_base
 
class  FortifiedLibCallSimplifier
 This class implements simplifications for calls to fortified library functions (__st*cpy_chk, __memcpy_chk, __memmove_chk, __memset_chk), to, when possible, replace them with their non-checking counterparts. More...
 
class  ForwardDominanceFrontierBase
 DominanceFrontier Class - Concrete subclass of DominanceFrontierBase that is used to compute a forward dominator frontiers. More...
 
struct  ForwardedRegister
 Describes a register that needs to be forwarded from the prologue to a musttail call. More...
 
struct  ForwardToPointerCast
 Provides a cast trait that uses a defined pointer to pointer cast as a base for reference-to-reference casts. More...
 
class  FPExtInst
 This class represents an extension of floating point types. More...
 
class  FPMathOperator
 Utility class for floating point operations which can have information about relaxed accuracy requirements attached to them. More...
 
class  FPPassManager
 FPPassManager manages BBPassManagers and FunctionPasses. More...
 
class  FPStateAccessSDNode
 
class  FPToSIInst
 This class represents a cast from floating point to signed integer. More...
 
class  FPToUIInst
 This class represents a cast from floating point to unsigned integer. More...
 
class  FPTruncInst
 This class represents a truncation of floating point types. More...
 
struct  FPValueAndVReg
 
struct  FrameIndexExpr
 Proxy for one MMI entry. More...
 
class  FrameIndexSDNode
 
struct  FreeDeleter
 
class  FreezeInst
 This class represents a freeze function that returns random concrete value if an operand is either a poison value or an undef value. More...
 
struct  FrozenIndPHIInfo
 
class  FullDependence
 FullDependence - This class represents a dependence between two memory references in a function. More...
 
class  FuncDataT
 
class  FuncletPadInst
 
class  Function
 
class  function_ref
 An efficient, type-erasing, non-owning reference to a callable. More...
 
class  function_ref< Ret(Params...)>
 
struct  function_traits
 This class provides various trait information about a callable object. More...
 
struct  function_traits< ReturnType(&)(Args...), false >
 Overload for non-class function type references. More...
 
struct  function_traits< ReturnType(*)(Args...), false >
 Overload for non-class function types. More...
 
struct  function_traits< ReturnType(*const)(Args...), false >
 
struct  function_traits< ReturnType(ClassType::*)(Args...) const, false >
 Overload for class function types. More...
 
struct  function_traits< ReturnType(ClassType::*)(Args...), false >
 Overload for class function types. More...
 
class  FunctionAnalysisManagerCGSCCProxy
 A proxy from a FunctionAnalysisManager to an SCC. More...
 
class  FunctionAnalysisManagerMachineFunctionProxy
 
class  FunctionCallee
 A handy container for a FunctionType+Callee-pointer pair, which can be passed around as a single entity. More...
 
class  FunctionComparator
 FunctionComparator - Compares two functions to determine whether or not they will generate machine code with the same behaviour. More...
 
struct  FunctionHashInfo
 
class  FunctionImporter
 The function importer is automatically importing function from other modules based on the provided summary informations. More...
 
class  FunctionImportGlobalProcessing
 Class to handle necessary GlobalValue changes required by ThinLTO function importing, including linkage changes and any necessary renaming. More...
 
class  FunctionImportPass
 The function importing pass. More...
 
class  FunctionLoweringInfo
 FunctionLoweringInfo - This contains information that is global to a function that is used when lowering a region of the function. More...
 
class  FunctionPass
 FunctionPass class - This class is used to implement most global optimizations. More...
 
struct  FunctionPathAndClusterInfo
 
struct  FunctionPointerLikeTypeTraits
 Provide suitable custom traits struct for function pointers. More...
 
class  FunctionPropertiesAnalysis
 
class  FunctionPropertiesInfo
 
class  FunctionPropertiesPrinterPass
 Printer pass for the FunctionPropertiesAnalysis results. More...
 
class  FunctionPropertiesUpdater
 Correctly update FunctionPropertiesInfo post-inlining. More...
 
class  FunctionSpecializer
 
class  FunctionSummary
 Function summary information to aid decisions and implementation of importing. More...
 
class  FunctionToLoopPassAdaptor
 
class  FunctionToMachineFunctionPassAdaptor
 
class  FunctionType
 Class to represent function types. More...
 
struct  FunctionTypeKeyInfo
 
class  FunctionVarLocs
 Data structure describing the variable locations in a function. More...
 
class  GAdd
 Represents an integer addition. More...
 
class  GAddCarryOut
 Represents overflowing add operations. More...
 
class  GAddSubCarryInOut
 Represents overflowing add/sub operations that also consume a carry-in. More...
 
class  GAddSubCarryOut
 Represents overflowing add/sub operations. More...
 
class  GAnd
 Represents a logical and. More...
 
class  GAnyCmp
 Represent a G_ICMP or G_FCMP. More...
 
class  GAnyExt
 Represents an any ext. More...
 
class  GAnyLoad
 Represents any generic load, including sign/zero extending variants. More...
 
class  GBinOp
 Represents a binary operation, i.e, x = y op z. More...
 
class  GBinOpCarryOut
 Represents overflowing binary operations. More...
 
class  GBuildVector
 Represents a G_BUILD_VECTOR. More...
 
class  GBuildVectorTrunc
 Represents a G_BUILD_VECTOR_TRUNC. More...
 
class  GCastOp
 Represents a cast operation. More...
 
class  GCFunctionAnalysis
 An analysis pass which caches information about the Function. More...
 
class  GCFunctionInfo
 Garbage collection metadata for a single function. More...
 
class  GCLoweringPass
 LowerIntrinsics - This pass rewrites calls to the llvm.gcread or llvm.gcwrite intrinsics, replacing them with simple loads and stores as directed by the GCStrategy. More...
 
class  GCMetadataPrinter
 GCMetadataPrinter - Emits GC metadata as assembly code. More...
 
class  GCModuleInfo
 An analysis pass which caches information about the entire Module. More...
 
class  GCNDownwardRPTracker
 
class  GCNDPPCombinePass
 
class  GCNHazardRecognizer
 
class  GCNIterativeScheduler
 
class  GCNMaxILPSchedStrategy
 The goal of this scheduling strategy is to maximize ILP for a single wave (i.e. More...
 
class  GCNMaxMemoryClauseSchedStrategy
 The goal of this scheduling strategy is to maximize memory clause for a single wave. More...
 
class  GCNMaxOccupancySchedStrategy
 The goal of this scheduling strategy is to maximize kernel occupancy (i.e. More...
 
class  GCNPostScheduleDAGMILive
 
struct  GCNRegPressure
 
struct  GCNRegPressurePrinter
 
class  GCNRPTracker
 
class  GCNSchedStage
 
class  GCNSchedStrategy
 This is a minimal scheduler strategy. More...
 
class  GCNScheduleDAGMILive
 
class  GCNSubtarget
 
class  GCNTargetMachine
 
class  GCNTTIImpl
 
class  GCNUpwardRPTracker
 
class  GCNUserSGPRUsageInfo
 
class  GConcatVectors
 Represents a G_CONCAT_VECTORS. More...
 
struct  GCOVArc
 
class  GCOVBlock
 GCOVBlock - Collects block information. More...
 
class  GCOVBuffer
 GCOVBuffer - A wrapper around MemoryBuffer to provide GCOV specific read operations. More...
 
class  GCOVFile
 GCOVFile - Collects coverage information for one pair of coverage file (.gcno and .gcda). More...
 
class  GCOVFunction
 GCOVFunction - Collects function information. More...
 
struct  GCOVOptions
 
class  GCOVProfilerPass
 The gcov-style instrumentation pass. More...
 
struct  GCPoint
 GCPoint - Metadata for a collector-safe point in machine code. More...
 
class  GCProjectionInst
 Common base class for representing values projected from a statepoint. More...
 
class  GCRelocateInst
 Represents calls to the gc.relocate intrinsic. More...
 
class  GCResultInst
 Represents calls to the gc.result intrinsic. More...
 
struct  GCRoot
 GCRoot - Metadata for a pointer to an object managed by the garbage collector. More...
 
class  GCStatepointInst
 Represents a gc.statepoint intrinsic call. More...
 
class  GCStrategy
 GCStrategy describes a garbage collector algorithm's code generation requirements, and provides overridable hooks for those needs which cannot be abstractly described. More...
 
struct  GCStrategyMap
 
class  generic_gep_type_iterator
 
class  GenericConvergenceVerifier
 
class  GenericCycle
 A possibly irreducible generalization of a Loop. More...
 
class  GenericCycleInfo
 Cycle information for a function. More...
 
class  GenericCycleInfoCompute
 Helper class for computing cycle information. More...
 
class  GenericDINode
 Generic tagged DWARF-like metadata node. More...
 
class  GenericDomTreeUpdater
 
class  GenericMachineInstr
 A base class for all GenericMachineInstrs. More...
 
class  GenericScheduler
 GenericScheduler shrinks the unscheduled zone using heuristics to balance the schedule. More...
 
class  GenericSchedulerBase
 Base class for GenericScheduler. More...
 
class  GenericSSAContext
 
struct  GenericSSATraits
 
struct  GenericSSATraits< Function >
 
struct  GenericSSATraits< MachineFunction >
 
class  GenericSyncDependenceAnalysis
 Locate join blocks for disjoint paths starting at a divergent branch. More...
 
struct  GenericToNVVMPass
 
class  GenericUniformityAnalysisImpl
 Analysis that identifies uniform values in a data-parallel execution. More...
 
struct  GenericUniformityAnalysisImplDeleter
 
class  GenericUniformityInfo
 
struct  GenericValue
 
class  GEPNoWrapFlags
 Represents flags for the getelementptr instruction/expression. More...
 
class  GEPOperator
 
class  GetElementPtrConstantExpr
 GetElementPtrConstantExpr - This class is private to Constants.cpp, and is used behind the scenes to implement getelementptr constant exprs. More...
 
class  GetElementPtrInst
 an instruction for type-safe pointer arithmetic to access elements of arrays and structs More...
 
class  GExtLoad
 Represents either a G_SEXTLOAD or G_ZEXTLOAD. More...
 
class  GExtOp
 Represents an integer-like extending operation. More...
 
class  GExtOrTruncOp
 Represents an integer-like extending or truncating operation. More...
 
class  GExtractSubvector
 Represents an extract subvector. More...
 
class  GExtractVectorElement
 Represents an extract vector element. More...
 
class  GFBinOp
 Represents a floating point binary operation. More...
 
class  GFCmp
 Represent a G_FCMP. More...
 
class  GFConstant
 An floating-point-like constant. More...
 
class  GFreeze
 Represents a freeze. More...
 
class  GICmp
 Represent a G_ICMP. More...
 
class  GIConstant
 An integer-like constant. More...
 
class  GIMatchTableExecutor
 Provides the logic to execute GlobalISel match tables, which are used by the instruction selector and instruction combiners as their engine to match and apply MIR patterns. More...
 
class  GImplicitDef
 Represents a G_IMPLICIT_DEF. More...
 
class  GIndexedAnyExtLoad
 Represents either G_INDEXED_LOAD, G_INDEXED_ZEXTLOAD or G_INDEXED_SEXTLOAD. More...
 
class  GIndexedExtLoad
 Represents a G_INDEX_ZEXTLOAD/G_INDEXED_SEXTLOAD. More...
 
class  GIndexedLoad
 Represents indexed loads. More...
 
class  GIndexedSExtLoad
 Represents a G_SEXTLOAD. More...
 
class  GIndexedStore
 Represents indexed stores. More...
 
class  GIndexedZExtLoad
 Represents a G_ZEXTLOAD. More...
 
class  GInsertSubvector
 Represents a insert subvector. More...
 
class  GInsertVectorElement
 Represents an insert vector element. More...
 
class  GIntBinOp
 Represents an integer binary operation. More...
 
class  GIntrinsic
 Represents a call to an intrinsic. More...
 
class  GISelChangeObserver
 Abstract class that contains various methods for clients to notify about changes. More...
 
class  GISelCSEAnalysisWrapper
 Simple wrapper that does the following. More...
 
class  GISelCSEAnalysisWrapperPass
 The actual analysis pass wrapper. More...
 
class  GISelCSEInfo
 The CSE Analysis object. More...
 
class  GISelInstProfileBuilder
 
class  GISelKnownBits
 
class  GISelKnownBitsAnalysis
 To use KnownBitsInfo analysis in a pass, KnownBitsInfo &Info = getAnalysis<GISelKnownBitsInfoAnalysis>().get(MF); Add to observer if the Info is caching. More...
 
class  GISelObserverWrapper
 Simple wrapper observer that takes several observers, and calls each one for each event. More...
 
class  GISelWorkList
 
class  GLoad
 Represents a G_LOAD. More...
 
class  GLoadStore
 Represents any type of generic load or store. More...
 
class  GlobalAddressSDNode
 
class  GlobalAlias
 
class  GlobalDCEPass
 Pass to remove unused function declarations. More...
 
class  GlobalIFunc
 
class  GlobalMergeFunc
 GlobalMergeFunc is a ModulePass that implements a function merging mechanism using stable function hashes. More...
 
struct  GlobalMergeFuncPass
 Global function merging pass for new pass manager. More...
 
struct  GlobalMergeOptions
 
class  GlobalMergePass
 
class  GlobalNumberState
 GlobalNumberState assigns an integer to each global value in the program, which is used by the comparison routine to order references to globals. More...
 
class  GlobalObject
 
class  GlobalOptPass
 Optimize globals that never have their address taken. More...
 
class  GlobalsAA
 Analysis pass providing a never-invalidated alias analysis result. More...
 
class  GlobalsAAResult
 An alias analysis result set for globals. More...
 
class  GlobalsAAWrapperPass
 Legacy wrapper pass to provide the GlobalsAAResult object. More...
 
class  GlobalSplitPass
 Pass to perform split of global variables. More...
 
struct  GlobalStatus
 As we analyze each global or thread-local variable, keep track of some information about it. More...
 
class  GlobalValue
 
class  GlobalValuePseudoSourceValue
 A specialized pseudo source value for holding GlobalValue values. More...
 
class  GlobalValueSummary
 Function and variable summary information to aid decisions and implementation of importing. More...
 
struct  GlobalValueSummaryInfo
 
class  GlobalVariable
 
class  GlobalVarSummary
 Global variable summary information to aid decisions and implementation of importing. More...
 
class  GlobPattern
 This class implements a glob pattern matcher similar to the one found in bash, but with some key differences. More...
 
class  GLogicalBinOp
 Represents a logical binary operation. More...
 
class  GMemOperation
 Provides common memory operand functionality. More...
 
class  GMerge
 Represents a G_MERGE_VALUES. More...
 
class  GMergeLikeInstr
 Represents G_BUILD_VECTOR, G_CONCAT_VECTORS or G_MERGE_VALUES. More...
 
class  GMul
 Represents an integer multiplication. More...
 
class  GOr
 Represents a logical or. More...
 
class  GPhi
 Represents a G_PHI. More...
 
class  GPtrAdd
 Represents a G_PTR_ADD. More...
 
class  GraphDiff
 
struct  GraphTraits
 
struct  GraphTraits< AACallGraphNode * >
 
struct  GraphTraits< AADepGraph * >
 
struct  GraphTraits< AADepGraphNode * >
 
struct  GraphTraits< ArgumentGraph * >
 
struct  GraphTraits< ArgumentGraphNode * >
 
struct  GraphTraits< AttributorCallGraph * >
 
struct  GraphTraits< BasicBlock * >
 
struct  GraphTraits< BlockFrequencyInfo * >
 
struct  GraphTraits< BoUpSLP * >
 
struct  GraphTraits< CallGraph * >
 
struct  GraphTraits< CallGraphDOTInfo * >
 
struct  GraphTraits< CallGraphNode * >
 
struct  GraphTraits< const BasicBlock * >
 
struct  GraphTraits< const CallGraph * >
 
struct  GraphTraits< const CallGraphNode * >
 
struct  GraphTraits< const DataDependenceGraph * >
 
struct  GraphTraits< const DDGNode * >
 const versions of the grapth trait specializations for DDG More...
 
struct  GraphTraits< const DomTreeNode * >
 
struct  GraphTraits< const Function * >
 
struct  GraphTraits< const GenericCycle< BlockT > * >
 
struct  GraphTraits< const Loop * >
 
struct  GraphTraits< const MachineBasicBlock * >
 
struct  GraphTraits< const MachineDomTreeNode * >
 
struct  GraphTraits< const MachineFunction * >
 
struct  GraphTraits< const MachineLoop * >
 
struct  GraphTraits< const VPBlockBase * >
 
struct  GraphTraits< const VPDomTreeNode * >
 
struct  GraphTraits< DataDependenceGraph * >
 
struct  GraphTraits< DDGNode * >
 non-const versions of the grapth trait specializations for DDG More...
 
struct  GraphTraits< DominatorTree * >
 
struct  GraphTraits< DomTreeNode * >
 
struct  GraphTraits< DotCfgDiffDisplayGraph * >
 
struct  GraphTraits< DotFuncBCIInfo * >
 
struct  GraphTraits< DOTFuncInfo * >
 
struct  GraphTraits< DOTFuncMSSAInfo * >
 
struct  GraphTraits< DOTMachineFuncInfo * >
 
struct  GraphTraits< Function * >
 
struct  GraphTraits< GenericCycle< BlockT > * >
 
struct  GraphTraits< ImmutableGraph< NodeValueT, EdgeValueT > * >
 
struct  GraphTraits< Inverse< BasicBlock * > >
 
struct  GraphTraits< Inverse< const BasicBlock * > >
 
struct  GraphTraits< Inverse< const Function * > >
 
struct  GraphTraits< Inverse< const MachineBasicBlock * > >
 
struct  GraphTraits< Inverse< const MachineFunction * > >
 
struct  GraphTraits< Inverse< Function * > >
 
struct  GraphTraits< Inverse< Inverse< T > > >
 
struct  GraphTraits< Inverse< MachineBasicBlock * > >
 
struct  GraphTraits< Inverse< MachineFunction * > >
 
struct  GraphTraits< Inverse< MemoryAccess * > >
 
struct  GraphTraits< Inverse< VPBlockBase * > >
 Inverse graph traits are not implemented yet. More...
 
struct  GraphTraits< IrreducibleGraph >
 
struct  GraphTraits< LazyCallGraph * >
 
struct  GraphTraits< LazyCallGraph::Node * >
 
struct  GraphTraits< Loop * >
 
struct  GraphTraits< MachineBasicBlock * >
 
struct  GraphTraits< MachineBlockFrequencyInfo * >
 
struct  GraphTraits< MachineDominatorTree * >
 
struct  GraphTraits< MachineDomTreeNode * >
 
struct  GraphTraits< MachineFunction * >
 
struct  GraphTraits< MachineGadgetGraph * >
 
struct  GraphTraits< MachineLoop * >
 
struct  GraphTraits< MachineRegionInfo * >
 
struct  GraphTraits< MachineRegionInfoPass * >
 
struct  GraphTraits< MemoryAccess * >
 GraphTraits for a MemoryAccess, which walks defs in the normal case, and uses in the inverse case. More...
 
struct  GraphTraits< ModuleSummaryIndex * >
 
struct  GraphTraits< PGOUseFunc * >
 
struct  GraphTraits< PostDominatorTree * >
 
struct  GraphTraits< ProfiledCallGraph * >
 
struct  GraphTraits< ProfiledCallGraphNode * >
 
struct  GraphTraits< RegionInfo * >
 
struct  GraphTraits< RegionInfoPass * >
 
struct  GraphTraits< RematGraph * >
 
struct  GraphTraits< ScheduleDAG * >
 
struct  GraphTraits< ScheduleDAGMI * >
 
struct  GraphTraits< SDNode * >
 
struct  GraphTraits< SelectionDAG * >
 
struct  GraphTraits< SplitGraph >
 
struct  GraphTraits< SUnit * >
 
struct  GraphTraits< ValueInfo >
 GraphTraits definition to build SCC for the index. More...
 
struct  GraphTraits< VPBlockBase * >
 
struct  GraphTraits< VPBlockDeepTraversalWrapper< const VPBlockBase * > >
 
struct  GraphTraits< VPBlockDeepTraversalWrapper< VPBlockBase * > >
 GraphTraits specialization to recursively traverse VPBlockBase nodes, including traversing through VPRegionBlocks. More...
 
struct  GraphTraits< VPBlockShallowTraversalWrapper< const VPBlockBase * > >
 
struct  GraphTraits< VPBlockShallowTraversalWrapper< VPBlockBase * > >
 
struct  GraphTraits< VPDomTreeNode * >
 Template specializations of GraphTraits for VPDomTreeNode. More...
 
struct  GraphTraits< VPlan * >
 
class  GraphWriter
 
class  GSelect
 Represents a G_SELECT. More...
 
class  GSext
 Represents a sext. More...
 
class  GSExtLoad
 Represents a G_SEXTLOAD. More...
 
class  GShl
 Represents a shift left. More...
 
class  GShuffleVector
 Represents a G_SHUFFLE_VECTOR. More...
 
class  GSplatVector
 Represents a splat vector. More...
 
class  GStepVector
 Represents a step vector. More...
 
class  GStore
 Represents a G_STORE. More...
 
class  GSub
 Represents an integer subtraction. More...
 
class  GSubCarryOut
 Represents overflowing sub operations. More...
 
class  GSUCmp
 Represents a threeway compare. More...
 
class  GTrunc
 Represents a trunc. More...
 
struct  GuardWideningPass
 
class  GUIDProbeFunctionMap
 
class  GUnmerge
 Represents a G_UNMERGE_VALUES. More...
 
class  GVecReduce
 
class  GVMaterializer
 
class  GVNHoist
 
struct  GVNHoistPass
 A simple and fast domtree-based GVN pass to hoist common expressions from sibling branches. More...
 
struct  GVNOptions
 A set of parameters to control various transforms performed by GVN pass. More...
 
class  GVNPass
 The core GVN pass object. More...
 
struct  GVNSinkPass
 Uses an "inverted" value numbering to decide the similarity of expressions and sinks similar expressions into successors. More...
 
class  GVScale
 Represents a vscale. More...
 
class  GZext
 Represents a zext. More...
 
class  GZExtLoad
 Represents a G_ZEXTLOAD. More...
 
class  HandleSDNode
 This class is used to form a handle around another node that is persistent and is updated across invocations of replaceAllUsesWith on its operand. More...
 
struct  HardwareLoopInfo
 Attributes of a target dependent hardware loop. More...
 
struct  HardwareLoopOptions
 
class  HardwareLoopsPass
 
class  hash_code
 An opaque object representing a hash code. More...
 
class  HashBuilder
 Interface to help hash various types through a hasher type. More...
 
class  HashBuilderBase
 Declares the hasher member, and functions forwarding directly to the hasher. More...
 
class  HashingByteStreamer
 
struct  HashNode
 A HashNode is an entry in an OutlinedHashTree, holding a hash value and a collection of Successors (other HashNodes). More...
 
struct  HashNodeStable
 HashNodeStable is the serialized, stable, and compact representation of a HashNode. More...
 
class  HasReferenceResolver
 Do not resolve anything, but keep track of whether a given variable was referenced. More...
 
class  HelloWorldPass
 
class  HexagonAsmPrinter
 
class  HexagonAttributeParser
 
struct  HexagonBlockRanges
 
class  HexagonConvergingVLIWScheduler
 
class  HexagonCVIResource
 
class  HexagonDAGToDAGISel
 
class  HexagonDAGToDAGISelLegacy
 
struct  HexagonEvaluator
 
class  HexagonFrameLowering
 
class  HexagonHazardRecognizer
 
class  HexagonInstPrinter
 Prints bundles as a newline separated list of individual instructions Duplexes are separated by a vertical tab \v character A trailing line includes bundle properties such as endloop0/1. More...
 
class  HexagonInstr
 
class  HexagonInstrInfo
 
struct  HexagonLoopIdiomRecognitionPass
 
class  HexagonMachineFunctionInfo
 Hexagon target-specific information for each MachineFunction. More...
 
class  HexagonMask
 
class  HexagonMCAsmInfo
 
class  HexagonMCChecker
 Check for a valid bundle. More...
 
class  HexagonMCCodeEmitter
 
class  HexagonMCELFStreamer
 
class  HexagonMCExpr
 
class  HexagonMCShuffler
 
class  HexagonPacketizerList
 
class  HexagonRegisterInfo
 
class  HexagonResource
 
class  HexagonSelectionDAGInfo
 
class  HexagonShuffler
 
class  HexagonSubtarget
 
class  HexagonTargetLowering
 
class  HexagonTargetMachine
 
class  HexagonTargetObjectFile
 
class  HexagonTargetStreamer
 
class  HexagonTTIImpl
 
struct  HexagonVectorLoopCarriedReusePass
 Hexagon Vector Loop Carried Reuse Pass. More...
 
class  HexagonVLIWResourceModel
 
struct  HexNumber
 
class  HipStdParAcceleratorCodeSelectionPass
 
class  HipStdParAllocationInterpositionPass
 
struct  HistogramInfo
 This holds details about a histogram operation – a load -> update -> store sequence where each lane in a vector might be updating the same element as another lane. More...
 
class  HotColdSplitting
 
class  HotColdSplittingPass
 Pass to outline cold regions. More...
 
class  HTTPClient
 A reusable client that can perform HTTPRequests through a network socket. More...
 
struct  HTTPRequest
 A stateless description of an outbound HTTP request. More...
 
struct  HTTPResponse
 
class  HTTPResponseHandler
 A handler for state updates occurring while an HTTPRequest is performed. More...
 
class  HTTPServer
 An HTTP server which can listen on a single TCP/IP port for HTTP requests and delgate them to the appropriate registered handler. More...
 
class  HTTPServerError
 
class  HTTPServerRequest
 
struct  HungoffOperandTraits
 HungoffOperandTraits - determine the allocation regime of the Use array when it is not a prefix to the User object, but allocated at an unrelated heap address. More...
 
struct  HvxSelector
 
struct  HWAddressSanitizerOptions
 
class  HWAddressSanitizerPass
 This is a public interface to the hardware address sanitizer pass for instrumenting code to check for various memory errors at runtime, similar to AddressSanitizer but based on partial hardware assistance. More...
 
class  ICallPromotionAnalysis
 
class  ICFLoopSafetyInfo
 This implementation of LoopSafetyInfo use ImplicitControlFlowTracking to give precise answers on "may throw" queries. More...
 
class  ICmpInst
 This instruction compares its operands according to the predicate given to the constructor. More...
 
class  IdentifyingPassPtr
 Discriminated union of Pass ID types. More...
 
struct  identity
 
struct  idf_ext_iterator
 
struct  idf_iterator
 
class  IDFCalculator
 
class  IDFCalculatorBase
 Determine the iterated dominance frontier, given a set of defining blocks, and optionally, a set of live-in blocks. More...
 
struct  ilist_alloc_traits
 Use delete by default for iplist and ilist. More...
 
struct  ilist_alloc_traits< Instruction >
 
struct  ilist_alloc_traits< MachineBasicBlock >
 
struct  ilist_alloc_traits< MemoryAccess >
 
struct  ilist_alloc_traits< SDNode >
 
class  ilist_base
 Implementations of list algorithms using ilist_node_base. More...
 
struct  ilist_callback_traits
 Callbacks do nothing by default in iplist and ilist. More...
 
struct  ilist_callback_traits< MachineBasicBlock >
 
class  ilist_iterator
 Iterator for intrusive lists based on ilist_node. More...
 
struct  ilist_iterator_bits
 Option to add extra bits to the ilist_iterator. More...
 
class  ilist_iterator_w_bits
 Iterator for intrusive lists based on ilist_node. More...
 
struct  ilist_noalloc_traits
 Custom traits to do nothing on deletion. More...
 
class  ilist_node
 
class  ilist_node_base
 Base class for ilist nodes. More...
 
class  ilist_node_impl
 Implementation for an ilist node. More...
 
struct  ilist_node_traits
 A fragment for template traits for intrusive list that provides default node related operations. More...
 
class  ilist_node_with_parent
 An ilist node that can access its parent list. More...
 
struct  ilist_parent
 Option to add a pointer to this list's owner in every node. More...
 
class  ilist_select_iterator_type
 
class  ilist_select_iterator_type< true, Opts, arg1, arg2 >
 
class  ilist_sentinel
 
struct  ilist_sentinel_tracking
 Option to choose whether to track sentinels. More...
 
struct  ilist_tag
 Option to specify a tag for the node type. More...
 
struct  ilist_traits
 Template traits for intrusive list. More...
 
struct  ilist_traits< const Ty >
 Const traits should never be instantiated. More...
 
struct  ilist_traits< MachineInstr >
 
class  ILPInitialScheduleStage
 
struct  ILPValue
 Represent the ILP of the subDAG rooted at a DAG node. More...
 
struct  ImmInstrInfo
 
class  ImmutableGraph
 
class  ImmutableGraphBuilder
 
class  ImmutableList
 ImmutableList - This class represents an immutable (functional) list. More...
 
class  ImmutableListFactory
 
class  ImmutableListImpl
 
class  ImmutableMap
 
class  ImmutableMapRef
 
class  ImmutableModuleSummaryIndexWrapperPass
 Legacy wrapper pass to provide the ModuleSummaryIndex object. More...
 
class  ImmutablePass
 ImmutablePass class - This class is used to provide information that does not need to be run. More...
 
class  ImmutableSet
 
class  ImmutableSetRef
 
class  ImplicitControlFlowTracking
 This class allows to keep track on instructions with implicit control flow. More...
 
class  ImportedFunctionsInliningStatistics
 Calculate and dump ThinLTO specific inliner stats. More...
 
class  ImutAVLFactory
 
class  ImutAVLTree
 
class  ImutAVLTreeGenericIterator
 
class  ImutAVLTreeInOrderIterator
 
struct  ImutAVLValueIterator
 Generic iterator that wraps a T::TreeTy::iterator and exposes iterator::getValue() on dereference. More...
 
struct  ImutContainerInfo
 ImutContainerInfo - Generic definition of comparison operations for elements of immutable containers that defaults to using std::equal_to<> and std::less<> to perform comparison of elements. More...
 
struct  ImutContainerInfo< T * >
 ImutContainerInfo - Specialization for pointer values to treat pointers as references to unique objects. More...
 
class  ImutIntervalAVLFactory
 
struct  ImutKeyValueInfo
 ImutKeyValueInfo -Traits class used by ImmutableMap. More...
 
struct  ImutProfileInfo
 Generic profile template. More...
 
struct  ImutProfileInfo< bool >
 Profile traits for booleans. More...
 
struct  ImutProfileInfo< T * >
 Generic profile trait for pointer types. More...
 
struct  ImutProfileInteger
 Profile traits for integers. More...
 
struct  IncIntegerState
 Specialization of the integer state for an increasing value, hence ~0u is the best state and 0 the worst. More...
 
struct  Incoming
 Incoming for lane maks phi as machine instruction, incoming register Reg and incoming block Block are taken from machine instruction. More...
 
struct  indent
 
class  index_range
 Increasing range of size_t indices. More...
 
class  indexed_accessor_iterator
 A utility class used to implement an iterator that contains some base object and an index. More...
 
class  indexed_accessor_range
 This class provides an implementation of a range of indexed_accessor_iterators where the base is not indexable. More...
 
class  IndexedCodeGenDataReader
 
class  IndexedInstrProfReader
 Reader for the indexed binary instrprof format. More...
 
struct  IndexedLoadStoreMatchInfo
 
class  IndexedMap
 
class  IndexedMemProfReader
 
class  IndexedReference
 Represents a memory reference as a base pointer and a set of indexing operations. More...
 
class  IndexListEntry
 This class represents an entry in the slot index list held in the SlotIndexes pass. More...
 
class  IndirectBrExpandPass
 
class  IndirectBrInst
 Indirect Branch Instruction. More...
 
class  InductionDescriptor
 A struct for saving information about induction variables. More...
 
class  IndVarSimplifyPass
 
struct  InferAddressSpacesPass
 
struct  InferAlignmentPass
 
struct  InferFunctionAttrsPass
 A pass which infers function attributes from the names and signatures of function declarations in a module. More...
 
struct  InformationCache
 Data structure to hold cached (LLVM-IR) information. More...
 
struct  InfoSectionUnitHeader
 
class  Init
 
class  InitLLVM
 
class  InjectorIRStrategy
 Strategy that injects operations into the function. More...
 
class  InjectTLIMappings
 
class  InlineAdvice
 Capture state between an inlining decision having had been made, and its impact being observable. More...
 
class  InlineAdvisor
 Interface for deciding whether to inline a call site or not. More...
 
class  InlineAdvisorAnalysis
 The InlineAdvisorAnalysis is a module pass because the InlineAdvisor needs to capture state right before inlining commences over a module. More...
 
class  InlineAdvisorAnalysisPrinterPass
 Printer pass for the InlineAdvisorAnalysis results. More...
 
class  InlineAsm
 
struct  InlineAsmIdentifierInfo
 
struct  InlineAsmKeyType
 
class  InlineAsmLowering
 
class  InLineChangePrinter
 
struct  InlineContext
 Provides context on when an inline advisor is constructed in the pipeline (e.g., link phase, inline driver). More...
 
class  InlineCost
 Represents the cost of inlining a function. More...
 
struct  InlineCostAnnotationPrinterPass
 
class  InlineFunctionInfo
 This class captures the data input to the InlineFunction call, and records the auxiliary results produced by it. More...
 
class  InlineOrder
 
struct  InlineParams
 Thresholds to tune inline cost analysis. More...
 
class  InlineResult
 InlineResult is basically true or false. More...
 
class  InlinerPass
 The inliner pass for the new pass manager. More...
 
struct  InlineSiteHash
 
class  InlineSizeEstimatorAnalysis
 
class  InlineSizeEstimatorAnalysisPrinterPass
 
class  InnerAnalysisManagerProxy
 An analysis over an "outer" IR unit that provides access to an analysis manager over an "inner" IR unit. More...
 
class  InnerLoopAndEpilogueVectorizer
 An extension of the inner loop vectorizer that creates a skeleton for a vectorized loop that has its epilogue (residual) also vectorized. More...
 
class  InnerLoopVectorizer
 InnerLoopVectorizer vectorizes loops which contain only one basic block to a specified vectorization factor (VF). More...
 
class  InsertCFGStrategy
 Strategy to split a random block and insert a random CFG in between. More...
 
class  InsertElementConstantExpr
 InsertElementConstantExpr - This class is private to Constants.cpp, and is used behind the scenes to implement insertelement constant exprs. More...
 
class  InsertElementInst
 This instruction inserts a single (scalar) element into a VectorType value. More...
 
class  InsertFunctionStrategy
 Strategy that generates new function calls and inserts function signatures to the modules. More...
 
class  InsertNOPLoad
 
class  InsertPHIStrategy
 Strategy to insert PHI Nodes at the head of each basic block. More...
 
class  InsertPointAnalysis
 Determines the latest safe point in a block in which we can insert a split, spill or other instruction related with CurLI. More...
 
class  InsertPosition
 
class  InsertValueInst
 This instruction inserts a struct field of array element value into an aggregate value. More...
 
class  InsnInfo
 
struct  InstCombineOptions
 
class  InstCombinePass
 
class  InstCombiner
 The core instruction combiner logic. More...
 
class  InstCombinerImpl
 
class  InstCostVisitor
 
struct  InstCountPass
 
class  InstDeleterIRStrategy
 Strategy that deletes instructions when the Module is too large. More...
 
class  InstIterator
 
class  InstModificationIRStrategy
 Strategy that modifies instruction attributes and operands. More...
 
struct  InstrAspect
 Legalization is decided based on an instruction's opcode, which type slot we're considering, and what the existing type is. More...
 
class  InstrEmitter
 
struct  InstrInfoQuery
 InstrInfoQuery provides an interface to query additional information for instructions like metadata or keywords like nsw, which provides conservative results if the users specified it is safe to use. More...
 
struct  InstrItinerary
 An itinerary represents the scheduling information for an instruction. More...
 
class  InstrItineraryData
 Itinerary data supplied by a subtarget to be used by a target. More...
 
class  InstrOrderFilePass
 The instrumentation pass for recording function order. More...
 
class  InstrProfCallsite
 This represents the llvm.instrprof.callsite intrinsic. More...
 
class  InstrProfCntrInstBase
 A base class for all instrprof counter intrinsics. More...
 
class  InstrProfCorrelator
 InstrProfCorrelator - A base class used to create raw instrumentation data to their functions. More...
 
class  InstrProfCorrelatorImpl
 InstrProfCorrelatorImpl - A child of InstrProfCorrelator with a template pointer type so that the ProfileData vector can be materialized. More...
 
class  InstrProfCoverInst
 This represents the llvm.instrprof.cover intrinsic. More...
 
class  InstrProfError
 
class  InstrProfilingLoweringPass
 Instrumentation based profiling lowering pass. More...
 
class  InstrProfIncrementInst
 This represents the llvm.instrprof.increment intrinsic. More...
 
class  InstrProfIncrementInstStep
 This represents the llvm.instrprof.increment.step intrinsic. More...
 
class  InstrProfInstBase
 A base class for all instrprof intrinsics. More...
 
class  InstrProfIterator
 A file format agnostic iterator over profiling data. More...
 
class  InstrProfLookupTrait
 Trait for lookups into the on-disk hash table for the binary instrprof format. More...
 
class  InstrProfMCDCBitmapInstBase
 A base class for instrprof mcdc intrinsics that require global bitmap bytes. More...
 
class  InstrProfMCDCBitmapParameters
 This represents the llvm.instrprof.mcdc.parameters intrinsic. More...
 
class  InstrProfMCDCTVBitmapUpdate
 This represents the llvm.instrprof.mcdc.tvbitmap.update intrinsic. More...
 
struct  InstrProfOptions
 Options for the frontend instrumentation based profiling pass. More...
 
class  InstrProfReader
 Base class and interface for reading profiling data of any known instrprof format. More...
 
class  InstrProfReaderIndex
 
struct  InstrProfReaderIndexBase
 
class  InstrProfReaderItaniumRemapper
 A remapper that applies remappings based on a symbol remapping file. More...
 
class  InstrProfReaderRemapper
 Name matcher supporting fuzzy matching of symbol names to names in profiles. More...
 
struct  InstrProfRecord
 Profiling information for a single function. More...
 
class  InstrProfRecordWriterTrait
 
class  InstrProfSummaryBuilder
 
class  InstrProfSymtab
 A symbol table used for function [IR]PGO name look-up with keys (such as pointers, md5hash values) to the function. More...
 
class  InstrProfTimestampInst
 This represents the llvm.instrprof.timestamp intrinsic. More...
 
class  InstrProfValueProfileInst
 This represents the llvm.instrprof.value.profile intrinsic. More...
 
struct  InstrProfValueSiteRecord
 
class  InstrProfWriter
 
struct  InstrStage
 These values represent a non-pipelined step in the execution of an instruction. More...
 
class  Instruction
 
struct  InstructionBuildSteps
 
class  InstructionCombiningPass
 The legacy pass manager's instcombine pass. More...
 
class  InstructionCost
 
struct  InstructionNamerPass
 
class  InstructionOrdering
 Record instruction ordering so we can query their relative positions within a function. More...
 
class  InstructionPrecedenceTracking
 
class  InstructionSelect
 This pass is responsible for selecting generic machine instructions to target-specific instructions. More...
 
class  InstructionSelector
 
struct  InstructionStepsMatchInfo
 
class  InstructionWorklist
 InstructionWorklist - This is the worklist management logic for InstCombine and other simplification passes. More...
 
struct  InstrumentationIRBuilder
 
class  InstSimplifyFolder
 InstSimplifyFolder - Use InstructionSimplify to fold operations to existing values. More...
 
class  InstSimplifyPass
 Run instruction simplification across each instruction in the function. More...
 
class  InstVisitor
 Base class for instruction visitors. More...
 
class  IntAttributeImpl
 
struct  IntegerRangeState
 State for an integer range. More...
 
struct  IntegerStateBase
 Simple state with integers encoding. More...
 
class  IntegerType
 Class to represent integer types. More...
 
struct  IntelExpr
 
class  IntelJITEventsWrapper
 
class  IntEqClasses
 
class  InteractiveModelRunner
 A MLModelRunner that asks for advice from an external agent, or host. More...
 
class  InterestingMemoryOperand
 
class  InterferenceCache
 
class  InterleavedAccessInfo
 Drive the analysis of interleaved memory accesses in the loop. More...
 
class  InterleavedAccessPass
 
class  InterleavedLoadCombinePass
 
class  InterleaveGroup
 The group of interleaved loads/stores sharing the same stride and close to each other. More...
 
class  InternalizePass
 A pass that internalizes all functions and variables other than those that must be preserved according to MustPreserveGV. More...
 
class  Interpreter
 
class  IntervalData
 An interval data composed by a Left and Right points and an associated Value. More...
 
class  IntervalMap
 
struct  IntervalMapHalfOpenInfo
 
struct  IntervalMapInfo
 
struct  IntervalMapInfo< SlotIndex >
 
class  IntervalMapOverlaps
 IntervalMapOverlaps - Iterate over the overlaps of mapped intervals in two IntervalMaps. More...
 
struct  IntervalPressure
 RegisterPressure computed within a region of instructions delimited by TopIdx and BottomIdx. More...
 
class  IntervalTree
 
class  IntInit
 '7' - Represent an initialization by a literal integer value. More...
 
class  IntRecTy
 'int' - Represent an integer value of no particular size More...
 
class  IntrinsicCostAttributes
 
struct  IntrinsicData
 
class  IntrinsicInst
 A wrapper class for inspecting calls to intrinsic functions. More...
 
class  IntrinsicLowering
 
class  IntrusiveBackList
 
struct  IntrusiveBackListBase
 
struct  IntrusiveBackListNode
 
class  IntrusiveRefCntPtr
 A smart pointer to a reference-counted object that inherits from RefCountedBase or ThreadSafeRefCountedBase. More...
 
struct  IntrusiveRefCntPtrInfo
 Class you can specialize to provide custom retain/release functionality for a type. More...
 
struct  IntrusiveRefCntPtrInfo< ImutAVLTree< ImutInfo > >
 
class  IntToPtrInst
 This class represents a cast from an integer to a pointer. More...
 
struct  InvalidateAllAnalysesPass
 A utility pass that does nothing, but preserves no analyses. More...
 
struct  InvalidateAnalysisPass
 A no-op pass template which simply forces a specific analysis result to be invalidated. More...
 
struct  Inverse
 
class  InvokeInst
 Invoke instruction. More...
 
struct  iota_range
 
class  iplist
 An intrusive list with ownership and callbacks specified/controlled by ilist_traits, only with API safe for polymorphic types. More...
 
class  iplist_impl
 A wrapper around an intrusive list with callbacks and non-intrusive ownership. More...
 
struct  ipo_ext_iterator
 
struct  ipo_iterator
 
struct  IPSCCPOptions
 A set of parameters to control various transforms performed by IPSCCP pass. More...
 
class  IPSCCPPass
 Pass to perform interprocedural constant propagation. More...
 
struct  IRAttribute
 Helper class that provides common functionality to manifest IR attributes. More...
 
class  IRBuilder
 This provides a uniform API for creating instructions and inserting them into a basic block: either at the end of a BasicBlock, or at a specific iterator location in a block. More...
 
class  IRBuilderBase
 Common base class shared among various IRBuilders. More...
 
class  IRBuilderCallbackInserter
 Provides an 'InsertHelper' that calls a user-provided callback after performing the default insertion. More...
 
class  IRBuilderDefaultInserter
 This provides the default implementation of the IRBuilder 'InsertHelper' method that is called whenever an instruction is created by IRBuilder and needs to be inserted. More...
 
class  IRBuilderFolder
 IRBuilderFolder - Interface for constant folding in IRBuilder. More...
 
class  IRCEPass
 
class  IRChangedPrinter
 
class  IRChangedTester
 
class  IRComparer
 
class  IRDataT
 
class  IRMover
 
class  IRMutationStrategy
 Base class for describing how to mutate a module. More...
 
class  IRMutator
 Entry point for configuring and running IR mutations. More...
 
struct  IRNormalizerPass
 IRNormalizer aims to transform LLVM IR into normal form. More...
 
class  IROutliner
 This class is a pass that identifies similarity in a Module, extracts instances of the similarity, and then consolidating the similar regions in an effort to reduce code size. More...
 
class  IROutlinerPass
 Pass to outline similar regions. More...
 
struct  IRPosition
 Helper to describe and deal with positions in the LLVM-IR. More...
 
class  IRSimilarityAnalysis
 An analysis pass that runs and returns the IRSimilarityIdentifier run on the Module. More...
 
class  IRSimilarityAnalysisPrinterPass
 Printer pass that uses IRSimilarityAnalysis. More...
 
class  IRSimilarityIdentifierWrapperPass
 An analysis pass based on legacy pass manager that runs and returns IRSimilarityIdentifier run on the Module. More...
 
class  IRTranslator
 
struct  is_bitmask_enum
 Traits class to determine whether an enum has a LLVM_BITMASK_LARGEST_ENUMERATOR enumerator. More...
 
struct  is_bitmask_enum< E, std::enable_if_t< sizeof(E::LLVM_BITMASK_LARGEST_ENUMERATOR) >=0 >
 
struct  is_copy_assignable
 
class  is_integral_or_enum
 Metafunction that determines whether the given type is either an integral type or an enumeration type, including enum classes. More...
 
struct  is_move_assignable
 
struct  is_simple_type
 
struct  isa_impl
 
struct  isa_impl< Argument, Value >
 
struct  isa_impl< BasicBlock, Value >
 
struct  isa_impl< Constant, Value >
 
struct  isa_impl< ConstantAggregate, Value >
 
struct  isa_impl< ConstantData, Value >
 
struct  isa_impl< Function, Value >
 
struct  isa_impl< GlobalAlias, Value >
 
struct  isa_impl< GlobalIFunc, Value >
 
struct  isa_impl< GlobalObject, Value >
 
struct  isa_impl< GlobalValue, Value >
 
struct  isa_impl< GlobalVariable, Value >
 
struct  isa_impl< InlineAsm, Value >
 
struct  isa_impl< Instruction, Value >
 
struct  isa_impl< PointerType, Type >
 
struct  isa_impl< To, From, std::enable_if_t< std::is_base_of_v< To, From > > >
 
struct  isa_impl_cl
 
struct  isa_impl_cl< To, const From * >
 
struct  isa_impl_cl< To, const From *const >
 
struct  isa_impl_cl< To, const From >
 
struct  isa_impl_cl< To, const std::unique_ptr< From > >
 
struct  isa_impl_cl< To, From * >
 
struct  isa_impl_cl< To, From *const >
 
struct  isa_impl_wrap
 
struct  isa_impl_wrap< To, FromTy, FromTy >
 
class  IsAOpInit
 !isa<type>(expr) - Dynamically determine the type of an expression. More...
 
class  ItaniumManglingCanonicalizer
 Canonicalizer for mangled names. More...
 
struct  ItaniumPartialDemangler
 "Partial" demangler. More...
 
class  iterator_adaptor_base
 CRTP base class for adapting an iterator to a different type. More...
 
class  iterator_facade_base
 CRTP base class which implements the entire standard iterator facade in terms of a minimal subset of the interface. More...
 
class  iterator_range
 A range adaptor for a pair of iterators. More...
 
struct  IVConditionInfo
 Struct to hold information about a partially invariant condition. More...
 
class  IVStrideUse
 IVStrideUse - Keep track of one use of a strided induction variable. More...
 
class  IVUsers
 
class  IVUsersAnalysis
 Analysis pass that exposes the IVUsers for a loop. More...
 
class  IVUsersPrinterPass
 Printer pass for the IVUsers for a loop. More...
 
class  IVUsersWrapperPass
 
class  IVVisitor
 Interface for visiting interesting IV users that are recognized but not simplified by this utility. More...
 
class  JamCRC
 
class  JITEvaluatedSymbol
 Represents a symbol that has been evaluated to an address already. More...
 
class  JITEventListener
 JITEventListener - Abstract interface for use by the JIT to notify clients about significant events during compilation. More...
 
class  JITSymbol
 Represents a symbol in the JIT. More...
 
class  JITSymbolFlags
 Flags for symbols in the JIT. More...
 
class  JITSymbolResolver
 Symbol resolution interface. More...
 
class  JMCInstrumenterPass
 
struct  JobHandleTraits
 
class  JSONScopedPrinter
 
class  JumpTableSDNode
 
struct  JumpTableToSwitchPass
 
class  JumpThreadingPass
 This pass performs 'jump threading', which looks at blocks that have multiple predecessors and multiple successors. More...
 
class  KCFIPass
 
struct  KernArgPreloadDescriptor
 
struct  KnownAssumptionString
 Helper that allows to insert a new assumption string in the known assumption set by creating a (static) object. More...
 
struct  KnownBits
 
struct  KnownFPClass
 
class  LabelSDNode
 
class  LanaiDisassembler
 
class  LanaiFrameLowering
 
class  LanaiInstPrinter
 
class  LanaiInstrInfo
 
class  LanaiMachineFunctionInfo
 
class  LanaiMCAsmInfo
 
class  LanaiMCExpr
 
class  LanaiMCInstLower
 
struct  LanaiRegisterInfo
 
class  LanaiSelectionDAGInfo
 
class  LanaiSubtarget
 
class  LanaiTargetLowering
 
class  LanaiTargetMachine
 
class  LanaiTargetObjectFile
 
class  LanaiTTIImpl
 
struct  LandingPadInfo
 This structure is used to retain landing pad info for the current function. More...
 
class  LandingPadInst
 The landingpad instruction holds all of the information necessary to generate correct exception handling. More...
 
struct  LaneBitmask
 
struct  largest_bitmask_enum_bit
 Trait class to determine bitmask enumeration largest bit. More...
 
struct  largest_bitmask_enum_bit< E, std::enable_if_t< sizeof(E::LLVM_BITMASK_LARGEST_ENUMERATOR) >=0 >
 
class  LastRunTrackingAnalysis
 A function/module analysis which provides an empty LastRunTrackingInfo. More...
 
class  LastRunTrackingInfo
 This class is used to track the last run of a set of module/function passes. More...
 
struct  latency_sort
 Sorting functions for the Available queue. More...
 
class  LatencyPriorityQueue
 
struct  LatticeKeyInfo
 A template for translating between LLVM Values and LatticeKeys. More...
 
struct  LatticeKeyInfo< CVPLatticeKey >
 A specialization of LatticeKeyInfo for CVPLatticeKeys. More...
 
class  LazyAtomicPointer
 Atomic pointer that's lock-free, but that can coordinate concurrent writes from a lazy generator. More...
 
class  LazyBlockFrequencyInfo
 Wraps a BFI to allow lazy computation of the block frequencies. More...
 
class  LazyBlockFrequencyInfoPass
 This is an alternative analysis pass to BlockFrequencyInfoWrapperPass. More...
 
class  LazyBranchProbabilityInfoPass
 This is an alternative analysis pass to BranchProbabilityInfoWrapperPass. More...
 
class  LazyCallGraph
 A lazily constructed view of the call graph of a module. More...
 
class  LazyCallGraphAnalysis
 An analysis pass which computes the call graph for a module. More...
 
class  LazyCallGraphDOTPrinterPass
 A pass which prints the call graph as a DOT file to a raw_ostream. More...
 
class  LazyCallGraphPrinterPass
 A pass which prints the call graph to a raw_ostream. More...
 
class  LazyMachineBlockFrequencyInfoPass
 This is an alternative analysis pass to MachineBlockFrequencyInfo. More...
 
class  LazyValueAnalysis
 Analysis to compute lazy value information. More...
 
class  LazyValueInfo
 This pass computes, caches, and vends lazy value constraint information. More...
 
class  LazyValueInfoImpl
 
class  LazyValueInfoPrinterPass
 Printer pass for the LazyValueAnalysis results. More...
 
class  LazyValueInfoWrapperPass
 Wrapper around LazyValueInfo. More...
 
class  LCSSAPass
 Converts loops into loop-closed SSA form. More...
 
struct  LCSSAVerificationPass
 
class  LDVImpl
 
struct  LegacyDefaultAnalysisGraphTraits
 Default traits class for extracting a graph from an analysis pass. More...
 
class  LegacyJITSymbolResolver
 Legacy symbol resolution interface. More...
 
struct  LegacyLegalizeActionStep
 The result of a query. More...
 
class  LegacyLegalizerInfo
 
struct  LegalityQuery
 The LegalityQuery object bundles together all the information that's needed to decide whether a given operation is legal or not. More...
 
class  LegalizationArtifactCombiner
 
struct  LegalizeActionStep
 The result of a query. More...
 
class  Legalizer
 
class  LegalizerHelper
 
class  LegalizerInfo
 
class  LegalizeRule
 A single rule in a legalizer info ruleset. More...
 
class  LegalizeRuleSet
 
class  LEONMachineFunctionPass
 
struct  less_first
 Function object to check whether the first component of a container supported by std::get (like std::pair and std::tuple) compares less than the first component of another container. More...
 
struct  less_second
 Function object to check whether the second component of a container supported by std::get (like std::pair and std::tuple) compares less than the second component of another container. More...
 
struct  LessRecord
 Sorting predicate to sort record pointers by name. More...
 
struct  LessRecordByID
 Sorting predicate to sort record pointers by their unique ID. More...
 
struct  LessRecordFieldName
 Sorting predicate to sort record pointers by their Name field. More...
 
struct  LessRecordRegister
 
struct  LetRecord
 
class  LexicalScope
 LexicalScope - This class is used to track scope information. More...
 
class  LexicalScopes
 LexicalScopes - This class provides interface to collect and use lexical scoping information from machine instruction. More...
 
class  LibCallSimplifier
 LibCallSimplifier - This class implements a collection of optimizations that replace well formed calls to library functions with a more optimal form. More...
 
class  LibCallsShrinkWrapPass
 
struct  LICMOptions
 
class  LICMPass
 Performs Loop Invariant Code Motion Pass. More...
 
class  LifetimeIntrinsic
 This is the common base class for lifetime intrinsics. More...
 
class  LifetimeSDNode
 This SDNode is used for LIFETIME_START/LIFETIME_END values, which indicate the offet and size that are started/ended in the underlying FrameIndex. More...
 
class  line_iterator
 A forward iterator which reads text lines from a buffer. More...
 
class  LineEditor
 
class  LinkDiagnosticInfo
 
class  Linker
 This class provides the core functionality of linking in LLVM. More...
 
class  LinkingSymbolResolver
 
class  LintPass
 
class  ListeningSocket
 Manages a passive (i.e., listening) UNIX domain socket. More...
 
class  ListInit
 [AL, AH, CL] - Represent a list of defs More...
 
class  ListRecTy
 'list<Ty>' - Represent a list of element values, all of which must be of the specified type. More...
 
struct  ListScope
 
class  LiveDebugVariables
 
class  LiveDebugVariablesAnalysis
 
class  LiveDebugVariablesPrinterPass
 
class  LiveDebugVariablesWrapperLegacy
 
class  LiveInterval
 LiveInterval - This class represents the liveness of a register, or stack slot. More...
 
class  LiveIntervalCalc
 
class  LiveIntervals
 
class  LiveIntervalsAnalysis
 
class  LiveIntervalsPrinterPass
 
class  LiveIntervalsWrapperPass
 
class  LiveIntervalUnion
 Union of live intervals that are strong candidates for coalescing into a single register (either physical or virtual depending on the context). More...
 
class  LivePhysRegs
 A set of physical registers with utility functions to track liveness when walking backward/forward through a basic block. More...
 
class  LiveQueryResult
 Result of a LiveRange query. More...
 
class  LiveRange
 This class represents the liveness of a register, stack slot, etc. More...
 
class  LiveRangeCalc
 
class  LiveRangeEdit
 
class  LiveRangeUpdater
 Helper class for performant LiveRange bulk updates. More...
 
class  LiveRegMatrix
 
class  LiveRegMatrixAnalysis
 
class  LiveRegMatrixWrapperLegacy
 
class  LiveRegSet
 A set of live virtual registers and physical register units. More...
 
struct  LiveRegUnit
 
class  LiveRegUnits
 A set of register units used to track register liveness. More...
 
class  LiveStacks
 
class  LiveStacksAnalysis
 
class  LiveStacksPrinterPass
 
class  LiveStacksWrapperLegacy
 
class  LiveVariables
 
class  LiveVariablesAnalysis
 
class  LiveVariablesPrinterPass
 
class  LiveVariablesWrapperPass
 
class  LLLexer
 
class  LLParser
 
class  LLT
 
struct  llvm_shutdown_obj
 llvm_shutdown_obj - This is a simple helper class that calls llvm_shutdown() when it is destroyed. More...
 
class  LLVMContext
 This is an important class for using LLVM in a threaded context. More...
 
class  LLVMContextImpl
 
class  LLVMDisasmContext
 
class  LLVMPassBuilderOptions
 Helper struct for holding a set of builder options for LLVMRunPasses. More...
 
struct  LLVMRemarkSetupErrorInfo
 
struct  LLVMRemarkSetupFileError
 
struct  LLVMRemarkSetupFormatError
 
struct  LLVMRemarkSetupPatternError
 
class  LLVMRemarkStreamer
 Streamer for LLVM remarks which has logic for dealing with DiagnosticInfo objects. More...
 
struct  LLVMTargetMachineOptions
 Options for LLVMCreateTargetMachine(). More...
 
class  LNICMPass
 Performs LoopNest Invariant Code Motion Pass. More...
 
class  LoadAndStorePromoter
 Helper class for promoting a collection of loads and stores into SSA Form using the SSAUpdater. More...
 
class  LoadedObjectInfo
 An inferface for inquiring the load address of a loaded object file to be used by the DIContext implementations when applying relocations on the fly. More...
 
struct  LoadedObjectInfoHelper
 
struct  LoadImmediateInfo
 
class  LoadInfo
 
class  LoadInst
 An instruction for reading from memory. More...
 
class  LoadSDNode
 This class is used to represent ISD::LOAD nodes. More...
 
class  LoadStoreOpt
 
class  LoadStoreVectorizerPass
 
class  LocalAsMetadata
 
class  Localizer
 This pass implements the localization mechanism described at the top of this file. More...
 
class  LocalStackSlotAllocationPass
 
class  location_op_iterator
 
class  LocationSize
 
class  LockFileManager
 Class that manages the creation of a lock file to aid implicit coordination between different processes. More...
 
class  Logger
 Logging utility - given an ordered specification of features, and assuming a scalar reward, allow logging feature values and rewards. More...
 
struct  LogicalResult
 This class represents an efficient way to signal success or failure. More...
 
class  LoongArchAsmBackend
 
class  LoongArchAsmPrinter
 
class  LoongArchDAGToDAGISel
 
class  LoongArchDAGToDAGISelLegacy
 
class  LoongArchFrameLowering
 
class  LoongArchInstPrinter
 
class  LoongArchInstrInfo
 
class  LoongArchMachineFunctionInfo
 LoongArchMachineFunctionInfo - This class is derived from MachineFunctionInfo and contains private LoongArch-specific information for each MachineFunction. More...
 
class  LoongArchMCAsmInfo
 
class  LoongArchMCExpr
 
struct  LoongArchRegisterInfo
 
class  LoongArchSubtarget
 
class  LoongArchTargetAsmStreamer
 
class  LoongArchTargetELFStreamer
 
class  LoongArchTargetLowering
 
class  LoongArchTargetMachine
 
class  LoongArchTargetStreamer
 
class  LoongArchTTIImpl
 
class  Loop
 Represents a single loop in the control flow graph. More...
 
class  LoopAccessAnalysis
 This analysis provides dependence information for the memory accesses of a loop. More...
 
class  LoopAccessInfo
 Drive the analysis of memory accesses in the loop. More...
 
class  LoopAccessInfoManager
 
class  LoopAccessInfoPrinterPass
 Printer pass for the LoopAccessInfo results. More...
 
class  LoopAnalysis
 Analysis pass that exposes the LoopInfo for a function. More...
 
class  LoopBase
 Instances of this class are used to represent loops that are detected in the flow graph. More...
 
class  LoopBlocksDFS
 Store the result of a depth first search within basic blocks contained by a single loop. More...
 
class  LoopBlocksRPO
 Wrapper class to LoopBlocksDFS that provides a standard begin()/end() interface for the DFS reverse post-order traversal of blocks in a loop body. More...
 
class  LoopBlocksTraversal
 Traverse the blocks in a loop using a depth-first search. More...
 
struct  LoopBodyTraits
 
class  LoopBoundSplitPass
 This pass transforms loops that contain a conditional branch with induction variable. More...
 
class  LoopCachePrinterPass
 Printer pass for the CacheCost results. More...
 
class  LoopConstrainer
 This class is used to constrain loops to run within a given iteration space. More...
 
class  LoopDataPrefetchPass
 An optimization pass inserting data prefetches in loops. More...
 
class  LoopDeletionPass
 
class  LoopDistributePass
 
struct  LoopExtractorPass
 
class  LoopFlattenPass
 
class  LoopFullUnrollPass
 Loop unroll pass that only does full loop unrolling and peeling. More...
 
class  LoopFusePass
 
class  LoopIdiomRecognizePass
 Performs Loop Idiom Recognize Pass. More...
 
class  LoopIdiomVectorizePass
 
class  LoopInfo
 
class  LoopInfoBase
 This class builds and contains all of the top-level loop structures in the specified function. More...
 
class  LoopInfoWrapperPass
 The legacy pass manager's analysis pass to compute loop information. More...
 
class  LoopInstSimplifyPass
 Performs Loop Inst Simplify Pass. More...
 
struct  LoopInterchangePass
 
struct  LoopLoadEliminationPass
 Pass to forward loads in a loop around the backedge to subsequent iterations. More...
 
class  LoopNest
 This class represents a loop nest and can be used to query its properties. More...
 
class  LoopNestAnalysis
 This analysis provides information for a loop nest. More...
 
class  LoopNestPrinterPass
 Printer pass for the LoopNest results. More...
 
class  LoopPass
 
class  LoopPredicationPass
 Performs Loop Predication Pass. More...
 
class  LoopPrinterPass
 Printer pass for the LoopAnalysis results. More...
 
class  LoopRotatePass
 A simple loop rotation transformation. More...
 
class  LoopSafetyInfo
 Captures loop safety information. More...
 
class  LoopSimplifyCFGPass
 Performs basic CFG simplifications to assist other loop passes. More...
 
class  LoopSimplifyPass
 This pass is responsible for loop canonicalization. More...
 
class  LoopSinkPass
 A pass that does profile-guided sinking of instructions into loops. More...
 
struct  LoopStandardAnalysisResults
 The adaptor from a function pass to a loop pass computes these analyses and makes them available to the loop passes "for free". More...
 
class  LoopStrengthReducePass
 Performs Loop Strength Reduce Pass. More...
 
struct  LoopStructure
 
class  LoopTermFoldPass
 
class  LoopTraversal
 This class provides the basic blocks traversal order used by passes like ReachingDefAnalysis and ExecutionDomainFix. More...
 
class  LoopUnrollAndJamPass
 A simple loop rotation transformation. More...
 
struct  LoopUnrollOptions
 A set of parameters used to control various transforms performed by the LoopUnroll pass. More...
 
class  LoopUnrollPass
 Loop unroll pass that will support both full and partial unrolling. More...
 
class  LoopVectorizationCostModel
 LoopVectorizationCostModel - estimates the expected speedups due to vectorization. More...
 
class  LoopVectorizationLegality
 LoopVectorizationLegality checks if it is legal to vectorize a loop, and to what vectorization factor. More...
 
class  LoopVectorizationPlanner
 Planner drives the vectorization process after having passed Legality checks. More...
 
class  LoopVectorizationRequirements
 This holds vectorization requirements that must be verified late in the process. More...
 
class  LoopVectorizeHints
 Utility class for getting and setting loop vectorizer hints in the form of loop metadata. More...
 
struct  LoopVectorizeOptions
 
struct  LoopVectorizePass
 The LoopVectorize Pass. More...
 
struct  LoopVectorizeResult
 Storage for information about made changes. More...
 
struct  LoopVerifierPass
 Verifier pass for the LoopAnalysis results. More...
 
class  LoopVersioning
 This class emits a version of the loop where run-time checks ensure that may-alias pointers can't overlap. More...
 
class  LoopVersioningLICMPass
 
class  LoopVersioningPass
 Expose LoopVersioning as a pass. More...
 
class  LostDebugLocObserver
 
class  LowerAllowCheckPass
 
class  LowerAtomicPass
 A pass that lowers atomic intrinsic into non-atomic intrinsics. More...
 
struct  LowerConstantIntrinsicsPass
 
class  LowerEmuTLSPass
 
struct  LowerExpectIntrinsicPass
 
class  LowerGlobalDtorsPass
 
struct  LowerGuardIntrinsicPass
 
class  LowerIFuncPass
 Pass to replace calls to ifuncs with indirect calls. More...
 
class  LowerInvokePass
 
class  LowerMatrixIntrinsicsPass
 
struct  LowerSwitchPass
 
class  LowerTypeTestsPass
 
struct  LowerWidenableConditionPass
 
class  LPMUpdater
 This class provides an interface for updating the loop pass manager based on mutations to the loop nest. More...
 
class  LPPassManager
 
struct  LRStartEndInfo
 
class  LSBaseSDNode
 Base class for LoadSDNode and StoreSDNode. More...
 
class  LShrOperator
 
struct  LTOCodeGenerator
 C++ class which implements the opaque lto_code_gen_t type. More...
 
struct  LTOModule
 C++ class which implements the opaque lto_module_t type. More...
 
class  M68kAsmPrinter
 
class  M68kCallLowering
 
struct  M68kCCState
 Custom state to propagate llvm type info to register CC assigner. More...
 
class  M68kELFMCAsmInfo
 
class  M68kELFTargetObjectFile
 
class  M68kFrameLowering
 
class  M68kGenRegisterBankInfo
 
struct  M68kIncomingValueHandler
 
class  M68kInstPrinter
 
class  M68kInstrInfo
 
struct  M68kLegalizerInfo
 
class  M68kMachineFunctionInfo
 
class  M68kMCInstLower
 This class is used to lower an MachineInstr into an MCInst. More...
 
class  M68kMemOperandPrinter
 
class  M68kRegisterBankInfo
 This class provides the information for the target register banks. More...
 
class  M68kRegisterInfo
 
class  M68kSubtarget
 
class  M68kTargetLowering
 
class  M68kTargetMachine
 
class  MachineBasicBlock
 
class  MachineBlockFrequencyAnalysis
 
class  MachineBlockFrequencyInfo
 MachineBlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation to estimate machine basic block frequencies. More...
 
class  MachineBlockFrequencyInfoWrapperPass
 
class  MachineBlockFrequencyPrinterPass
 Printer pass for the MachineBlockFrequencyInfo results. More...
 
class  MachineBranchProbabilityAnalysis
 
class  MachineBranchProbabilityInfo
 
class  MachineBranchProbabilityInfoWrapperPass
 
class  MachineBranchProbabilityPrinterPass
 
class  MachineConstantPool
 The MachineConstantPool class keeps track of constants referenced by a function which must be spilled to memory. More...
 
class  MachineConstantPoolEntry
 This class is a data container for one entry in a MachineConstantPool. More...
 
class  MachineConstantPoolValue
 Abstract base class for all machine specific constantpool value subclasses. More...
 
class  MachineCSEPass
 
class  MachineCycleInfoWrapperPass
 Legacy analysis pass which computes a MachineCycleInfo. More...
 
class  MachineDominanceFrontier
 
class  MachineDominatorTree
 DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree. More...
 
class  MachineDominatorTreeAnalysis
 Analysis pass which computes a MachineDominatorTree. More...
 
class  MachineDominatorTreePrinterPass
 Machine function pass which print MachineDominatorTree. More...
 
class  MachineDominatorTreeWrapperPass
 Analysis pass which computes a MachineDominatorTree. More...
 
struct  MachineDomTreeGraphTraitsBase
 DominatorTree GraphTraits specialization so the DominatorTree can be iterable by generic graph iterators. More...
 
class  MachineDomTreeUpdater
 
class  MachineFrameInfo
 The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted. More...
 
class  MachineFunction
 
class  MachineFunctionAnalysis
 This analysis create MachineFunction for given Function. More...
 
struct  MachineFunctionInfo
 MachineFunctionInfo - This class can be derived from and used by targets to hold private target-specific information for each MachineFunction. More...
 
class  MachineFunctionPass
 MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of passes that operate on the MachineFunction representation. More...
 
class  MachineFunctionProperties
 Properties which a MachineFunction may have at a given point in time. More...
 
class  MachineInstr
 Representation of each machine instruction. More...
 
class  MachineInstrBuilder
 
class  MachineInstrBundleIterator
 MachineBasicBlock iterator that automatically skips over MIs that are inside bundles (i.e. More...
 
struct  MachineInstrBundleIteratorHelper
 
struct  MachineInstrBundleIteratorHelper< false >
 
struct  MachineInstrBundleIteratorHelper< true >
 
struct  MachineInstrBundleIteratorTraits
 
struct  MachineInstrBundleIteratorTraits< const T, false >
 
struct  MachineInstrBundleIteratorTraits< const T, true >
 
struct  MachineInstrBundleIteratorTraits< T, false >
 
struct  MachineInstrBundleIteratorTraits< T, true >
 
struct  MachineInstrExpressionTrait
 Special DenseMapInfo traits to compare MachineInstr* by value of the instruction rather than by pointer value. More...
 
class  MachineInstrSpan
 MachineInstrSpan provides an interface to get an iteration range containing the instruction it was initialized with, along with all those instructions inserted prior to or following that instruction at some point after the MachineInstrSpan is constructed. More...
 
class  MachineIRBuilder
 Helper class to build MachineInstr. More...
 
struct  MachineIRBuilderState
 Class which stores all the state required in a MachineIRBuilder. More...
 
struct  MachineJumpTableEntry
 MachineJumpTableEntry - One jump table in the jump table info. More...
 
class  MachineJumpTableInfo
 
class  MachineLICMBasePass
 
class  MachineLICMPass
 
class  MachineLocation
 
class  MachineLoop
 
class  MachineLoopAnalysis
 Analysis pass that exposes the MachineLoopInfo for a machine function. More...
 
class  MachineLoopInfo
 
class  MachineLoopInfoWrapperPass
 
class  MachineLoopPrinterPass
 Printer pass for the LoopAnalysis results. More...
 
class  MachineMemOperand
 A description of a memory reference used in the backend. More...
 
class  MachineModuleAnalysis
 An analysis that produces MachineModuleInfo for a module. More...
 
class  MachineModuleInfo
 This class contains meta information specific to a module. More...
 
class  MachineModuleInfoCOFF
 MachineModuleInfoCOFF - This is a MachineModuleInfoImpl implementation for COFF targets. More...
 
class  MachineModuleInfoELF
 MachineModuleInfoELF - This is a MachineModuleInfoImpl implementation for ELF targets. More...
 
class  MachineModuleInfoImpl
 This class can be derived from and used by targets to hold private target-specific information for each Module. More...
 
class  MachineModuleInfoMachO
 MachineModuleInfoMachO - This is a MachineModuleInfoImpl implementation for MachO targets. More...
 
class  MachineModuleInfoWasm
 MachineModuleInfoWasm - This is a MachineModuleInfoImpl implementation for Wasm targets. More...
 
class  MachineModuleInfoWrapperPass
 
class  MachineModuleSlotTracker
 
class  MachineOperand
 MachineOperand class - Representation of each machine instruction operand. More...
 
class  MachineOptimizationRemark
 Diagnostic information for applied optimization remarks. More...
 
class  MachineOptimizationRemarkAnalysis
 Diagnostic information for optimization analysis remarks. More...
 
class  MachineOptimizationRemarkEmitter
 The optimization diagnostic interface. More...
 
class  MachineOptimizationRemarkEmitterAnalysis
 The analysis pass. More...
 
class  MachineOptimizationRemarkEmitterPass
 The analysis pass. More...
 
class  MachineOptimizationRemarkMissed
 Diagnostic information for missed-optimization remarks. More...
 
class  MachinePassRegistry
 MachinePassRegistry - Track the registration of machine passes. More...
 
class  MachinePassRegistryListener
 MachinePassRegistryListener - Listener to adds and removals of nodes in registration list. More...
 
class  MachinePassRegistryNode
 MachinePassRegistryNode - Machine pass node stored in registration list. More...
 
class  MachinePipeliner
 The main class in the implementation of the target independent software pipeliner pass. More...
 
struct  MachinePointerInfo
 This class contains a discriminated union of information about pointers in memory operands, relating them back to LLVM IR or to virtual locations (such as frame indices) that are exposed during codegen. More...
 
class  MachinePostDominatorTree
 MachinePostDominatorTree - an analysis pass wrapper for DominatorTree used to compute the post-dominator tree for MachineFunctions. More...
 
class  MachinePostDominatorTreeAnalysis
 
class  MachinePostDominatorTreePrinterPass
 
class  MachinePostDominatorTreeWrapperPass
 
class  MachineRegion
 
class  MachineRegionInfo
 
class  MachineRegionInfoPass
 
class  MachineRegionNode
 
class  MachineRegisterInfo
 MachineRegisterInfo - Keep track of information for virtual and physical registers, including vreg register classes, use/def chains for registers, etc. More...
 
struct  MachineSchedContext
 MachineSchedContext provides enough context from the MachineScheduler pass for the target to instantiate a scheduler. More...
 
struct  MachineSchedPolicy
 Define a generic scheduling policy for targets that don't provide their own MachineSchedStrategy. More...
 
class  MachineSchedRegistry
 MachineSchedRegistry provides a selection of available machine instruction schedulers. More...
 
class  MachineSchedStrategy
 MachineSchedStrategy - Interface to the scheduling algorithm used by ScheduleDAGMI. More...
 
class  MachineSDNode
 An SDNode that represents everything that will be needed to construct a MachineInstr. More...
 
class  MachineSSAUpdater
 MachineSSAUpdater - This class updates SSA form for a set of virtual registers defined in multiple blocks. More...
 
class  MachineTraceMetrics
 
class  MachineTraceMetricsAnalysis
 
struct  MachineTraceMetricsVerifierPass
 Verifier pass for MachineTraceMetrics. More...
 
class  MachineTraceMetricsWrapperPass
 
class  MachineUniformityAnalysisPass
 Legacy analysis pass which computes a MachineUniformityInfo. More...
 
class  MachineVerifierPass
 
class  MachObjectWriter
 
class  MachORelocation
 MachORelocation - This struct contains information about each relocation that needs to be emitted to the file. More...
 
struct  make_const_ptr
 
struct  make_const_ref
 
struct  MakeGuardsExplicitPass
 
class  MallocAllocator
 
class  ManagedStatic
 ManagedStatic - This transparently changes the behavior of global statics to be lazily constructed on demand (good for reducing startup times of dynamic libraries that link in LLVM components) and for making destruction be explicit through the llvm_shutdown() function call. More...
 
class  ManagedStaticBase
 ManagedStaticBase - Common base class for ManagedStatic instances. More...
 
class  Mangler
 
class  mapped_iterator
 
class  mapped_iterator_base
 A base type of mapped iterator, that is useful for building derived iterators that do not need/want to store the map function (as in mapped_iterator). More...
 
class  MapResolver
 Resolve arbitrary mappings. More...
 
class  MapVector
 This class implements a map that also provides access to all stored values in a deterministic order. More...
 
class  MaskedGatherScatterSDNode
 This is a base class used to represent MGATHER and MSCATTER nodes. More...
 
class  MaskedGatherSDNode
 This class is used to represent an MGATHER node. More...
 
class  MaskedHistogramSDNode
 
class  MaskedLoadSDNode
 This class is used to represent an MLOAD node. More...
 
class  MaskedLoadStoreSDNode
 This base class is used to represent MLOAD and MSTORE nodes. More...
 
class  MaskedScatterSDNode
 This class is used to represent an MSCATTER node. More...
 
class  MaskedStoreSDNode
 This class is used to represent an MSTORE node. More...
 
class  MatrixBuilder
 
struct  MaybeAlign
 This struct is a compact representation of a valid (power of two) or undefined (0) alignment. More...
 
struct  MBB2NumberFunctor
 
class  MBBReachingDefsInfo
 
struct  MBBSectionID
 
class  MBFIWrapper
 
class  MCAlignFragment
 
class  MCAsmBackend
 Generic interface to target specific assembler backends. More...
 
class  MCAsmInfo
 This class is intended to be used as a base class for asm properties and features specific to the target. More...
 
class  MCAsmInfoCOFF
 
class  MCAsmInfoDarwin
 
class  MCAsmInfoELF
 
class  MCAsmInfoGNUCOFF
 
class  MCAsmInfoGOFF
 
class  MCAsmInfoMicrosoft
 
class  MCAsmInfoWasm
 
class  MCAsmInfoXCOFF
 
class  MCAsmLexer
 Generic assembler lexer interface, for use by target specific assembly lexers. More...
 
struct  MCAsmMacro
 
struct  MCAsmMacroParameter
 
class  MCAsmParser
 Generic assembler parser interface, for use by target specific assembly parsers. More...
 
class  MCAsmParserExtension
 Generic interface for extending the MCAsmParser, which is implemented by target and object file assembly parser implementations. More...
 
class  MCAsmParserSemaCallback
 Generic Sema callback for assembly parser. More...
 
class  MCAssembler
 
class  MCBinaryExpr
 Binary assembler expressions. More...
 
class  MCBoundaryAlignFragment
 Represents required padding such that a particular other set of fragments does not cross a particular power-of-two boundary. More...
 
class  MCCFIInstruction
 
class  MCCodeEmitter
 MCCodeEmitter - Generic instruction encoding interface. More...
 
class  MCConstantExpr
 
class  MCContext
 Context object for machine code objects. More...
 
class  MCCVDefRangeFragment
 Fragment representing the .cv_def_range directive. More...
 
struct  MCCVFunctionInfo
 Information describing a function or inlined call site introduced by .cv_func_id or .cv_inline_site_id. More...
 
class  MCCVInlineLineTableFragment
 Fragment representing the binary annotations produced by the .cv_inline_linetable directive. More...
 
class  MCCVLoc
 Instances of this class represent the information from a .cv_loc directive. More...
 
class  MCDataFragment
 Fragment for data and encoded instructions. More...
 
class  MCDecodedPseudoProbe
 
class  MCDecodedPseudoProbeInlineTree
 
class  MCDisassembler
 Superclass for all disassemblers. More...
 
class  MCDummyFragment
 
class  MCDwarfCallFrameFragment
 
class  MCDwarfDwoLineTable
 
struct  MCDwarfFile
 Instances of this class represent the name of the dwarf .file directive and its associated dwarf file number in the MC file. More...
 
class  MCDwarfFrameEmitter
 
struct  MCDwarfFrameInfo
 
class  MCDwarfLineAddr
 
class  MCDwarfLineAddrFragment
 
class  MCDwarfLineEntry
 Instances of this class represent the line information for the dwarf line table entries. More...
 
class  MCDwarfLineStr
 Manage the .debug_line_str section contents, if we use it. More...
 
class  MCDwarfLineTable
 
struct  MCDwarfLineTableHeader
 
struct  MCDwarfLineTableParams
 
class  MCDwarfLoc
 Instances of this class represent the information from a dwarf .loc directive. More...
 
class  MCDXContainerStreamer
 
class  MCDXContainerTargetWriter
 
class  MCELFObjectTargetWriter
 
class  MCELFStreamer
 
class  MCEncodedFragment
 Interface implemented by fragments that contain encoded instructions and/or data. More...
 
class  MCEncodedFragmentWithFixups
 Interface implemented by fragments that contain encoded instructions and/or data and also have fixups registered. More...
 
class  MCExpr
 Base class for the full range of assembler expressions which are needed for parsing. More...
 
class  MCExternalSymbolizer
 Symbolize using user-provided, C API, callbacks. More...
 
struct  MCExtraProcessorInfo
 Provide extra details about the machine processor. More...
 
class  MCFillFragment
 
class  MCFixup
 Encode information on a single operation to perform on a byte sequence (e.g., an encoded instruction) which requires assemble- or run- time patching. More...
 
struct  MCFixupKindInfo
 Target independent information on a fixup kind. More...
 
class  MCFragment
 
class  MCGenDwarfInfo
 
class  MCGenDwarfLabelEntry
 
class  MCGOFFObjectTargetWriter
 
class  MCGOFFStreamer
 
class  MCInst
 Instances of this class represent a single low-level machine instruction. More...
 
class  MCInstBuilder
 
class  MCInstPrinter
 This is an instance of a target assembly language printer that converts an MCInst to valid target assembly syntax. More...
 
class  MCInstrAnalysis
 
class  MCInstrDesc
 Describe properties that are true of each instruction in the target description file. More...
 
class  MCInstrInfo
 Interface to description of machine instruction set. More...
 
class  MCJIT
 
class  MCJITMemoryManager
 
class  MCLabel
 Instances of this class represent a label name in the MC file, and MCLabel are created and uniqued by the MCContext class. More...
 
class  MCLEBFragment
 
class  MCLineSection
 Instances of this class represent the line information for a compile unit where machine instructions have been assembled after seeing .loc directives. More...
 
class  MCLOHContainer
 
class  MCLOHDirective
 Store Linker Optimization Hint information (LOH). More...
 
class  MCMachObjectTargetWriter
 
class  MCNopsFragment
 
class  MCObjectFileInfo
 
class  MCObjectStreamer
 Streaming object file generation interface. More...
 
class  MCObjectTargetWriter
 Base class for classes that define behaviour that is specific to both the target and the object format. More...
 
class  MCObjectWriter
 Defines the object file and target independent interfaces used by the assembler backend to write native file format object files. More...
 
class  MCOperand
 Instances of this class represent operands of the MCInst class. More...
 
class  MCOperandInfo
 This holds information about one operand of a machine instruction, indicating the register class for register operands, etc. More...
 
class  MCOrgFragment
 
class  MCParsedAsmOperand
 MCParsedAsmOperand - This abstract class represents a source-level assembly instruction operand. More...
 
struct  MCProcResourceDesc
 Define a kind of processor resource that will be modeled by the scheduler. More...
 
class  MCPseudoProbe
 Instances of this class represent a pseudo probe instance for a pseudo probe table entry, which is created during a machine instruction is assembled and uses an address from a temporary label created at the current address in the current section. More...
 
class  MCPseudoProbeAddrFragment
 
class  MCPseudoProbeBase
 
class  MCPseudoProbeDecoder
 
struct  MCPseudoProbeFuncDesc
 
class  MCPseudoProbeInlineTree
 
class  MCPseudoProbeInlineTreeBase
 
class  MCPseudoProbeSections
 Instances of this class represent the pseudo probes inserted into a compile unit. More...
 
class  MCPseudoProbeTable
 
struct  MCReadAdvanceEntry
 Specify the number of cycles allowed after instruction issue before a particular use operand reads its registers. More...
 
class  MCRegAliasIterator
 MCRegAliasIterator enumerates all registers aliasing Reg. More...
 
class  MCRegister
 Wrapper class representing physical registers. Should be passed by value. More...
 
class  MCRegisterClass
 MCRegisterClass - Base class of TargetRegisterClass. More...
 
struct  MCRegisterCostEntry
 Specify the cost of a register definition in terms of number of physical register allocated at register renaming stage. More...
 
struct  MCRegisterDesc
 MCRegisterDesc - This record contains information about a particular register. More...
 
struct  MCRegisterFileDesc
 A register file descriptor. More...
 
class  MCRegisterInfo
 MCRegisterInfo base class - We assume that the target defines a static array of MCRegisterDesc objects that represent all of the machine registers that the target has. More...
 
class  MCRegUnitIterator
 
class  MCRegUnitMaskIterator
 MCRegUnitMaskIterator enumerates a list of register units and their associated lane masks for Reg. More...
 
class  MCRegUnitRootIterator
 MCRegUnitRootIterator enumerates the root registers of a register unit. More...
 
class  MCRelaxableFragment
 A relaxable fragment holds on to its MCInst, since it may need to be relaxed during the assembler layout and relaxation stage. More...
 
class  MCRelocationInfo
 Create MCExprs from relocations found in an object file. More...
 
class  MCResourceInfo
 
struct  MCSchedClassDesc
 Summarize the scheduling resources required for an instruction of a particular scheduling class. More...
 
struct  MCSchedModel
 Machine model for scheduling, bundling, and heuristics. More...
 
class  MCSection
 Instances of this class represent a uniqued identifier for a section in the current translation unit. More...
 
class  MCSectionCOFF
 This represents a section on Windows. More...
 
class  MCSectionDXContainer
 
class  MCSectionELF
 This represents a section on linux, lots of unix variants and some bare metal systems. More...
 
class  MCSectionGOFF
 
class  MCSectionMachO
 This represents a section on a Mach-O system (used by Mac OS X). More...
 
class  MCSectionSPIRV
 
class  MCSectionWasm
 This represents a section on wasm. More...
 
class  MCSectionXCOFF
 
class  MCSPIRVObjectTargetWriter
 
class  MCSPIRVStreamer
 
class  MCStreamer
 Streaming machine code generation interface. More...
 
class  MCSubRegIndexIterator
 Iterator that enumerates the sub-registers of a Reg and the associated sub-register indices. More...
 
class  MCSubRegIterator
 MCSubRegIterator enumerates all sub-registers of Reg. More...
 
class  MCSubtargetInfo
 Generic base class for all target subtargets. More...
 
class  MCSuperRegIterator
 MCSuperRegIterator enumerates all super-registers of Reg. More...
 
class  MCSymbol
 MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created and uniqued by the MCContext class. More...
 
class  MCSymbolCOFF
 
class  MCSymbolELF
 
class  MCSymbolGOFF
 
class  MCSymbolIdFragment
 Represents a symbol table index fragment. More...
 
class  MCSymbolizer
 Symbolize and annotate disassembled instructions. More...
 
class  MCSymbolMachO
 
class  MCSymbolRefExpr
 Represent a reference to a symbol from inside an expression. More...
 
class  MCSymbolSDNode
 
struct  MCSymbolTableValue
 The value for an entry in the symbol table of an MCContext. More...
 
class  MCSymbolWasm
 
class  MCSymbolXCOFF
 
class  MCTargetAsmParser
 MCTargetAsmParser - Generic interface to target specific assembly parsers. More...
 
class  MCTargetExpr
 This is an extension point for target-specific MCExpr subclasses to implement. More...
 
class  MCTargetOptions
 
class  MCTargetStreamer
 Target specific streamer interface. More...
 
class  MCUnaryExpr
 Unary assembler expressions. More...
 
class  MCValue
 This represents an "assembler immediate". More...
 
class  MCWasmObjectTargetWriter
 
class  MCWasmStreamer
 
class  MCWinCOFFObjectTargetWriter
 
class  MCWinCOFFStreamer
 
struct  MCWriteLatencyEntry
 Specify the latency in cpu cycles for a particular scheduling class and def index. More...
 
struct  MCWriteProcResEntry
 Identify one of the processor resource kinds consumed by a particular scheduling class for the specified number of cycles. More...
 
class  MCXCOFFObjectTargetWriter
 
class  MCXCOFFStreamer
 
class  MD5
 
class  MDAttachments
 Multimap-like storage for metadata attachments. More...
 
class  MDBuilder
 
class  MDNode
 Metadata node. More...
 
struct  MDNodeInfo
 DenseMapInfo for MDNode subclasses. More...
 
struct  MDNodeKeyImpl
 
struct  MDNodeKeyImpl< DIBasicType >
 
struct  MDNodeKeyImpl< DICommonBlock >
 
struct  MDNodeKeyImpl< DICompositeType >
 
struct  MDNodeKeyImpl< DIDerivedType >
 
struct  MDNodeKeyImpl< DIEnumerator >
 
struct  MDNodeKeyImpl< DIExpression >
 
struct  MDNodeKeyImpl< DIFile >
 
struct  MDNodeKeyImpl< DIGenericSubrange >
 
struct  MDNodeKeyImpl< DIGlobalVariable >
 
struct  MDNodeKeyImpl< DIGlobalVariableExpression >
 
struct  MDNodeKeyImpl< DIImportedEntity >
 
struct  MDNodeKeyImpl< DILabel >
 
struct  MDNodeKeyImpl< DILexicalBlock >
 
struct  MDNodeKeyImpl< DILexicalBlockFile >
 
struct  MDNodeKeyImpl< DILocalVariable >
 
struct  MDNodeKeyImpl< DILocation >
 DenseMapInfo for DILocation. More...
 
struct  MDNodeKeyImpl< DIMacro >
 
struct  MDNodeKeyImpl< DIMacroFile >
 
struct  MDNodeKeyImpl< DIModule >
 
struct  MDNodeKeyImpl< DINamespace >
 
struct  MDNodeKeyImpl< DIObjCProperty >
 
struct  MDNodeKeyImpl< DIStringType >
 
struct  MDNodeKeyImpl< DISubprogram >
 
struct  MDNodeKeyImpl< DISubrange >
 
struct  MDNodeKeyImpl< DISubroutineType >
 
struct  MDNodeKeyImpl< DITemplateTypeParameter >
 
struct  MDNodeKeyImpl< DITemplateValueParameter >
 
struct  MDNodeKeyImpl< GenericDINode >
 DenseMapInfo for GenericDINode. More...
 
struct  MDNodeKeyImpl< MDTuple >
 DenseMapInfo for MDTuple. More...
 
class  MDNodeOpsKey
 Structure for hashing arbitrary MDNode operands. More...
 
class  MDNodeSDNode
 
struct  MDNodeSubsetEqualImpl
 Configuration point for MDNodeInfo::isEqual(). More...
 
struct  MDNodeSubsetEqualImpl< DIDerivedType >
 
struct  MDNodeSubsetEqualImpl< DISubprogram >
 
class  MDOperand
 Tracking metadata reference owned by Metadata. More...
 
class  MDString
 A single uniqued string. More...
 
class  MDTuple
 Tuple of metadata. More...
 
class  MDTupleTypedArrayWrapper
 Typed, array-like tuple of metadata. More...
 
class  MemCpyInlineInst
 This class wraps the llvm.memcpy.inline intrinsic. More...
 
class  MemCpyInst
 This class wraps the llvm.memcpy intrinsic. More...
 
class  MemCpyOptPass
 
class  MemDepResult
 A memory dependence query can return one of three different answers. More...
 
class  MemDerefPrinterPass
 
class  MemIntrinsic
 This is the common base class for memset/memcpy/memmove. More...
 
class  MemIntrinsicBase
 Common base class for all memory intrinsics. More...
 
struct  MemIntrinsicInfo
 Information about a load/store intrinsic defined by the target. More...
 
class  MemIntrinsicSDNode
 This SDNode is used for target intrinsics that touch memory and need an associated MachineMemOperand. More...
 
class  MemMoveInst
 This class wraps the llvm.memmove intrinsic. More...
 
struct  MemOp
 
class  MemoryAccess
 
class  memoryaccess_def_iterator_base
 Iterator base class used to implement const and non-const iterators over the defining accesses of a MemoryAccess. More...
 
class  MemoryBuffer
 This interface provides simple read-only access to a block of memory, and provides simple methods for reading files and standard input into a memory buffer. More...
 
class  MemoryBufferByteStream
 An implementation of BinaryStream whose data is backed by an llvm MemoryBuffer object. More...
 
class  MemoryBufferRef
 
class  MemoryClauseInitialScheduleStage
 
class  MemoryDef
 Represents a read-write access to memory, whether it is a must-alias, or a may-alias. More...
 
class  MemoryDepChecker
 Checks memory dependences among accesses to the same underlying object to determine whether there vectorization is legal or not (and at which vectorization factor). More...
 
class  MemoryDependenceAnalysis
 An analysis that produces MemoryDependenceResults for a function. More...
 
class  MemoryDependenceResults
 Provides a lazy, caching interface for making common memory aliasing information queries, backed by LLVM's alias analysis passes. More...
 
class  MemoryDependenceWrapperPass
 A wrapper analysis pass for the legacy pass manager that exposes a MemoryDepnedenceResults instance. More...
 
class  MemoryEffectsBase
 
class  MemoryLocation
 Representation for a specific memory location. More...
 
struct  MemoryOpRemark
 
class  MemoryPhi
 Represents phi nodes for memory accesses. More...
 
struct  MemorySanitizerOptions
 
struct  MemorySanitizerPass
 A module pass for msan instrumentation. More...
 
class  MemorySSA
 Encapsulates MemorySSA, including all data associated with memory accesses. More...
 
class  MemorySSAAnalysis
 An analysis that produces MemorySSA for a function. More...
 
class  MemorySSAPrinterPass
 Printer pass for MemorySSA. More...
 
class  MemorySSAUpdater
 
class  MemorySSAUtil
 
struct  MemorySSAVerifierPass
 Verifier pass for MemorySSA. More...
 
class  MemorySSAWalker
 This is the generic walker interface for walkers of MemorySSA. More...
 
class  MemorySSAWalkerPrinterPass
 Printer pass for MemorySSA via the walker. More...
 
class  MemorySSAWrapperPass
 Legacy analysis pass which computes MemorySSA. More...
 
class  MemoryUse
 Represents read-only accesses to memory. More...
 
class  MemoryUseOrDef
 Class that has the common methods + fields of memory uses/defs. More...
 
class  MemoryWriteTracking
 
class  MemProfContextDisambiguation
 
class  MemProfilerPass
 Public interface to the memory profiler pass for instrumenting code to profile memory accesses. More...
 
class  MemProfUsePass
 
class  MemSDNode
 This is an abstract virtual class for memory operations. More...
 
class  MemSetBase
 Common base class for all memset intrinsics. More...
 
class  MemSetInlineInst
 This class wraps the llvm.memset.inline intrinsic. More...
 
class  MemSetInst
 This class wraps the llvm.memset and llvm.memset.inline intrinsics. More...
 
class  MemSetPatternInst
 This class wraps the llvm.experimental.memset.pattern intrinsic. More...
 
class  MemSetPatternIntrinsic
 This is the base class for llvm.experimental.memset.pattern. More...
 
class  MemTransferBase
 Common base class for all memory transfer intrinsics. More...
 
class  MemTransferInst
 This class wraps the llvm.memcpy/memmove intrinsics. More...
 
struct  MergedLoadStoreMotionOptions
 
class  MergedLoadStoreMotionPass
 
class  MergeFunctionsPass
 Merge identical functions. More...
 
struct  MergeICmpsPass
 
class  Metadata
 Root of the metadata hierarchy. More...
 
class  MetadataAsValue
 Metadata wrapper in the Value hierarchy. More...
 
class  MetadataLoader
 Helper class that handles loading Metadatas and keeping them available. More...
 
struct  MetadataLoaderCallbacks
 
class  MetadataTracking
 API for tracking metadata references through RAUW and deletion. More...
 
struct  MetaRenamerPass
 
class  MFPropsModifier
 An RAII based helper class to modify MachineFunctionProperties when running pass. More...
 
struct  MIBInfo
 Summary of a single MIB in a memprof metadata on allocations. More...
 
class  MIBundleBuilder
 Helper class for constructing bundles of MachineInstrs. More...
 
class  MIBundleOperandIteratorBase
 MIBundleOperandIteratorBase - Iterator that visits all operands in a bundle of MachineInstrs. More...
 
class  MIBundleOperands
 MIBundleOperands - Iterate over all operands in a bundle of machine instructions. More...
 
class  MIMetadata
 Set of metadata that should be preserved when using BuildMI(). More...
 
struct  MinMax
 
class  MinMaxIntrinsic
 This class represents min/max intrinsics. More...
 
class  MIPrinter
 This class prints out the machine instructions using the MIR serialization format. More...
 
class  Mips16DAGToDAGISel
 
class  Mips16DAGToDAGISelLegacy
 
class  Mips16FrameLowering
 
class  Mips16InstrInfo
 
class  Mips16RegisterInfo
 
class  Mips16TargetLowering
 
struct  MipsABIFlagsSection
 
class  MipsABIInfo
 
class  MipsAnalyzeImmediate
 
class  MipsAsmBackend
 
class  MipsAsmPrinter
 
class  MipsCallLowering
 
class  MipsCCState
 
class  MipsCOFFMCAsmInfo
 
class  MipsDAGToDAGISel
 
class  MipsDAGToDAGISelLegacy
 
class  MipsebTargetMachine
 Mips32/64 big endian target machine. More...
 
class  MipsELFMCAsmInfo
 
class  MipsELFStreamer
 
class  MipselTargetMachine
 Mips32/64 little endian target machine. More...
 
class  MipsFrameLowering
 
class  MipsFunctionInfo
 MipsFunctionInfo - This class is derived from MachineFunction private Mips target-specific information for each MachineFunction. More...
 
class  MipsGenRegisterBankInfo
 
class  MipsInstPrinter
 
class  MipsInstrInfo
 
class  MipsLegalizerInfo
 This class provides legalization strategies. More...
 
class  MipsMCCodeEmitter
 
class  MipsMCExpr
 
class  MipsMCInstLower
 MipsMCInstLower - This class is used to lower an MachineInstr into an MCInst. More...
 
class  MipsOptionRecord
 
class  MipsRegInfoRecord
 
class  MipsRegisterBankInfo
 This class provides the information for the target register banks. More...
 
class  MipsRegisterInfo
 
class  MipsSEDAGToDAGISel
 
class  MipsSEDAGToDAGISelLegacy
 
class  MipsSEFrameLowering
 
class  MipsSEInstrInfo
 
class  MipsSelectionDAGInfo
 
class  MipsSERegisterInfo
 
class  MipsSETargetLowering
 
class  MipsSubtarget
 
class  MipsTargetAsmStreamer
 
class  MipsTargetELFStreamer
 
class  MipsTargetLowering
 
class  MipsTargetMachine
 
class  MipsTargetObjectFile
 
class  MipsTargetStreamer
 
class  MipsTTIImpl
 
class  MIRAddFSDiscriminators
 
class  MIRFormatter
 MIRFormater - Interface to format MIR operand based on target. More...
 
class  MIRParser
 This class initializes machine functions by applying the state loaded from a MIR file. More...
 
class  MIRParserImpl
 This class implements the parsing of LLVM IR that's embedded inside a MIR file. More...
 
class  MIRPrinter
 This class prints out the machine functions using the MIR serialization format. More...
 
class  MIRProfileLoader
 
class  MIRProfileLoaderPass
 
struct  MIToken
 A token produced by the machine instruction lexer. More...
 
class  MLInlineAdvice
 InlineAdvice that tracks changes post inlining. More...
 
class  MLInlineAdvisor
 
class  MLModelRunner
 MLModelRunner interface: abstraction of a mechanism for evaluating a ML model. More...
 
class  MLPriorityAdvisor
 
class  MMRAMetadata
 Helper class to manipulate !mmra metadata nodes. More...
 
class  ModifiedPostOrder
 Construct a specially modified post-order traversal of cycles. More...
 
class  Module
 A Module instance is used to store all the information related to an LLVM module. More...
 
class  ModuleDebugInfoPrinterPass
 
class  ModuleInlinerPass
 The module inliner pass for the new pass manager. More...
 
class  ModuleInlinerWrapperPass
 Module pass, wrapping the inliner pass. More...
 
class  ModuleMemProfilerPass
 Public interface to the memory profiler module pass for instrumenting code to profile memory allocations and accesses. More...
 
class  ModulePass
 ModulePass class - This class is used to implement unstructured interprocedural optimizations and analyses. More...
 
class  ModuleSlotTracker
 Manage lifetime of a slot tracker for printing IR. More...
 
class  ModuleSummaryIndex
 Class to hold module path string table and global value map, and encapsulate methods for operating on them. More...
 
class  ModuleSummaryIndexAnalysis
 Analysis pass to provide the ModuleSummaryIndex object. More...
 
class  ModuleSummaryIndexWrapperPass
 Legacy wrapper pass to provide the ModuleSummaryIndex object. More...
 
class  ModuleSymbolTable
 
struct  ModuleThreadSanitizerPass
 A module pass for tsan instrumentation. More...
 
class  ModuleToFunctionPassAdaptor
 Trivial adaptor that maps from a module to its functions. More...
 
class  ModuleToPostOrderCGSCCPassAdaptor
 The core module pass which does a post-order walk of the SCCs and runs a CGSCC pass over each one. More...
 
class  ModuloSchedule
 Represents a schedule for a single-block loop. More...
 
class  ModuloScheduleExpander
 The ModuloScheduleExpander takes a ModuloSchedule and expands it in-place, rewriting the old loop and inserting prologs and epilogs as required. More...
 
class  ModuloScheduleExpanderMVE
 Expand the kernel using modulo variable expansion algorithm (MVE). More...
 
class  ModuloScheduleTestAnnotater
 Expander that simply annotates each scheduled instruction with a post-instr symbol that can be consumed by the ModuloScheduleTest pass. More...
 
class  MoveAutoInitPass
 
class  MSP430AttributeParser
 
class  MSP430FrameLowering
 
class  MSP430InstPrinter
 
class  MSP430InstrInfo
 
class  MSP430MachineFunctionInfo
 MSP430MachineFunctionInfo - This class is derived from MachineFunction and contains private MSP430 target-specific information for each MachineFunction. More...
 
class  MSP430MCAsmInfo
 
class  MSP430MCCodeEmitter
 
class  MSP430MCInstLower
 MSP430MCInstLower - This class is used to lower an MachineInstr into an MCInst. More...
 
class  MSP430RegisterInfo
 
class  MSP430Subtarget
 
class  MSP430TargetELFStreamer
 
class  MSP430TargetLowering
 
class  MSP430TargetMachine
 MSP430TargetMachine. More...
 
class  MSVCPError
 
class  MSVCPExpected
 
class  MulOperator
 
struct  MultiClass
 
class  MultiHazardRecognizer
 
struct  MustBeExecutedContextExplorer
 A "must be executed context" for a given program point PP is the set of instructions, potentially before and after PP, that are executed always when PP is reached. More...
 
class  MustBeExecutedContextPrinterPass
 
struct  MustBeExecutedIterator
 Must be executed iterators visit stretches of instructions that are guaranteed to be executed together, potentially with other instruction executed in-between. More...
 
class  MustExecutePrinterPass
 
class  MutableArrayRef
 MutableArrayRef - Represent a mutable reference to an array (0 or more elements consecutively in memory), i.e. More...
 
class  MutableBinaryByteStream
 An implementation of BinaryStream which holds its entire data set in a single contiguous buffer. More...
 
class  MVT
 Machine Value Type. More...
 
class  NameAnonGlobalPass
 Simple pass that provides a name to every anonymous globals. More...
 
struct  NamedInstrProfRecord
 
class  NamedMDNode
 A tuple of MDNodes. More...
 
struct  NamedRegionTimer
 This class is basically a combination of TimeRegion and Timer. More...
 
class  NaryReassociatePass
 
class  NearMissInfo
 
class  Negator
 
struct  NewArchiveMember
 
class  NewGVNPass
 
struct  NfaStatePair
 Forward define the pair type used by the automata transition info tables. More...
 
class  NoAliasScopeDeclInst
 
class  NoCFIValue
 Wrapper for a value that won't be replaced with a CFI jump table pointer in LowerTypeTestsModule. More...
 
class  NodeSet
 A NodeSet contains a set of SUnit DAG nodes with additional information that assigns a priority to the set. More...
 
class  NoFolder
 NoFolder - Create "constants" (actually, instructions) with no folding. More...
 
class  NoInferenceModelRunner
 A pseudo model runner. More...
 
class  NonLocalDepEntry
 This is an entry in the NonLocalDepInfo cache. More...
 
class  NonLocalDepResult
 This is a result from a NonLocal dependence query. More...
 
class  NonRelocatableStringpool
 A string table that doesn't need relocations. More...
 
class  NoOpCGSCCAnalysis
 No-op CGSCC analysis. More...
 
struct  NoOpCGSCCPass
 No-op CGSCC pass which does nothing. More...
 
class  NoOpFunctionAnalysis
 No-op function analysis. More...
 
struct  NoOpFunctionPass
 No-op function pass which does nothing. More...
 
class  NoOpLoopAnalysis
 No-op loop analysis. More...
 
struct  NoOpLoopNestPass
 No-op loop nest pass which does nothing. More...
 
struct  NoOpLoopPass
 No-op loop pass which does nothing. More...
 
struct  NoOpMachineFunctionPass
 No-op machine function pass which does nothing. More...
 
class  NoOpModuleAnalysis
 No-op module analysis. More...
 
struct  NoOpModulePass
 No-op module pass which does nothing. More...
 
class  NoopSavedModelImpl
 A mock class satisfying the interface expected by ReleaseModeModelRunner for its TGen parameter. More...
 
class  NoopStatistic
 
class  NotFoundError
 
struct  NullableValueCastFailed
 All of these cast traits are meant to be implementations for useful casts that users may want to use that are outside the standard behavior. More...
 
class  NumberedValues
 Mapping from value ID to value, which also remembers what the next unused ID is. More...
 
struct  NumericalStabilitySanitizerPass
 A function pass for nsan instrumentation. More...
 
class  NumericSubstitution
 
class  NumericVariable
 Class representing a numeric variable and its associated current value. More...
 
class  NumericVariableUse
 Class representing the use of a numeric variable in the AST of an expression. More...
 
class  NVPTXAA
 Analysis pass providing a never-invalidated alias analysis result. More...
 
class  NVPTXAAResult
 
class  NVPTXAAWrapperPass
 Legacy wrapper pass to provide the NVPTXAAResult object. More...
 
class  NVPTXAsmPrinter
 
class  NVPTXAsmTargetStreamer
 
struct  NVPTXCopyByValArgsPass
 
class  NVPTXCtorDtorLoweringPass
 Lower llvm.global_ctors and llvm.global_dtors to special kernels. More...
 
class  NVPTXDAGToDAGISel
 
class  NVPTXDAGToDAGISelLegacy
 
class  NVPTXExternalAAWrapper
 
class  NVPTXFloatMCExpr
 
class  NVPTXFrameLowering
 
class  NVPTXGenericMCSymbolRefExpr
 A wrapper for MCSymbolRefExpr that tells the assembly printer that the symbol should be enclosed by generic(). More...
 
class  NVPTXInstPrinter
 
class  NVPTXInstrInfo
 
class  NVPTXMachineFunctionInfo
 
class  NVPTXMCAsmInfo
 
class  NVPTXRegisterInfo
 
struct  NVPTXScopes
 
class  NVPTXSelectionDAGInfo
 
class  NVPTXSubtarget
 
class  NVPTXTargetLowering
 
class  NVPTXTargetMachine
 NVPTXTargetMachine. More...
 
class  NVPTXTargetMachine32
 
class  NVPTXTargetMachine64
 
class  NVPTXTargetObjectFile
 
class  NVPTXTargetStreamer
 Implments NVPTX-specific streamer. More...
 
class  NVPTXTTIImpl
 
struct  NVVMIntrRangePass
 
struct  NVVMReflectPass
 
struct  ObjCARCAPElimPass
 
struct  ObjCARCContractPass
 
struct  ObjCARCExpandPass
 
struct  ObjCARCOptPass
 
struct  ObjCSelectorNames
 
struct  object_creator
 object_creator - Helper method for ManagedStatic. More...
 
struct  object_deleter
 object_deleter - Helper method for ManagedStatic. More...
 
struct  object_deleter< T[N]>
 
class  ObjectCache
 This is the base ObjectCache type which can be provided to an ExecutionEngine for the purpose of avoiding compilation for Modules that have already been compiled and an object file is available. More...
 
class  ObjectSizeOffsetEvaluator
 Evaluate the size and offset of an object pointed to by a Value*. More...
 
class  ObjectSizeOffsetVisitor
 Evaluate the size and offset of an object pointed to by a Value* statically. More...
 
struct  ObjectSizeOpts
 Various options to control the behavior of getObjectSize. More...
 
class  OccInitialScheduleStage
 
class  OffloadEntriesInfoManager
 Class that manages information about offload code regions and data. More...
 
struct  OffsetAndUnitID
 Helper class to identify an entry in DWARF5AccelTable based on their DIE offset and UnitID. More...
 
struct  OffsetSpan
 OffsetSpan - Used internally by ObjectSizeOffsetVisitor. More...
 
struct  OffsetsTag
 
struct  on_first
 Function object to apply a binary function to the first component of a std::pair. More...
 
struct  once_flag
 The llvm::once_flag structure. More...
 
class  OnDiskChainedHashTable
 Provides lookup on an on disk hash table. More...
 
class  OnDiskChainedHashTableGenerator
 Generates an on disk hash table. More...
 
class  OnDiskIterableChainedHashTable
 Provides lookup and iteration over an on disk hash table. More...
 
class  OpenMPIRBuilder
 An interface to create LLVM-IR for OpenMP directives. More...
 
class  OpenMPIRBuilderConfig
 Captures attributes that affect generating LLVM-IR using the OpenMPIRBuilder and related classes. More...
 
class  OpenMPOptCGSCCPass
 
class  OpenMPOptPass
 OpenMP optimizations pass. More...
 
class  OperandBundleDefT
 A container for an operand bundle being viewed as a set of values rather than a set of uses. More...
 
struct  OperandBundleUse
 A lightweight accessor for an operand bundle meant to be passed around by value. More...
 
struct  OperandTraits
 Compile-time customization of User operands. More...
 
struct  OperandTraits< AddrSpaceCastOperator >
 
struct  OperandTraits< AtomicCmpXchgInst >
 
struct  OperandTraits< AtomicRMWInst >
 
struct  OperandTraits< BinaryConstantExpr >
 
struct  OperandTraits< BinaryOperator >
 
struct  OperandTraits< BitCastOperator >
 
struct  OperandTraits< BlockAddress >
 
struct  OperandTraits< BranchInst >
 
struct  OperandTraits< CallBase >
 
struct  OperandTraits< CastConstantExpr >
 
struct  OperandTraits< CatchReturnInst >
 
struct  OperandTraits< CatchSwitchInst >
 
struct  OperandTraits< CleanupReturnInst >
 
struct  OperandTraits< CmpInst >
 
struct  OperandTraits< ConstantAggregate >
 
struct  OperandTraits< ConstantExpr >
 
struct  OperandTraits< ConstantPtrAuth >
 
struct  OperandTraits< DSOLocalEquivalent >
 
struct  OperandTraits< ExtractElementConstantExpr >
 
struct  OperandTraits< ExtractElementInst >
 
struct  OperandTraits< FuncletPadInst >
 
struct  OperandTraits< Function >
 
struct  OperandTraits< GEPOperator >
 
struct  OperandTraits< GetElementPtrConstantExpr >
 
struct  OperandTraits< GetElementPtrInst >
 
struct  OperandTraits< GlobalAlias >
 
struct  OperandTraits< GlobalIFunc >
 
struct  OperandTraits< GlobalVariable >
 
struct  OperandTraits< IndirectBrInst >
 
struct  OperandTraits< InsertElementConstantExpr >
 
struct  OperandTraits< InsertElementInst >
 
struct  OperandTraits< InsertValueInst >
 
struct  OperandTraits< LandingPadInst >
 
struct  OperandTraits< MemoryDef >
 
struct  OperandTraits< MemoryPhi >
 
struct  OperandTraits< MemoryUse >
 
struct  OperandTraits< MemoryUseOrDef >
 
struct  OperandTraits< NoCFIValue >
 
struct  OperandTraits< OverflowingBinaryOperator >
 
struct  OperandTraits< PHINode >
 
struct  OperandTraits< PossiblyExactOperator >
 
struct  OperandTraits< PtrToIntOperator >
 
struct  OperandTraits< ResumeInst >
 
struct  OperandTraits< ReturnInst >
 
struct  OperandTraits< SelectInst >
 
struct  OperandTraits< ShuffleVectorConstantExpr >
 
struct  OperandTraits< ShuffleVectorInst >
 
struct  OperandTraits< StoreInst >
 
struct  OperandTraits< SwitchInst >
 
struct  OperandTraits< UnaryInstruction >
 
class  Operator
 This is a utility class that provides an abstraction for the common functionality between Instructions and ConstantExprs. More...
 
class  OpInit
 Base class for operators. More...
 
class  OProfileWrapper
 
class  OptBisect
 This class implements a mechanism to disable passes and individual optimizations at compile time based on a command line option (-opt-bisect-limit) in order to perform a bisecting search for optimization-related problems. More...
 
class  OptimizationLevel
 
class  OptimizationRemark
 Diagnostic information for applied optimization remarks. More...
 
class  OptimizationRemarkAnalysis
 Diagnostic information for optimization analysis remarks. More...
 
class  OptimizationRemarkAnalysisAliasing
 Diagnostic information for optimization analysis remarks related to pointer aliasing. More...
 
class  OptimizationRemarkAnalysisFPCommute
 Diagnostic information for optimization analysis remarks related to floating-point non-commutativity. More...
 
class  OptimizationRemarkEmitter
 The optimization diagnostic interface. More...
 
class  OptimizationRemarkEmitterAnalysis
 
class  OptimizationRemarkEmitterWrapperPass
 OptimizationRemarkEmitter legacy analysis pass. More...
 
class  OptimizationRemarkMissed
 Diagnostic information for missed-optimization remarks. More...
 
struct  OptimizedStructLayoutField
 A field in a structure. More...
 
class  OptimizePHIsPass
 
struct  OptionalOperandTraits
 OptionalOperandTraits - when the number of operands may change at runtime. More...
 
struct  OptionalValueCast
 This cast trait provides std::optional<T> casting. More...
 
class  OptLevelChanger
 This class is used by SelectionDAGISel to temporarily override the optimization level on a per-function basis. More...
 
class  OptNoneInstrumentation
 
class  OptPassGate
 Extensions to this class implement mechanisms to disable passes and individual optimizations at compile time. More...
 
class  OptPassGateInstrumentation
 
class  OrderedChangedData
 
class  OuterAnalysisManagerProxy
 An analysis over an "inner" IR unit that provides access to an analysis manager over a "outer" IR unit. More...
 
struct  OutlinableRegion
 The OutlinableRegion holds all the information for a specific region, or sequence of instructions. More...
 
class  OutlinedHashTree
 
struct  OutlinedHashTreeRecord
 
class  OutputCategoryAggregator
 
class  OverflowError
 Class to represent an overflow error that might result when manipulating a value. More...
 
class  OverflowingBinaryOperator
 Utility class for integer operators which may exhibit overflow - Add, Sub, Mul, and Shl. More...
 
struct  OverlapFuncFilters
 
struct  OverlapStats
 
class  OwningArrayRef
 This is a MutableArrayRef that owns its array. More...
 
class  PackedVector
 Store a vector of values using a specific number of bits for each value. More...
 
class  PackedVectorBase
 
class  PackedVectorBase< T, BitNum, BitVectorTy, false >
 
class  PackedVectorBase< T, BitNum, BitVectorTy, true >
 
struct  PAEvalPass
 
class  PagedVector
 A vector that allocates memory in pages. More...
 
struct  pair_hash
 
struct  ParsedModuleAndIndex
 Holds the Module and ModuleSummaryIndex returned by the interfaces that parse both. More...
 
struct  ParseInstructionInfo
 
struct  ParserCallbacks
 
class  ParseResult
 This class represents success/failure for parsing-like operations that find it important to chain together failable operations with ||. More...
 
class  ParseStatus
 Ternary parse status returned by various parse* methods. More...
 
class  PartialInlinerPass
 Pass to remove unused function declarations. More...
 
class  PartiallyInlineLibCallsPass
 
class  PartialOrderingVisitor
 
struct  PartialReductionChain
 A chain of instructions that form a partial reduction. More...
 
class  Pass
 Pass interface - Implemented by all 'passes'. More...
 
class  PassBuilder
 This class provides access to building LLVM's passes. More...
 
class  PassConfigImpl
 
class  PassInfo
 PassInfo class - An instance of this class exists for every pass known by the system, and can be obtained from a live Pass by calling its getPassInfo() method. More...
 
struct  PassInfoMixin
 A CRTP mix-in to automatically provide informational APIs needed for passes. More...
 
class  PassInstrumentation
 This class provides instrumentation entry points for the Pass Manager, doing calls to callbacks registered in PassInstrumentationCallbacks. More...
 
class  PassInstrumentationAnalysis
 Pseudo-analysis pass that exposes the PassInstrumentation to pass managers. More...
 
struct  PassInstrumentationCallbacks
 This class manages callbacks registration, as well as provides a way for PassInstrumentation to pass control to the registered callbacks. More...
 
class  PassManager
 Manages a sequence of passes over a particular unit of IR. More...
 
class  PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >
 
class  PassManagerPrettyStackEntry
 PassManagerPrettyStackEntry - This is used to print informative information about what pass is running when/if a stack trace is generated. More...
 
class  PassNameParser
 
class  PassPlugin
 A loaded pass plugin. More...
 
struct  PassPluginLibraryInfo
 Information about the plugin required to load its passes. More...
 
struct  PassRegistrationListener
 PassRegistrationListener class - This class is meant to be derived from by clients that are interested in which passes get registered and unregistered at runtime (which can be because of the RegisterPass constructors being run as the program starts up, or may be because a shared object just got loaded). More...
 
class  PassRegistry
 PassRegistry - This class manages the registration and intitialization of the pass subsystem as application startup, and assists the PassManager in resolving pass dependencies. More...
 
class  PatchPointOpers
 MI-level patchpoint operands. More...
 
class  Pattern
 
struct  PatternsForOpcode
 Map from opcode to pattern list by binary search. More...
 
class  PBQPRAConstraint
 Abstract base for classes implementing PBQP register allocation constraints (e.g. More...
 
class  PBQPRAConstraintList
 PBQP register allocation constraint composer. More...
 
class  PeelingModuloScheduleExpander
 A reimplementation of ModuloScheduleExpander. More...
 
class  PeepholeOptimizerPass
 
struct  PerFunctionMIParsingState
 
struct  PerTargetMIParsingState
 
class  PGOContextualProfile
 The instrumented contextual profile, produced by the CtxProfAnalysis. More...
 
class  PGOCtxProfContext
 A node (context) in the loaded contextual profile, suitable for mutation during IPO passes. More...
 
class  PGOCtxProfFlatteningPass
 
class  PGOCtxProfileReader
 
class  PGOCtxProfileWriter
 Write one or more ContextNodes to the provided raw_fd_stream. More...
 
class  PGOCtxProfLoweringPass
 
struct  PGOForceFunctionAttrsPass
 
class  PGOIndirectCallPromotion
 The indirect function call promotion pass. More...
 
struct  PGOIndirectCallVisitor
 
class  PGOInstrumentationGen
 The instrumentation (profile-instr-gen) pass for IR based PGO. More...
 
class  PGOInstrumentationGenCreateVar
 The instrumentation (profile-instr-gen) pass for IR based PGO. More...
 
class  PGOInstrumentationUse
 The profile annotation (profile-instr-use) pass for IR based PGO. More...
 
class  PGOMemOPSizeOpt
 The profile size based optimization pass for memory intrinsics. More...
 
struct  PGOOptions
 A struct capturing PGO tunables. More...
 
class  PHIEliminationPass
 
class  PhiLoweringHelper
 
class  PHINode
 
class  PHITransAddr
 PHITransAddr - An address value which tracks and handles phi translation. More...
 
class  PhiValues
 Class for calculating and caching the underlying values of phis in a function. More...
 
class  PhiValuesAnalysis
 The analysis pass which yields a PhiValues. More...
 
class  PhiValuesPrinterPass
 A pass for printing the PhiValues for a function. More...
 
class  PhiValuesWrapperPass
 Wrapper pass for the legacy pass manager. More...
 
class  PhysicalRegisterUsageAnalysis
 
class  PhysicalRegisterUsageInfo
 
class  PhysicalRegisterUsageInfoPrinterPass
 
class  PhysicalRegisterUsageInfoWrapperLegacy
 
struct  PhysRegInfo
 Information about how a physical register Reg is used by a set of operands. More...
 
struct  PhysRegSUOper
 Record a physical register access. More...
 
class  PiBlockDDGNode
 Subclass of DDGNode representing a pi-block. More...
 
class  PipelineTuningOptions
 Tunable parameters for passes in the default pipelines. More...
 
class  PlaceSafepointsPass
 
class  PluginInlineAdvisorAnalysis
 Used for dynamically registering InlineAdvisors as plugins. More...
 
class  PluginInlineOrderAnalysis
 Used for dynamically loading instances of InlineOrder as plugins. More...
 
struct  PluginLoader
 
class  PMDataManager
 PMDataManager provides the common place to manage the analysis data used by pass managers. More...
 
class  PMStack
 PMStack - This class implements a stack data structure of PMDataManager pointers. More...
 
class  PMTopLevelManager
 PMTopLevelManager manages LastUser info and collects common APIs used by top level pass managers. More...
 
struct  po_ext_iterator
 
class  po_iterator
 
class  po_iterator_storage
 Default po_iterator_storage implementation with an internal set object. More...
 
class  po_iterator_storage< LoopBlocksTraversal, true >
 Specialize po_iterator_storage to record postorder numbers. More...
 
class  po_iterator_storage< LoopBounds, true >
 
class  po_iterator_storage< SetType, true >
 Specialization of po_iterator_storage that references an external set. More...
 
struct  pointee_iterator
 An iterator type that allows iterating over the pointees via some other iterator. More...
 
class  pointer_iterator
 
struct  PointerDiffInfo
 
class  PointerEmbeddedInt
 Utility to embed an integer into a pointer-like type. More...
 
class  PointerIntPair
 PointerIntPair - This class implements a pair of a pointer and small integer. More...
 
struct  PointerIntPairInfo
 
struct  PointerLikeTypeTraits
 A traits type that is used to handle pointer types and things that are just wrappers for pointers as a uniform entity. More...
 
struct  PointerLikeTypeTraits< const T * >
 
struct  PointerLikeTypeTraits< const T >
 
struct  PointerLikeTypeTraits< PointerEmbeddedInt< IntT, Bits > >
 
struct  PointerLikeTypeTraits< PointerIntPair< PointerTy, IntBits, IntType, PtrTraits > >
 
struct  PointerLikeTypeTraits< PointerUnion< PTs... > >
 
struct  PointerLikeTypeTraits< ReachingDef >
 
struct  PointerLikeTypeTraits< ReturnT(*)(ParamTs...)>
 Provide a default specialization for function pointers that assumes 4-byte alignment. More...
 
struct  PointerLikeTypeTraits< T * >
 
struct  PointerLikeTypeTraits< uintptr_t >
 
struct  PointerLikeTypeTraits< void * >
 
class  PointerSumType
 A sum type over pointer-like types. More...
 
struct  PointerSumTypeMember
 A compile time pair of an integer tag and the pointer-like type which it indexes within a sum type. More...
 
class  PointerType
 Class to represent pointers. More...
 
class  PointerUnion
 A discriminated union of two or more pointer types, with the discriminator in the low bit of the pointer. More...
 
struct  PoisonFlags
 
class  PoisoningVH
 Value handle that poisons itself if the Value is deleted. More...
 
class  PoisonValue
 In order to facilitate speculative execution, many instructions do not invoke immediate undefined behavior when provided with illegal operands, and return a poison value instead. More...
 
class  PopulateLoopsDFS
 Populate all loop data in a stable order during a single forward DFS. More...
 
class  PossiblyDisjointInst
 An or instruction, which can be marked as "disjoint", indicating that the inputs don't have a 1 in the same bit position. More...
 
class  PossiblyExactOperator
 A udiv or sdiv instruction, which can be marked as "exact", indicating that no bits are destroyed. More...
 
class  PossiblyNonNegInst
 Instruction that can have a nneg flag (zext/uitofp). More...
 
class  PostDominatorTree
 PostDominatorTree Class - Concrete subclass of DominatorTree that is used to compute the post-dominator tree. More...
 
class  PostDominatorTreeAnalysis
 Analysis pass which computes a PostDominatorTree. More...
 
class  PostDominatorTreePrinterPass
 Printer pass for the PostDominatorTree. More...
 
struct  PostDominatorTreeWrapperPass
 
struct  PostDomOnlyPrinter
 
struct  PostDomOnlyViewer
 
struct  PostDomPrinter
 
struct  PostDomViewer
 
class  PostGenericScheduler
 PostGenericScheduler - Interface to the scheduling algorithm used by ScheduleDAGMI. More...
 
struct  PostOrderFunctionAttrsPass
 Computes function attributes in post-order over the call graph. More...
 
struct  PotentialValuesState
 A class for a set state. More...
 
class  PPC64LinuxTargetObjectFile
 PPC64LinuxTargetObjectFile - This implementation is used for 64-bit PowerPC Linux. More...
 
class  PPCCallLowering
 
class  PPCCCState
 
class  PPCDispatchGroupSBHazardRecognizer
 PPCDispatchGroupSBHazardRecognizer - This class implements a scoreboard-based hazard recognizer for PPC ooo processors with dispatch-group hazards. More...
 
class  PPCELFMCAsmInfo
 
class  PPCELFStreamer
 
class  PPCFrameLowering
 
class  PPCFunctionInfo
 PPCFunctionInfo - This class is derived from MachineFunction private PowerPC target-specific information for each MachineFunction. More...
 
class  PPCGenRegisterBankInfo
 
class  PPCHazardRecognizer970
 PPCHazardRecognizer970 - This class defines a finite state automata that models the dispatch logic on the PowerPC 970 (aka G5) processor. More...
 
class  PPCIncomingValueHandler
 
class  PPCInstPrinter
 
class  PPCInstrInfo
 
class  PPCLegalizerInfo
 This class provides the information for the PowerPC target legalizer for GlobalISel. More...
 
class  PPCMCCodeEmitter
 
class  PPCMCExpr
 
class  PPCPostRASchedStrategy
 A MachineSchedStrategy implementation for PowerPC post RA scheduling. More...
 
class  PPCPreRASchedStrategy
 A MachineSchedStrategy implementation for PowerPC pre RA scheduling. More...
 
class  PPCRegisterBankInfo
 
class  PPCRegisterInfo
 
class  PPCSelectionDAGInfo
 
class  PPCSubtarget
 
class  PPCTargetLowering
 
class  PPCTargetMachine
 Common code between 32-bit and 64-bit PowerPC targets. More...
 
class  PPCTargetStreamer
 
class  PPCTTIImpl
 
class  PPCXCOFFMCAsmInfo
 
class  PPCXCOFFStreamer
 
class  PredicateAssume
 
class  PredicateBase
 
class  PredicateBranch
 
struct  PredicateConstraint
 Constraint for a predicate of the form "cmp Pred Op, OtherOp", where Op is the value the constraint applies to (the ssa.copy result). More...
 
class  PredicatedScalarEvolution
 An interface layer with SCEV used to manage how we see SCEV expressions for values in the context of existing predicates. More...
 
class  PredicateInfo
 Encapsulates PredicateInfo, including all data associated with memory accesses. More...
 
class  PredicateInfoAnnotatedWriter
 An assembly annotator class to print PredicateInfo information in comments. More...
 
class  PredicateInfoBuilder
 
class  PredicateInfoPrinterPass
 Printer pass for PredicateInfo. More...
 
struct  PredicateInfoVerifierPass
 Verifier pass for PredicateInfo. More...
 
class  PredicateSwitch
 
class  PredicateWithEdge
 
class  PredIterator
 
class  PredIteratorCache
 PredIteratorCache - This class is an extremely trivial cache for predecessor iterator queries. More...
 
struct  PreferredTuple
 
struct  PreISelIntrinsicLoweringPass
 
class  PreRARematStage
 
class  PreservedAnalyses
 A set of analyses that are preserved following a run of a transformation pass. More...
 
class  PreservedCFGCheckerInstrumentation
 
class  PressureChange
 Capture a change in pressure for a single pressure set. More...
 
class  PressureDiff
 List of PressureChanges in order of increasing, unique PSetID. More...
 
class  PressureDiffs
 Array of PressureDiffs. More...
 
class  PrettyStackTraceEntry
 PrettyStackTraceEntry - This class is used to represent a frame of the "pretty" stack trace that is dumped when a program crashes. More...
 
class  PrettyStackTraceFormat
 PrettyStackTraceFormat - This object prints a string (which may use printf-style formatting but should not contain newlines) to the stream as the stack trace when a crash occurs. More...
 
class  PrettyStackTraceProgram
 PrettyStackTraceProgram - This object prints a specified program arguments to the stream as the stack trace when a crash occurs. More...
 
class  PrettyStackTraceString
 PrettyStackTraceString - This object prints a specified string (which should not contain newlines) to the stream as the stack trace when a crash occurs. More...
 
class  Printable
 Simple wrapper around std::function<void(raw_ostream&)>. More...
 
class  PrintCrashIRInstrumentation
 
struct  PrintedExpr
 A user-facing string representation of a DWARF expression. More...
 
class  PrintFunctionPass
 Pass (for the new pass manager) for printing a Function as LLVM's text IR assembly. More...
 
class  PrintIRInstrumentation
 Instrumentation to print IR before/after passes. More...
 
class  PrintLoopPass
 Pass for printing a loop's contents as textual IR. More...
 
class  PrintMIRPass
 
class  PrintMIRPreparePass
 
class  PrintModulePass
 Pass (for the new pass manager) for printing a Module as LLVM's text IR assembly. More...
 
class  PrintPassInstrumentation
 
struct  PrintPassOptions
 
class  PriorityQueue
 PriorityQueue - This class behaves like std::priority_queue and provides a few additional convenience functions. More...
 
class  PriorityWorklist
 A FILO worklist that prioritizes on re-insertion without duplication. More...
 
class  ProfileSummary
 
class  ProfileSummaryAnalysis
 An analysis pass based on the new PM to deliver ProfileSummaryInfo. More...
 
class  ProfileSummaryBuilder
 
struct  ProfileSummaryEntry
 
class  ProfileSummaryInfo
 Analysis providing profile information. More...
 
class  ProfileSummaryInfoWrapperPass
 An analysis pass based on legacy pass manager to deliver ProfileSummaryInfo. More...
 
class  ProfileSummaryPrinterPass
 Printer pass that uses ProfileSummaryAnalysis. More...
 
struct  ProfiParams
 Various thresholds and options controlling the behavior of the profile inference algorithm. More...
 
class  ProfOStream
 
class  PrologEpilogSGPRSaveRestoreInfo
 
class  PrologEpilogSGPRSpillBuilder
 
class  PromotePass
 
class  PSetIterator
 Iterate over the pressure sets affected by the given physical or virtual register. More...
 
struct  PseudoProbe
 
class  PseudoProbeDescriptor
 
struct  PseudoProbeDwarfDiscriminator
 
class  PseudoProbeHandler
 
class  PseudoProbeInst
 
class  PseudoProbeManager
 
class  PseudoProbeSDNode
 This SDNode is used for PSEUDO_PROBE values, which are the function guid and the index of the basic block being probed. More...
 
class  PseudoProbeUpdatePass
 
class  PseudoProbeVerifier
 
class  PseudoSourceValue
 Special value supplied for machine level alias analysis. More...
 
class  PseudoSourceValueManager
 Manages creation of pseudo source values. More...
 
struct  PtrAddChain
 
class  PtrToIntInst
 This class represents a cast from a pointer to an integer. More...
 
class  PtrToIntOperator
 
class  PtrUseVisitor
 A base class for visitors over the uses of a pointer value. More...
 
class  R600AsmPrinter
 
class  R600CodeGenPassBuilder
 
class  R600FrameLowering
 
class  R600InstPrinter
 
class  R600InstrInfo
 
class  R600MachineFunctionInfo
 
struct  R600RegisterInfo
 
class  R600SchedStrategy
 
class  R600Subtarget
 
class  R600TargetLowering
 
class  R600TargetMachine
 
class  R600TTIImpl
 
class  RAGreedy
 
class  RAIIDelegateInstaller
 A simple RAII based Delegate installer. More...
 
class  RAIIMFObsDelInstaller
 Class to install both of the above. More...
 
class  RAIIMFObserverInstaller
 A simple RAII based Observer installer. More...
 
class  RAIITemporaryObserverInstaller
 A simple RAII based Observer installer. More...
 
struct  RandomIRBuilder
 
class  RandomNumberGenerator
 A random number generator. More...
 
struct  RangeListEntry
 A class representing a single range list entry. More...
 
struct  RangeSpan
 
struct  RangeSpanList
 
struct  rank
 Utility type to build an inheritance chain that makes it easy to rank overload candidates. More...
 
struct  rank< 0 >
 
class  raw_fd_ostream
 A raw_ostream that writes to a file descriptor. More...
 
class  raw_fd_stream
 A raw_ostream of a file for reading/writing/seeking. More...
 
class  raw_null_ostream
 A raw_ostream that discards all output. More...
 
class  raw_os_ostream
 raw_os_ostream - A raw_ostream that writes to an std::ostream. More...
 
class  raw_ostream
 This class implements an extremely fast bulk output stream that can only output to a stream. More...
 
class  raw_pwrite_stream
 An abstract base class for streams implementations that also support a pwrite operation. More...
 
class  raw_sha1_ostream
 A raw_ostream that hash the content using the sha1 algorithm. More...
 
class  raw_socket_stream
 
class  raw_string_ostream
 A raw_ostream that writes to an std::string. More...
 
class  raw_svector_ostream
 A raw_ostream that writes to an SmallVector or SmallString. More...
 
class  RawInstrProfReader
 Reader for the raw instrprof binary format from runtime. More...
 
class  RawLocationWrapper
 Lightweight class that wraps the location operand metadata of a debug intrinsic. More...
 
class  RCToken
 
class  ReachingDef
 Thin wrapper around "int" used to store reaching definitions, using an encoding that makes it compatible with TinyPtrVector. More...
 
class  ReachingDefAnalysis
 This class provides the reaching def analysis. More...
 
class  ReadyQueue
 Helpers for implementing custom MachineSchedStrategy classes. More...
 
struct  RealtimeSanitizerPass
 Create ctor and init functions. More...
 
class  ReassociatePass
 Reassociate commutative expressions. More...
 
struct  RecomputeGlobalsAAPass
 
class  Record
 
class  RecordKeeper
 
class  RecordRecTy
 '[classname]' - Type of record values that have zero or more superclasses. More...
 
class  RecordResolver
 Resolve all variables from a record except for unset variables. More...
 
struct  RecordsEntry
 RecordsEntry - Holds exactly one of a Record, ForeachLoop, or AssertionInfo. More...
 
class  RecordStreamer
 
class  RecordVal
 This class represents a field in a record, including its name, type, value, and source location. More...
 
class  RecTy
 
class  RecurrenceDescriptor
 The RecurrenceDescriptor is used to identify recurrences variables in a loop. More...
 
class  Recycler
 Recycler - This class manages a linked-list of deallocated nodes and facilitates reusing deallocated memory in place of allocating new memory. More...
 
class  RecyclingAllocator
 RecyclingAllocator - This class wraps an Allocator, adding the functionality of recycling deleted objects. More...
 
class  RedundantDbgInstEliminationPass
 
class  RefCountedBase
 A CRTP mixin class that adds reference counting to a type. More...
 
class  RegAllocBase
 RegAllocBase provides the register allocation driver and interface that can be extended to add interesting heuristics. More...
 
class  RegAllocEvictionAdvisor
 
class  RegAllocEvictionAdvisorAnalysis
 ImmutableAnalysis abstraction for fetching the Eviction Advisor. More...
 
class  RegAllocFastPass
 
struct  RegAllocFastPassOptions
 
class  RegAllocPriorityAdvisor
 Interface to the priority advisor, which is responsible for prioritizing live ranges. More...
 
class  RegAllocPriorityAdvisorAnalysis
 
class  RegAllocScore
 Regalloc score. More...
 
class  RegAllocScoring
 
class  RegBankSelect
 This pass implements the reg bank selector pass used in the GlobalISel pipeline. More...
 
struct  RegClassWeight
 Each TargetRegisterClass has a per register weight, and weight limit which must be less than the limits of its pressure sets. More...
 
class  Regex
 
struct  RegImmPair
 Used to describe a register and immediate addition. More...
 
class  Region
 
class  RegionBase
 A single entry single exit Region. More...
 
class  RegionInfo
 
class  RegionInfoAnalysis
 Analysis pass that exposes the RegionInfo for a function. More...
 
class  RegionInfoBase
 Analysis that detects all canonical Regions. More...
 
class  RegionInfoPass
 
class  RegionInfoPrinterPass
 Printer pass for the RegionInfo. More...
 
struct  RegionInfoVerifierPass
 Verifier pass for the RegionInfo. More...
 
class  RegionNode
 
class  RegionNodeBase
 A RegionNode represents a subregion or a BasicBlock that is part of a Region. More...
 
class  RegionPass
 A pass that runs on each Region in a function. More...
 
struct  RegionPressure
 RegisterPressure computed within a region of instructions delimited by TopPos and BottomPos. More...
 
class  RegionPressureMap
 
struct  RegionTraits
 
struct  RegionTraits< Function >
 
struct  RegionTraits< MachineFunction >
 
class  Register
 Wrapper class representing virtual and physical registers. More...
 
struct  RegisterAsmPrinter
 RegisterAsmPrinter - Helper template for registering a target specific assembly printer, for use in the target machine initialization function. More...
 
class  RegisterBank
 This class implements the register bank concept. More...
 
class  RegisterBankInfo
 Holds all the information related to register banks. More...
 
class  RegisterClassInfo
 
struct  RegisterImmPair
 
struct  RegisterMaskPair
 
class  RegisterMaskSDNode
 
struct  RegisterMCAsmBackend
 RegisterMCAsmBackend - Helper template for registering a target specific assembler backend. More...
 
struct  RegisterMCAsmInfo
 RegisterMCAsmInfo - Helper template for registering a target assembly info implementation. More...
 
struct  RegisterMCAsmInfoFn
 RegisterMCAsmInfoFn - Helper template for registering a target assembly info implementation. More...
 
struct  RegisterMCAsmParser
 RegisterMCAsmParser - Helper template for registering a target specific assembly parser, for use in the target machine initialization function. More...
 
struct  RegisterMCCodeEmitter
 RegisterMCCodeEmitter - Helper template for registering a target specific machine code emitter, for use in the target initialization function. More...
 
struct  RegisterMCInstrAnalysis
 RegisterMCInstrAnalysis - Helper template for registering a target instruction analyzer implementation. More...
 
struct  RegisterMCInstrAnalysisFn
 RegisterMCInstrAnalysisFn - Helper template for registering a target instruction analyzer implementation. More...
 
struct  RegisterMCInstrInfo
 RegisterMCInstrInfo - Helper template for registering a target instruction info implementation. More...
 
struct  RegisterMCInstrInfoFn
 RegisterMCInstrInfoFn - Helper template for registering a target instruction info implementation. More...
 
struct  RegisterMCObjectFileInfo
 Helper template for registering a target object file info implementation. More...
 
struct  RegisterMCObjectFileInfoFn
 Helper template for registering a target object file info implementation. More...
 
struct  RegisterMCRegInfo
 RegisterMCRegInfo - Helper template for registering a target register info implementation. More...
 
struct  RegisterMCRegInfoFn
 RegisterMCRegInfoFn - Helper template for registering a target register info implementation. More...
 
struct  RegisterMCSubtargetInfo
 RegisterMCSubtargetInfo - Helper template for registering a target subtarget info implementation. More...
 
struct  RegisterMCSubtargetInfoFn
 RegisterMCSubtargetInfoFn - Helper template for registering a target subtarget info implementation. More...
 
class  RegisterOperands
 List of registers defined and used by a machine instruction. More...
 
struct  RegisterPass
 RegisterPass<t> template - This template class is used to notify the system that a Pass is available for use, and registers it into the internal database maintained by the PassManager. More...
 
class  RegisterPassParser
 RegisterPassParser class - Handle the addition of new machine passes. More...
 
struct  RegisterPressure
 Base class for register pressure results. More...
 
class  RegisterRegAlloc
 
class  RegisterRegAllocBase
 RegisterRegAllocBase class - Track the registration of register allocators. More...
 
class  RegisterScheduler
 
class  RegisterSDNode
 
struct  RegisterTarget
 RegisterTarget - Helper template for registering a target, for use in the target's initialization function. More...
 
struct  RegisterTargetMachine
 RegisterTargetMachine - Helper template for registering a target machine implementation, for use in the target machine initialization function. More...
 
class  Registry
 A global registry used in conjunction with static constructors to make pluggable components (like targets or garbage collectors) "just work" when linked with an executable. More...
 
class  RegOrConstant
 Represents a value which can be a Register or a constant. More...
 
struct  RegPressureDelta
 Store the effects of a change in pressure on things that MI scheduler cares about. More...
 
class  RegPressureTracker
 Track the current register pressure at some position in the instruction stream, and remember the high water mark within the region traversed. More...
 
class  RegScavenger
 
struct  RegsForValue
 This struct represents the registers (physical or virtual) that a particular set of values is assigned, and the type information about the value. More...
 
class  RegToMemPass
 
class  RegToMemWrapperPass
 
struct  RegTraits
 
class  RegUsageInfoCollectorPass
 
class  RegUsageInfoPropagationPass
 
class  ReleaseModeModelRunner
 
class  ReleaseModePriorityAdvisorAnalysis
 
class  RelLookupTableConverterPass
 
struct  RelocAddrEntry
 RelocAddrEntry contains relocated value and section index. More...
 
class  RelocationEntry
 RelocationEntry - used to represent relocations internally in the dynamic linker. More...
 
class  RelocationValueRef
 
struct  remove_cvref
 
class  ReplaceableMetadataImpl
 Shared implementation of use-lists for replaceable metadata. More...
 
struct  ReplacementItem
 
struct  ReplaceWithVeclib
 
struct  ReplaceWithVeclibLegacy
 
class  ReplayInlineAdvisor
 Replay inline advisor that uses optimization remarks from inlining of previous build to guide current inlining. More...
 
struct  ReplayInlinerSettings
 Replay Inliner Setup. More...
 
struct  RequireAnalysisPass
 A utility pass template to force an analysis result to be available. More...
 
struct  RequireAnalysisPass< AnalysisT, LazyCallGraph::SCC, CGSCCAnalysisManager, LazyCallGraph &, CGSCCUpdateResult & >
 An explicit specialization of the require analysis template pass. More...
 
struct  RequireAnalysisPass< AnalysisT, Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >
 A partial specialization of the require analysis template pass to forward the extra parameters from a transformation's run method to the AnalysisManager's getResult. More...
 
class  ReservoirSampler
 Randomly selects an item by sampling into a set with an unknown number of elements, which may each be weighted to be more likely choices. More...
 
class  Resolver
 Interface for looking up the initializer for a variable name, used by Init::resolveReferences. More...
 
class  ResolverError
 
struct  resource_sort
 Sorting functions for the Available queue. More...
 
class  ResourceManager
 
class  ResourcePriorityQueue
 
class  ResourceSegments
 ResourceSegments are a collection of intervals closed on the left and opened on the right: More...
 
class  ResumeInst
 Resume the propagation of an exception. More...
 
struct  RetainedKnowledge
 Represent one information held inside an operand bundle of an llvm.assume. More...
 
class  ReturnInst
 Return a value (possibly void), from a function. More...
 
class  ReversePostOrderFunctionAttrsPass
 A pass to do RPO deduction and propagation of function attributes. More...
 
class  ReversePostOrderTraversal
 
class  RewriteBuffer
 RewriteBuffer - As code is rewritten, SourceBuffer's from the original input with modifications get a new RewriteBuffer associated with them. More...
 
class  RewriteRope
 RewriteRope - A powerful string class. More...
 
struct  RewriteStatepointsForGC
 
class  RewriteSymbolPass
 
class  RGPassManager
 The pass manager to schedule RegionPasses. More...
 
class  RISCVAsmBackend
 
class  RISCVAttributeParser
 
class  RISCVCallLowering
 
class  RISCVConstantPoolValue
 A RISCV-specific constant pool value. More...
 
class  RISCVDAGToDAGISel
 
class  RISCVDAGToDAGISelLegacy
 
class  RISCVELFStreamer
 
class  RISCVELFTargetObjectFile
 This implementation is used for RISC-V ELF targets. More...
 
class  RISCVFrameLowering
 
class  RISCVGenRegisterBankInfo
 
class  RISCVInstPrinter
 
class  RISCVInstrInfo
 
class  RISCVISAInfo
 
class  RISCVLegalizerInfo
 
class  RISCVMachineFunctionInfo
 RISCVMachineFunctionInfo - This class is derived from MachineFunctionInfo and contains private RISCV-specific information for each MachineFunction. More...
 
class  RISCVMCAsmInfo
 
class  RISCVMCExpr
 
class  RISCVMCObjectFileInfo
 
struct  RISCVOptionArchArg
 
class  RISCVRegisterBankInfo
 This class provides the information for the target register banks. More...
 
struct  RISCVRegisterInfo
 
class  RISCVSelectionDAGInfo
 
class  RISCVSubtarget
 
class  RISCVTargetAsmStreamer
 
class  RISCVTargetELFStreamer
 
class  RISCVTargetLowering
 
class  RISCVTargetMachine
 
class  RISCVTargetStreamer
 
class  RISCVTTIImpl
 
class  RISCVVectorMaskDAGMutation
 
class  RNSuccIterator
 Hierarchical RegionNode successor iterator. More...
 
class  RNSuccIterator< FlatIt< NodeRef >, BlockT, RegionT >
 Flat RegionNode iterator. More...
 
class  RootDDGNode
 Subclass of DDGNode representing the root node of the graph. More...
 
struct  RopePiece
 RopePiece - This class represents a view into a RopeRefCountString object. More...
 
class  RopePieceBTree
 
class  RopePieceBTreeIterator
 RopePieceBTreeIterator - This class provides read-only forward iteration over bytes that are in a RopePieceBTree. More...
 
struct  RopeRefCountString
 RopeRefCountString - This struct is allocated with 'new char[]' from the heap, and represents a reference counted chunk of string data. More...
 
class  RTDyldMemoryManager
 
class  RTTIExtends
 Inheritance utility for extensible RTTI. More...
 
class  RTTIRoot
 Base class for the extensible RTTI hierarchy. More...
 
struct  RuntimeCheckingPtrGroup
 A grouping of pointers. More...
 
class  RuntimeDyld
 
class  RuntimeDyldChecker
 RuntimeDyld invariant checker for verifying that RuntimeDyld has correctly applied relocations. More...
 
class  RuntimeDyldCheckerExprEval
 
class  RuntimeDyldCheckerImpl
 
class  RuntimeDyldCOFF
 
class  RuntimeDyldCOFFAArch64
 
class  RuntimeDyldCOFFI386
 
class  RuntimeDyldCOFFThumb
 
class  RuntimeDyldCOFFX86_64
 
class  RuntimeDyldELF
 
class  RuntimeDyldELFMips
 
class  RuntimeDyldError
 Base class for errors originating in RuntimeDyld, e.g. More...
 
class  RuntimeDyldImpl
 
class  RuntimeDyldMachO
 
class  RuntimeDyldMachOAArch64
 
class  RuntimeDyldMachOARM
 
class  RuntimeDyldMachOCRTPBase
 RuntimeDyldMachOTarget - Templated base class for generic MachO linker algorithms and data structures. More...
 
class  RuntimeDyldMachOI386
 
class  RuntimeDyldMachOX86_64
 
class  RuntimePointerChecking
 Holds information about the memory runtime legality checks to verify that a group of pointers do not overlap. More...
 
class  SafepointIRVerifierPass
 Create an instance of the safepoint verifier pass which can be added to a pass pipeline to check for relocation bugs. More...
 
class  SafeStackPass
 
struct  SameType
 
class  SampleContextTracker
 
class  SampleProfileInference
 Sample profile inference pass. More...
 
class  SampleProfileLoaderBaseImpl
 
class  SampleProfileLoaderPass
 The sample profiler data loader pass. More...
 
class  SampleProfileMatcher
 
class  SampleProfileProbePass
 
class  SampleProfileProber
 Sample profile pseudo prober. More...
 
class  SampleProfileSummaryBuilder
 
class  SandboxVectorizerPass
 
struct  SanitizerBinaryMetadataOptions
 
class  SanitizerBinaryMetadataPass
 Public interface to the SanitizerBinaryMetadata module pass for emitting metadata for binary analysis sanitizers. More...
 
struct  SanitizerCoverageOptions
 
class  SanitizerCoveragePass
 This is the ModuleSanitizerCoverage pass used in the new pass manager. More...
 
struct  SanitizerStatReport
 
class  SaturatingInst
 Represents a saturating add/sub intrinsic. More...
 
struct  SaveAndRestore
 A utility class that uses RAII to save and restore the value of a variable. More...
 
class  ScalableVectorType
 Class to represent scalable SIMD vectors. More...
 
class  ScalarEvolution
 The main scalar evolution driver. More...
 
class  ScalarEvolutionAnalysis
 Analysis pass that exposes the ScalarEvolution for a function. More...
 
class  ScalarEvolutionPrinterPass
 Printer pass for the ScalarEvolutionAnalysis results. More...
 
class  ScalarEvolutionVerifierPass
 Verifier pass for the ScalarEvolutionAnalysis results. More...
 
class  ScalarEvolutionWrapperPass
 
struct  ScalarizeMaskedMemIntrinPass
 
class  ScalarizerPass
 
struct  ScalarizerPassOptions
 
class  ScaledNumber
 Simple representation of a scaled number. More...
 
class  ScaledNumberBase
 
class  scc_iterator
 Enumerate the SCCs of a directed graph in reverse topological order of the SCC DAG. More...
 
class  scc_member_iterator
 Sort the nodes of a directed SCC in the decreasing order of the edge weights. More...
 
class  SCCPInstVisitor
 Helper class for SCCPSolver. More...
 
class  SCCPPass
 This pass performs function-level constant propagation and merging. More...
 
class  SCCPSolver
 SCCPSolver - This interface class is a general purpose solver for Sparse Conditional Constant Propagation (SCCP). More...
 
class  SCEV
 This class represents an analyzed expression in the program. More...
 
class  SCEVAA
 Analysis pass providing a never-invalidated alias analysis result. More...
 
class  SCEVAAResult
 A simple alias analysis implementation that uses ScalarEvolution to answer queries. More...
 
class  SCEVAAWrapperPass
 Legacy wrapper pass to provide the SCEVAAResult object. More...
 
class  SCEVAddExpr
 This node represents an addition of some number of SCEVs. More...
 
class  SCEVAddRecExpr
 This node represents a polynomial recurrence on the trip count of the specified loop. More...
 
class  SCEVCastExpr
 This is the base class for unary cast operator classes. More...
 
class  SCEVCommutativeExpr
 This node is the base class for n'ary commutative operators. More...
 
class  SCEVComparePredicate
 This class represents an assumption that the expression LHS Pred RHS evaluates to true, and this can be checked at run-time. More...
 
class  SCEVConstant
 This class represents a constant integer value. More...
 
struct  SCEVCouldNotCompute
 An object of this class is returned by queries that could not be answered. More...
 
struct  SCEVDivision
 
class  SCEVExpander
 This class uses information about analyze scalars to rewrite expressions in canonical form. More...
 
class  SCEVExpanderCleaner
 Helper to remove instructions inserted during SCEV expansion, unless they are marked as used. More...
 
class  SCEVIntegralCastExpr
 This is the base class for unary integral cast operator classes. More...
 
class  SCEVLoopAddRecRewriter
 The SCEVLoopAddRecRewriter takes a scalar evolution expression and applies the Map (Loop -> SCEV) to all AddRecExprs. More...
 
class  SCEVMinMaxExpr
 This node is the base class min/max selections. More...
 
class  SCEVMulExpr
 This node represents multiplication of some number of SCEVs. More...
 
class  SCEVNAryExpr
 This node is a base class providing common functionality for n'ary operators. More...
 
struct  SCEVOperand
 struct for holding enough information to help calculate the cost of the given SCEV when expanded into IR. More...
 
class  SCEVParameterRewriter
 The SCEVParameterRewriter takes a scalar evolution expression and updates the SCEVUnknown components following the Map (Value -> SCEV). More...
 
class  SCEVPredicate
 This class represents an assumption made using SCEV expressions which can be checked at run-time. More...
 
class  SCEVPtrToIntExpr
 This class represents a cast from a pointer to a pointer-sized integer value. More...
 
class  SCEVRewriteVisitor
 This visitor recursively visits a SCEV expression and re-writes it. More...
 
class  SCEVSequentialMinMaxExpr
 This node is the base class for sequential/in-order min/max selections. More...
 
class  SCEVSequentialUMinExpr
 This class represents a sequential/in-order unsigned minimum selection. More...
 
class  SCEVSignExtendExpr
 This class represents a sign extension of a small integer value to a larger integer value. More...
 
class  SCEVSMaxExpr
 This class represents a signed maximum selection. More...
 
class  SCEVSMinExpr
 This class represents a signed minimum selection. More...
 
class  SCEVTraversal
 Visit all nodes in the expression tree using worklist traversal. More...
 
class  SCEVTruncateExpr
 This class represents a truncation of an integer value to a smaller integer value. More...
 
class  SCEVUDivExpr
 This class represents a binary unsigned division operation. More...
 
class  SCEVUMaxExpr
 This class represents an unsigned maximum selection. More...
 
class  SCEVUMinExpr
 This class represents an unsigned minimum selection. More...
 
class  SCEVUnionPredicate
 This class represents a composition of other SCEV predicates, and is the class that most clients will interact with. More...
 
class  SCEVUnknown
 This means that we are dealing with an entirely unknown SCEV value, and only represent it as its LLVM Value. More...
 
struct  SCEVVisitor
 This class defines a simple visitor class that may be used for various SCEV analysis purposes. More...
 
class  SCEVVScale
 This class represents the value of vscale, as used when defining the length of a scalable vector or returned by the llvm.vscale() intrinsic. More...
 
class  SCEVWrapPredicate
 This class represents an assumption made on an AddRec expression. More...
 
class  SCEVZeroExtendExpr
 This class represents a zero extension of a small integer value to a larger integer value. More...
 
class  SchedBoundary
 Each Scheduling boundary is associated with ready queues. More...
 
class  SchedDFSImpl
 Internal state used to compute SchedDFSResult. More...
 
class  SchedDFSResult
 Compute the values of each DAG node for various metrics during DFS. More...
 
struct  SchedRemainder
 Summarize the unscheduled region. More...
 
class  ScheduleDAG
 
class  ScheduleDAGInstrs
 A ScheduleDAG for scheduling lists of MachineInstr. More...
 
class  ScheduleDAGMI
 ScheduleDAGMI is an implementation of ScheduleDAGInstrs that simply schedules machine instructions according to the given MachineSchedStrategy without much extra book-keeping. More...
 
class  ScheduleDAGMILive
 ScheduleDAGMILive is an implementation of ScheduleDAGInstrs that schedules machine instructions while updating LiveIntervals and tracking regpressure. More...
 
class  ScheduleDAGMutation
 Mutate the DAG as a postpass after normal DAG building. More...
 
class  ScheduleDAGSDNodes
 ScheduleDAGSDNodes - A ScheduleDAG for scheduling SDNode-based DAGs. More...
 
class  ScheduleDAGTopologicalSort
 This class can compute a topological ordering for SUnits and provides methods for dynamically updating the ordering as new edges are added. More...
 
class  ScheduleHazardRecognizer
 HazardRecognizer - This determines whether or not an instruction can be issued this cycle, and whether or not a noop needs to be inserted to handle the hazard. More...
 
class  ScheduleMetrics
 
class  SchedulingPriorityQueue
 This interface is used to plug different priorities computation algorithms into the list scheduler. More...
 
class  ScopedDbgInfoFormatSetter
 Used to temporarily set the debug info format of a function, module, or basic block for the duration of this object's lifetime, after which the prior state will be restored. More...
 
struct  ScopedFatalErrorHandler
 ScopedFatalErrorHandler - This is a simple helper class which just calls install_fatal_error_handler in its constructor and remove_fatal_error_handler in its destructor. More...
 
class  ScopedHandle
 
class  ScopedHashTable
 
class  ScopedHashTableIterator
 
class  ScopedHashTableScope
 
class  ScopedHashTableVal
 
class  ScopedNoAliasAA
 Analysis pass providing a never-invalidated alias analysis result. More...
 
class  ScopedNoAliasAAResult
 A simple AA result which uses scoped-noalias metadata to answer queries. More...
 
class  ScopedNoAliasAAWrapperPass
 Legacy wrapper pass to provide the ScopedNoAliasAAResult object. More...
 
class  ScopedPrinter
 
class  ScoreboardHazardRecognizer
 
class  SDDbgInfo
 Keeps track of dbg_value information through SDISel. More...
 
class  SDDbgLabel
 Holds the information from a dbg_label node through SDISel. More...
 
class  SDDbgOperand
 Holds the information for a single machine location through SDISel; either an SDNode, a constant, a stack location, or a virtual register. More...
 
class  SDDbgValue
 Holds the information from a dbg_value node through SDISel. More...
 
class  SDep
 Scheduling dependency. More...
 
class  SDLoc
 Wrapper class for IR location info (IR ordering and DebugLoc) to be passed into SDNode creation functions. More...
 
class  SDNode
 Represents one node in the SelectionDAG. More...
 
struct  SDNodeFlags
 These are IR-level optimization flags that may be propagated to SDNodes. More...
 
class  SDNodeIterator
 
class  SDUse
 Represents a use of a SDNode. More...
 
class  SDValue
 Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation. More...
 
struct  SDVTList
 This represents a list of ValueType's that has been intern'd by a SelectionDAG. More...
 
class  SDVTListNode
 
class  SectionEntry
 SectionEntry - represents a section emitted into memory by the dynamic linker. More...
 
class  SectionKind
 SectionKind - This is a simple POD value that classifies the properties of a section. More...
 
class  SectionMemoryManager
 This is a simple memory manager which implements the methods called by the RuntimeDyld class to allocate memory for section-based loading of objects, usually those generated by the MCJIT execution engine. More...
 
struct  SectionName
 
struct  SEHHandler
 
struct  SEHUnwindMapEntry
 Similar to CxxUnwindMapEntry, but supports SEH filters. More...
 
class  SelectInst
 This class represents the LLVM 'select' instruction. More...
 
class  SelectionDAG
 This is used to represent a portion of an LLVM function in a low-level Data Dependence DAG representation suitable for instruction selection. More...
 
class  SelectionDAGBuilder
 SelectionDAGBuilder - This is the common target-independent lowering implementation that is parameterized by a TargetLowering object. More...
 
class  SelectionDAGISel
 SelectionDAGISel - This is the common base class used for SelectionDAG-based pattern-matching instruction selectors. More...
 
class  SelectionDAGISelLegacy
 
class  SelectionDAGISelPass
 
class  SelectionDAGTargetInfo
 Targets can subclass this to parameterize the SelectionDAG lowering and instruction selection process. More...
 
class  SelectOptimizePass
 
struct  SelectPatternResult
 
class  SeparateConstOffsetFromGEPPass
 
struct  SerializableCtxRepresentation
 Representation of the context node suitable for yaml / json serialization / deserialization. More...
 
struct  SetState
 Simple state for a set. More...
 
class  SetTheory
 
class  SetVector
 A vector that has set insertion semantics. More...
 
class  SExtInst
 This class represents a sign extension of integer types. More...
 
struct  SGPRSpillBuilder
 
class  SHA1
 A class that wrap the SHA1 algorithm. More...
 
class  SHA256
 
class  ShadowResolver
 Delegate resolving to a sub-resolver, but shadow some variable names. More...
 
class  ShadowStackGCLoweringPass
 
class  ShapeT
 
struct  ShiftOfShiftedLogic
 
class  ShlOperator
 
class  ShouldNotRunFunctionPassesAnalysis
 
struct  ShouldRunExtraPasses
 A marker analysis to determine if extra passes should be run on demand. More...
 
struct  ShouldRunExtraSimpleLoopUnswitch
 A marker analysis to determine if SimpleLoopUnswitch should run again on a given loop. More...
 
struct  ShouldRunExtraVectorPasses
 A marker analysis to determine if extra passes should be run after loop vectorization. More...
 
class  ShuffleBlockStrategy
 Strategy to randomly select a block and shuffle the operations without affecting data dependency. More...
 
class  ShuffleVectorConstantExpr
 ShuffleVectorConstantExpr - This class is private to Constants.cpp, and is used behind the scenes to implement shufflevector constant exprs. More...
 
class  ShuffleVectorInst
 This instruction constructs a fixed permutation of two input vectors. More...
 
class  ShuffleVectorSDNode
 This SDNode is used to implement the code generator support for the llvm IR shufflevector instruction. More...
 
class  SIAnnotateControlFlowPass
 
class  SIFixSGPRCopiesPass
 
class  SIFoldOperandsPass
 
class  SIFrameLowering
 
struct  SignedDivisionByConstantInfo
 Magic data for optimising signed division by a constant. More...
 
class  SignpostEmitter
 Manages the emission of signposts into the recording method supported by the OS. More...
 
class  SignpostEmitterImpl
 Definition necessary for use of std::unique_ptr in SignpostEmitter::Impl. More...
 
class  SIInstrInfo
 
struct  SIInstrWorklist
 Utility to store machine instructions worklist. More...
 
class  SILoadStoreOptimizerPass
 
class  SILowerI1CopiesPass
 
class  SILowerSGPRSpillsPass
 
class  SIMachineFunctionInfo
 This class keeps track of the SPI_SP_INPUT_ADDR config register, which tells the hardware which interpolation parameters to load. More...
 
struct  SIModeRegisterDefaults
 
class  simple_ilist
 A simple intrusive list implementation. More...
 
class  SimpleAAQueryInfo
 AAQueryInfo that uses SimpleCaptureAnalysis. More...
 
class  SimpleBitstreamCursor
 This represents a position within a bitstream. More...
 
class  SimpleCaptureAnalysis
 Context-free CaptureAnalysis provider, which computes and caches whether an object is captured in the function at all, but does not distinguish whether it was captured before or after the context instruction. More...
 
class  SimpleDDGNode
 Subclass of DDGNode representing single or multi-instruction nodes. More...
 
class  SimpleLoopSafetyInfo
 Simple and conservative implementation of LoopSafetyInfo that can give false-positive answers to its queries in order to avoid complicated analysis. More...
 
class  SimpleLoopUnswitchPass
 This pass transforms loops that contain branches or switches on loop- invariant conditions to have multiple loops. More...
 
class  SimpleRegistryEntry
 A simple registry entry which provides only a name, description, and no-argument constructor. More...
 
struct  simplify_type
 Define a template that can be specialized by smart pointers to reflect the fact that they are automatically dereferenced, and are not involved with the template selection process... the default implementation is a noop. More...
 
struct  simplify_type< AssumptionCache::ResultElem >
 
struct  simplify_type< const AssumptionCache::ResultElem >
 
struct  simplify_type< const From >
 
struct  simplify_type< const ilist_iterator< OptionsT, false, IsConst > >
 
struct  simplify_type< const ilist_iterator_w_bits< OptionsT, false, IsConst > >
 
struct  simplify_type< const IntrusiveRefCntPtr< T > >
 
struct  simplify_type< const MDOperand >
 
struct  simplify_type< const SDValue >
 
struct  simplify_type< const TrackingMDRef >
 
struct  simplify_type< const TypedTrackingMDRef< T > >
 
struct  simplify_type< const Use >
 
struct  simplify_type< const WeakTrackingVH >
 
struct  simplify_type< const WeakVH >
 
struct  simplify_type< ilist_iterator< OptionsT, false, IsConst > >
 Allow ilist_iterators to convert into pointers to a node automatically when used by the dyn_cast, cast, isa mechanisms... More...
 
struct  simplify_type< ilist_iterator_w_bits< OptionsT, false, IsConst > >
 
struct  simplify_type< IntrusiveRefCntPtr< T > >
 
struct  simplify_type< MDOperand >
 
struct  simplify_type< SDUse >
 simplify_type specializations - Allow casting operators to work directly on SDValues as if they were SDNode*'s. More...
 
struct  simplify_type< SDValue >
 Allow casting operators to work directly on SDValues as if they were SDNode*'s. More...
 
struct  simplify_type< TrackingMDRef >
 
struct  simplify_type< TypedTrackingMDRef< T > >
 
struct  simplify_type< Use >
 Allow clients to treat uses just like values when using casting operators. More...
 
struct  simplify_type< User::const_op_iterator >
 
struct  simplify_type< User::op_iterator >
 
struct  simplify_type< WeakTrackingVH >
 
struct  simplify_type< WeakVH >
 
struct  SimplifyCFGOptions
 
class  SimplifyCFGPass
 A pass to simplify and canonicalize the CFG of a function. More...
 
struct  SimplifyQuery
 
class  SingleThreadExecutor
 A non-threaded implementation. More...
 
class  SinkAndHoistLICMFlags
 Flags controlling how much is checked when sinking or hoisting instructions. More...
 
class  SinkingPass
 Move instructions into successor blocks when possible. More...
 
class  SinkInstructionStrategy
 Strategy to select a random instruction and add a new sink (user) to it to increate data dependency. More...
 
class  SIOptimizeVGPRLiveRangePass
 
class  SIPeepholeSDWAPass
 
class  SIPreAllocateWWMRegsPass
 
struct  SIProgramInfo
 Track resource usage for kernels / entry functions. More...
 
class  SIRegisterInfo
 
class  SIScheduleBlock
 
class  SIScheduleBlockCreator
 
struct  SIScheduleBlockResult
 
struct  SIScheduleBlocks
 
class  SIScheduleBlockScheduler
 
class  SIScheduleDAGMI
 
class  SIScheduler
 
struct  SISchedulerCandidate
 
class  SIShrinkInstructionsPass
 
class  SITargetLowering
 
class  SIToFPInst
 This class represents a cast from signed integer to floating point. More...
 
struct  SizeOffsetAPInt
 SizeOffsetAPInt - Used by ObjectSizeOffsetVisitor, which works with APInts. More...
 
struct  SizeOffsetType
 SizeOffsetType - A base template class for the object size visitors. More...
 
struct  SizeOffsetValue
 
struct  SizeOffsetWeakTrackingVH
 SizeOffsetWeakTrackingVH - Used by ObjectSizeOffsetEvaluator in a DenseMap. More...
 
class  SjLjEHPreparePass
 
class  SlotIndex
 SlotIndex - An opaque wrapper around machine indexes. More...
 
class  SlotIndexes
 SlotIndexes pass. More...
 
class  SlotIndexesAnalysis
 
class  SlotIndexesPrinterPass
 
class  SlotIndexesWrapperPass
 
struct  SlotMapping
 This struct contains the mappings from the slot numbers to unnamed metadata nodes, global values and types. More...
 
class  SlotTracker
 This class provides computation of slot numbers for LLVM Assembly writing. More...
 
struct  SLPVectorizerPass
 
class  SmallBitVector
 This is a 'bitvector' (really, a variable-sized bit array), optimized for the case when the array is small. More...
 
class  SmallDenseMap
 
class  SmallDenseSet
 Implements a dense probed hash-table based set with some number of buckets stored inline. More...
 
struct  SmallMapVector
 A MapVector that performs no allocations if smaller than a certain size. More...
 
class  SmallPriorityWorklist
 A version of PriorityWorklist that selects small size optimized data structures for the vector and map. More...
 
class  SmallPtrSet
 SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements. More...
 
class  SmallPtrSetImpl
 A templated base class for SmallPtrSet which provides the typesafe interface that is common across all small sizes. More...
 
class  SmallPtrSetImplBase
 SmallPtrSetImplBase - This is the common code shared among all the SmallPtrSet<>'s, which is almost everything. More...
 
class  SmallPtrSetIterator
 SmallPtrSetIterator - This implements a const_iterator for SmallPtrSet. More...
 
class  SmallPtrSetIteratorImpl
 SmallPtrSetIteratorImpl - This is the common base class shared between all instances of SmallPtrSetIterator. More...
 
class  SmallSet
 SmallSet - This maintains a set of unique values, optimizing for the case when the set is small (less than N). More...
 
class  SmallSet< PointeeType *, N >
 If this set is of pointer values, transparently switch over to using SmallPtrSet for performance. More...
 
class  SmallSetIterator
 SmallSetIterator - This class implements a const_iterator for SmallSet by delegating to the underlying SmallVector or Set iterators. More...
 
class  SmallSetVector
 A SetVector that performs no allocations if smaller than a certain size. More...
 
class  SmallString
 SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better as a string (e.g. More...
 
class  SmallVector
 This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small. More...
 
struct  SmallVectorAlignmentAndSize
 Figure out the offset of the first element. More...
 
class  SmallVectorBase
 This is all the stuff common to all SmallVectors. More...
 
class  SmallVectorImpl
 This class consists of common code factored out of the SmallVector class to reduce code duplication based on the SmallVector 'N' template parameter. More...
 
class  SmallVectorMemoryBuffer
 SmallVector-backed MemoryBuffer instance. More...
 
struct  SmallVectorStorage
 Storage for the SmallVector elements. More...
 
struct  SmallVectorStorage< T, 0 >
 We need the storage to be properly aligned even for small-size of 0 so that the pointer math in SmallVectorTemplateCommon::getFirstEl() is well-defined. More...
 
class  SmallVectorTemplateBase
 SmallVectorTemplateBase<TriviallyCopyable = false> - This is where we put method implementations that are designed to work with non-trivial T's. More...
 
class  SmallVectorTemplateBase< T, true >
 SmallVectorTemplateBase<TriviallyCopyable = true> - This is where we put method implementations that are designed to work with trivially copyable T's. More...
 
class  SmallVectorTemplateCommon
 This is the part of SmallVectorTemplateBase which does not depend on whether the type T is a POD. More...
 
class  SMDiagnostic
 Instances of this class encapsulate one diagnostic report, allowing printing to a raw_ostream as a caret diagnostic. More...
 
class  SMEAttrs
 SMEAttrs is a utility class to parse the SME ACLE attributes on functions. More...
 
class  SMFixIt
 Represents a single fixit, a replacement of one range of text with another. More...
 
class  SMLoc
 Represents a location in source code. More...
 
class  SMRange
 Represents a range in source code. More...
 
class  SMSchedule
 This class represents the scheduled code. More...
 
class  SMTExpr
 Generic base class for SMT exprs. More...
 
class  SMTSolver
 Generic base class for SMT Solvers. More...
 
class  SMTSolverStatistics
 
class  SMTSort
 Generic base class for SMT sorts. More...
 
class  SourceMgr
 This owns the files read by a parser, handles include stacks, and handles diagnostic wrangling. More...
 
class  SparcELFMCAsmInfo
 
class  SparcELFTargetObjectFile
 
class  SparcelTargetMachine
 
class  SparcFrameLowering
 
class  SparcInstPrinter
 
class  SparcInstrInfo
 
class  SparcMachineFunctionInfo
 
class  SparcMCExpr
 
struct  SparcRegisterInfo
 
class  SparcSubtarget
 
class  SparcTargetAsmStreamer
 
class  SparcTargetELFStreamer
 
class  SparcTargetLowering
 
class  SparcTargetMachine
 
class  SparcTargetStreamer
 
class  SparcV8TargetMachine
 Sparc 32-bit target machine. More...
 
class  SparcV9TargetMachine
 Sparc 64-bit target machine. More...
 
class  SparseBitVector
 
struct  SparseBitVectorElement
 SparseBitVector is an implementation of a bitvector that is sparse by only storing the elements that have non-zero bits set. More...
 
class  SparseMultiSet
 Fast multiset implementation for objects that can be identified by small unsigned keys. More...
 
class  SparseSet
 SparseSet - Fast set implementation for objects that can be identified by small unsigned keys. More...
 
struct  SparseSetValFunctor
 SparseSetValFunctor - Helper class for selecting SparseSetValTraits. More...
 
struct  SparseSetValFunctor< KeyT, KeyT, KeyFunctorT >
 SparseSetValFunctor<KeyT, KeyT> - Helper class for the common case of identity key/value sets. More...
 
struct  SparseSetValTraits
 SparseSetValTraits - Objects in a SparseSet are identified by keys that can be uniquely converted to a small integer less than the set's universe. More...
 
class  SparseSolver
 SparseSolver - This class is a general purpose solver for Sparse Conditional Propagation with a programmable lattice function. More...
 
struct  Spec
 
class  SpecialCaseList
 This is a utility class used to parse user-provided text files with "special case lists" for code sanitizers. More...
 
class  SpecificBumpPtrAllocator
 A BumpPtrAllocator that allows only elements of a specific type to be allocated. More...
 
struct  SpecSig
 
class  SpeculativeExecutionPass
 
class  Spiller
 Spiller interface. More...
 
class  SpillPlacement
 
class  SpillPlacementAnalysis
 
class  SpillPlacementWrapperLegacy
 
class  SPIRVCallLowering
 
class  SPIRVConvergenceRegionAnalysis
 
class  SPIRVConvergenceRegionAnalysisWrapperPass
 
class  SPIRVDuplicatesTracker
 
class  SPIRVDuplicatesTracker< SPIRV::SpecialTypeDescriptor >
 
class  SPIRVDuplicatesTrackerBase
 
struct  SPIRVEmitNonSemanticDI
 
struct  SPIRVExtensionsParser
 Command line parser for toggling SPIR-V extensions. More...
 
class  SPIRVFrameLowering
 
class  SPIRVGeneralDuplicatesTracker
 
class  SPIRVGenRegisterBankInfo
 
class  SPIRVGlobalRegistry
 
class  SPIRVInlineAsmLowering
 
class  SPIRVInstPrinter
 
class  SPIRVInstrInfo
 
class  SPIRVLegalizerInfo
 
class  SPIRVMCAsmInfo
 
class  SPIRVMCInstLower
 
class  SPIRVMergeRegionExitTargets
 
struct  SPIRVModuleAnalysis
 
class  SPIRVObjectWriter
 
class  SPIRVRegisterBankInfo
 
struct  SPIRVRegisterInfo
 
class  SPIRVStructurizer
 
class  SPIRVStructurizerWrapper
 
class  SPIRVSubtarget
 
class  SPIRVTargetLowering
 
class  SPIRVTargetMachine
 
class  SPIRVTargetObjectFile
 
class  SPIRVTargetStreamer
 
class  SPIRVTTIImpl
 
class  SplitAnalysis
 SplitAnalysis - Analyze a LiveInterval, looking for live range splitting opportunities. More...
 
class  SplitEditor
 SplitEditor - Edit machine code and LiveIntervals for live range splitting. More...
 
class  SrcOp
 
class  SrcValueSDNode
 An SDNode that holds an arbitrary LLVM IR Value. More...
 
class  SROAPass
 
class  SSAUpdater
 Helper class for SSA formation on a set of values defined in multiple blocks. More...
 
class  SSAUpdaterBulk
 Helper class for SSA formation on a set of values defined in multiple blocks. More...
 
class  SSAUpdaterImpl
 
class  SSAUpdaterTraits
 
class  SSAUpdaterTraits< LDVSSAUpdater >
 Template specialization to give SSAUpdater access to CFG and value information. More...
 
class  SSAUpdaterTraits< MachineSSAUpdater >
 SSAUpdaterTraits<MachineSSAUpdater> - Traits for the SSAUpdaterImpl template, specialized for MachineSSAUpdater. More...
 
class  SSAUpdaterTraits< SSAUpdater >
 
class  SSPLayoutAnalysis
 
class  SSPLayoutInfo
 
struct  StableFunction
 A stable function is a function with a stable hash while tracking the locations of ignored operands and their hashes. More...
 
struct  StableFunctionMap
 
struct  StableFunctionMapRecord
 
class  StackColoringPass
 
class  StackLifetime
 Compute live ranges of allocas. More...
 
class  StackLifetimePrinterPass
 Printer pass for testing. More...
 
class  StackMapOpers
 MI-level stackmap operands. More...
 
class  StackMapParser
 A parser for the latest stackmap format. At the moment, latest=V3. More...
 
class  StackMaps
 
class  StackOffset
 StackOffset holds a fixed and a scalable offset in bytes. More...
 
class  StackProtector
 
class  StackProtectorDescriptor
 Encapsulates all of the information needed to generate a stack protector check, and signals to isel when initialized that one needs to be generated. More...
 
class  StackProtectorPass
 
class  StackSafetyAnalysis
 StackSafetyInfo wrapper for the new pass manager. More...
 
class  StackSafetyGlobalAnalysis
 This pass performs the global (interprocedural) stack safety analysis (new pass manager). More...
 
class  StackSafetyGlobalInfo
 
class  StackSafetyGlobalInfoWrapperPass
 This pass performs the global (interprocedural) stack safety analysis (legacy pass manager). More...
 
class  StackSafetyGlobalPrinterPass
 Printer pass for the StackSafetyGlobalAnalysis results. More...
 
class  StackSafetyInfo
 Interface to access stack safety analysis results for single function. More...
 
class  StackSafetyInfoWrapperPass
 StackSafetyInfo wrapper for the legacy pass manager. More...
 
class  StackSafetyPrinterPass
 Printer pass for the StackSafetyAnalysis results. More...
 
class  StandardInstrumentations
 This class provides an interface to register all the standard pass instrumentations and manages their state (if any). More...
 
struct  StatepointDirectives
 Call sites that get wrapped by a gc.statepoint (currently only in RewriteStatepointsForGC and potentially in other passes in the future) can have attributes that describe properties of gc.statepoint call they will be eventually be wrapped in. More...
 
class  StatepointLoweringState
 This class tracks both per-statepoint and per-selectiondag information. More...
 
class  StatepointOpers
 MI-level Statepoint operands. More...
 
struct  StateWrapper
 Helper to tie a abstract state implementation to an abstract attribute. More...
 
class  StoreInfo
 
class  StoreInst
 An instruction for storing to memory. More...
 
class  StoreSDNode
 This class is used to represent ISD::STORE nodes. More...
 
class  StraightLineStrengthReducePass
 
struct  StreamingHTTPResponse
 Wraps the content provider with HTTP Status code and headers. More...
 
class  StringAttributeImpl
 
class  StringError
 This class wraps a string in an Error. More...
 
class  StringInit
 "foo" - Represent an initialization by a string value. More...
 
class  StringLiteral
 A wrapper around a string literal that serves as a proxy for constructing global tables of StringRefs with the length computed at compile time. More...
 
class  StringMap
 StringMap - This is an unconventional map that is specialized for handling keys that are "strings", which are basically ranges of bytes. More...
 
class  StringMapConstIterator
 
class  StringMapEntry
 StringMapEntry - This is used to represent one value that is inserted into a StringMap. More...
 
class  StringMapEntryBase
 StringMapEntryBase - Shared base class of StringMapEntry instances. More...
 
class  StringMapEntryStorage
 StringMapEntryStorage - Holds the value in a StringMapEntry. More...
 
class  StringMapEntryStorage< std::nullopt_t >
 
class  StringMapImpl
 StringMapImpl - This is the base class of StringMap that is shared among all of its instantiations. More...
 
class  StringMapIterator
 
class  StringMapIterBase
 
class  StringMapKeyIterator
 
class  StringMatcher
 Given a list of strings and code to execute when they match, output a simple switch tree to classify the input string. More...
 
class  StringRecTy
 'string' - Represent an string value More...
 
class  StringRef
 StringRef - Represent a constant reference to a string, i.e. More...
 
class  StringSaver
 Saves strings in the provided stable storage and returns a StringRef with a stable character pointer. More...
 
class  StringSet
 StringSet - A wrapper for StringMap that provides set-like functionality. More...
 
class  StringSubstitution
 
class  StringSwitch
 A switch()-like statement whose cases are string literals. More...
 
class  StringTable
 A table of densely packed, null-terminated strings indexed by offset. More...
 
class  StringTableBuilder
 Utility for building string tables with deduplicated suffixes. More...
 
class  StringToOffsetTable
 StringToOffsetTable - This class uniques a bunch of nul-terminated strings and keeps track of their offset in a massive contiguous string allocation. More...
 
struct  StripDeadDebugInfoPass
 
struct  StripDeadPrototypesPass
 Pass to remove unused function declarations. More...
 
struct  StripDebugDeclarePass
 
class  StripGCRelocates
 
struct  StripNonDebugSymbolsPass
 
class  StripNonLineTableDebugInfoPass
 
struct  StripSymbolsPass
 
struct  StrOffsetsContributionDescriptor
 Represents base address of the CU. More...
 
class  StrongType
 Helper for making strong types. More...
 
class  StructLayout
 Used to lazily calculate structure layout information for a target machine, based on the DataLayout structure. More...
 
class  StructType
 Class to represent struct types. More...
 
class  StructuralHashPrinterPass
 Printer pass for StructuralHashes. More...
 
struct  StructurizeCFGPass
 
struct  SubClassReference
 
struct  SubMultiClassReference
 
class  SubOperator
 
class  Substitution
 Class representing a substitution to perform in the RegExStr string. More...
 
class  SubsumingPositionIterator
 A visitor class for IR positions. More...
 
struct  SubtargetFeatureKV
 Used to provide key value pairs for feature and CPU bit flags. More...
 
class  SubtargetFeatures
 Manages the enabling and disabling of subtarget specific features. More...
 
struct  SubtargetSubTypeKV
 Used to provide key value pairs for feature and CPU bit flags. More...
 
class  SuccIterator
 
class  SuffixTree
 
struct  SuffixTreeInternalNode
 
struct  SuffixTreeLeafNode
 
struct  SuffixTreeNode
 A node in a suffix tree which represents a substring or suffix. More...
 
class  SUnit
 Scheduling unit. This is a node in the scheduling DAG. More...
 
class  SUnitIterator
 
class  SuperRegClassIterator
 
class  SuspendCrossingInfo
 
class  SwiftErrorValueTracking
 
class  SwingSchedulerDAG
 This class builds the dependence graph for the instructions in a loop, and attempts to schedule the instructions using the SMS algorithm. More...
 
class  SwingSchedulerDDG
 Represents dependencies between instructions. More...
 
class  SwingSchedulerDDGEdge
 Represents a dependence between two instruction. More...
 
class  SwitchInst
 Multiway switch. More...
 
class  SwitchInstProfUpdateWrapper
 A wrapper class to simplify modification of SwitchInst cases along with their prof branch_weights metadata. More...
 
struct  SymbolCU
 Helper used to pair up a symbol and its DWARF compile unit. More...
 
struct  SymbolInfoTy
 
class  SymbolRemappingParseError
 
class  SymbolRemappingReader
 Reader for symbol remapping files. More...
 
struct  SymbolsMapKey
 
class  SymbolTableEntry
 Symbol info for RuntimeDyld. More...
 
class  SymbolTableList
 List that automatically updates parent links and symbol tables. More...
 
struct  SymbolTableListParentType
 Template metafunction to get the parent type for a symbol table list. More...
 
class  SymbolTableListTraits
 
class  SyntheticCountsUtils
 Class with methods to propagate synthetic entry counts. More...
 
struct  SysAlias
 
struct  SysAliasImm
 
struct  SysAliasReg
 
class  SystemZAsmPrinter
 
class  SystemZCallingConventionRegisters
 A SystemZ-specific class detailing special use registers particular for calling conventions. More...
 
class  SystemZCCState
 
class  SystemZConstantPoolValue
 A SystemZ-specific constant pool value. More...
 
class  SystemZELFFrameLowering
 
class  SystemZELFRegisters
 ELF calling convention specific use registers Particular when on zLinux in 64 bit mode. More...
 
class  SystemZELFTargetObjectFile
 This implementation is used for SystemZ ELF targets. More...
 
class  SystemZFrameLowering
 
class  SystemZGNUInstPrinter
 
class  SystemZHazardRecognizer
 SystemZHazardRecognizer maintains the state for one MBB during scheduling. More...
 
class  SystemZHLASMInstPrinter
 
class  SystemZInstPrinterCommon
 
class  SystemZInstrInfo
 
class  SystemZMachineFunctionInfo
 
class  SystemZMCAsmInfoELF
 
class  SystemZMCAsmInfoGOFF
 
class  SystemZMCExpr
 
class  SystemZMCInstLower
 
class  SystemZPostRASchedStrategy
 A MachineSchedStrategy implementation for SystemZ post RA scheduling. More...
 
struct  SystemZRegisterInfo
 
class  SystemZSelectionDAGInfo
 
class  SystemZSubtarget
 
class  SystemZTargetLowering
 
class  SystemZTargetMachine
 
class  SystemZTargetStreamer
 
class  SystemZTTIImpl
 
struct  SystemZVectorConstantInfo
 
class  SystemZXPLINK64Registers
 XPLINK64 calling convention specific use registers Particular to z/OS when in 64 bit mode. More...
 
class  SystemZXPLINKFrameLowering
 
struct  TagNameItem
 
struct  TailCallElimPass
 
class  TailDuplicatePass
 
class  TailDuplicatePassBase
 
class  TailDuplicator
 Utility class to perform tail duplication. More...
 
struct  TailFoldingInfo
 
class  Target
 Target - Wrapper for Target specific information. More...
 
class  TargetExtType
 Class to represent target extensions types, which are generally unintrospectable from target-independent optimizations. More...
 
struct  TargetExtTypeKeyInfo
 
class  TargetFolder
 TargetFolder - Create constants with target dependent folding. More...
 
class  TargetFrameLowering
 Information about stack frame layout on the target. More...
 
struct  TargetIndexLocation
 This struct describes target specific location. More...
 
class  TargetIndexSDNode
 Completely target-dependent object reference. More...
 
class  TargetInstrInfo
 TargetInstrInfo - Interface to description of machine instruction set. More...
 
class  TargetIntrinsicInfo
 TargetIntrinsicInfo - Interface to description of machine instruction set. More...
 
class  TargetIRAnalysis
 Analysis pass providing the TargetTransformInfo. More...
 
class  TargetLibraryAnalysis
 Analysis pass providing the TargetLibraryInfo. More...
 
class  TargetLibraryInfo
 Provides information about what library functions are available for the current target. More...
 
class  TargetLibraryInfoImpl
 Implementation of the target library information. More...
 
class  TargetLibraryInfoWrapperPass
 
class  TargetLowering
 This class defines information used to lower LLVM code to legal SelectionDAG operators that the target instruction selector can accept natively. More...
 
class  TargetLoweringBase
 This base class for TargetLowering contains the SelectionDAG-independent parts that can be used from the rest of CodeGen. More...
 
class  TargetLoweringObjectFile
 
class  TargetLoweringObjectFileCOFF
 
class  TargetLoweringObjectFileELF
 
class  TargetLoweringObjectFileGOFF
 
class  TargetLoweringObjectFileMachO
 
class  TargetLoweringObjectFileWasm
 
class  TargetLoweringObjectFileXCOFF
 
class  TargetMachine
 Primary interface to the complete machine description for the target machine. More...
 
class  TargetOptions
 
class  TargetPassConfig
 Target-Independent Code Generator Pass Configuration Options. More...
 
struct  TargetRegionEntryInfo
 Data structure to contain the information needed to uniquely identify a target entry. More...
 
class  TargetRegisterClass
 
class  TargetRegisterInfo
 TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDesc objects that represent all of the machine registers that the target has. More...
 
struct  TargetRegisterInfoDesc
 Extra information, not in MCRegisterDesc, about registers. More...
 
struct  TargetRegistry
 TargetRegistry - Generic interface to target specific features. More...
 
class  TargetSchedModel
 Provide an instruction scheduling machine model to CodeGen passes. More...
 
class  TargetSubtargetInfo
 TargetSubtargetInfo - Generic base class for all target subtargets. More...
 
class  TargetTransformInfo
 This pass provides access to the codegen interfaces that are needed for IR-level transformations. More...
 
class  TargetTransformInfoImplBase
 Base class for use as a mix-in that aids implementing a TargetTransformInfo-compatible class. More...
 
class  TargetTransformInfoImplCRTPBase
 CRTP base class for use as a mix-in that aids implementing a TargetTransformInfo-compatible class. More...
 
class  TargetTransformInfoWrapperPass
 Wrapper pass for TargetTransformInfo. More...
 
class  TarWriter
 
class  TBAAVerifier
 Verify that the TBAA Metadatas are valid. More...
 
struct  TempMDNodeDeleter
 
struct  TemporalProfTraceTy
 An ordered list of functions identified by their NameRef found in INSTR_PROF_DATA. More...
 
class  TensorSpec
 
class  TernOpInit
 !op (X, Y, Z) - Combine two inits. More...
 
class  TextChangeReporter
 
class  TextCodeGenDataReader
 This format is a simple text format that's suitable for test data. More...
 
class  TextInstrProfReader
 Reader for the simple text based instrprof format. More...
 
class  TFModelEvaluator
 
class  TGLexer
 TGLexer - TableGen Lexer class. More...
 
class  TGParser
 
class  TGTimer
 
class  TGVarScope
 
class  ThinLTOBitcodeWriterPass
 
class  ThinLTOCodeGenerator
 This class define an interface similar to the LTOCodeGenerator, but adapted for ThinLTO processing. More...
 
struct  thread
 
class  ThreadPoolInterface
 This defines the abstract base interface for a ThreadPool allowing asynchronous parallel execution on a defined number of threads. More...
 
class  ThreadPoolStrategy
 This tells how a thread pool will be used. More...
 
class  ThreadPoolTaskGroup
 A group of tasks to be run on a thread pool. More...
 
class  ThreadSafeAllocator
 Thread-safe allocator adaptor. More...
 
class  ThreadSafeRefCountedBase
 A thread-safe version of RefCountedBase. More...
 
class  ThreadSafeTrieRawHashMap
 Lock-free thread-safe hash-mapped trie. More...
 
class  ThreadSafeTrieRawHashMapBase
 TrieRawHashMap - is a lock-free thread-safe trie that is can be used to store/index data based on a hash value. More...
 
struct  ThreadSanitizerPass
 A function pass for tsan instrumentation. More...
 
class  Thumb1FrameLowering
 
class  Thumb1InstrInfo
 
class  Thumb2InstrInfo
 
struct  ThumbRegisterInfo
 
class  ThunkInserter
 This class assists in inserting MI thunk functions into the module and rewriting the existing machine functions to call these thunks. More...
 
class  ThunkInserterPass
 Basic implementation of MachineFunctionPass wrapping one or more ThunkInserters passed as type parameters. More...
 
struct  TileInfo
 A helper struct to create IR loop nests for tiling in IR of the following form: for ColumnLoop.Index = 0..NumColumns for RowLoop.Index = 0..NumRows for KLoop.Index = 0..NumInner. More...
 
class  TimePassesHandler
 This class implements -time-passes functionality for new pass manager. More...
 
class  TimeProfilingPassesHandler
 This class implements –time-trace functionality for new pass manager. More...
 
class  Timer
 This class is used to track the amount of time spent between invocations of its startTimer()/stopTimer() methods. More...
 
class  TimeRecord
 
class  TimeRegion
 The TimeRegion class is used as a helper class to call the startTimer() and stopTimer() methods of the Timer class. More...
 
class  TimerGlobals
 
class  TimerGroup
 The TimerGroup class is used to group together related timers into a single report that is printed when the TimerGroup is destroyed. More...
 
struct  TimeTraceMetadata
 
struct  TimeTraceProfiler
 
struct  TimeTraceProfilerEntry
 Represents an open or completed time section entry to be captured. More...
 
class  TimeTraceScope
 The TimeTraceScope is a helper class to call the begin and end functions of the time trace profiler. More...
 
class  TinyPtrVector
 TinyPtrVector - This class is specialized for cases where there are normally 0 or 1 element in a vector, but is general enough to go beyond that when required. More...
 
struct  ToolContext
 
class  ToolOutputFile
 This class contains a raw_fd_ostream and adds a few extra features commonly needed for compiler-like tool output files: More...
 
struct  TPIDR2Object
 
class  Trace
 
class  TrackingMDRef
 Tracking metadata reference. More...
 
class  TrackingStatistic
 
class  TrackingVH
 Value handle that tracks a Value across RAUW. More...
 
class  TrackUnresolvedResolver
 (Optionally) delegate resolving to a sub-resolver, and keep track whether there were unresolved references. More...
 
class  TrailingObjects
 See the file comment for details on the usage of the TrailingObjects type. More...
 
struct  TrieHashIndexGenerator
 The utility class that helps computing the index of the object inside trie from its hash. More...
 
class  Triple
 Triple - Helper class for working with autoconf configuration names. More...
 
class  TruncatedBLAKE3
 Like BLAKE3 but using a class-level template parameter for specifying the hash size of the final() and result() functions. More...
 
class  TruncInst
 This class represents a truncation of integer types. More...
 
class  TruncInstCombine
 
class  Twine
 Twine - A lightweight data structure for efficiently representing the concatenation of temporary values as strings. More...
 
class  TwoAddressInstructionPass
 
class  Type
 The instances of the Type class are immutable: once they are created, they are never changed. More...
 
class  TypeAttributeImpl
 
class  TypeBasedAA
 Analysis pass providing a never-invalidated alias analysis result. More...
 
class  TypeBasedAAResult
 A simple AA result that uses TBAA metadata to answer queries. More...
 
class  TypeBasedAAWrapperPass
 Legacy wrapper pass to provide the TypeBasedAAResult object. More...
 
struct  TypeConversionCostTblEntryT
 Type Conversion Cost Table. More...
 
class  TypedInit
 This is the common superclass of types that have a specific, explicit type, stored in ValueTy. More...
 
class  TypedMDOperandIterator
 Typed iterator through MDNode operands. More...
 
class  TypedPointerType
 A few GPU targets, such as DXIL and SPIR-V, have typed pointers. More...
 
class  TypedTrackingMDRef
 Typed tracking ref. More...
 
class  TypeFinder
 TypeFinder - Walk over a module, identifying all of the types that are used by the module. More...
 
struct  TypeIdOffsetVtableInfo
 The following data structures summarize type metadata information. More...
 
struct  TypeIdSummary
 
class  TypePromotionPass
 
struct  TypeSanitizerPass
 
struct  TypesAreDistinct
 Determine if all types in Ts are distinct. More...
 
struct  TypesAreDistinct<>
 
class  TypeSize
 
class  TypeSwitch
 This class implements a switch-like dispatch statement for a value of 'T' using dyn_cast functionality. More...
 
class  TypeSwitch< T, void >
 Specialization of TypeSwitch for void returning callables. More...
 
struct  TypeTestResolution
 
struct  TypeUnitMetaInfo
 
struct  Uint24
 An auxiliary type to facilitate extraction of 3-byte entities. More...
 
class  UIToFPInst
 This class represents a cast unsigned integer to floating point. More...
 
class  UnaryInstruction
 
class  UnaryOperator
 
class  UnclusteredHighRPStage
 
class  UndefValue
 'undef' values are things that do not have specified contents. More...
 
class  UndefVarError
 Class to represent an undefined variable error, which quotes that variable's name when printed. More...
 
struct  UnderlyingObject
 
class  UniformityInfoAnalysis
 Analysis pass which computes UniformityInfo. More...
 
class  UniformityInfoPrinterPass
 Printer pass for the UniformityInfo. More...
 
class  UniformityInfoWrapperPass
 Legacy analysis pass which computes a CycleInfo. More...
 
class  UnifyFunctionExitNodesPass
 
class  UnifyLoopExitsPass
 
class  unique_function
 unique_function is a type-erasing functor similar to std::function. More...
 
class  unique_function< R(P...) const >
 
class  unique_function< R(P...)>
 
struct  UniqueBBID
 
class  UniqueMachineInstr
 A class that wraps MachineInstrs and derives from FoldingSetNode in order to be uniqued in a CSEMap. More...
 
struct  UniquePtrCast
 This cast trait provides std::unique_ptr casting. More...
 
class  UniqueStringSaver
 Saves strings in the provided stable storage and returns a StringRef with a stable character pointer. More...
 
struct  UniqueTag
 It's very easy to introduce bugs by passing the wrong string pool. More...
 
class  UniqueVector
 UniqueVector - This class produces a sequential ID number (base 1) for each unique entry that is added. More...
 
struct  UnitIndexEntry
 
class  UnOpInit
 !op (X) - Transform an init. More...
 
class  UnreachableBlockElimPass
 
class  UnreachableInst
 This function has undefined behavior. More...
 
class  UnrollCostEstimator
 Produce an estimate of the unrolled cost of the specified loop. More...
 
class  UnrolledInstAnalyzer
 
struct  UnrollLoopOptions
 
class  UnsetInit
 '?' - Represents an uninitialized value. More...
 
struct  UnsignedDivisionByConstantInfo
 Magic data for optimising unsigned division by a constant. More...
 
class  UnwindOpcodeAssembler
 
class  upward_defs_iterator
 Provide an iterator that walks defs, giving both the memory access, and the current pointer location, updating the pointer location as it changes due to phi node translation. More...
 
class  Use
 A Use represents the edge between a Value definition and its users. More...
 
struct  UsedNZCV
 
struct  UseListOrder
 Structure to hold a use-list order. More...
 
class  User
 
class  VAArgInst
 This class represents the va_arg llvm instruction, which returns an argument of the specified type given a va_list and increments that list. More...
 
class  VACopyInst
 This represents the llvm.va_copy intrinsic. More...
 
class  VAEndInst
 This represents the llvm.va_end intrinsic. More...
 
struct  ValID
 ValID - Represents a reference of a definition of some sort with no type. More...
 
struct  validate_format_parameters
 These are templated helper classes used by the format function that capture the object to be formatted and the format string. More...
 
struct  validate_format_parameters< Arg, Args... >
 
struct  validate_format_parameters<>
 
class  Value
 LLVM Value Representation. More...
 
struct  ValueAndVReg
 Simple struct used to hold a constant integer value and a virtual register. More...
 
class  ValueAsMetadata
 Value wrapper in the Metadata hierarchy. More...
 
struct  ValueDeleter
 
struct  ValueDFS
 
struct  ValueDFS_Compare
 
class  ValueEnumerator
 
struct  ValueFromPointerCast
 This cast trait provides casting for the specific case of casting to a value-typed object from a pointer-typed object. More...
 
class  ValueHandleBase
 This is the common base class of value handles. More...
 
struct  ValueInfo
 Struct that holds a reference to a particular GUID in a global value summary. More...
 
struct  ValueIsPresent
 ValueIsPresent provides a way to check if a value is, well, present. More...
 
struct  ValueIsPresent< std::optional< T > >
 
struct  ValueIsPresent< T, std::enable_if_t< IsNullable< T > > >
 
class  ValueLatticeElement
 This class represents lattice values for constants. More...
 
class  ValueMap
 See the file comment. More...
 
class  ValueMapCallbackVH
 
struct  ValueMapConfig
 This class defines the default behavior for configurable aspects of ValueMap<>. More...
 
class  ValueMapConstIterator
 
class  ValueMapIterator
 
class  ValueMapper
 Context for (re-)mapping values (and metadata). More...
 
class  ValueMapTypeRemapper
 This is a class that can be implemented by clients to remap types when cloning constants and instructions. More...
 
class  ValueMaterializer
 This is a class that can be implemented by clients to materialize Values on demand. More...
 
class  ValueProfileCollector
 Utility analysis that determines what values are worth profiling. More...
 
struct  ValueSimplifyStateType
 
class  ValueSymbolTable
 This class provides a symbol table of name/value pairs. More...
 
class  VarBitInit
 Opcode{0} - Represent access to one bit of a variable or field. More...
 
class  VarDefInit
 classname<targs...> - Represent an uninstantiated anonymous class instantiation. More...
 
struct  VariadicOperandTraits
 VariadicOperandTraits - determine the allocation regime of the Use array when it is a prefix to the User object, and the number of Use objects is only known at allocation time. More...
 
class  VarInit
 'Opcode' - Represent a reference to an entire variable object. More...
 
struct  VarLocInfo
 Variable location definition used by FunctionVarLocs. More...
 
class  VarStreamArray
 
struct  VarStreamArrayExtractor
 VarStreamArrayExtractor is intended to be specialized to provide customized extraction logic. More...
 
struct  VarStreamArrayExtractor< codeview::CrossModuleImportItem >
 
struct  VarStreamArrayExtractor< codeview::CVRecord< Kind > >
 
struct  VarStreamArrayExtractor< codeview::DebugSubsectionRecord >
 
struct  VarStreamArrayExtractor< codeview::FileChecksumEntry >
 
struct  VarStreamArrayExtractor< codeview::InlineeSourceLine >
 
struct  VarStreamArrayExtractor< pdb::DbiModuleDescriptor >
 
class  VarStreamArrayIterator
 VarStreamArray represents an array of variable length records backed by a stream. More...
 
class  VAStartInst
 This represents the llvm.va_start intrinsic. More...
 
class  VecDesc
 Provides info so a possible vectorization of a function can be computed. More...
 
class  VectorBuilder
 
class  VectorCombinePass
 Optimize scalar/vector interactions in IR using target cost models. More...
 
struct  VectorizationFactor
 TODO: The following VectorizationFactor was pulled out of LoopVectorizationCostModel class. More...
 
struct  VectorizerParams
 Collection of parameters shared beetween the Loop Vectorizer and the Loop Access Analysis. More...
 
class  VectorType
 Base class of all SIMD vector types. More...
 
class  VECustomDAG
 
class  VEELFMCAsmInfo
 
class  VEFrameLowering
 
class  VEInstPrinter
 
class  VEInstrInfo
 
class  VEMachineFunctionInfo
 
class  VEMCExpr
 
struct  VERegisterInfo
 
class  VerifierAnalysis
 Check a module for errors, and report separate error states for IR and debug info errors. More...
 
class  VerifierPass
 Create a verifier pass. More...
 
struct  VerifierSupport
 
class  VerifyInstrumentation
 
class  VersionedClause
 
class  VersionTuple
 Represents a version number in the form major[.minor[.subminor[.build]]]. More...
 
class  VESubtarget
 
class  VETargetAsmStreamer
 
class  VETargetELFStreamer
 
class  VETargetLowering
 
class  VETargetMachine
 
struct  VETargetMasks
 
class  VETargetStreamer
 
class  VETTIImpl
 
class  VFDatabase
 The Vector Function Database. More...
 
struct  VFInfo
 Holds the VFShape for a specific scalar to vector function mapping. More...
 
struct  VFParameter
 Encapsulates information needed to describe a parameter. More...
 
struct  VFRange
 A range of powers-of-2 vectorization factors with fixed start and adjustable end. More...
 
struct  VFShape
 Contains the information about the kind of vectorization available. More...
 
struct  VirtFuncOffset
 The ValueInfo and offset for a function within a vtable definition initializer array. More...
 
struct  VirtReg2IndexFunctor
 
class  VirtRegAuxInfo
 Calculate auxiliary information for a virtual register such as its spill weight and allocation hint. More...
 
struct  VirtRegInfo
 VirtRegInfo - Information about a virtual register used by a set of operands. More...
 
class  VirtRegMap
 
class  VirtRegMapAnalysis
 
class  VirtRegMapPrinterPass
 
class  VirtRegMapWrapperLegacy
 
class  VLIWMachineScheduler
 Extend the standard ScheduleDAGMILive to provide more context and override the top-level schedule() driver. More...
 
class  VLIWPacketizerList
 
class  VLIWResourceModel
 
class  VNInfo
 VNInfo - Value Number Information. More...
 
class  VPActiveLaneMaskPHIRecipe
 A recipe for generating the active lane mask for the vector loop that is used to predicate the vector operations. More...
 
class  VPAllSuccessorsIterator
 Iterator to traverse all successors of a VPBlockBase node. More...
 
class  VPBaseLoadStoreSDNode
 This base class is used to represent VP_LOAD, VP_STORE, EXPERIMENTAL_VP_STRIDED_LOAD and EXPERIMENTAL_VP_STRIDED_STORE nodes. More...
 
class  VPBasicBlock
 VPBasicBlock serves as the leaf of the Hierarchical Control-Flow Graph. More...
 
class  VPBinOpIntrinsic
 
class  VPBlendRecipe
 A recipe for vectorizing a phi-node as a sequence of mask-based select instructions. More...
 
class  VPBlockBase
 VPBlockBase is the building block of the Hierarchical Control-Flow Graph. More...
 
class  VPBlockDeepTraversalWrapper
 Helper for GraphTraits specialization that traverses through VPRegionBlocks. More...
 
class  VPBlockShallowTraversalWrapper
 Helper for GraphTraits specialization that does not traverses through VPRegionBlocks. More...
 
class  VPBlockUtils
 Class that provides utilities for VPBlockBases in VPlan. More...
 
class  VPBranchOnMaskRecipe
 A recipe for generating conditional branches on the bits of a mask. More...
 
class  VPBuilder
 VPlan-based builder utility analogous to IRBuilder. More...
 
class  VPCanonicalIVPHIRecipe
 Canonical scalar induction phi of the vector loop. More...
 
class  VPCastIntrinsic
 
class  VPCmpIntrinsic
 
struct  VPCostContext
 Struct to hold various analysis needed for cost computations. More...
 
class  VPDef
 This class augments a recipe with a set of VPValues defined by the recipe. More...
 
class  VPDerivedIVRecipe
 A recipe for converting the input value IV value to the corresponding value of an IV with different start and step values, using Start + IV * Step. More...
 
class  VPDominatorTree
 Template specialization of the standard LLVM dominator tree utility for VPBlockBases. More...
 
class  VPEVLBasedIVPHIRecipe
 A recipe for generating the phi node for the current index of elements, adjusted in accordance with EVL value. More...
 
class  VPExpandSCEVRecipe
 Recipe to expand a SCEV expression. More...
 
struct  VPFirstOrderRecurrencePHIRecipe
 A recipe for handling first-order recurrence phis. More...
 
class  VPGatherScatterSDNode
 This is a base class used to represent VP_GATHER and VP_SCATTER nodes. More...
 
class  VPGatherSDNode
 This class is used to represent an VP_GATHER node. More...
 
class  VPHeaderPHIRecipe
 A pure virtual base class for all recipes modeling header phis, including phis for first order recurrences, pointer inductions and reductions. More...
 
class  VPHistogramRecipe
 A recipe representing a sequence of load -> update -> store as part of a histogram operation. More...
 
class  VPInstruction
 This is a concrete Recipe that models a single VPlan-level instruction. More...
 
class  VPInterleavedAccessInfo
 
class  VPInterleaveRecipe
 VPInterleaveRecipe is a recipe for transforming an interleave group of load or stores into one wide load/store and shuffles. More...
 
class  VPIntrinsic
 This is the common base class for vector predication intrinsics. More...
 
class  VPIRBasicBlock
 A special type of VPBasicBlock that wraps an existing IR basic block. More...
 
class  VPIRInstruction
 A recipe to wrap on original IR instruction not to be modified during execution, execept for PHIs. More...
 
class  VPlan
 VPlan models a candidate for vectorization, encoding various decisions take to produce efficient output IR, including which branches, basic-blocks and output IR instructions to generate, and their cost. More...
 
class  VPLane
 In what follows, the term "input IR" refers to code that is fed into the vectorizer whereas the term "output IR" refers to code that is generated by the vectorizer. More...
 
class  VPlanHCFGBuilder
 Main class to build the VPlan H-CFG for an incoming IR. More...
 
struct  VPlanIngredient
 
class  VPlanPrinter
 VPlanPrinter prints a given VPlan to a given output stream. More...
 
class  VPlanSlp
 Class that maps (parts of) an existing VPlan to trees of combined VPInstructions. More...
 
struct  VPlanTransforms
 
class  VPLoadSDNode
 This class is used to represent a VP_LOAD node. More...
 
class  VPMatchContext
 
class  VPPartialReductionRecipe
 A recipe for forming partial reductions. More...
 
class  VPPredInstPHIRecipe
 VPPredInstPHIRecipe is a recipe for generating the phi nodes needed when control converges back from a Branch-on-Mask. More...
 
class  VPRecipeBase
 VPRecipeBase is a base class modeling a sequence of one or more output IR instructions. More...
 
class  VPRecipeBuilder
 Helper class to create VPRecipies from IR instructions. More...
 
class  VPRecipeWithIRFlags
 Class to record LLVM IR flag for a recipe along with it. More...
 
class  VPReductionEVLRecipe
 A recipe to represent inloop reduction operations with vector-predication intrinsics, performing a reduction on a vector operand with the explicit vector length (EVL) into a scalar value, and adding the result to a chain. More...
 
class  VPReductionIntrinsic
 This represents vector predication reduction intrinsics. More...
 
class  VPReductionPHIRecipe
 A recipe for handling reduction phis. More...
 
class  VPReductionRecipe
 A recipe to represent inloop reduction operations, performing a reduction on a vector operand into a scalar value, and adding the result to a chain. More...
 
class  VPRegionBlock
 VPRegionBlock represents a collection of VPBasicBlocks and VPRegionBlocks which form a Single-Entry-Single-Exiting subgraph of the output IR CFG. More...
 
class  VPReplicateRecipe
 VPReplicateRecipe replicates a given instruction producing multiple scalar copies of the original scalar type, one per lane, instead of producing a single copy of widened type for all lanes. More...
 
class  VPReverseVectorPointerRecipe
 A recipe to compute the pointers for widened memory accesses of IndexTy in reverse order. More...
 
class  VPScalarCastRecipe
 VPScalarCastRecipe is a recipe to create scalar cast instructions. More...
 
class  VPScalarIVStepsRecipe
 A recipe for handling phi nodes of integer and floating-point inductions, producing their scalar values. More...
 
class  VPScalarPHIRecipe
 Recipe to generate a scalar PHI. More...
 
class  VPScatterSDNode
 This class is used to represent an VP_SCATTER node. More...
 
class  VPSingleDefRecipe
 VPSingleDef is a base class for recipes for modeling a sequence of one or more output IR that define a single result VPValue. More...
 
class  VPSlotTracker
 This class can be used to assign names to VPValues. More...
 
class  VPStoreSDNode
 This class is used to represent a VP_STORE node. More...
 
class  VPStridedLoadSDNode
 This class is used to represent an EXPERIMENTAL_VP_STRIDED_LOAD node. More...
 
class  VPStridedStoreSDNode
 This class is used to represent an EXPERIMENTAL_VP_STRIDED_STORE node. More...
 
struct  VPTransformState
 VPTransformState holds information passed down when "executing" a VPlan, needed for generating the output IR. More...
 
class  VPTypeAnalysis
 An analysis for type-inference for VPValues. More...
 
class  VPUnrollPartAccessor
 Helper to access the operand that contains the unroll part for this recipe after unrolling. More...
 
class  VPUser
 This class augments VPValue with operands which provide the inverse def-use edges from VPValue's users to their defs. More...
 
class  VPValue
 
class  VPVectorPointerRecipe
 A recipe to compute the pointers for widened memory accesses of IndexTy. More...
 
class  VPWidenCallRecipe
 A recipe for widening Call instructions using library calls. More...
 
class  VPWidenCanonicalIVRecipe
 A Recipe for widening the canonical induction variable of the vector loop. More...
 
class  VPWidenCastRecipe
 VPWidenCastRecipe is a recipe to create vector cast instructions. More...
 
class  VPWidenEVLRecipe
 A recipe for widening operations with vector-predication intrinsics with explicit vector length (EVL). More...
 
class  VPWidenGEPRecipe
 A recipe for handling GEP instructions. More...
 
class  VPWidenInductionRecipe
 Base class for widened induction (VPWidenIntOrFpInductionRecipe and VPWidenPointerInductionRecipe), providing shared functionality, including retrieving the step value, induction descriptor and original phi node. More...
 
class  VPWidenIntOrFpInductionRecipe
 A recipe for handling phi nodes of integer and floating-point inductions, producing their vector values. More...
 
class  VPWidenIntrinsicRecipe
 A recipe for widening vector intrinsics. More...
 
struct  VPWidenLoadEVLRecipe
 A recipe for widening load operations with vector-predication intrinsics, using the address to load from, the explicit vector length and an optional mask. More...
 
struct  VPWidenLoadRecipe
 A recipe for widening load operations, using the address to load from and an optional mask. More...
 
class  VPWidenMemoryRecipe
 A common base class for widening memory operations. More...
 
class  VPWidenPHIRecipe
 A recipe for handling phis that are widened in the vector loop. More...
 
class  VPWidenPointerInductionRecipe
 
class  VPWidenRecipe
 VPWidenRecipe is a recipe for producing a widened instruction using the opcode and operands of the recipe. More...
 
struct  VPWidenSelectRecipe
 A recipe for widening select instructions. More...
 
struct  VPWidenStoreEVLRecipe
 A recipe for widening store operations with vector-predication intrinsics, using the value to store, the address to store to, the explicit vector length and an optional mask. More...
 
struct  VPWidenStoreRecipe
 A recipe for widening store operations, using the stored value, the address to store to and an optional mask. More...
 
struct  VReg2SUnit
 An individual mapping from virtual register number to SUnit. More...
 
struct  VReg2SUnitOperIdx
 Mapping from virtual register to SUnit including an operand index. More...
 
struct  VRegInfo
 
class  VRegRenamer
 VRegRenamer - This class is used for renaming vregs in a machine basic block according to semantics of the instruction. More...
 
struct  VTableSlotSummary
 
class  VTSDNode
 This class is used to represent EVT's, which are used to parameterize some operations. More...
 
class  WarnMissedTransformationsPass
 
struct  WasmEHFuncInfo
 
class  WasmEHPreparePass
 
class  WasmException
 
class  WeakTrackingVH
 Value handle that is nullable, but tries to track the Value. More...
 
class  WeakVH
 A nullable Value handle that is nullable. More...
 
class  WebAssemblyAsmPrinter
 
class  WebAssemblyAsmTypeCheck
 
class  WebAssemblyDebugValueManager
 
class  WebAssemblyException
 
class  WebAssemblyExceptionInfo
 
class  WebAssemblyFrameLowering
 
class  WebAssemblyFunctionInfo
 This class is derived from MachineFunctionInfo and contains private WebAssembly-specific information for each MachineFunction. More...
 
class  WebAssemblyInstPrinter
 
class  WebAssemblyInstrInfo
 
class  WebAssemblyMCAsmInfo
 
class  WebAssemblyMCInstLower
 This class is used to lower an MachineInstr into an MCInst. More...
 
class  WebAssemblyRegisterInfo
 
class  WebAssemblySelectionDAGInfo
 
class  WebAssemblySubtarget
 
class  WebAssemblyTargetAsmStreamer
 This part is for ascii assembly output. More...
 
class  WebAssemblyTargetLowering
 
class  WebAssemblyTargetMachine
 
class  WebAssemblyTargetNullStreamer
 This part is for null output. More...
 
class  WebAssemblyTargetObjectFile
 
class  WebAssemblyTargetStreamer
 WebAssembly-specific streamer interface, to implement support WebAssembly-specific assembly directives. More...
 
class  WebAssemblyTargetWasmStreamer
 This part is for Wasm object output. More...
 
class  WebAssemblyTTIImpl
 
struct  WholeProgramDevirtPass
 
struct  WholeProgramDevirtResolution
 
struct  WideIVInfo
 Collect information about induction variables that are used by sign/zero extend operations. More...
 
class  WinCFGuard
 
class  WinCOFFObjectWriter
 
class  WinCOFFWriter
 
class  WindowScheduler
 The main class in the implementation of the target independent window scheduler. More...
 
class  WindowsResourceProcessor
 
struct  WinEHFuncInfo
 
struct  WinEHHandlerType
 
class  WinEHPreparePass
 
struct  WinEHTryBlockMapEntry
 
class  WinException
 
class  WithCache
 
class  WithColor
 An RAII object that temporarily switches an output stream to a specific color. More...
 
class  WithOverflowInst
 Represents an op.with.overflow intrinsic. More...
 
class  WritableBinaryStream
 A BinaryStream which can be read from as well as written to. More...
 
class  WritableBinaryStreamRef
 
class  WritableMemoryBuffer
 This class is an extension of MemoryBuffer, which allows copy-on-write access to the underlying contents. More...
 
class  WriteThroughMemoryBuffer
 This class is an extension of MemoryBuffer, which allows write access to the underlying contents and committing those changes to the original source. More...
 
class  X86_64ELFTargetObjectFile
 This implementation is used for X86_64 ELF targets, and defers to X86ELFTargetObjectFile for commonalities with 32-bit targets. More...
 
class  X86_64MachoTargetObjectFile
 X86_64MachoTargetObjectFile - This TLOF implementation is used for Darwin x86-64. More...
 
struct  X86_64MCAsmInfoDarwin
 
struct  X86AddressMode
 X86AddressMode - This struct holds a generalized full x86 address mode. More...
 
class  X86AsmPrinter
 
class  X86ATTInstPrinter
 
class  X86CallLowering
 
class  X86ELFMCAsmInfo
 
class  X86ELFTargetObjectFile
 This implementation is used for X86 ELF targets that don't have a further specialization (and as a base class for X86_64, which does). More...
 
struct  X86FoldTableEntry
 
class  X86FrameLowering
 
class  X86GenRegisterBankInfo
 
class  X86InstPrinterCommon
 
struct  X86InstrFMA3Group
 This class is used to group {132, 213, 231} forms of FMA opcodes together. More...
 
class  X86InstrInfo
 
class  X86IntelInstPrinter
 
class  X86ISelDAGToDAGPass
 
class  X86LegalizerInfo
 
class  X86MachineFunctionInfo
 X86MachineFunctionInfo - This class is derived from MachineFunction and contains private X86 target-specific information for each MachineFunction. More...
 
class  X86MaskedGatherScatterSDNode
 
class  X86MaskedGatherSDNode
 
class  X86MaskedScatterSDNode
 
class  X86MCAsmInfoDarwin
 
class  X86MCAsmInfoGNUCOFF
 
class  X86MCAsmInfoMicrosoft
 
class  X86MCAsmInfoMicrosoftMASM
 
class  X86MCExpr
 
struct  X86Operand
 X86Operand - Instances of this class represent a parsed X86 machine instruction. More...
 
class  X86RegisterBankInfo
 This class provides the information for the target register banks. More...
 
class  X86RegisterInfo
 
class  X86SelectionDAGInfo
 
class  X86Subtarget
 
class  X86TargetLowering
 
class  X86TargetMachine
 
class  X86TargetStreamer
 X86 target streamer implementing x86-only assembly directives. More...
 
class  X86TTIImpl
 
class  XCOFFObjectWriter
 
struct  XCOFFSymbolInfoTy
 
class  XCoreFrameLowering
 
class  XCoreFunctionInfo
 XCoreFunctionInfo - This class is derived from MachineFunction private XCore target-specific information for each MachineFunction. More...
 
class  XCoreInstPrinter
 
class  XCoreInstrInfo
 
class  XCoreMCAsmInfo
 
class  XCoreMCInstLower
 This class is used to lower an MachineInstr into an MCInst. More...
 
struct  XCoreRegisterInfo
 
class  XCoreSelectionDAGInfo
 
class  XCoreSubtarget
 
class  XCoreTargetLowering
 
class  XCoreTargetMachine
 
class  XCoreTargetObjectFile
 
class  XCoreTargetStreamer
 
class  XCoreTTIImpl
 
class  XtensaAsmPrinter
 
class  XtensaConstantPoolConstant
 XtensaConstantPoolConstant - Xtensa-specific constant pool values for Constants (for example BlockAddresses). More...
 
class  XtensaConstantPoolJumpTable
 XtensaConstantPoolJumpTable - Xtensa-specific constantpool values for Jump Table symbols. More...
 
class  XtensaConstantPoolMBB
 XtensaConstantPoolMBB - Xtensa-specific constantpool value of a machine basic block. More...
 
class  XtensaConstantPoolSymbol
 XtensaConstantPoolSymbol - Xtensa-specific constantpool values for external symbols. More...
 
class  XtensaConstantPoolValue
 XtensaConstantPoolValue - Xtensa specific constantpool value. More...
 
class  XtensaFrameLowering
 
class  XtensaInstPrinter
 
class  XtensaInstrInfo
 
class  XtensaMachineFunctionInfo
 
class  XtensaMCAsmBackend
 
class  XtensaMCAsmInfo
 
class  XtensaMCExpr
 
class  XtensaRegisterInfo
 
class  XtensaSubtarget
 
class  XtensaTargetAsmStreamer
 
class  XtensaTargetELFStreamer
 
class  XtensaTargetLowering
 
class  XtensaTargetMachine
 
class  XtensaTargetStreamer
 
struct  XXH128_hash_t
 The return value from 128-bit hashes. More...
 
class  ZExtInst
 This class represents zero extension of integer types. More...
 

Typedefs

template<class T >
using BumpPtrList = AllocatorList< T, BumpPtrAllocator >
 
template<typename NodeRef , unsigned SmallSize = 8>
using bf_iterator_default_set = SmallPtrSet< NodeRef, SmallSize >
 
using FoldingSetNode = FoldingSetBase::Node
 
template<class T , class... Options>
using ilist = iplist< T, Options... >
 
template<typename T >
using PointTypeIsValid = std::bool_constant< std::is_fundamental< T >::value >
 
template<typename T >
using ValueTypeIsValid = std::bool_constant< std::is_fundamental< T >::value||std::is_pointer< T >::value >
 
template<typename WrappedIteratorT , typename T1 = std::remove_reference_t<decltype( **std::declval<WrappedIteratorT>())>, typename T2 = std::add_pointer_t<T1>>
using raw_pointer_iterator = pointer_iterator< pointee_iterator< WrappedIteratorT, T1 >, T2 >
 
template<class Iterator >
using EnableIfConvertibleToInputIterator = std::enable_if_t< std::is_convertible< typename std::iterator_traits< Iterator >::iterator_category, std::input_iterator_tag >::value >
 
template<class T >
using SmallVectorSizeType = std::conditional_t< sizeof(T)< 4 &&sizeof(void *) >=8, uint64_t, uint32_t >
 
template<typename RangeType >
using ValueTypeFromRangeType = std::remove_const_t< std::remove_reference_t< decltype(*std::begin(std::declval< RangeType & >()))> >
 
using stable_hash = uint64_t
 An opaque object representing a stable hash code.
 
using Statistic = NoopStatistic
 
template<template< class... > class Op, class... Args>
using is_detected = typename detail::detector< void, Op, Args... >::value_t
 Detects if a given trait holds for some set of arguments 'Args'.
 
template<typename T , typename... Ts>
using is_one_of = std::disjunction< std::is_same< T, Ts >... >
 traits class for checking whether type T is one of any of the given types in the variadic list.
 
template<typename T , typename... Ts>
using are_base_of = std::conjunction< std::is_base_of< T, Ts >... >
 traits class for checking whether type T is a base class for all the given types in the variadic list.
 
template<size_t I, typename... Ts>
using TypeAtIndex = std::tuple_element_t< I, std::tuple< Ts... > >
 Find the type at a given index in a list of types.
 
template<typename WrappedIteratorT , typename PredicateT >
using filter_iterator = filter_iterator_impl< WrappedIteratorT, PredicateT, typename detail::fwd_or_bidi_tag< WrappedIteratorT >::type >
 Defines filter_iterator to a suitable specialization of filter_iterator_impl, based on the underlying iterator's category.
 
template<typename T >
using remove_cvref_t = typename llvm::remove_cvref< T >::type
 
using AliasAnalysis = AAResults
 Temporary typedef for legacy code that uses a generic AliasAnalysis pointer or reference.
 
using RetainedKnowledgeKey = std::pair< Value *, Attribute::AttrKind >
 The map Key contains the Value on for which the attribute is valid and the Attribute that is valid for that value.
 
using Assume2KnowledgeMap = DenseMap< AssumeInst *, MinMax >
 A mapping from intrinsics (=llvm.assume calls) to a value range (=knowledge) that is encoded in them.
 
using RetainedKnowledgeMap = DenseMap< RetainedKnowledgeKey, Assume2KnowledgeMap >
 
using CGSCCAnalysisManager = AnalysisManager< LazyCallGraph::SCC, LazyCallGraph & >
 The CGSCC analysis manager.
 
using CGSCCPassManager = PassManager< LazyCallGraph::SCC, CGSCCAnalysisManager, LazyCallGraph &, CGSCCUpdateResult & >
 The CGSCC pass manager.
 
using CGSCCAnalysisManagerModuleProxy = InnerAnalysisManagerProxy< CGSCCAnalysisManager, Module >
 A proxy from a CGSCCAnalysisManager to a Module.
 
using ModuleAnalysisManagerCGSCCProxy = OuterAnalysisManagerProxy< ModuleAnalysisManager, LazyCallGraph::SCC, LazyCallGraph & >
 A proxy from a ModuleAnalysisManager to an SCC.
 
using CGSCCAnalysisManagerFunctionProxy = OuterAnalysisManagerProxy< CGSCCAnalysisManager, Function >
 A proxy from a CGSCCAnalysisManager to a Function.
 
using CtxProfFlatProfile = std::map< GlobalValue::GUID, SmallVector< uint64_t, 1 > >
 
using DDGNodeBase = DGNode< DDGNode, DDGEdge >
 
using DDGEdgeBase = DGEdge< DDGNode, DDGEdge >
 
using DDGBase = DirectedGraph< DDGNode, DDGEdge >
 
using DDGInfo = DependenceGraphInfo< DDGNode >
 
using DDGDotGraphTraits = DOTGraphTraits< const DataDependenceGraph * >
 
using InlineCostFeatures = std::array< int, static_cast< size_t >(InlineCostFeatureIndex::NumberOfFeatures)>
 
using InlineFeatures = std::vector< int64_t >
 
using ForwardIDFCalculator = IDFCalculator< false >
 
using ReverseIDFCalculator = IDFCalculator< true >
 
typedef std::pair< const RuntimeCheckingPtrGroup *, const RuntimeCheckingPtrGroup * > RuntimePointerCheck
 A memcheck which made up of a pair of grouped pointers.
 
typedef AnalysisManager< Loop, LoopStandardAnalysisResults & > LoopAnalysisManager
 The loop analysis manager.
 
typedef InnerAnalysisManagerProxy< LoopAnalysisManager, FunctionLoopAnalysisManagerFunctionProxy
 A proxy from a LoopAnalysisManager to a Function.
 
typedef OuterAnalysisManagerProxy< FunctionAnalysisManager, Loop, LoopStandardAnalysisResults & > FunctionAnalysisManagerLoopProxy
 A proxy from a FunctionAnalysisManager to a Loop.
 
using CacheCostTy = InstructionCost
 
using LoopVectorTy = SmallVector< Loop *, 8 >
 
using ReferenceGroupTy = SmallVector< std::unique_ptr< IndexedReference >, 8 >
 A reference group represents a set of memory references that exhibit temporal or spacial reuse.
 
using ReferenceGroupsTy = SmallVector< ReferenceGroupTy, 8 >
 
using memoryaccess_def_iterator = memoryaccess_def_iterator_base< MemoryAccess >
 
using const_memoryaccess_def_iterator = memoryaccess_def_iterator_base< const MemoryAccess >
 
using MemoryAccessPair = std::pair< MemoryAccess *, MemoryLocation >
 
using ConstMemoryAccessPair = std::pair< const MemoryAccess *, MemoryLocation >
 
using ValueToValueMapTy = ValueMap< const Value *, WeakTrackingVH >
 
using PhiToDefMap = SmallDenseMap< MemoryPhi *, MemoryAccess * >
 
using CFGUpdate = cfg::Update< BasicBlock * >
 
using ValueToValueMap = DenseMap< const Value *, Value * >
 
using ValueToSCEVMapTy = DenseMap< const Value *, const SCEV * >
 
using LoopToScevMapT = DenseMap< const Loop *, const SCEV * >
 
typedef SmallPtrSet< const Loop *, 2 > PostIncLoopSet
 
typedef function_ref< bool(const SCEVAddRecExpr *)> NormalizePredTy
 
typedef TargetTransformInfo TTI
 
using UniformityInfo = GenericUniformityInfo< SSAContext >
 
typedef llvm::function_ref< std::optional< std::string >(StringRef, StringRef)> DataLayoutCallbackTy
 
typedef std::function< std::optional< std::string >(StringRef, StringRef)> DataLayoutCallbackFuncTy
 
typedef std::function< Type *(unsigned)> GetTypeByIDTy
 
typedef std::function< unsigned(unsigned, unsigned)> GetContainedTypeIDTy
 
typedef std::function< void(Value *, unsigned, GetTypeByIDTy, GetContainedTypeIDTy)> ValueTypeCallbackTy
 
typedef std::function< void(Metadata **, unsigned, GetTypeByIDTy, GetContainedTypeIDTy)> MDTypeCallbackTy
 
using IdHashNodeStableMapTy = std::map< unsigned, HashNodeStable >
 
using IdHashNodeMapTy = DenseMap< unsigned, HashNode * >
 
using HashNodeIdMapTy = DenseMap< const HashNode *, unsigned >
 
using IndexPairHash = std::pair< IndexPair, stable_hash >
 
using IndexOperandHashVecType = SmallVector< IndexPairHash >
 
using TUVectorTy = SmallVector< TypeUnitMetaInfo, 1 >
 
typedef MCSymbolExceptionSymbolProvider(AsmPrinter *Asm, const MachineBasicBlock *MBB)
 
using CreateCmpXchgInstFun = function_ref< void(IRBuilderBase &, Value *, Value *, Value *, Align, AtomicOrdering, SyncScope::ID, Value *&, Value *&, Instruction *)>
 Parameters (see the expansion example below): (the builder, addr, loaded, new_val, ordering, /* OUT ‍/ success, / OUT *‍/ new_loaded, MetadataSrc)
 
using MachineBasicBlockComparator = function_ref< bool(const MachineBasicBlock &, const MachineBasicBlock &)>
 
typedef bool CCAssignFn(unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 CCAssignFn - This function assigns a location for Val, updating State to reflect the change.
 
typedef bool CCCustomFn(unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
 CCCustomFn - This function assigns a location for Val, possibly updating all args to reflect changes and indicates if it handled it.
 
using CostTblEntry = CostTblEntryT< unsigned >
 
using TypeConversionCostTblEntry = TypeConversionCostTblEntryT< unsigned >
 
using SSAContext = GenericSSAContext< Function >
 
using GCMetadataPrinterRegistry = Registry< GCMetadataPrinter >
 GCMetadataPrinterRegistry - The GC assembly printer registry uses all the defaults from Registry.
 
using BuildFnTy = std::function< void(MachineIRBuilder &)>
 
using OperandBuildSteps = SmallVector< std::function< void(MachineInstrBuilder &)>, 4 >
 
using LegalityPredicate = std::function< bool(const LegalityQuery &)>
 
using LegalizeMutation = std::function< std::pair< unsigned, LLT >(const LegalityQuery &)>
 
using SmallInstListTy = GISelWorkList< 4 >
 
using ParamLocs = SmallVector< IndexPair, 4 >
 
using ParamLocsVecTy = SmallVector< ParamLocs, 8 >
 
using InsnRange = std::pair< const MachineInstr *, const MachineInstr * >
 InsnRange - This is used to track range of instructions with identical lexical scope.
 
using MachineDomTreeNode = DomTreeNodeBase< MachineBasicBlock >
 
using LiveVirtRegBitSet = SparseBitVector< 128 >
 
using MachineFunctionAnalysisManager = AnalysisManager< MachineFunction >
 
using MachineConvergenceVerifier = GenericConvergenceVerifier< MachineSSAContext >
 
using MachineCycleInfo = GenericCycleInfo< MachineSSAContext >
 
using MachineCycle = MachineCycleInfo::CycleT
 
using MachineFunctionAnalysisManagerModuleProxy = InnerAnalysisManagerProxy< MachineFunctionAnalysisManager, Module >
 
using MachineFunctionAnalysisManagerFunctionProxy = InnerAnalysisManagerProxy< MachineFunctionAnalysisManager, Function >
 
using ModuleAnalysisManagerMachineFunctionProxy = OuterAnalysisManagerProxy< ModuleAnalysisManager, MachineFunction >
 Provide the ModuleAnalysisManager to Function proxy.
 
using MachineFunctionPassManager = PassManager< MachineFunction >
 Convenience typedef for a pass manager over functions.
 
using RegClassOrRegBank = PointerUnion< const TargetRegisterClass *, const RegisterBank * >
 Convenient type to represent either a register class or a register bank.
 
using MachineSSAContext = GenericSSAContext< MachineFunction >
 
using MachineUniformityInfo = GenericUniformityInfo< MachineSSAContext >
 
using MacroFusionPredTy = bool(*)(const TargetInstrInfo &TII, const TargetSubtargetInfo &STI, const MachineInstr *FirstMI, const MachineInstr &SecondMI)
 Check if the instr pair, FirstMI and SecondMI, should be fused together.
 
using Name2RegClassMap = StringMap< const TargetRegisterClass * >
 
using Name2RegBankMap = StringMap< const RegisterBank * >
 
using ModuleAnalysisManager = AnalysisManager< Module >
 Convenience typedef for the Module analysis manager.
 
using UniquingStringPool = StrongType< NonRelocatableStringpool, UniqueTag >
 
using OffsetsStringPool = StrongType< NonRelocatableStringpool, OffsetsTag >
 
using PBQPRAGraph = PBQP::RegAlloc::PBQPRAGraph
 
typedef std::function< bool(const TargetRegisterInfo &TRI, const MachineRegisterInfo &MRI, const Register Reg)> RegAllocFilterFunc
 Filter function for register classes during regalloc.
 
using RegUnit2SUnitsMap = SparseMultiSet< PhysRegSUOper, identity< unsigned >, uint16_t >
 Use a SparseMultiSet to track physical registers.
 
using VReg2SUnitMultiMap = SparseMultiSet< VReg2SUnit, VirtReg2IndexFunctor >
 Track local uses of virtual registers.
 
using VReg2SUnitOperIdxMultiMap = SparseMultiSet< VReg2SUnitOperIdx, VirtReg2IndexFunctor >
 
using ValueType = PointerUnion< const Value *, const PseudoSourceValue * >
 
using UnderlyingObjectsVector = SmallVector< UnderlyingObject, 4 >
 
using LargestSDNode = AlignedCharArrayUnion< AtomicSDNode, TargetIndexSDNode, BlockAddressSDNode, GlobalAddressSDNode, PseudoProbeSDNode >
 A representation of the largest SDNode, for use in sizeof().
 
using MostAlignedSDNode = GlobalAddressSDNode
 The SDNode class with the greatest alignment requirement.
 
using IdxMBBPair = std::pair< SlotIndex, MachineBasicBlock * >
 
using ParamLoadedValue = std::pair< MachineOperand, DIExpression * >
 
using BBOrMBB = PointerUnion< const BasicBlock *, MachineBasicBlock * >
 
using MBBOrBasicBlock = PointerUnion< const BasicBlock *, MachineBasicBlock * >
 
using DILineInfoTable = SmallVector< std::pair< uint64_t, DILineInfo >, 16 >
 
using DWARFAddressRangesVector = std::vector< DWARFAddressRange >
 DWARFAddressRangesVector - represents a set of absolute address ranges.
 
using DWARFLocationExpressionsVector = std::vector< DWARFLocationExpression >
 Represents a set of absolute location expressions.
 
using RelocAddrMap = DenseMap< uint64_t, RelocAddrEntry >
 In place of applying the relocations to the data we've read from disk we use a separate mapping table to the side and checking that at locations in the dwarf where we expect relocated values.
 
typedef std::function< void(HTTPServerRequest &)> HTTPRequestHandler
 
typedef std::function< StringRef(size_t, size_t)> HTTPContentProvider
 An HTTPContentProvider is called by the HTTPServer to obtain chunks of the streaming response body.
 
using FunctionCreator = std::function< void *(const std::string &)>
 
using PointerTy = void *
 
using JITTargetAddress = uint64_t
 Represents an address in the target process's address space.
 
using TargetFlagsType = uint8_t
 Holds target-specific properties for a symbol.
 
using FuzzerTestFun = int(*)(const uint8_t *Data, size_t Size)
 
using FuzzerInitFun = int(*)(int *argc, char ***argv)
 
using TypeGetter = std::function< Type *(LLVMContext &)>
 
using RandomEngine = std::mt19937
 
using OperandBundleDef = OperandBundleDefT< Value * >
 
using pred_iterator = PredIterator< BasicBlock, Value::user_iterator >
 
using const_pred_iterator = PredIterator< const BasicBlock, Value::const_user_iterator >
 
using pred_range = iterator_range< pred_iterator >
 
using const_pred_range = iterator_range< const_pred_iterator >
 
using succ_iterator = SuccIterator< Instruction, BasicBlock >
 
using const_succ_iterator = SuccIterator< const Instruction, const BasicBlock >
 
using succ_range = iterator_range< succ_iterator >
 
using const_succ_range = iterator_range< const_succ_iterator >
 
using ConvergenceVerifier = GenericConvergenceVerifier< SSAContext >
 
using CycleInfo = GenericCycleInfo< SSAContext >
 
using Cycle = CycleInfo::CycleT
 
using DiagnosticHandlerFunction = std::function< void(const DiagnosticInfo &)>
 
using DbgInstPtr = PointerUnion< Instruction *, DbgRecord * >
 
using DomTreeNode = DomTreeNodeBase< BasicBlock >
 
typedef TinyPtrVector< BasicBlock * > ColorVector
 
using GCRegistry = Registry< GCStrategy >
 Subclasses of GCStrategy are made available for use during compilation by adding them to the global GCRegistry.
 
using gep_type_iterator = generic_gep_type_iterator<>
 
using inst_iterator = InstIterator< SymbolTableList< BasicBlock >, Function::iterator, BasicBlock::iterator, Instruction >
 
using const_inst_iterator = InstIterator< const SymbolTableList< BasicBlock >, Function::const_iterator, BasicBlock::const_iterator, const Instruction >
 
using inst_range = iterator_range< inst_iterator >
 
using const_inst_range = iterator_range< const_inst_iterator >
 
using ConstOperandBundleDef = OperandBundleDefT< const Value * >
 
using GlobalValueSummaryList = std::vector< std::unique_ptr< GlobalValueSummary > >
 
using GlobalValueSummaryMapTy = std::map< GlobalValue::GUID, GlobalValueSummaryInfo >
 Map from global value GUID to corresponding summary structures.
 
using VTableFuncList = std::vector< VirtFuncOffset >
 List of functions referenced by a particular vtable definition.
 
using ModuleHash = std::array< uint32_t, 5 >
 160 bits SHA1
 
using const_gvsummary_iterator = GlobalValueSummaryMapTy::const_iterator
 Type used for iterating through the global value summary map.
 
using gvsummary_iterator = GlobalValueSummaryMapTy::iterator
 
using ModulePathStringTableTy = StringMap< ModuleHash >
 String table to hold/own module path strings, as well as a hash of the module.
 
using GVSummaryMapTy = DenseMap< GlobalValue::GUID, GlobalValueSummary * >
 Map of global value GUID to its summary, used to identify values defined in a particular module, and provide efficient access to their summary.
 
using ModuleToSummariesForIndexTy = std::map< std::string, GVSummaryMapTy, std::less<> >
 Map of a module name to the GUIDs and summaries we will import from that module.
 
using GVSummaryPtrSet = std::unordered_set< GlobalValueSummary * >
 A set of global value summary pointers.
 
using TypeIdSummaryMapTy = std::multimap< GlobalValue::GUID, std::pair< StringRef, TypeIdSummary > >
 Map of a type GUID to type id string and summary (multimap used in case of GUID conflicts).
 
using TypeIdCompatibleVtableInfo = std::vector< TypeIdOffsetVtableInfo >
 List of vtable definitions decorated by a particular type identifier, and their corresponding offsets in that type identifier's metadata.
 
using ModulePassManager = PassManager< Module >
 Convenience typedef for a pass manager over modules.
 
using FunctionPassManager = PassManager< Function >
 Convenience typedef for a pass manager over functions.
 
using FunctionAnalysisManager = AnalysisManager< Function >
 Convenience typedef for the Function analysis manager.
 
using FunctionAnalysisManagerModuleProxy = InnerAnalysisManagerProxy< FunctionAnalysisManager, Module >
 Provide the FunctionAnalysisManager to Module proxy.
 
using ModuleAnalysisManagerFunctionProxy = OuterAnalysisManagerProxy< ModuleAnalysisManager, Function >
 Provide the ModuleAnalysisManager to Function proxy.
 
using SummaryEntryVector = std::vector< ProfileSummaryEntry >
 
using IndexPair = std::pair< unsigned, unsigned >
 The pair of an instruction index and a operand index.
 
using IndexInstrMap = MapVector< unsigned, Instruction * >
 A map from an instruction index to an instruction pointer.
 
using IndexOperandHashMapType = DenseMap< IndexPair, stable_hash >
 A map from an IndexPair to a stable hash.
 
using IgnoreOperandFunc = std::function< bool(const Instruction *, unsigned)>
 A function that takes an instruction and an operand index and returns true if the operand should be ignored in the function hash computation.
 
using TrackingMDNodeRef = TypedTrackingMDRef< MDNode >
 
using TrackingValueAsMetadataRef = TypedTrackingMDRef< ValueAsMetadata >
 
using UseListOrderStack = std::vector< UseListOrder >
 
using ValueName = StringMapEntry< Value * >
 
using unique_value = std::unique_ptr< Value, ValueDeleter >
 Use this instead of std::unique_ptr<Value> or std::unique_ptr<Instruction>.
 
typedef std::vector< MCAsmMacroParameterMCAsmMacroParameters
 
using SectionSymbolsTy = std::vector< SymbolInfoTy >
 
using SectionAddrMap = DenseMap< const MCSection *, uint64_t >
 
using MCLOHArgs = MCLOHDirective::LOHArgs
 
using MCLOHDirectives = MCLOHContainer::LOHDirectives
 
using OperandVector = SmallVectorImpl< std::unique_ptr< MCParsedAsmOperand > >
 
using InlineSite = std::tuple< uint64_t, uint32_t >
 
using MCPseudoProbeInlineStack = SmallVector< InlineSite, 8 >
 
using MCPseudoProbeFrameLocation = std::pair< StringRef, uint32_t >
 
using MCPhysReg = uint16_t
 An unsigned integer type large enough to represent all physical registers, but not necessarily virtual registers.
 
using MCRegUnit = unsigned
 Register units are used to compute register aliasing.
 
using MCSectionSubPair = std::pair< MCSection *, uint32_t >
 
using MCSymbolTableEntry = StringMapEntry< MCSymbolTableValue >
 MCContext stores MCSymbolTableValue in a string map (see MCSymbol::operator new).
 
using AnalysisID = const void *
 
using VarID = std::tuple< const DIScope *, const DIScope *, const DILocalVariable * >
 A unique key that represents a debug variable.
 
using RawInstrProfReader32 = RawInstrProfReader< uint32_t >
 
using RawInstrProfReader64 = RawInstrProfReader< uint64_t >
 
using OnDiskHashTableImplV3 = OnDiskIterableChainedHashTable< InstrProfLookupTrait >
 
using MemProfRecordHashTable = OnDiskIterableChainedHashTable< memprof::RecordLookupTrait >
 
using MemProfFrameHashTable = OnDiskIterableChainedHashTable< memprof::FrameLookupTrait >
 
using MemProfCallStackHashTable = OnDiskIterableChainedHashTable< memprof::CallStackLookupTrait >
 
typedef BumpPtrAllocatorImpl BumpPtrAllocator
 The standard BumpPtrAllocator which just uses the default template parameters.
 
using NfaPath = SmallVector< uint64_t, 4 >
 
template<size_t NumBytes = LLVM_BLAKE3_OUT_LEN>
using BLAKE3Result = std::array< uint8_t, NumBytes >
 The constant LLVM_BLAKE3_OUT_LEN provides the default output length, 32 bytes, which is recommended for most callers.
 
using AddStreamFn = std::function< Expected< std::unique_ptr< CachedFileStream > >(unsigned Task, const Twine &ModuleName)>
 This type defines the callback to add a file that is generated on the fly.
 
using FileCacheFunction = std::function< Expected< AddStreamFn >(unsigned Task, StringRef Key, const Twine &ModuleName)>
 This is a callable that manages file caching operations.
 
using AddBufferFn = std::function< void(unsigned Task, const Twine &ModuleName, std::unique_ptr< MemoryBuffer > MB)>
 This type defines the callback to add a pre-existing file (e.g.
 
typedef unsigned int UTF32
 
typedef unsigned short UTF16
 
typedef unsigned char UTF8
 
typedef unsigned char Boolean
 
using uint24_t = Uint24
 
using TagNameMap = ArrayRef< TagNameItem >
 
typedef void(* fatal_error_handler_t) (void *user_data, const char *reason, bool gen_crash_diag)
 An error handler callback.
 
template<typename T >
using DomTreeBase = DominatorTreeBase< T, false >
 
template<typename T >
using PostDomTreeBase = DominatorTreeBase< T, true >
 
template<typename T , typename U >
using enableif_int = std::enable_if_t< std::is_integral_v< T > &&std::is_integral_v< U > >
 Some template parameter helpers to optimize for bitwidth, for functions that take multiple arguments.
 
template<typename T , typename U , typename = enableif_int<T, U>>
using common_uint = std::common_type_t< std::make_unsigned_t< T >, std::make_unsigned_t< U > >
 
template<typename T , typename U , typename = enableif_int<T, U>>
using common_sint = std::common_type_t< std::make_signed_t< T >, std::make_signed_t< U > >
 
using stack_float_t = float
 Type to force float point values onto the stack, so that x86 doesn't add hidden precision, avoiding rounding differences on various platforms.
 
using MemoryEffects = MemoryEffectsBase< IRMemLocation >
 Summary of how a function affects memory in the program.
 
using FunctionModRefBehavior = MemoryEffects
 
using SMTSortRef = const SMTSort *
 Shared pointer for SMTSorts, used by SMTSolver API.
 
using SMTExprRef = const SMTExpr *
 Shared pointer for SMTExprs, used by SMTSolver API.
 
using SMTSolverRef = std::shared_ptr< SMTSolver >
 Shared pointer for SMTSolvers.
 
using DefaultThreadPool = SingleThreadExecutor
 
typedef ScopedHandle< CommonHandleTraitsScopedCommonHandle
 
typedef ScopedHandle< FileHandleTraitsScopedFileHandle
 
typedef ScopedHandle< CryptContextTraitsScopedCryptContext
 
typedef ScopedHandle< RegTraitsScopedRegHandle
 
typedef ScopedHandle< FindHandleTraitsScopedFindHandle
 
typedef ScopedHandle< JobHandleTraitsScopedJobHandle
 
using TableGenMainFn = bool(raw_ostream &OS, const RecordKeeper &Records)
 Perform the action using Records, and write output to OS.
 
using ArgAuxType = std::variant< unsigned, const Init * >
 
using AAAlignmentStateType = IncIntegerState< uint64_t, Value::MaximumAlignment, 1 >
 
using PotentialConstantIntValuesState = PotentialValuesState< APInt >
 
using PotentialLLVMValuesState = PotentialValuesState< std::pair< AA::ValueAndContext, AA::ValueScope > >
 
using SpecMap = DenseMap< Function *, std::pair< unsigned, unsigned > >
 
using Cost = InstructionCost
 
using ConstMap = DenseMap< Value *, Constant * >
 
using BlockSequence = SmallVector< BasicBlock *, 0 >
 A sequence of basic blocks.
 
using AnchorList = std::vector< std::pair< LineLocation, FunctionId > >
 
using AnchorMap = std::map< LineLocation, FunctionId >
 
using BlockIdMap = std::unordered_map< BasicBlock *, uint32_t >
 
using InstructionIdMap = std::unordered_map< Instruction *, uint32_t >
 
using ProbeFactorMap = std::unordered_map< std::pair< uint64_t, uint64_t >, float, pair_hash< uint64_t, uint64_t > >
 
using FuncProbeFactorMap = StringMap< ProbeFactorMap >
 
typedef PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & > LoopPassManager
 The Loop pass manager.
 
template<typename AnalysisT >
using RequireAnalysisLoopPass = RequireAnalysisPass< AnalysisT, Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >
 An alias template to easily name a require analysis loop pass.
 
using GlobalCtorTransformFn = llvm::function_ref< Constant *(Constant *)>
 Apply 'Fn' to the list of global ctors of module M and replace contructor record with the one returned by Fn.
 
using ProfileCount = Function::ProfileCount
 
using NewLoopsMap = SmallDenseMap< const Loop *, Loop *, 4 >
 
using DbgRecordIterator = simple_ilist< DbgRecord >::iterator
 
using BFIDOTGTraitsBase = BFIDOTGraphTraitsBase< BlockFrequencyInfo, BranchProbabilityInfo >
 
using ParamSet = SmallVector< DbgCallSiteParam, 4 >
 Collection used for storing debug call site parameters.
 
using MBFIDOTGraphTraitsBase = BFIDOTGraphTraitsBase< MachineBlockFrequencyInfo, MachineBranchProbabilityInfo >
 
using SmallVirtRegSet = SmallSet< Register, 16 >
 
typedef DWARFExpression::Operation Op
 
typedef Op::Description Desc
 
typedef std::vector< GenericValueValuePlaneTy
 
typedef StringMap< SymbolTableEntryRTDyldSymbolTable
 
using binop_eval_t = Expected< APInt >(*)(const APInt &, const APInt &, bool &)
 Type of functions evaluating a given binary operation.
 
using BBInfoVector = SmallVectorImpl< BasicBlockInfo >
 
typedef bool RISCVCCAssignFn(unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State, bool IsFixed, bool IsRet, Type *OrigTy)
 RISCVCCAssignFn - This target-specific function extends the default CCValAssign with additional information used to lower RISC-V calling conventions.
 
using CapabilityList = SmallVector< SPIRV::Capability::Capability, 8 >
 
using ExtensionList = SmallVector< SPIRV::Extension::Extension, 8 >
 
using SPIRVType = const MachineInstr
 
using InstrSignature = SmallVector< size_t >
 
using InstrTraces = std::set< InstrSignature >
 
using InstrGRegsMap = std::map< SmallVector< size_t >, unsigned >
 
using BBSideEffectsSet = DenseMap< const BasicBlock *, bool >
 
using SmallVecInsn = SmallVector< Instruction *, 4 >
 
using SmallVecImplInsn = SmallVectorImpl< Instruction * >
 
using HoistingPointInfo = std::pair< BasicBlock *, SmallVecInsn >
 
using HoistingPointList = SmallVector< HoistingPointInfo, 4 >
 
using VNType = std::pair< unsigned, uintptr_t >
 
using VNtoInsns = DenseMap< VNType, SmallVector< Instruction *, 4 > >
 
using CHIIt = SmallVectorImpl< CHIArg >::iterator
 
using CHIArgs = iterator_range< CHIIt >
 
using OutValuesType = DenseMap< BasicBlock *, SmallVector< CHIArg, 2 > >
 
using InValuesType = DenseMap< BasicBlock *, SmallVector< std::pair< VNType, Instruction * >, 2 > >
 
using InstructionVFPair = std::pair< Instruction *, ElementCount >
 
using VPlanPtr = std::unique_ptr< VPlan >
 
using VPDomTreeNode = DomTreeNodeBase< VPBlockBase >
 
typedef DenseMap< Value *, VPValue * > Value2VPValueTy
 
typedef DenseMap< VPValue *, Value * > VPValue2ValueTy
 

Enumerations

enum  lostFraction { lfExactlyZero , lfLessThanHalf , lfExactlyHalf , lfMoreThanHalf }
 Enum that represents what fraction of the LSB truncated bits of an fp number represent. More...
 
enum class  endianness { big , little , native = little }
 
enum class  RoundingMode : int8_t {
  TowardZero = 0 , NearestTiesToEven = 1 , TowardPositive = 2 , TowardNegative = 3 ,
  NearestTiesToAway = 4 , Dynamic = 7 , Invalid = -1
}
 Rounding mode. More...
 
enum  FPClassTest : unsigned {
  fcNone = 0 , fcSNan = 0x0001 , fcQNan = 0x0002 , fcNegInf = 0x0004 ,
  fcNegNormal = 0x0008 , fcNegSubnormal = 0x0010 , fcNegZero = 0x0020 , fcPosZero = 0x0040 ,
  fcPosSubnormal = 0x0080 , fcPosNormal = 0x0100 , fcPosInf = 0x0200 , fcNan = fcSNan | fcQNan ,
  fcInf = fcPosInf | fcNegInf , fcNormal = fcPosNormal | fcNegNormal , fcSubnormal = fcPosSubnormal | fcNegSubnormal , fcZero = fcPosZero | fcNegZero ,
  fcPosFinite = fcPosNormal | fcPosSubnormal | fcPosZero , fcNegFinite = fcNegNormal | fcNegSubnormal | fcNegZero , fcFinite = fcPosFinite | fcNegFinite , fcPositive = fcPosFinite | fcPosInf ,
  fcNegative = fcNegFinite | fcNegInf , fcAllFlags = fcNan | fcInf | fcFinite
}
 Floating-point class tests, supported by 'is_fpclass' intrinsic. More...
 
enum class  InstructionUniformity { Default , AlwaysUniform , NeverUniform }
 Enum describing how instructions behave with respect to uniformity and divergence, to answer the question: if the same instruction is executed by two threads in a convergent set of threads, will its result value(s) be uniform, i.e. More...
 
enum  AssumeBundleArg { ABA_WasOn = 0 , ABA_Argument = 1 }
 Index of elements in the operand bundle. More...
 
enum  PGOViewCountsType { PGOVCT_None , PGOVCT_Graph , PGOVCT_Text }
 
enum  GVDAGType { GVDT_None , GVDT_Fraction , GVDT_Integer , GVDT_Count }
 
enum class  UseCaptureKind { NO_CAPTURE , MAY_CAPTURE , PASSTHROUGH }
 Types of use capture kinds, see DetermineUseCaptureKind. More...
 
enum struct  ConvergenceKind { None , Controlled , ExtendedLoop , Uncontrolled }
 
enum class  InliningAdvisorMode : int { Default , Release , Development }
 There are 4 scenarios we can use the InlineAdvisor: More...
 
enum class  InlinePass : int {
  AlwaysInliner , CGSCCInliner , EarlyInliner , ModuleInliner ,
  MLInliner , ReplayCGSCCInliner , ReplaySampleProfileInliner , SampleProfileInliner
}
 
enum class  InlineCostFeatureIndex : size_t { POPULATE_INDICES , NumberOfFeatures }
 
enum class  FeatureIndex : size_t { POPULATE_INDICES , NumberOfFeatures }
 
enum class  RecurKind {
  None , Add , Mul , Or ,
  And , Xor , SMin , SMax ,
  UMin , UMax , FAdd , FMul ,
  FMin , FMax , FMinimum , FMaximum ,
  FMulAdd , IAnyOf , FAnyOf , IFindLastIV ,
  FFindLastIV
}
 These are the kinds of recurrences that we support. More...
 
enum  : unsigned { INVALID_MEMORYACCESS_ID = -1U }
 
enum class  ExplorationDirection { BACKWARD = 0 , FORWARD = 1 }
 Enum that allows us to spell out the direction. More...
 
enum  SCEVTypes : unsigned short {
  scConstant , scVScale , scTruncate , scZeroExtend ,
  scSignExtend , scAddExpr , scMulExpr , scUDivExpr ,
  scAddRecExpr , scUMaxExpr , scSMaxExpr , scUMinExpr ,
  scSMinExpr , scSequentialUMinExpr , scPtrToInt , scUnknown ,
  scCouldNotCompute
}
 
enum class  StructuralHashOptions { None , Detailed , CallTargetIgnored }
 
enum  LibFunc : unsigned { NumLibFuncs , NotLibFunc }
 
enum class  TailFoldingStyle {
  None , Data , DataWithoutLaneMask , DataAndControlFlow ,
  DataAndControlFlowWithoutRuntimeCheck , DataWithEVL
}
 
enum class  TensorType { Invalid , _TENSOR_TYPE_ENUM_MEMBERS , Total }
 
enum  CfiFunctionLinkage { CFL_Definition = 0 , CFL_Declaration = 1 , CFL_WeakDeclaration = 2 }
 The type of CFI jumptable needed for a function. More...
 
enum class  InlinerFunctionImportStatsOpts { No = 0 , Basic = 1 , Verbose = 2 }
 
enum class  OverflowResult { AlwaysOverflowsLow , AlwaysOverflowsHigh , MayOverflow , NeverOverflows }
 
enum  SelectPatternFlavor {
  SPF_UNKNOWN = 0 , SPF_SMIN , SPF_UMIN , SPF_SMAX ,
  SPF_UMAX , SPF_FMINNUM , SPF_FMAXNUM , SPF_ABS ,
  SPF_NABS
}
 Specific patterns of select instructions we can match. More...
 
enum  SelectPatternNaNBehavior { SPNB_NA = 0 , SPNB_RETURNS_NAN , SPNB_RETURNS_OTHER , SPNB_RETURNS_ANY }
 Behavior when a floating point min/max is given one NaN and one non-NaN as input. More...
 
enum  CurStreamTypeType {
  UnknownBitstream , LLVMIRBitstream , ClangSerializedASTBitstream , ClangSerializedDiagnosticsBitstream ,
  LLVMBitstreamRemarks
}
 CurStreamTypeType - A type for CurStreamType. More...
 
enum class  BitcodeError { CorruptedBitcode = 1 }
 
enum  BitstreamWrapperHeader : unsigned {
  BWH_MagicField = 0 * 4 , BWH_VersionField = 1 * 4 , BWH_OffsetField = 2 * 4 , BWH_SizeField = 3 * 4 ,
  BWH_CPUTypeField = 4 * 4 , BWH_HeaderSize = 5 * 4
}
 Offsets of the 32-bit fields of bitstream wrapper header. More...
 
enum  CGDataSectKind
 
enum class  CGDataKind { Unknown = 0x0 , FunctionOutlinedHashTree = 0x1 , StableFunctionMergingMap = 0x2 }
 
enum class  cgdata_error {
  success = 0 , eof , bad_magic , bad_header ,
  empty_cgdata , malformed , unsupported_version
}
 
enum  CGDataMode { None = 0 , Read , Write }
 
enum class  VariableID : unsigned { Reserved = 0 }
 Type wrapper for integer ID for Variables. 0 is reserved. More...
 
enum class  ComplexDeinterleavingOperation {
  CAdd , CMulPartial , CDot , Deinterleave ,
  Splat , Symmetric , ReductionPHI , ReductionOperation ,
  ReductionSelect , ReductionSingle
}
 
enum class  ComplexDeinterleavingRotation { Rotation_0 = 0 , Rotation_90 = 1 , Rotation_180 = 2 , Rotation_270 = 3 }
 
enum  CombineLevel { BeforeLegalizeTypes , AfterLegalizeTypes , AfterLegalizeVectorOps , AfterLegalizeDAG }
 
enum class  VPExpansionDetails { IntrinsicUnchanged , IntrinsicUpdated , IntrinsicReplaced }
 Represents the details the expansion of a VP intrinsic. More...
 
enum  { GICXXPred_Invalid = 0 , GICXXCustomAction_Invalid = 0 }
 
enum  {
  GIM_Try , GIM_SwitchOpcode , GIM_SwitchType , GIM_RecordInsn ,
  GIM_RecordInsnIgnoreCopies , GIM_CheckFeatures , GIM_CheckOpcode , GIM_CheckOpcodeIsEither ,
  GIM_CheckNumOperands , GIM_CheckNumOperandsLE , GIM_CheckNumOperandsGE , GIM_CheckI64ImmPredicate ,
  GIM_CheckAPIntImmPredicate , GIM_CheckAPFloatImmPredicate , GIM_CheckImmOperandPredicate , GIM_CheckAtomicOrdering ,
  GIM_CheckAtomicOrderingOrStrongerThan , GIM_CheckAtomicOrderingWeakerThan , GIM_CheckMemorySizeEqualTo , GIM_CheckMemoryAddressSpace ,
  GIM_CheckMemoryAlignment , GIM_CheckMemorySizeEqualToLLT , GIM_CheckMemorySizeLessThanLLT , GIM_CheckMemorySizeGreaterThanLLT ,
  GIM_CheckIsBuildVectorAllOnes , GIM_CheckIsBuildVectorAllZeros , GIM_CheckSimplePredicate , GIM_CheckCxxInsnPredicate ,
  GIM_CheckHasNoUse , GIM_CheckHasOneUse , GIM_CheckType , GIM_RootCheckType ,
  GIM_CheckPointerToAny , GIM_CheckRegBankForClass , GIM_RootCheckRegBankForClass , GIM_CheckComplexPattern ,
  GIM_CheckConstantInt , GIM_CheckConstantInt8 , GIM_CheckLiteralInt , GIM_CheckIntrinsicID ,
  GIM_CheckCmpPredicate , GIM_CheckIsMBB , GIM_CheckIsImm , GIM_CheckIsSafeToFold ,
  GIM_CheckIsSameOperand , GIM_CheckIsSameOperandIgnoreCopies , GIM_CheckAllSameOperand , GIM_CheckAllSameOperandIgnoreCopies ,
  GIM_CheckCanReplaceReg , GIM_MIFlags , GIM_MIFlagsNot , GIM_RecordNamedOperand ,
  GIM_RecordRegType , GIM_Reject , GIR_MutateOpcode , GIR_BuildMI ,
  GIR_BuildRootMI , GIR_BuildConstant , GIR_Copy , GIR_RootToRootCopy ,
  GIR_CopyRemaining , GIR_CopyOrAddZeroReg , GIR_CopySubReg , GIR_AddImplicitDef ,
  GIR_AddImplicitUse , GIR_AddRegister , GIR_AddIntrinsicID , GIR_SetImplicitDefDead ,
  GIR_SetMIFlags , GIR_UnsetMIFlags , GIR_CopyMIFlags , GIR_AddTempRegister ,
  GIR_AddSimpleTempRegister , GIR_AddTempSubRegister , GIR_AddImm , GIR_AddImm8 ,
  GIR_AddCImm , GIR_ComplexRenderer , GIR_ComplexSubOperandRenderer , GIR_ComplexSubOperandSubRegRenderer ,
  GIR_CustomRenderer , GIR_DoneWithCustomAction , GIR_CustomOperandRenderer , GIR_CopyConstantAsSImm ,
  GIR_CopyFConstantAsFPImm , GIR_ConstrainOperandRC , GIR_ConstrainSelectedInstOperands , GIR_RootConstrainSelectedInstOperands ,
  GIR_MergeMemOperands , GIR_EraseFromParent , GIR_EraseRootFromParent_Done , GIR_MakeTempReg ,
  GIR_ReplaceReg , GIR_ReplaceRegWithTempReg , GIR_Done , GIR_Coverage ,
  GIU_NumOpcodes
}
 The MatchTable is encoded as an array of bytes. More...
 
enum class  CombinerObjective { MustReduceDepth , MustReduceRegisterPressure , Default }
 The combiner's goal may differ based on which pattern it is attempting to optimize. More...
 
enum  MachineCombinerPattern : unsigned {
  REASSOC_AX_BY , REASSOC_AX_YB , REASSOC_XA_BY , REASSOC_XA_YB ,
  TARGET_PATTERN_START
}
 These are instruction patterns matched by the machine combiner pass. More...
 
enum  LoopPeelDirection { LPD_Front , LPD_Back }
 
enum class  MachineTraceStrategy { TS_MinInstrCount , TS_Local , TS_NumStrategies }
 Strategies for selecting traces. More...
 
enum  WindowSchedulingFlag { WS_Off , WS_On , WS_Force }
 
enum class  ClrHandlerType { Catch , Finally , Fault , Filter }
 
enum class  DINameKind { None , ShortName , LinkageName }
 A DINameKind is passed to name search methods to specify a preference regarding the type of name resolution the caller wants. More...
 
enum  DIDumpTypeCounter { DIDT_ID_UUID , DIDT_ID_Count }
 This is just a helper to programmatically construct DIDumpType. More...
 
enum  DIDumpType : unsigned { DIDT_Null , DIDT_All = ~0U , DIDT_UUID = 1 << DIDT_ID_UUID }
 Selects which debug sections get dumped. More...
 
enum  DWARFSectionKind { DW_SECT_EXT_unknown = 0 , DW_SECT_EXT_TYPES = 2 , DW_SECT_EXT_LOC = 9 , DW_SECT_EXT_MACINFO = 10 }
 The enum of section identifiers to be used in internal interfaces. More...
 
enum class  HTTPMethod { GET }
 
enum  : int {
  demangle_unknown_error = -4 , demangle_invalid_args = -3 , demangle_invalid_mangled_name = -2 , demangle_memory_alloc_failure = -1 ,
  demangle_success = 0
}
 This is a llvm local version of __cxa_demangle. More...
 
enum  MSDemangleFlags {
  MSDF_None = 0 , MSDF_DumpBackrefs = 1 << 0 , MSDF_NoAccessSpecifier = 1 << 1 , MSDF_NoCallingConvention = 1 << 2 ,
  MSDF_NoReturnType = 1 << 3 , MSDF_NoMemberType = 1 << 4 , MSDF_NoVariableType = 1 << 5
}
 
enum  OnCuIndexOverflow { HardStop , SoftStop , Continue }
 
enum class  AllocFnKind : uint64_t {
  Unknown = 0 , Alloc = 1 << 0 , Realloc = 1 << 1 , Free = 1 << 2 ,
  Uninitialized = 1 << 3 , Zeroed = 1 << 4 , Aligned = 1 << 5
}
 
enum  DiagnosticSeverity : char { DS_Error , DS_Warning , DS_Remark , DS_Note }
 Defines the different supported severity of a diagnostic. More...
 
enum  DiagnosticKind {
  DK_Generic , DK_GenericWithLoc , DK_InlineAsm , DK_RegAllocFailure ,
  DK_ResourceLimit , DK_StackSize , DK_Linker , DK_Lowering ,
  DK_DebugMetadataVersion , DK_DebugMetadataInvalid , DK_Instrumentation , DK_ISelFallback ,
  DK_SampleProfile , DK_OptimizationRemark , DK_OptimizationRemarkMissed , DK_OptimizationRemarkAnalysis ,
  DK_OptimizationRemarkAnalysisFPCommute , DK_OptimizationRemarkAnalysisAliasing , DK_OptimizationFailure , DK_FirstRemark = DK_OptimizationRemark ,
  DK_LastRemark = DK_OptimizationFailure , DK_MachineOptimizationRemark , DK_MachineOptimizationRemarkMissed , DK_MachineOptimizationRemarkAnalysis ,
  DK_FirstMachineRemark = DK_MachineOptimizationRemark , DK_LastMachineRemark = DK_MachineOptimizationRemarkAnalysis , DK_MIRParser , DK_PGOProfile ,
  DK_Unsupported , DK_SrcMgr , DK_DontCall , DK_MisExpect ,
  DK_FirstPluginKind
}
 Defines the different supported kind of a diagnostic. More...
 
enum class  EHPersonality {
  Unknown , GNU_Ada , GNU_C , GNU_C_SjLj ,
  GNU_CXX , GNU_CXX_SjLj , GNU_ObjC , MSVC_X86SEH ,
  MSVC_TableSEH , MSVC_CXX , CoreCLR , Rust ,
  Wasm_CXX , XL_CXX , ZOS_CXX
}
 
enum  PassDebuggingString {
  EXECUTION_MSG , MODIFICATION_MSG , FREEING_MSG , ON_FUNCTION_MSG ,
  ON_MODULE_MSG , ON_REGION_MSG , ON_LOOP_MSG , ON_CG_MSG
}
 
enum  LLVMConstants : uint32_t { DEBUG_METADATA_VERSION = 3 }
 
enum class  AllocationType : uint8_t {
  None = 0 , NotCold = 1 , Cold = 2 , Hot = 4 ,
  All = 7
}
 
enum class  ChangePrinter {
  None , Verbose , Quiet , DiffVerbose ,
  DiffQuiet , ColourDiffVerbose , ColourDiffQuiet , DotCfgVerbose ,
  DotCfgQuiet
}
 
enum class  PseudoProbeReservedId { Invalid = 0 , Last = Invalid }
 
enum class  PseudoProbeType { Block = 0 , IndirectCall , DirectCall }
 
enum class  PseudoProbeAttributes { Reserved = 0x1 , Sentinel = 0x2 , HasDiscriminator = 0x4 }
 
enum class  StatepointFlags { None = 0 , GCTransition = 1 , DeoptLiveIn = 2 , MaskAll = 3 }
 The statepoint intrinsic accepts a set of flags as its third argument. More...
 
enum class  VFParamKind {
  Vector , OMP_Linear , OMP_LinearRef , OMP_LinearVal ,
  OMP_LinearUVal , OMP_LinearPos , OMP_LinearValPos , OMP_LinearRefPos ,
  OMP_LinearUValPos , OMP_Uniform , GlobalPredicate , Unknown
}
 Describes the type of Parameters. More...
 
enum class  VFISAKind {
  AdvancedSIMD , SVE , RVV , SSE ,
  AVX , AVX2 , AVX512 , LLVM ,
  Unknown
}
 Describes the type of Instruction Set Architecture. More...
 
enum  MCSymbolAttr {
  MCSA_Invalid = 0 , MCSA_Cold , MCSA_ELF_TypeFunction , MCSA_ELF_TypeIndFunction ,
  MCSA_ELF_TypeObject , MCSA_ELF_TypeTLS , MCSA_ELF_TypeCommon , MCSA_ELF_TypeNoType ,
  MCSA_ELF_TypeGnuUniqueObject , MCSA_Global , MCSA_LGlobal , MCSA_Extern ,
  MCSA_Hidden , MCSA_Exported , MCSA_IndirectSymbol , MCSA_Internal ,
  MCSA_LazyReference , MCSA_Local , MCSA_NoDeadStrip , MCSA_SymbolResolver ,
  MCSA_AltEntry , MCSA_PrivateExtern , MCSA_Protected , MCSA_Reference ,
  MCSA_Weak , MCSA_WeakDefinition , MCSA_WeakReference , MCSA_WeakDefAutoPrivate ,
  MCSA_WeakAntiDep , MCSA_Memtag
}
 
enum  MCAssemblerFlag {
  MCAF_SyntaxUnified , MCAF_SubsectionsViaSymbols , MCAF_Code16 , MCAF_Code32 ,
  MCAF_Code64
}
 
enum  MCDataRegionType {
  MCDR_DataRegion , MCDR_DataRegionJT8 , MCDR_DataRegionJT16 , MCDR_DataRegionJT32 ,
  MCDR_DataRegionEnd
}
 
enum  MCVersionMinType { MCVM_IOSVersionMin , MCVM_OSXVersionMin , MCVM_TvOSVersionMin , MCVM_WatchOSVersionMin }
 
enum  MCFixupKind {
  FK_NONE = 0 , FK_Data_1 , FK_Data_2 , FK_Data_4 ,
  FK_Data_8 , FK_Data_leb128 , FK_PCRel_1 , FK_PCRel_2 ,
  FK_PCRel_4 , FK_PCRel_8 , FK_GPRel_1 , FK_GPRel_2 ,
  FK_GPRel_4 , FK_GPRel_8 , FK_DTPRel_4 , FK_DTPRel_8 ,
  FK_TPRel_4 , FK_TPRel_8 , FK_SecRel_1 , FK_SecRel_2 ,
  FK_SecRel_4 , FK_SecRel_8 , FirstTargetFixupKind = 128 , FirstLiteralRelocationKind = 256 ,
  MaxFixupKind = FirstLiteralRelocationKind + 1032 + 32
}
 Extensible enumeration to represent the type of a fixup. More...
 
enum  MCLOHType {
  MCLOH_AdrpAdrp = 0x1u , MCLOH_AdrpLdr = 0x2u , MCLOH_AdrpAddLdr = 0x3u , MCLOH_AdrpLdrGotLdr = 0x4u ,
  MCLOH_AdrpAddStr = 0x5u , MCLOH_AdrpLdrGotStr = 0x6u , MCLOH_AdrpAdd = 0x7u , MCLOH_AdrpLdrGot = 0x8u
}
 Linker Optimization Hint Type. More...
 
enum  AsmRewriteKind {
  AOK_Align , AOK_EVEN , AOK_Emit , AOK_CallInput ,
  AOK_Input , AOK_Output , AOK_SizeDirective , AOK_Label ,
  AOK_EndOfStatement , AOK_Skip , AOK_IntelExpr
}
 
enum  OperandMatchResultTy { MatchOperand_Success , MatchOperand_NoMatch , MatchOperand_ParseFail }
 
enum class  DiagnosticPredicateTy { Match , NearMatch , NoMatch }
 
enum class  MCPseudoProbeFlag { AddressDelta = 0x1 }
 
enum class  ExceptionHandling {
  None , DwarfCFI , SjLj , ARM ,
  WinEH , Wasm , AIX , ZOS
}
 
enum class  EmitDwarfUnwindType { Always , NoCompactUnwind , Default }
 
enum class  SymtabWritingMode { NoSymtab , NormalSymtab , BigArchive32 , BigArchive64 }
 
enum  PassManagerType {
  PMT_Unknown = 0 , PMT_ModulePassManager = 1 , PMT_CallGraphPassManager , PMT_FunctionPassManager ,
  PMT_LoopPassManager , PMT_RegionPassManager , PMT_Last
}
 Different types of internal pass managers. More...
 
enum  PassKind {
  PT_Region , PT_Loop , PT_Function , PT_CallGraphSCC ,
  PT_Module , PT_PassManager
}
 
enum class  ThinOrFullLTOPhase {
  None , ThinLTOPreLink , ThinLTOPostLink , FullLTOPreLink ,
  FullLTOPostLink
}
 This enumerates the LLVM full LTO or ThinLTO optimization phases. More...
 
enum  InstrProfSectKind
 
enum  InstrProfValueKind : uint32_t
 
enum class  InstrProfKind {
  Unknown = 0x0 , FrontendInstrumentation = 0x1 , IRInstrumentation = 0x2 , FunctionEntryInstrumentation = 0x4 ,
  ContextSensitive = 0x8 , SingleByteCoverage = 0x10 , FunctionEntryOnly = 0x20 , MemProf = 0x40 ,
  TemporalProfile = 0x80 , LoopEntriesInstrumentation = 0x100
}
 An enum describing the attributes of an instrumented profile. More...
 
enum class  instrprof_error {
  success = 0 , eof , unrecognized_format , bad_magic ,
  bad_header , unsupported_version , unsupported_hash_type , too_large ,
  truncated , malformed , missing_correlation_info , unexpected_correlation_info ,
  unable_to_correlate_profile , unknown_function , invalid_prof , hash_mismatch ,
  count_mismatch , bitmap_mismatch , counter_overflow , value_site_count_mismatch ,
  compress_failed , uncompress_failed , empty_raw_profile , zlib_unavailable ,
  raw_profile_version_mismatch , counter_value_too_large
}
 
enum  PGOCtxProfileRecords {
  Invalid = 0 , Version , Guid , CalleeIndex ,
  Counters
}
 
enum  PGOCtxProfileBlockIDs { ProfileMetadataBlockID = bitc::FIRST_APPLICATION_BLOCKID , ContextNodeBlockID = ProfileMetadataBlockID + 1 }
 
enum class  sampleprof_error {
  success = 0 , bad_magic , unsupported_version , too_large ,
  truncated , malformed , unrecognized_format , unsupported_writing_format ,
  truncated_name_table , not_implemented , counter_overflow , ostream_seek_unsupported ,
  uncompress_failed , zlib_unavailable , hash_mismatch
}
 
enum class  AtomicOrderingCABI {
  relaxed = 0 , consume = 1 , acquire = 2 , release = 3 ,
  acq_rel = 4 , seq_cst = 5
}
 Atomic ordering for C11 / C++11's memory models. More...
 
enum class  AtomicOrdering : unsigned {
  NotAtomic = 0 , Unordered = 1 , Monotonic = 2 , Acquire = 4 ,
  Release = 5 , AcquireRelease = 6 , SequentiallyConsistent = 7 , LAST = SequentiallyConsistent
}
 Atomic ordering for LLVM's memory model. More...
 
enum  BinaryStreamFlags { BSF_None = 0 , BSF_Write = 1 , BSF_Append = 2 }
 
enum class  stream_error_code {
  unspecified , stream_too_short , invalid_array_size , invalid_offset ,
  filesystem_error
}
 
enum class  CodeGenOptLevel { None = 0 , Less = 1 , Default = 2 , Aggressive = 3 }
 Code generation optimization level. More...
 
enum class  CodeGenFileType { AssemblyFile , ObjectFile , Null }
 These enums are meant to be passed into addPassesToEmitFile to indicate what type of file to emit, and returned by it to indicate what type of file could actually be made. More...
 
enum class  FramePointerKind { None , NonLeaf , All , Reserved }
 
enum class  UWTableKind { None = 0 , Sync = 1 , Async = 2 , Default = 2 }
 
enum class  FunctionReturnThunksKind : unsigned int { Keep = 0 , Extern = 1 , Invalid = 2 }
 
enum class  DebugCompressionType { None , Zlib , Zstd }
 
enum  ConversionResult { conversionOK , sourceExhausted , targetExhausted , sourceIllegal }
 
enum  ConversionFlags { strictConversion = 0 , lenientConversion }
 
enum class  errc {
  argument_list_too_long = int(std::errc::argument_list_too_long) , argument_out_of_domain = int(std::errc::argument_out_of_domain) , bad_address = int(std::errc::bad_address) , bad_file_descriptor = int(std::errc::bad_file_descriptor) ,
  broken_pipe = int(std::errc::broken_pipe) , delete_pending = -56 , device_or_resource_busy = int(std::errc::device_or_resource_busy) , directory_not_empty = int(std::errc::directory_not_empty) ,
  executable_format_error = int(std::errc::executable_format_error) , file_exists = int(std::errc::file_exists) , file_too_large = int(std::errc::file_too_large) , filename_too_long = int(std::errc::filename_too_long) ,
  function_not_supported = int(std::errc::function_not_supported) , illegal_byte_sequence = int(std::errc::illegal_byte_sequence) , inappropriate_io_control_operation , interrupted = int(std::errc::interrupted) ,
  invalid_argument = int(std::errc::invalid_argument) , invalid_seek = int(std::errc::invalid_seek) , io_error = int(std::errc::io_error) , is_a_directory = int(std::errc::is_a_directory) ,
  no_child_process = int(std::errc::no_child_process) , no_lock_available = int(std::errc::no_lock_available) , no_space_on_device = int(std::errc::no_space_on_device) , no_such_device_or_address = int(std::errc::no_such_device_or_address) ,
  no_such_device = int(std::errc::no_such_device) , no_such_file_or_directory = int(std::errc::no_such_file_or_directory) , no_such_process = int(std::errc::no_such_process) , not_a_directory = int(std::errc::not_a_directory) ,
  not_enough_memory = int(std::errc::not_enough_memory) , not_supported = int(std::errc::not_supported) , operation_not_permitted = int(std::errc::operation_not_permitted) , permission_denied = int(std::errc::permission_denied) ,
  read_only_file_system = int(std::errc::read_only_file_system) , resource_deadlock_would_occur = int(std::errc::resource_deadlock_would_occur) , resource_unavailable_try_again , result_out_of_range = int(std::errc::result_out_of_range) ,
  too_many_files_open_in_system = int(std::errc::too_many_files_open_in_system) , too_many_files_open = int(std::errc::too_many_files_open) , too_many_links = int(std::errc::too_many_links)
}
 
enum class  AlignStyle { Left , Center , Right }
 
enum class  ReplacementType { Format , Literal }
 
enum class  ModRefInfo : uint8_t {
  NoModRef = 0 , Ref = 1 , Mod = 2 , ModRef = Ref | Mod ,
  LLVM_MARK_AS_BITMASK_ENUM =(ModRef)
}
 Flags indicating whether a memory access modifies or references memory. More...
 
enum class  IRMemLocation {
  ArgMem = 0 , InaccessibleMem = 1 , Other = 2 , First = ArgMem ,
  Last = Other
}
 The locations at which a function might access memory. More...
 
enum class  CaptureComponents : uint8_t {
  None = 0 , AddressIsNull = (1 << 0) , Address = (1 << 1) | AddressIsNull , ReadProvenance = (1 << 2) ,
  Provenance = (1 << 3) | ReadProvenance , All = Address | Provenance , LLVM_MARK_AS_BITMASK_ENUM =(Provenance)
}
 Components of the pointer that may be captured. More...
 
enum class  FloatStyle { Exponent , ExponentUpper , Fixed , Percent }
 
enum class  IntegerStyle { Integer , Number }
 
enum class  HexPrintStyle { Upper , Lower , PrefixUpper , PrefixLower }
 
enum  InitStatus { Uninitialized = 0 , Wait = 1 , Done = 2 }
 
enum class  ThreadPriority { Background = 0 , Low = 1 , Default = 2 }
 
enum class  SetThreadPriorityResult { FAILURE , SUCCESS }
 
enum class  TimeTraceEventType { CompleteEvent , InstantEvent , AsyncEvent }
 
enum class  HighlightColor {
  Address , String , Tag , Attribute ,
  Enumerator , Macro , Error , Warning ,
  Note , Remark
}
 
enum class  ColorMode { Auto , Enable , Disable }
 
enum  {
  TB_INDEX_0 = 0 , TB_INDEX_1 = 1 , TB_INDEX_2 = 2 , TB_INDEX_3 = 3 ,
  TB_INDEX_4 = 4 , TB_INDEX_MASK = 0x7 , TB_NO_REVERSE = 1 << 3 , TB_NO_FORWARD = 1 << 4 ,
  TB_FOLDED_LOAD = 1 << 5 , TB_FOLDED_STORE = 1 << 6 , TB_ALIGN_SHIFT = 7 , TB_ALIGN_1 = 0 << TB_ALIGN_SHIFT ,
  TB_ALIGN_16 = 4 << TB_ALIGN_SHIFT , TB_ALIGN_32 = 5 << TB_ALIGN_SHIFT , TB_ALIGN_64 = 6 << TB_ALIGN_SHIFT , TB_ALIGN_MASK = 0x7 << TB_ALIGN_SHIFT ,
  TB_BCAST_TYPE_SHIFT = TB_ALIGN_SHIFT + 3 , TB_BCAST_W = 1 << TB_BCAST_TYPE_SHIFT , TB_BCAST_D = 2 << TB_BCAST_TYPE_SHIFT , TB_BCAST_Q = 3 << TB_BCAST_TYPE_SHIFT ,
  TB_BCAST_SS = 4 << TB_BCAST_TYPE_SHIFT , TB_BCAST_SD = 5 << TB_BCAST_TYPE_SHIFT , TB_BCAST_SH = 6 << TB_BCAST_TYPE_SHIFT , TB_BCAST_MASK = 0x7 << TB_BCAST_TYPE_SHIFT
}
 
enum class  RunOutliner { TargetDefault , AlwaysOutline , NeverOutline }
 
enum class  RegAllocType {
  Default , Basic , Fast , Greedy ,
  PBQP
}
 
enum class  BasicBlockSection { All , List , Preset , None }
 
enum class  EABI {
  Unknown , Default , EABI4 , EABI5 ,
  GNU
}
 
enum class  DebuggerKind {
  Default , GDB , LLDB , SCE ,
  DBX
}
 Identify a debugger for "tuning" the debug info. More...
 
enum class  GlobalISelAbortMode { Disable , Enable , DisableWithDiag }
 Enable abort calls when global instruction selection fails to lower/select an instruction. More...
 
enum class  SwiftAsyncFramePointerMode { DeploymentBased , Always , Never }
 Indicates when and how the Swift async frame pointer bit should be set. More...
 
enum  CodeObjectVersionKind {
  COV_None , COV_2 = 200 , COV_3 = 300 , COV_4 = 400 ,
  COV_5 = 500 , COV_6 = 600
}
 Enumeration value for AMDGPU code object version, which is the code object version times 100. More...
 
enum class  AsanDtorKind { None , Global , Invalid }
 Types of ASan module destructors supported. More...
 
enum class  AsanCtorKind { None , Global }
 Types of ASan module constructors supported. More...
 
enum class  AsanDetectStackUseAfterReturnMode { Never , Runtime , Always , Invalid }
 Mode of ASan detect stack use after return. More...
 
enum class  PGOInstrumentationType { Invalid = 0 , FDO , CSFDO , CTXPROF }
 
enum class  PassSummaryAction { None , Import , Export }
 What to do with the summary when running passes that operate on it. More...
 
enum class  ChangeStatus { CHANGED , UNCHANGED }
 { More...
 
enum class  DepClassTy { REQUIRED , OPTIONAL , NONE }
 
enum  AttributorRunOption { NONE = 0 , MODULE = 1 << 0 , CGSCC = 1 << 1 , ALL = MODULE | CGSCC }
 Run options, used by the pass manager. More...
 
enum class  ExpandVariadicsMode { Unspecified , Disable , Optimize , Lowering }
 
enum class  PrevailingType { Yes , No , Unknown }
 PrevailingType enum used as a return type of callback passed to computeDeadSymbolsAndUpdateIndirectCalls. More...
 
enum class  SROAOptions : bool { ModifyCFG , PreserveCFG }
 
enum class  CloneFunctionChangeType { LocalChangesOnly , GlobalChanges , DifferentModule , ClonedModule }
 
enum  TransformationMode {
  TM_Unspecified , TM_Enable , TM_Disable , TM_Force = 0x04 ,
  TM_ForcedByUser = TM_Enable | TM_Force , TM_SuppressedByUser = TM_Disable | TM_Force
}
 The mode sets how eager a transformation should be applied. More...
 
enum  ReplaceExitVal {
  NeverRepl , OnlyCheapRepl , NoHardUse , UnusedIndVarInLoop ,
  AlwaysRepl
}
 
enum  PredicateType { PT_Branch , PT_Assume , PT_Switch }
 
enum  { kSanitizerStatKindBits = 3 }
 
enum  SanitizerStatKind {
  SanStat_CFI_VCall , SanStat_CFI_NVCall , SanStat_CFI_DerivedCast , SanStat_CFI_UnrelatedCast ,
  SanStat_CFI_ICall
}
 
enum class  PGSOQueryType { IRPass , Test , Other }
 
enum class  LoopUnrollResult { Unmodified , PartiallyUnrolled , FullyUnrolled }
 Represents the result of a UnrollLoop invocation. More...
 
enum  RemapFlags {
  RF_None = 0 , RF_NoModuleLevelChanges = 1 , RF_IgnoreMissingLocals = 2 , RF_ReuseAndMutateDistinctMDs = 4 ,
  RF_NullMapMissingGlobalValues = 8
}
 These are flags that the value mapping APIs allow. More...
 
enum class  LoopIdiomVectorizeStyle { Masked , Predicated }
 
enum class  SubDirectoryType { Bin , Include , Lib }
 
enum class  ToolsetLayout { OlderVS , VS2017OrNewer , DevDivInternal }
 
enum class  UnitKind { Skeleton , Full }
 
enum class  AccelTableKind { Default , None , Apple , Dwarf }
 The kind of accelerator tables we should emit. More...
 
enum  FeatureIDs { FeatureCount }
 
enum  LiveRangeStage {
  RS_New , RS_Assign , RS_Split , RS_Split2 ,
  RS_Spill , RS_Memory , RS_Done
}
 
enum class  ContextWorklistItemType : uint8_t { AnalyzeContextInfo , UpdateChildPruning , UpdatePruning }
 The distinct types of work performed by the work loop in analyzeContextInfo. More...
 
enum  AccessField { Offset , Length }
 
enum  IttEventType { LoadBinaryModule , LoadBinarySection , UnloadBinaryModule , UnloadBinarySection }
 
enum  InternalRelocationType : unsigned { INTERNAL_REL_ARM64_LONG_BRANCH26 = 0x111 }
 
enum class  fltNonfiniteBehavior { IEEE754 , NanOnly , FiniteOnly }
 
enum class  fltNanEncoding { IEEE , AllOnes , NegativeZero }
 
enum  AArch64MachineCombinerPattern : unsigned {
  SUBADD_OP1 = MachineCombinerPattern::TARGET_PATTERN_START , SUBADD_OP2 , MULADDW_OP1 , MULADDW_OP2 ,
  MULSUBW_OP1 , MULSUBW_OP2 , MULADDWI_OP1 , MULSUBWI_OP1 ,
  MULADDX_OP1 , MULADDX_OP2 , MULSUBX_OP1 , MULSUBX_OP2 ,
  MULADDXI_OP1 , MULSUBXI_OP1 , MULADDv8i8_OP1 , MULADDv8i8_OP2 ,
  MULADDv16i8_OP1 , MULADDv16i8_OP2 , MULADDv4i16_OP1 , MULADDv4i16_OP2 ,
  MULADDv8i16_OP1 , MULADDv8i16_OP2 , MULADDv2i32_OP1 , MULADDv2i32_OP2 ,
  MULADDv4i32_OP1 , MULADDv4i32_OP2 , MULSUBv8i8_OP1 , MULSUBv8i8_OP2 ,
  MULSUBv16i8_OP1 , MULSUBv16i8_OP2 , MULSUBv4i16_OP1 , MULSUBv4i16_OP2 ,
  MULSUBv8i16_OP1 , MULSUBv8i16_OP2 , MULSUBv2i32_OP1 , MULSUBv2i32_OP2 ,
  MULSUBv4i32_OP1 , MULSUBv4i32_OP2 , MULADDv4i16_indexed_OP1 , MULADDv4i16_indexed_OP2 ,
  MULADDv8i16_indexed_OP1 , MULADDv8i16_indexed_OP2 , MULADDv2i32_indexed_OP1 , MULADDv2i32_indexed_OP2 ,
  MULADDv4i32_indexed_OP1 , MULADDv4i32_indexed_OP2 , MULSUBv4i16_indexed_OP1 , MULSUBv4i16_indexed_OP2 ,
  MULSUBv8i16_indexed_OP1 , MULSUBv8i16_indexed_OP2 , MULSUBv2i32_indexed_OP1 , MULSUBv2i32_indexed_OP2 ,
  MULSUBv4i32_indexed_OP1 , MULSUBv4i32_indexed_OP2 , FMULADDH_OP1 , FMULADDH_OP2 ,
  FMULSUBH_OP1 , FMULSUBH_OP2 , FMULADDS_OP1 , FMULADDS_OP2 ,
  FMULSUBS_OP1 , FMULSUBS_OP2 , FMULADDD_OP1 , FMULADDD_OP2 ,
  FMULSUBD_OP1 , FMULSUBD_OP2 , FNMULSUBH_OP1 , FNMULSUBS_OP1 ,
  FNMULSUBD_OP1 , FMLAv1i32_indexed_OP1 , FMLAv1i32_indexed_OP2 , FMLAv1i64_indexed_OP1 ,
  FMLAv1i64_indexed_OP2 , FMLAv4f16_OP1 , FMLAv4f16_OP2 , FMLAv8f16_OP1 ,
  FMLAv8f16_OP2 , FMLAv2f32_OP2 , FMLAv2f32_OP1 , FMLAv2f64_OP1 ,
  FMLAv2f64_OP2 , FMLAv4i16_indexed_OP1 , FMLAv4i16_indexed_OP2 , FMLAv8i16_indexed_OP1 ,
  FMLAv8i16_indexed_OP2 , FMLAv2i32_indexed_OP1 , FMLAv2i32_indexed_OP2 , FMLAv2i64_indexed_OP1 ,
  FMLAv2i64_indexed_OP2 , FMLAv4f32_OP1 , FMLAv4f32_OP2 , FMLAv4i32_indexed_OP1 ,
  FMLAv4i32_indexed_OP2 , FMLSv1i32_indexed_OP2 , FMLSv1i64_indexed_OP2 , FMLSv4f16_OP1 ,
  FMLSv4f16_OP2 , FMLSv8f16_OP1 , FMLSv8f16_OP2 , FMLSv2f32_OP1 ,
  FMLSv2f32_OP2 , FMLSv2f64_OP1 , FMLSv2f64_OP2 , FMLSv4i16_indexed_OP1 ,
  FMLSv4i16_indexed_OP2 , FMLSv8i16_indexed_OP1 , FMLSv8i16_indexed_OP2 , FMLSv2i32_indexed_OP1 ,
  FMLSv2i32_indexed_OP2 , FMLSv2i64_indexed_OP1 , FMLSv2i64_indexed_OP2 , FMLSv4f32_OP1 ,
  FMLSv4f32_OP2 , FMLSv4i32_indexed_OP1 , FMLSv4i32_indexed_OP2 , FMULv2i32_indexed_OP1 ,
  FMULv2i32_indexed_OP2 , FMULv2i64_indexed_OP1 , FMULv2i64_indexed_OP2 , FMULv4i16_indexed_OP1 ,
  FMULv4i16_indexed_OP2 , FMULv4i32_indexed_OP1 , FMULv4i32_indexed_OP2 , FMULv8i16_indexed_OP1 ,
  FMULv8i16_indexed_OP2 , FNMADD
}
 
enum  AArch64FrameOffsetStatus { AArch64FrameOffsetCannotUpdate = 0x0 , AArch64FrameOffsetIsLegal = 0x1 , AArch64FrameOffsetCanUpdate = 0x2 }
 Use to report the frame offset status in isAArch64FrameOffsetLegal. More...
 
enum class  TailFoldingOpts : uint8_t {
  Disabled = 0x00 , Simple = 0x01 , Reductions = 0x02 , Recurrences = 0x04 ,
  Reverse = 0x08 , All = Reductions | Recurrences | Simple | Reverse
}
 An enum to describe what types of loops we should attempt to tail-fold: Disabled: None Reductions: Loops containing reductions Recurrences: Loops with first-order recurrences, i.e. More...
 
enum class  ScanOptions { DPP , Iterative , None }
 
enum class  GCNSchedStageID : unsigned {
  OccInitialSchedule = 0 , UnclusteredHighRPReschedule = 1 , ClusteredLowOccupancyReschedule = 2 , PreRARematerialize = 3 ,
  ILPInitialSchedule = 4 , MemoryClauseInitialSchedule = 5
}
 
enum  AMDGPUDwarfFlavour : unsigned { Wave64 = 0 , Wave32 = 1 }
 
enum  SIRCFlags : uint8_t {
  RegTupleAlignUnitsWidth = 2 , HasVGPRBit = RegTupleAlignUnitsWidth , HasAGPRBit , HasSGPRbit ,
  HasVGPR = 1 << HasVGPRBit , HasAGPR = 1 << HasAGPRBit , HasSGPR = 1 << HasSGPRbit , RegTupleAlignUnitsMask = (1 << RegTupleAlignUnitsWidth) - 1 ,
  RegKindMask = (HasVGPR | HasAGPR | HasSGPR)
}
 
enum class  SGPRSaveKind : uint8_t { COPY_TO_SCRATCH_SGPR , SPILL_TO_VGPR_LANE , SPILL_TO_MEM }
 
enum  SIScheduleCandReason {
  NoCand , RegUsage , Latency , Successor ,
  Depth , NodeOrder
}
 
enum  SIScheduleBlockLinkKind { NoData , Data }
 
enum  SISchedulerBlockCreatorVariant { LatenciesAlone , LatenciesGrouped , LatenciesAlonePlusConsecutive }
 
enum  SISchedulerBlockSchedulerVariant { BlockLatencyRegUsage , BlockRegUsageLatency , BlockRegUsage }
 
enum  VMOVModImmType { VMOVModImm , VMVNModImm , MVEVMVNModImm , OtherModImm }
 
enum  SpillOpcodeKey {
  SOK_Int4Spill , SOK_Int8Spill , SOK_Float8Spill , SOK_Float4Spill ,
  SOK_CRSpill , SOK_CRBitSpill , SOK_VRVectorSpill , SOK_VSXVectorSpill ,
  SOK_VectorFloat8Spill , SOK_VectorFloat4Spill , SOK_SpillToVSR , SOK_PairedVecSpill ,
  SOK_AccumulatorSpill , SOK_UAccumulatorSpill , SOK_WAccumulatorSpill , SOK_SPESpill ,
  SOK_PairedG8Spill , SOK_LastOpcodeSpill
}
 
enum  PPCMachineCombinerPattern : unsigned { REASSOC_XY_AMM_BMM = MachineCombinerPattern::TARGET_PATTERN_START , REASSOC_XMM_AMM_BMM , REASSOC_XY_BCA , REASSOC_XY_BAC }
 
enum class  RISCVOptionArchArgType { Full , Plus , Minus }
 
enum  RISCVMachineCombinerPattern : unsigned {
  FMADD_AX = MachineCombinerPattern::TARGET_PATTERN_START , FMADD_XA , FMSUB , FNMSUB ,
  SHXADD_ADD_SLLI_OP1 , SHXADD_ADD_SLLI_OP2
}
 
enum  FPDecorationId {
  NONE = 0 , RTE , RTZ , RTP ,
  RTN , SAT
}
 
enum  SystemZAsmDialect { AD_GNU = 0 , AD_HLASM = 1 }
 
enum class  Packing { Normal = 0 , Dense = 1 }
 } Node Properties More...
 
enum class  PackElem : int8_t { Lo = 0 , Hi = 1 }
 
enum  { SM_SentinelUndef = -1 , SM_SentinelZero = -2 }
 
enum  X86MachineCombinerPattern : unsigned { DPWSSD = MachineCombinerPattern::TARGET_PATTERN_START }
 
enum  IntrinsicType : uint16_t {
  CVTNEPS2BF16_MASK , GATHER , SCATTER , PREFETCH ,
  RDSEED , RDRAND , RDPMC , RDTSC ,
  XTEST , XGETBV , ADX , FPCLASSS ,
  INTR_TYPE_1OP , INTR_TYPE_2OP , INTR_TYPE_3OP , INTR_TYPE_4OP_IMM8 ,
  INTR_TYPE_3OP_IMM8 , CFMA_OP_MASK , CFMA_OP_MASKZ , CMP_MASK_CC ,
  CMP_MASK_SCALAR_CC , VSHIFT , COMI , COMI_RM ,
  BLENDV , BEXTRI , CVTPD2PS_MASK , INTR_TYPE_1OP_SAE ,
  INTR_TYPE_2OP_SAE , INTR_TYPE_1OP_MASK_SAE , INTR_TYPE_2OP_MASK_SAE , INTR_TYPE_3OP_MASK_SAE ,
  INTR_TYPE_1OP_MASK , INTR_TYPE_2OP_MASK , IFMA_OP , VPERM_2OP ,
  INTR_TYPE_SCALAR_MASK , INTR_TYPE_SCALAR_MASK_SAE , INTR_TYPE_SCALAR_MASK_RND , INTR_TYPE_3OP_SCALAR_MASK_SAE ,
  COMPRESS_EXPAND_IN_REG , TRUNCATE_TO_REG , TRUNCATE2_TO_REG , CVTPS2PH_MASK ,
  CVTPD2DQ_MASK , CVTQQ2PS_MASK , TRUNCATE_TO_MEM_VI8 , TRUNCATE_TO_MEM_VI16 ,
  TRUNCATE_TO_MEM_VI32 , FIXUPIMM , FIXUPIMM_MASKZ , GATHER_AVX2 ,
  ROUNDP , ROUNDS , RDPRU , INTR_TYPE_CAST_MMX
}
 
enum  AMXProgModelEnum { None = 0 , DirectReg = 1 , ManagedRA = 2 }
 
enum  : uintptr_t { InvalidVN = ~(uintptr_t)2 }
 
enum  LocalNum { LN_First , LN_Middle , LN_Last }
 
enum  ScalarEpilogueLowering {
  CM_ScalarEpilogueAllowed , CM_ScalarEpilogueNotAllowedOptSize , CM_ScalarEpilogueNotAllowedLowTripLoop , CM_ScalarEpilogueNotNeededUsePredicate ,
  CM_ScalarEpilogueNotAllowedUsePredicate
}
 

Functions

bool operator== (const AddressRangeValuePair &LHS, const AddressRangeValuePair &RHS)
 
template<typename RangeT >
constexpr auto adl_begin (RangeT &&range) -> decltype(adl_detail::begin_impl(std::forward< RangeT >(range)))
 Returns the begin iterator to range using std::begin and function found through Argument-Dependent Lookup (ADL).
 
template<typename RangeT >
constexpr auto adl_end (RangeT &&range) -> decltype(adl_detail::end_impl(std::forward< RangeT >(range)))
 Returns the end iterator to range using std::end and functions found through Argument-Dependent Lookup (ADL).
 
template<typename RangeT >
constexpr auto adl_rbegin (RangeT &&range) -> decltype(adl_detail::rbegin_impl(std::forward< RangeT >(range)))
 Returns the reverse-begin iterator to range using std::rbegin and function found through Argument-Dependent Lookup (ADL).
 
template<typename RangeT >
constexpr auto adl_rend (RangeT &&range) -> decltype(adl_detail::rend_impl(std::forward< RangeT >(range)))
 Returns the reverse-end iterator to range using std::rend and functions found through Argument-Dependent Lookup (ADL).
 
template<typename T >
constexpr void adl_swap (T &&lhs, T &&rhs) noexcept(noexcept(adl_detail::swap_impl(std::declval< T >(), std::declval< T >())))
 Swaps lhs with rhs using std::swap and functions found through Argument-Dependent Lookup (ADL).
 
template<typename RangeT >
constexpr auto adl_size (RangeT &&range) -> decltype(adl_detail::size_impl(std::forward< RangeT >(range)))
 Returns the size of range using std::size and functions found through Argument-Dependent Lookup (ADL).
 
template<class T >
T any_cast (const Any &Value)
 
template<class T >
T any_cast (Any &Value)
 
template<class T >
T any_cast (Any &&Value)
 
template<class T >
const Tany_cast (const Any *Value)
 
template<class T >
Tany_cast (Any *Value)
 
hash_code hash_value (const FixedPointSemantics &Val)
 
raw_ostreamoperator<< (raw_ostream &OS, const APFixedPoint &FX)
 
hash_code hash_value (const APFixedPoint &Val)
 
hash_code hash_value (const APFloat &Arg)
 See friend declarations above.
 
APFloat scalbn (APFloat X, int Exp, APFloat::roundingMode RM)
 
APFloat frexp (const APFloat &X, int &Exp, APFloat::roundingMode RM)
 Equivalent of C standard library function.
 
APFloat abs (APFloat X)
 Returns the absolute value of the argument.
 
APFloat neg (APFloat X)
 Returns the negated value of the argument.
 
LLVM_READONLY APFloat minnum (const APFloat &A, const APFloat &B)
 Implements IEEE-754 2019 minimumNumber semantics.
 
LLVM_READONLY APFloat maxnum (const APFloat &A, const APFloat &B)
 Implements IEEE-754 2019 maximumNumber semantics.
 
LLVM_READONLY APFloat minimum (const APFloat &A, const APFloat &B)
 Implements IEEE 754-2019 minimum semantics.
 
LLVM_READONLY APFloat minimumnum (const APFloat &A, const APFloat &B)
 Implements IEEE 754-2019 minimumNumber semantics.
 
LLVM_READONLY APFloat maximum (const APFloat &A, const APFloat &B)
 Implements IEEE 754-2019 maximum semantics.
 
LLVM_READONLY APFloat maximumnum (const APFloat &A, const APFloat &B)
 Implements IEEE 754-2019 maximumNumber semantics.
 
raw_ostreamoperator<< (raw_ostream &OS, const APFloat &V)
 
APInt operator- (APInt)
 
bool operator== (uint64_t V1, const APInt &V2)
 
bool operator!= (uint64_t V1, const APInt &V2)
 
APInt operator~ (APInt v)
 Unary bitwise complement operator.
 
APInt operator& (APInt a, const APInt &b)
 
APInt operator& (const APInt &a, APInt &&b)
 
APInt operator& (APInt a, uint64_t RHS)
 
APInt operator& (uint64_t LHS, APInt b)
 
APInt operator| (APInt a, const APInt &b)
 
APInt operator| (const APInt &a, APInt &&b)
 
APInt operator| (APInt a, uint64_t RHS)
 
APInt operator| (uint64_t LHS, APInt b)
 
APInt operator^ (APInt a, const APInt &b)
 
APInt operator^ (const APInt &a, APInt &&b)
 
APInt operator^ (APInt a, uint64_t RHS)
 
APInt operator^ (uint64_t LHS, APInt b)
 
raw_ostreamoperator<< (raw_ostream &OS, const APInt &I)
 
APInt operator+ (APInt a, const APInt &b)
 
APInt operator+ (const APInt &a, APInt &&b)
 
APInt operator+ (APInt a, uint64_t RHS)
 
APInt operator+ (uint64_t LHS, APInt b)
 
APInt operator- (APInt a, const APInt &b)
 
APInt operator- (const APInt &a, APInt &&b)
 
APInt operator- (APInt a, uint64_t RHS)
 
APInt operator- (uint64_t LHS, APInt b)
 
APInt operator* (APInt a, uint64_t RHS)
 
APInt operator* (uint64_t LHS, APInt b)
 
hash_code hash_value (const APInt &Arg)
 
void StoreIntToMemory (const APInt &IntVal, uint8_t *Dst, unsigned StoreBytes)
 StoreIntToMemory - Fills the StoreBytes bytes of memory starting from Dst with the integer held in IntVal.
 
void LoadIntFromMemory (APInt &IntVal, const uint8_t *Src, unsigned LoadBytes)
 LoadIntFromMemory - Loads the integer stored in the LoadBytes bytes starting from Src into IntVal, which is assumed to be wide enough and to hold zero.
 
bool operator== (int64_t V1, const APSInt &V2)
 
bool operator!= (int64_t V1, const APSInt &V2)
 
bool operator<= (int64_t V1, const APSInt &V2)
 
bool operator>= (int64_t V1, const APSInt &V2)
 
bool operator< (int64_t V1, const APSInt &V2)
 
bool operator> (int64_t V1, const APSInt &V2)
 
raw_ostreamoperator<< (raw_ostream &OS, const APSInt &I)
 
template<typename T >
hash_code hash_value (ArrayRef< T > S)
 
template<typename To , typename From , typename = std::enable_if_t<sizeof(To) == sizeof(From)>, typename = std::enable_if_t<std::is_trivially_constructible<To>::value>, typename = std::enable_if_t<std::is_trivially_copyable<To>::value>, typename = std::enable_if_t<std::is_trivially_copyable<From>::value>>
To bit_cast (const From &from) noexcept
 
template<typename T , typename = std::enable_if_t<std::is_integral_v<T>>>
constexpr T byteswap (T V) noexcept
 Reverses the bytes in the given integer value V.
 
template<typename T , typename = std::enable_if_t<std::is_unsigned_v<T>>>
constexpr bool has_single_bit (T Value) noexcept
 
template<typename T >
int countr_zero (T Val)
 Count number of 0's from the least significant bit to the most stopping at the first 1.
 
template<typename T >
int countl_zero (T Val)
 Count number of 0's from the most significant bit to the least stopping at the first 1.
 
template<typename T >
int countl_one (T Value)
 Count the number of ones from the most significant bit to the first zero bit.
 
template<typename T >
int countr_one (T Value)
 Count the number of ones from the least significant bit to the first zero bit.
 
template<typename T >
int bit_width (T Value)
 Returns the number of bits needed to represent Value if Value is nonzero.
 
template<typename T >
T bit_floor (T Value)
 Returns the largest integral power of two no greater than Value if Value is nonzero.
 
template<typename T >
T bit_ceil (T Value)
 Returns the smallest integral power of two no smaller than Value if Value is nonzero.
 
template<typename T , typename = std::enable_if_t<std::is_unsigned_v<T>>>
int popcount (T Value) noexcept
 Count the number of set bits in a value.
 
template<typename T , typename = std::enable_if_t<std::is_unsigned_v<T>>>
constexpr T rotr (T V, int R)
 
template<typename T , typename = std::enable_if_t<std::is_unsigned_v<T>>>
constexpr T rotl (T V, int R)
 
 LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE ()
 
BitVector::size_type capacity_in_bytes (const BitVector &X)
 
template<class T >
bf_iterator< Tbf_begin (const T &G)
 
template<class T >
bf_iterator< Tbf_end (const T &G)
 
template<class T >
iterator_range< bf_iterator< T > > breadth_first (const T &G)
 
template<typename DerivedT , typename KeyT , typename ValueT , typename KeyInfoT , typename BucketT >
bool operator== (const DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT > &LHS, const DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT > &RHS)
 Equality comparison for DenseMap.
 
template<typename DerivedT , typename KeyT , typename ValueT , typename KeyInfoT , typename BucketT >
bool operator!= (const DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT > &LHS, const DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT > &RHS)
 Inequality comparison for DenseMap.
 
template<typename KeyT , typename ValueT , typename KeyInfoT >
size_t capacity_in_bytes (const DenseMap< KeyT, ValueT, KeyInfoT > &X)
 
template<class T >
df_iterator< Tdf_begin (const T &G)
 
template<class T >
df_iterator< Tdf_end (const T &G)
 
template<class T >
iterator_range< df_iterator< T > > depth_first (const T &G)
 
template<class T , class SetTy >
df_ext_iterator< T, SetTy > df_ext_begin (const T &G, SetTy &S)
 
template<class T , class SetTy >
df_ext_iterator< T, SetTy > df_ext_end (const T &G, SetTy &S)
 
template<class T , class SetTy >
iterator_range< df_ext_iterator< T, SetTy > > depth_first_ext (const T &G, SetTy &S)
 
template<class T >
idf_iterator< Tidf_begin (const T &G)
 
template<class T >
idf_iterator< Tidf_end (const T &G)
 
template<class T >
iterator_range< idf_iterator< T > > inverse_depth_first (const T &G)
 
template<class T , class SetTy >
idf_ext_iterator< T, SetTy > idf_ext_begin (const T &G, SetTy &S)
 
template<class T , class SetTy >
idf_ext_iterator< T, SetTy > idf_ext_end (const T &G, SetTy &S)
 
template<class T , class SetTy >
iterator_range< idf_ext_iterator< T, SetTy > > inverse_depth_first_ext (const T &G, SetTy &S)
 
raw_ostreamoperator<< (raw_ostream &OS, const DynamicAPInt &X)
 
hash_code hash_value (const DynamicAPInt &X)
 Redeclarations of friend declaration above to make it discoverable by lookups.
 
static int64_t int64fromDynamicAPInt (const DynamicAPInt &X)
 This just calls through to the operator int64_t, but it's useful when a function pointer is required.
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt dynamicAPIntFromInt64 (int64_t X)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt mod (const DynamicAPInt &LHS, const DynamicAPInt &RHS)
 is always non-negative.
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt abs (const DynamicAPInt &X)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt ceilDiv (const DynamicAPInt &LHS, const DynamicAPInt &RHS)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt floorDiv (const DynamicAPInt &LHS, const DynamicAPInt &RHS)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt gcd (const DynamicAPInt &A, const DynamicAPInt &B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt lcm (const DynamicAPInt &A, const DynamicAPInt &B)
 Returns the least common multiple of A and B.
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPIntoperator+= (DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPIntoperator-= (DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPIntoperator*= (DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPIntoperator/= (DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPIntoperator%= (DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt operator+ (const DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt operator- (const DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt operator* (const DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt operator/ (const DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt operator% (const DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt operator+ (int64_t A, const DynamicAPInt &B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt operator- (int64_t A, const DynamicAPInt &B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt operator* (int64_t A, const DynamicAPInt &B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt operator/ (int64_t A, const DynamicAPInt &B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE DynamicAPInt operator% (int64_t A, const DynamicAPInt &B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator== (const DynamicAPInt &A, int64_t B)
 We provide special implementations of the comparison operators rather than calling through as above, as this would result in a 1.2x slowdown.
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator!= (const DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator> (const DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator< (const DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator<= (const DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator>= (const DynamicAPInt &A, int64_t B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator== (int64_t A, const DynamicAPInt &B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator!= (int64_t A, const DynamicAPInt &B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator> (int64_t A, const DynamicAPInt &B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator< (int64_t A, const DynamicAPInt &B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator<= (int64_t A, const DynamicAPInt &B)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator>= (int64_t A, const DynamicAPInt &B)
 
template<typename T , typename Functor >
unsigned ComputeMappedEditDistance (ArrayRef< T > FromArray, ArrayRef< T > ToArray, Functor Map, bool AllowReplacements=true, unsigned MaxEditDistance=0)
 Determine the edit distance between two sequences.
 
template<typename T >
unsigned ComputeEditDistance (ArrayRef< T > FromArray, ArrayRef< T > ToArray, bool AllowReplacements=true, unsigned MaxEditDistance=0)
 
template<typename Underlying >
fallible_iterator< Underlying > make_fallible_itr (Underlying I, Error &Err)
 Convenience wrapper to make a fallible_iterator value from an instance of an underlying iterator and an Error reference.
 
template<typename Underlying >
fallible_iterator< Underlying > make_fallible_end (Underlying E)
 Convenience wrapper to make a fallible_iterator end value from an instance of an underlying iterator.
 
template<typename Underlying >
iterator_range< fallible_iterator< Underlying > > make_fallible_range (Underlying I, Underlying E, Error &Err)
 
StringRef spell (RoundingMode RM)
 Returns text representation of the given rounding mode.
 
raw_ostreamoperator<< (raw_ostream &OS, RoundingMode RM)
 
raw_ostreamoperator<< (raw_ostream &OS, DenormalMode Mode)
 
DenormalMode::DenormalModeKind parseDenormalFPAttributeComponent (StringRef Str)
 Parse the expected names from the denormal-fp-math attribute.
 
StringRef denormalModeKindName (DenormalMode::DenormalModeKind Mode)
 Return the name used for the denormal handling mode used by the expected names from the denormal-fp-math attribute.
 
DenormalMode parseDenormalFPAttribute (StringRef Str)
 Returns the denormal mode to use for inputs and outputs.
 
 LLVM_DECLARE_ENUM_AS_BITMASK (FPClassTest, fcPosInf)
 
FPClassTest fneg (FPClassTest Mask)
 Return the test mask which returns true if the value's sign bit is flipped.
 
FPClassTest inverse_fabs (FPClassTest Mask)
 Return the test mask which returns true after fabs is applied to the value.
 
FPClassTest unknown_sign (FPClassTest Mask)
 Return the test mask which returns true if the value could have the same set of classes, but with a different sign.
 
raw_ostreamoperator<< (raw_ostream &OS, FPClassTest Mask)
 Write a human readable form of Mask to OS.
 
template<typename CycleT >
static bool insertIfNotContained (SmallVector< CycleT * > &Cycles, CycleT *Candidate)
 Add Candidate to Cycles if it is not already contained in Cycles.
 
template<typename CycleT , typename BlockT >
static const CycleT * getExtDivCycle (const CycleT *Cycle, const BlockT *DivTermBlock, const BlockT *JoinBlock)
 Return the outermost cycle made divergent by branch outside it.
 
template<typename ContextT , typename CycleT , typename BlockT , typename DominatorTreeT >
static const CycleT * getIntDivCycle (const CycleT *Cycle, const BlockT *DivTermBlock, const BlockT *JoinBlock, const DominatorTreeT &DT, ContextT &Context)
 Return the outermost cycle made divergent by branch inside it.
 
template<typename ContextT , typename CycleT , typename BlockT , typename DominatorTreeT >
static const CycleT * getOutermostDivergentCycle (const CycleT *Cycle, const BlockT *DivTermBlock, const BlockT *JoinBlock, const DominatorTreeT &DT, ContextT &Context)
 
template<class GraphType >
iterator_range< typename GraphTraits< GraphType >::nodes_iterator > nodes (const GraphType &G)
 
template<class GraphType >
iterator_range< typename GraphTraits< Inverse< GraphType > >::nodes_iterator > inverse_nodes (const GraphType &G)
 
template<class GraphType >
iterator_range< typename GraphTraits< GraphType >::ChildIteratorType > children (const typename GraphTraits< GraphType >::NodeRef &G)
 
template<class GraphType >
iterator_range< typename GraphTraits< Inverse< GraphType > >::ChildIteratorType > inverse_children (const typename GraphTraits< GraphType >::NodeRef &G)
 
template<class GraphType >
iterator_range< typename GraphTraits< GraphType >::ChildEdgeIteratorType > children_edges (const typename GraphTraits< GraphType >::NodeRef &G)
 
template<typename T >
std::enable_if_t< is_integral_or_enum< T >::value, hash_codehash_value (T value)
 Compute a hash_code for any integer value.
 
template<typename T >
hash_code hash_value (const T *ptr)
 Compute a hash_code for a pointer's address.
 
template<typename T , typename U >
hash_code hash_value (const std::pair< T, U > &arg)
 Compute a hash_code for a pair of objects.
 
template<typename... Ts>
hash_code hash_value (const std::tuple< Ts... > &arg)
 Compute a hash_code for a tuple.
 
template<typename T >
hash_code hash_value (const std::basic_string< T > &arg)
 Compute a hash_code for a standard string.
 
template<typename T >
hash_code hash_value (const std::optional< T > &arg)
 Compute a hash_code for a standard string.
 
template<typename InputIteratorT >
hash_code hash_combine_range (InputIteratorT first, InputIteratorT last)
 Compute a hash_code for a sequence of values.
 
template<typename ... Ts>
hash_code hash_combine (const Ts &...args)
 Combine values into a single hash_code.
 
template<class T , class U >
bool operator== (const IntrusiveRefCntPtr< T > &A, const IntrusiveRefCntPtr< U > &B)
 
template<class T , class U >
bool operator!= (const IntrusiveRefCntPtr< T > &A, const IntrusiveRefCntPtr< U > &B)
 
template<class T , class U >
bool operator== (const IntrusiveRefCntPtr< T > &A, U *B)
 
template<class T , class U >
bool operator!= (const IntrusiveRefCntPtr< T > &A, U *B)
 
template<class T , class U >
bool operator== (T *A, const IntrusiveRefCntPtr< U > &B)
 
template<class T , class U >
bool operator!= (T *A, const IntrusiveRefCntPtr< U > &B)
 
template<class T >
bool operator== (std::nullptr_t, const IntrusiveRefCntPtr< T > &B)
 
template<class T >
bool operator== (const IntrusiveRefCntPtr< T > &A, std::nullptr_t B)
 
template<class T >
bool operator!= (std::nullptr_t A, const IntrusiveRefCntPtr< T > &B)
 
template<class T >
bool operator!= (const IntrusiveRefCntPtr< T > &A, std::nullptr_t B)
 
template<typename T , typename... Args>
IntrusiveRefCntPtr< TmakeIntrusiveRefCnt (Args &&...A)
 Factory function for creating intrusive ref counted pointers.
 
template<typename RangeT , typename WrappedIteratorT = decltype(std::begin(std::declval<RangeT>()))>
iterator_range< pointee_iterator< WrappedIteratorT > > make_pointee_range (RangeT &&Range)
 
template<typename RangeT , typename WrappedIteratorT = decltype(std::begin(std::declval<RangeT>()))>
iterator_range< pointer_iterator< WrappedIteratorT > > make_pointer_range (RangeT &&Range)
 
template<typename Container >
 iterator_range (Container &&) -> iterator_range< llvm::detail::IterOfRange< Container > >
 
template<class T >
iterator_range< Tmake_range (T x, T y)
 Convenience function for iterating over sub-ranges.
 
template<typename T >
iterator_range< Tmake_range (std::pair< T, T > p)
 
template<std::size_t I, typename PointerTy , unsigned IntBits, typename IntType , typename PtrTraits , typename Info >
decltype(auto) get (const PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info > &Pair)
 
template<typename ... PTs>
bool operator== (PointerUnion< PTs... > lhs, PointerUnion< PTs... > rhs)
 
template<typename ... PTs>
bool operator!= (PointerUnion< PTs... > lhs, PointerUnion< PTs... > rhs)
 
template<typename ... PTs>
bool operator< (PointerUnion< PTs... > lhs, PointerUnion< PTs... > rhs)
 
template<class T >
po_iterator< Tpo_begin (const T &G)
 
template<class T >
po_iterator< Tpo_end (const T &G)
 
template<class T >
iterator_range< po_iterator< T > > post_order (const T &G)
 
template<class T , class SetType >
po_ext_iterator< T, SetType > po_ext_begin (T G, SetType &S)
 
template<class T , class SetType >
po_ext_iterator< T, SetType > po_ext_end (T G, SetType &S)
 
template<class T , class SetType >
iterator_range< po_ext_iterator< T, SetType > > post_order_ext (const T &G, SetType &S)
 
template<class T >
ipo_iterator< Tipo_begin (const T &G)
 
template<class T >
ipo_iterator< Tipo_end (const T &G)
 
template<class T >
iterator_range< ipo_iterator< T > > inverse_post_order (const T &G)
 
template<class T , class SetType >
ipo_ext_iterator< T, SetType > ipo_ext_begin (const T &G, SetType &S)
 
template<class T , class SetType >
ipo_ext_iterator< T, SetType > ipo_ext_end (const T &G, SetType &S)
 
template<class T , class SetType >
iterator_range< ipo_ext_iterator< T, SetType > > inverse_post_order_ext (const T &G, SetType &S)
 
template<class T >
scc_iterator< Tscc_begin (const T &G)
 Construct the begin iterator for a deduced graph type T.
 
template<class T >
scc_iterator< Tscc_end (const T &G)
 Construct the end iterator for a deduced graph type T.
 
template<typename Callable >
detail::scope_exit< std::decay_t< Callable > > make_scope_exit (Callable &&F)
 
template<typename T , typename = std::enable_if_t<std::is_integral<T>::value && !std::is_enum<T>::value>>
auto seq (T Begin, T End)
 Iterate over an integral type from Begin up to - but not including - End.
 
template<typename T , typename = std::enable_if_t<std::is_integral<T>::value && !std::is_enum<T>::value>>
auto seq (T Size)
 Iterate over an integral type from 0 up to - but not including - Size.
 
template<typename T , typename = std::enable_if_t<std::is_integral<T>::value && !std::is_enum<T>::value>>
auto seq_inclusive (T Begin, T End)
 Iterate over an integral type from Begin to End inclusive.
 
template<typename EnumT , typename = std::enable_if_t<std::is_enum<EnumT>::value>>
auto enum_seq (EnumT Begin, EnumT End)
 Iterate over an enum type from Begin up to - but not including - End.
 
template<typename EnumT , typename = std::enable_if_t<std::is_enum<EnumT>::value>>
auto enum_seq (EnumT Begin, EnumT End, force_iteration_on_noniterable_enum_t)
 Iterate over an enum type from Begin up to - but not including - End, even when EnumT is not marked as safely iterable by enum_iteration_traits.
 
template<typename EnumT , typename = std::enable_if_t<std::is_enum<EnumT>::value>>
auto enum_seq_inclusive (EnumT Begin, EnumT End)
 Iterate over an enum type from Begin to End inclusive.
 
template<typename EnumT , typename = std::enable_if_t<std::is_enum<EnumT>::value>>
auto enum_seq_inclusive (EnumT Begin, EnumT End, force_iteration_on_noniterable_enum_t)
 Iterate over an enum type from Begin to End inclusive, even when EnumT is not marked as safely iterable by enum_iteration_traits.
 
template<class S1Ty , class S2Ty >
bool set_union (S1Ty &S1, const S2Ty &S2)
 set_union(A, B) - Compute A := A u B, return whether A changed.
 
template<class S1Ty , class S2Ty >
void set_intersect (S1Ty &S1, const S2Ty &S2)
 set_intersect(A, B) - Compute A := A ^ B Identical to set_intersection, except that it works on set<>'s and is nicer to use.
 
template<class S1Ty , class S2Ty >
S1Ty set_intersection_impl (const S1Ty &S1, const S2Ty &S2)
 
template<class S1Ty , class S2Ty >
S1Ty set_intersection (const S1Ty &S1, const S2Ty &S2)
 set_intersection(A, B) - Return A ^ B
 
template<class S1Ty , class S2Ty >
S1Ty set_difference (const S1Ty &S1, const S2Ty &S2)
 set_difference(A, B) - Return A - B
 
template<class S1Ty , class S2Ty >
void set_subtract (S1Ty &S1, const S2Ty &S2)
 set_subtract(A, B) - Compute A := A - B
 
template<class S1Ty , class S2Ty >
void set_subtract (S1Ty &S1, const S2Ty &S2, S1Ty &Removed, S1Ty &Remaining)
 set_subtract(A, B, C, D) - Compute A := A - B, set C to the elements of B removed from A (A ^ B), and D to the elements of B not found in and removed from A (B - A).
 
template<class S1Ty , class S2Ty >
bool set_is_subset (const S1Ty &S1, const S2Ty &S2)
 set_is_subset(A, B) - Return true iff A in B
 
SmallBitVector operator& (const SmallBitVector &LHS, const SmallBitVector &RHS)
 
SmallBitVector operator| (const SmallBitVector &LHS, const SmallBitVector &RHS)
 
SmallBitVector operator^ (const SmallBitVector &LHS, const SmallBitVector &RHS)
 
template<typename PtrType >
bool operator== (const SmallPtrSetImpl< PtrType > &LHS, const SmallPtrSetImpl< PtrType > &RHS)
 Equality comparison for SmallPtrSet.
 
template<typename PtrType >
bool operator!= (const SmallPtrSetImpl< PtrType > &LHS, const SmallPtrSetImpl< PtrType > &RHS)
 Inequality comparison for SmallPtrSet.
 
template<typename T , unsigned LN, unsigned RN, typename C >
bool operator== (const SmallSet< T, LN, C > &LHS, const SmallSet< T, RN, C > &RHS)
 Equality comparison for SmallSet.
 
template<typename T , unsigned LN, unsigned RN, typename C >
bool operator!= (const SmallSet< T, LN, C > &LHS, const SmallSet< T, RN, C > &RHS)
 Inequality comparison for SmallSet.
 
template<typename T , unsigned N>
size_t capacity_in_bytes (const SmallVector< T, N > &X)
 
template<unsigned Size, typename R >
SmallVector< ValueTypeFromRangeType< R >, Sizeto_vector (R &&Range)
 Given a range of type R, iterate the entire range and return a SmallVector with elements of the vector.
 
template<typename R >
SmallVector< ValueTypeFromRangeType< R > > to_vector (R &&Range)
 
template<typename Out , unsigned Size, typename R >
SmallVector< Out, Sizeto_vector_of (R &&Range)
 
template<typename Out , typename R >
SmallVector< Out > to_vector_of (R &&Range)
 
template<unsigned Size, class ContainerTy , class PredicateFn >
auto filter_to_vector (ContainerTy &&C, PredicateFn &&Pred)
 Filter a range to a SmallVector with the element types deduced.
 
template<class ContainerTy , class PredicateFn >
auto filter_to_vector (ContainerTy &&C, PredicateFn &&Pred)
 Filter a range to a SmallVector with the element types deduced.
 
template<unsigned Size, class ContainerTy , class FuncTy >
auto map_to_vector (ContainerTy &&C, FuncTy &&F)
 Map a range to a SmallVector with element types deduced from the mapping.
 
template<class ContainerTy , class FuncTy >
auto map_to_vector (ContainerTy &&C, FuncTy &&F)
 Map a range to a SmallVector with element types deduced from the mapping.
 
template<unsigned ElementSize>
bool operator|= (SparseBitVector< ElementSize > &LHS, const SparseBitVector< ElementSize > *RHS)
 
template<unsigned ElementSize>
bool operator|= (SparseBitVector< ElementSize > *LHS, const SparseBitVector< ElementSize > &RHS)
 
template<unsigned ElementSize>
bool operator&= (SparseBitVector< ElementSize > *LHS, const SparseBitVector< ElementSize > &RHS)
 
template<unsigned ElementSize>
bool operator&= (SparseBitVector< ElementSize > &LHS, const SparseBitVector< ElementSize > *RHS)
 
template<unsigned ElementSize>
SparseBitVector< ElementSize > operator| (const SparseBitVector< ElementSize > &LHS, const SparseBitVector< ElementSize > &RHS)
 
template<unsigned ElementSize>
SparseBitVector< ElementSize > operator& (const SparseBitVector< ElementSize > &LHS, const SparseBitVector< ElementSize > &RHS)
 
template<unsigned ElementSize>
SparseBitVector< ElementSize > operator- (const SparseBitVector< ElementSize > &LHS, const SparseBitVector< ElementSize > &RHS)
 
template<unsigned ElementSize>
void dump (const SparseBitVector< ElementSize > &LHS, raw_ostream &out)
 
stable_hash stable_hash_combine (ArrayRef< stable_hash > Buffer)
 
stable_hash stable_hash_combine (stable_hash A, stable_hash B)
 
stable_hash stable_hash_combine (stable_hash A, stable_hash B, stable_hash C)
 
stable_hash stable_hash_combine (stable_hash A, stable_hash B, stable_hash C, stable_hash D)
 
StringRef get_stable_name (StringRef Name)
 
stable_hash stable_hash_name (StringRef Name)
 
void EnableStatistics (bool DoPrintOnExit=true)
 Enable the collection and printing of statistics.
 
bool AreStatisticsEnabled ()
 Check if statistics are enabled.
 
std::unique_ptr< raw_ostreamCreateInfoOutputFile ()
 Return a stream to print our output on.
 
void PrintStatistics ()
 Print statistics to the file returned by CreateInfoOutputFile().
 
void PrintStatistics (raw_ostream &OS)
 Print statistics to the given output stream.
 
void PrintStatisticsJSON (raw_ostream &OS)
 Print statistics in JSON format.
 
std::vector< std::pair< StringRef, uint64_t > > GetStatistics ()
 Get the statistics.
 
void ResetStatistics ()
 Reset the statistics.
 
template<typename EnumTy1 , typename EnumTy2 , typename UT1 = std::enable_if_t<std::is_enum<EnumTy1>::value, std::underlying_type_t<EnumTy1>>, typename UT2 = std::enable_if_t<std::is_enum<EnumTy2>::value, std::underlying_type_t<EnumTy2>>>
constexpr auto addEnumValues (EnumTy1 LHS, EnumTy2 RHS)
 Helper which adds two underlying types of enumeration type.
 
template<typename ContainerTy >
bool hasSingleElement (ContainerTy &&C)
 Returns true if the given container only contains a single element.
 
template<typename T >
auto drop_begin (T &&RangeOrContainer, size_t N=1)
 Return a range covering RangeOrContainer with the first N elements excluded.
 
template<typename T >
auto drop_end (T &&RangeOrContainer, size_t N=1)
 Return a range covering RangeOrContainer with the last N elements excluded.
 
template<class ItTy , class FuncTy >
mapped_iterator< ItTy, FuncTy > map_iterator (ItTy I, FuncTy F)
 
template<class ContainerTy , class FuncTy >
auto map_range (ContainerTy &&C, FuncTy F)
 
template<typename ContainerTy >
auto reverse (ContainerTy &&C)
 
template<typename RangeT , typename PredicateT >
iterator_range< filter_iterator< detail::IterOfRange< RangeT >, PredicateT > > make_filter_range (RangeT &&Range, PredicateT Pred)
 Convenience function that takes a range of elements and a predicate, and return a new filter_iterator range.
 
template<typename RangeT >
iterator_range< early_inc_iterator_impl< detail::IterOfRange< RangeT > > > make_early_inc_range (RangeT &&Range)
 Make a range that does early increment to allow mutation of the underlying range without disrupting iteration.
 
template<typename R , typename UnaryPredicate >
bool all_of (R &&Range, UnaryPredicate P)
 Provide wrappers to std::all_of which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename UnaryPredicate >
bool any_of (R &&Range, UnaryPredicate P)
 Provide wrappers to std::any_of which take ranges instead of having to pass begin/end explicitly.
 
template<typename T >
bool all_equal (std::initializer_list< T > Values)
 Returns true if all Values in the initializer lists are equal or the list.
 
template<typename R >
constexpr size_t range_size (R &&Range)
 Returns the size of the Range, i.e., the number of elements.
 
template<typename T , typename U , typename... Args>
detail::zippy< detail::zip_shortest, T, U, Args... > zip (T &&t, U &&u, Args &&...args)
 zip iterator for two or more iteratable types.
 
template<typename T , typename U , typename... Args>
detail::zippy< detail::zip_first, T, U, Args... > zip_equal (T &&t, U &&u, Args &&...args)
 zip iterator that assumes that all iteratees have the same length.
 
template<typename T , typename U , typename... Args>
detail::zippy< detail::zip_first, T, U, Args... > zip_first (T &&t, U &&u, Args &&...args)
 zip iterator that, for the sake of efficiency, assumes the first iteratee to be the shortest.
 
template<typename T , typename U , typename... Args>
detail::zip_longest_range< T, U, Args... > zip_longest (T &&t, U &&u, Args &&... args)
 Iterate over two or more iterators at the same time.
 
template<typename ValueT , typename... RangeTs>
detail::concat_range< ValueT, RangeTs... > concat (RangeTs &&...Ranges)
 Returns a concatenated range across two or more ranges.
 
template<typename ContainerTy >
auto make_first_range (ContainerTy &&c)
 Given a container of pairs, return a range over the first elements.
 
template<typename ContainerTy >
auto make_second_range (ContainerTy &&c)
 Given a container of pairs, return a range over the second elements.
 
template<typename... CallableTs>
constexpr decltype(auto) makeVisitor (CallableTs &&...Callables)
 Returns an opaquely-typed Callable object whose operator() overload set is the sum of the operator() overload sets of each CallableT in CallableTs.
 
template<class Iterator , class RNG >
void shuffle (Iterator first, Iterator last, RNG &&g)
 
template<typename T >
int array_pod_sort_comparator (const void *P1, const void *P2)
 Adapt std::less<T> for array_pod_sort.
 
template<class IteratorTy >
void array_pod_sort (IteratorTy Start, IteratorTy End)
 array_pod_sort - This sorts an array with the specified start and end extent.
 
template<class IteratorTy >
void array_pod_sort (IteratorTy Start, IteratorTy End, int(*Compare)(const typename std::iterator_traits< IteratorTy >::value_type *, const typename std::iterator_traits< IteratorTy >::value_type *))
 
template<typename IteratorTy >
void sort (IteratorTy Start, IteratorTy End)
 
template<typename Container >
void sort (Container &&C)
 
template<typename IteratorTy , typename Compare >
void sort (IteratorTy Start, IteratorTy End, Compare Comp)
 
template<typename Container , typename Compare >
void sort (Container &&C, Compare Comp)
 
template<typename R >
auto size (R &&Range, std::enable_if_t< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< decltype(Range.begin())>::iterator_category >::value, void > *=nullptr)
 Get the size of a range.
 
template<typename R , typename UnaryFunction >
UnaryFunction for_each (R &&Range, UnaryFunction F)
 Provide wrappers to std::for_each which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename UnaryPredicate >
bool none_of (R &&Range, UnaryPredicate P)
 Provide wrappers to std::none_of which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename T >
auto find (R &&Range, const T &Val)
 Provide wrappers to std::find which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename UnaryPredicate >
auto find_if (R &&Range, UnaryPredicate P)
 Provide wrappers to std::find_if which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename UnaryPredicate >
auto find_if_not (R &&Range, UnaryPredicate P)
 
template<typename R , typename UnaryPredicate >
auto remove_if (R &&Range, UnaryPredicate P)
 Provide wrappers to std::remove_if which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename OutputIt , typename UnaryPredicate >
OutputIt copy_if (R &&Range, OutputIt Out, UnaryPredicate P)
 Provide wrappers to std::copy_if which take ranges instead of having to pass begin/end explicitly.
 
template<typename T , typename R , typename Predicate >
Tfind_singleton (R &&Range, Predicate P, bool AllowRepeats=false)
 Return the single value in Range that satisfies P(<member of Range> *, AllowRepeats)->T * returning nullptr when no values or multiple values were found.
 
template<typename T , typename R , typename Predicate >
std::pair< T *, boolfind_singleton_nested (R &&Range, Predicate P, bool AllowRepeats=false)
 Return a pair consisting of the single value in Range that satisfies P(<member of Range> *, AllowRepeats)->std::pair<T*, bool> returning nullptr when no values or multiple values were found, and a bool indicating whether multiple values were found to cause the nullptr.
 
template<typename R , typename OutputIt >
OutputIt copy (R &&Range, OutputIt Out)
 
template<typename R , typename OutputIt , typename UnaryPredicate , typename T >
OutputIt replace_copy_if (R &&Range, OutputIt Out, UnaryPredicate P, const T &NewValue)
 Provide wrappers to std::replace_copy_if which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename OutputIt , typename T >
OutputIt replace_copy (R &&Range, OutputIt Out, const T &OldValue, const T &NewValue)
 Provide wrappers to std::replace_copy which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename T >
void replace (R &&Range, const T &OldValue, const T &NewValue)
 Provide wrappers to std::replace which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename OutputIt >
OutputIt move (R &&Range, OutputIt Out)
 Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename E >
bool is_contained (R &&Range, const E &Element)
 Returns true if Element is found in Range.
 
template<typename T , typename E >
constexpr bool is_contained (std::initializer_list< T > Set, const E &Element)
 Returns true iff Element exists in Set.
 
template<typename R , typename Compare >
bool is_sorted (R &&Range, Compare C)
 Wrapper function around std::is_sorted to check if elements in a range R are sorted with respect to a comparator C.
 
template<typename R >
bool is_sorted (R &&Range)
 Wrapper function around std::is_sorted to check if elements in a range R are sorted in non-descending order.
 
template<typename R , typename E >
auto count (R &&Range, const E &Element)
 Wrapper function around std::count to count the number of times an element Element occurs in the given range Range.
 
template<typename R , typename UnaryPredicate >
auto count_if (R &&Range, UnaryPredicate P)
 Wrapper function around std::count_if to count the number of times an element satisfying a given predicate occurs in a range.
 
template<typename R , typename OutputIt , typename UnaryFunction >
OutputIt transform (R &&Range, OutputIt d_first, UnaryFunction F)
 Wrapper function around std::transform to apply a function to a range and store the result elsewhere.
 
template<typename R , typename UnaryPredicate >
auto partition (R &&Range, UnaryPredicate P)
 Provide wrappers to std::partition which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename T >
auto binary_search (R &&Range, T &&Value)
 Provide wrappers to std::binary_search which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename T , typename Compare >
auto binary_search (R &&Range, T &&Value, Compare C)
 
template<typename R , typename T >
auto lower_bound (R &&Range, T &&Value)
 Provide wrappers to std::lower_bound which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename T , typename Compare >
auto lower_bound (R &&Range, T &&Value, Compare C)
 
template<typename R , typename T >
auto upper_bound (R &&Range, T &&Value)
 Provide wrappers to std::upper_bound which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename T , typename Compare >
auto upper_bound (R &&Range, T &&Value, Compare C)
 
template<typename R >
auto min_element (R &&Range)
 Provide wrappers to std::min_element which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename Compare >
auto min_element (R &&Range, Compare C)
 
template<typename R >
auto max_element (R &&Range)
 Provide wrappers to std::max_element which take ranges instead of having to pass begin/end explicitly.
 
template<typename R , typename Compare >
auto max_element (R &&Range, Compare C)
 
template<typename R1 , typename R2 >
auto mismatch (R1 &&Range1, R2 &&Range2)
 Provide wrappers to std::mismatch which take ranges instead of having to pass begin/end explicitly.
 
template<typename R >
void stable_sort (R &&Range)
 
template<typename R , typename Compare >
void stable_sort (R &&Range, Compare C)
 
template<typename R , typename Predicate , typename Val = decltype(*adl_begin(std::declval<R>()))>
auto partition_point (R &&Range, Predicate P)
 Binary search for the first iterator in a range where a predicate is false.
 
template<typename Range , typename Predicate >
auto unique (Range &&R, Predicate P)
 
template<typename Range >
auto unique (Range &&R)
 Wrapper function around std::unique to allow calling unique on a container without having to specify the begin/end iterators.
 
template<typename L , typename R >
bool equal (L &&LRange, R &&RRange)
 Wrapper function around std::equal to detect if pair-wise elements between two ranges are the same.
 
template<typename L , typename R , typename BinaryPredicate >
bool equal (L &&LRange, R &&RRange, BinaryPredicate P)
 
template<typename R >
bool all_equal (R &&Range)
 Returns true if all elements in Range are equal or when the Range is empty.
 
template<typename Container , typename UnaryPredicate >
void erase_if (Container &C, UnaryPredicate P)
 Provide a container algorithm similar to C++ Library Fundamentals v2's erase_if which is equivalent to:
 
template<typename Container , typename ValueType >
void erase (Container &C, ValueType V)
 Wrapper function to remove a value from a container:
 
template<typename Container , typename Range >
void append_range (Container &C, Range &&R)
 Wrapper function to append range R to container C.
 
template<typename Container , typename... Args>
void append_values (Container &C, Args &&...Values)
 Appends all Values to container C.
 
template<typename Container , typename RandomAccessIterator >
void replace (Container &Cont, typename Container::iterator ContIt, typename Container::iterator ContEnd, RandomAccessIterator ValIt, RandomAccessIterator ValEnd)
 Given a sequence container Cont, replace the range [ContIt, ContEnd) with the range [ValIt, ValEnd) (which is not from the same container).
 
template<typename Container , typename Range = std::initializer_list< typename Container::value_type>>
void replace (Container &Cont, typename Container::iterator ContIt, typename Container::iterator ContEnd, Range R)
 Given a sequence container Cont, replace the range [ContIt, ContEnd) with the range R.
 
template<typename ForwardIterator , typename UnaryFunctor , typename NullaryFunctor , typename = std::enable_if_t< !std::is_constructible<StringRef, UnaryFunctor>::value && !std::is_constructible<StringRef, NullaryFunctor>::value>>
void interleave (ForwardIterator begin, ForwardIterator end, UnaryFunctor each_fn, NullaryFunctor between_fn)
 An STL-style algorithm similar to std::for_each that applies a second functor between every pair of elements.
 
template<typename Container , typename UnaryFunctor , typename NullaryFunctor , typename = std::enable_if_t< !std::is_constructible<StringRef, UnaryFunctor>::value && !std::is_constructible<StringRef, NullaryFunctor>::value>>
void interleave (const Container &c, UnaryFunctor each_fn, NullaryFunctor between_fn)
 
template<typename Container , typename UnaryFunctor , typename StreamT , typename T = detail::ValueOfRange<Container>>
void interleave (const Container &c, StreamT &os, UnaryFunctor each_fn, const StringRef &separator)
 Overload of interleave for the common case of string separator.
 
template<typename Container , typename StreamT , typename T = detail::ValueOfRange<Container>>
void interleave (const Container &c, StreamT &os, const StringRef &separator)
 
template<typename Container , typename UnaryFunctor , typename StreamT , typename T = detail::ValueOfRange<Container>>
void interleaveComma (const Container &c, StreamT &os, UnaryFunctor each_fn)
 
template<typename Container , typename StreamT , typename T = detail::ValueOfRange<Container>>
void interleaveComma (const Container &c, StreamT &os)
 
template<typename FirstRange , typename... RestRanges>
auto enumerate (FirstRange &&First, RestRanges &&...Rest)
 Given two or more input ranges, returns a new range whose values are tuples (A, B, C, ...), such that A is the 0-based index of the item in the sequence, and B, C, ..., are the values from the original input ranges.
 
template<typename... ArgsAndPredicate>
bool all_of_zip (ArgsAndPredicate &&...argsAndPredicate)
 Compare two zipped ranges using the provided predicate (as last argument).
 
template<typename IterTy , typename Pred = bool (*)(const decltype(*std::declval<IterTy>()) &)>
bool hasNItems (IterTy &&Begin, IterTy &&End, unsigned N, Pred &&ShouldBeCounted=[](const decltype(*std::declval< IterTy >()) &) { return true;}, std::enable_if_t< !std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< std::remove_reference_t< decltype(Begin)> >::iterator_category >::value, void > *=nullptr)
 Return true if the sequence [Begin, End) has exactly N items.
 
template<typename IterTy , typename Pred = bool (*)(const decltype(*std::declval<IterTy>()) &)>
bool hasNItemsOrMore (IterTy &&Begin, IterTy &&End, unsigned N, Pred &&ShouldBeCounted=[](const decltype(*std::declval< IterTy >()) &) { return true;}, std::enable_if_t< !std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< std::remove_reference_t< decltype(Begin)> >::iterator_category >::value, void > *=nullptr)
 Return true if the sequence [Begin, End) has N or more items.
 
template<typename IterTy , typename Pred = bool (*)(const decltype(*std::declval<IterTy>()) &)>
bool hasNItemsOrLess (IterTy &&Begin, IterTy &&End, unsigned N, Pred &&ShouldBeCounted=[](const decltype(*std::declval< IterTy >()) &) { return true;})
 Returns true if the sequence [Begin, End) has N or less items.
 
template<typename ContainerTy >
bool hasNItems (ContainerTy &&C, unsigned N)
 Returns true if the given container has exactly N items.
 
template<typename ContainerTy >
bool hasNItemsOrMore (ContainerTy &&C, unsigned N)
 Returns true if the given container has N or more items.
 
template<typename ContainerTy >
bool hasNItemsOrLess (ContainerTy &&C, unsigned N)
 Returns true if the given container has N or less items.
 
template<class Ptr >
auto to_address (const Ptr &P)
 Returns a raw pointer that represents the same address as the argument.
 
template<class T >
constexpr Tto_address (T *P)
 
template<typename T , typename Function >
auto transformOptional (const std::optional< T > &O, const Function &F) -> std::optional< decltype(F(*O))>
 
template<typename T , typename Function >
auto transformOptional (std::optional< T > &&O, const Function &F) -> std::optional< decltype(F(*std::move(O)))>
 
template<typename Enum >
constexpr std::underlying_type_t< Enum > to_underlying (Enum E)
 Returns underlying integer value of an enum.
 
template<std::size_t Index, typename ValueTy >
decltype(auto) get (StringMapEntry< ValueTy > &E)
 
template<std::size_t Index, typename ValueTy >
decltype(auto) get (const StringMapEntry< ValueTy > &E)
 
bool getAsUnsignedInteger (StringRef Str, unsigned Radix, unsigned long long &Result)
 Helper functions for StringRef::getAsInteger.
 
bool getAsSignedInteger (StringRef Str, unsigned Radix, long long &Result)
 
bool consumeUnsignedInteger (StringRef &Str, unsigned Radix, unsigned long long &Result)
 
bool consumeSignedInteger (StringRef &Str, unsigned Radix, long long &Result)
 
hash_code hash_value (StringRef S)
 Compute a hash_code for a StringRef.
 
raw_ostreamoperator<< (raw_ostream &OS, AliasResult AR)
 << operator for AliasResult.
 
bool isNoAliasCall (const Value *V)
 Return true if this pointer is returned by a noalias function.
 
bool isIdentifiedObject (const Value *V)
 Return true if this pointer refers to a distinct and identifiable object.
 
bool isIdentifiedFunctionLocal (const Value *V)
 Return true if V is umabigously identified at the function-level.
 
bool isBaseOfObject (const Value *V)
 Return true if we know V to the base address of the corresponding memory object.
 
bool isEscapeSource (const Value *V)
 Returns true if the pointer is one which would have been considered an escape by isNonEscapingLocalObject.
 
bool isNotVisibleOnUnwind (const Value *Object, bool &RequiresNoCaptureBeforeUnwind)
 Return true if Object memory is not visible after an unwind, in the sense that program semantics cannot depend on Object containing any particular value on unwind.
 
bool isWritableObject (const Value *Object, bool &ExplicitlyDereferenceableOnly)
 Return true if the Object is writable, in the sense that any location based on this pointer that can be loaded can also be stored to without trapping.
 
ImmutablePasscreateExternalAAWrapperPass (std::function< void(Pass &, Function &, AAResults &)> Callback)
 A wrapper pass around a callback which can be used to populate the AAResults in the AAResultsWrapperPass from an external AA.
 
raw_ostreamoperator<< (raw_ostream &OS, const AliasSet &AS)
 
raw_ostreamoperator<< (raw_ostream &OS, const AliasSetTracker &AST)
 
bool hasAttributeInAssume (AssumeInst &Assume, Value *IsOn, StringRef AttrName, uint64_t *ArgVal=nullptr)
 Query the operand bundle of an llvm.assume to find a single attribute of the specified kind applied on a specified Value.
 
bool hasAttributeInAssume (AssumeInst &Assume, Value *IsOn, Attribute::AttrKind Kind, uint64_t *ArgVal=nullptr)
 
void fillMapFromAssume (AssumeInst &Assume, RetainedKnowledgeMap &Result)
 Insert into the map all the informations contained in the operand bundles of the llvm.assume.
 
RetainedKnowledge getKnowledgeFromOperandInAssume (AssumeInst &Assume, unsigned Idx)
 Retreive the information help by Assume on the operand at index Idx.
 
RetainedKnowledge getKnowledgeFromUseInAssume (const Use *U)
 Retreive the information help by the Use U of an llvm.assume.
 
bool isAssumeWithEmptyBundle (const AssumeInst &Assume)
 Return true iff the operand bundles of the provided llvm.assume doesn't contain any valuable information.
 
RetainedKnowledge getKnowledgeFromUse (const Use *U, ArrayRef< Attribute::AttrKind > AttrKinds)
 Return a valid Knowledge associated to the Use U if its Attribute kind is in AttrKinds.
 
RetainedKnowledge getKnowledgeForValue (const Value *V, ArrayRef< Attribute::AttrKind > AttrKinds, AssumptionCache *AC=nullptr, function_ref< bool(RetainedKnowledge, Instruction *, const CallBase::BundleOpInfo *)> Filter=[](auto...) { return true;})
 Return a valid Knowledge associated to the Value V if its Attribute kind is in AttrKinds and it matches the Filter.
 
RetainedKnowledge getKnowledgeValidInContext (const Value *V, ArrayRef< Attribute::AttrKind > AttrKinds, const Instruction *CtxI, const DominatorTree *DT=nullptr, AssumptionCache *AC=nullptr)
 Return a valid Knowledge associated to the Value V if its Attribute kind is in AttrKinds and the knowledge is suitable to be used in the context of CtxI.
 
RetainedKnowledge getKnowledgeFromBundle (AssumeInst &Assume, const CallBase::BundleOpInfo &BOI)
 This extracts the Knowledge from an element of an operand bundle.
 
FunctionPasscreateBasicAAWrapperPass ()
 
Printable printBlockFreq (const BlockFrequencyInfo &BFI, BlockFrequency Freq)
 Print the block frequency Freq relative to the current functions entry frequency.
 
Printable printBlockFreq (const BlockFrequencyInfo &BFI, const BasicBlock &BB)
 Convenience function equivalent to calling printBlockFreq(BFI, BFI.getBlocakFreq(&BB)).
 
uint32_t getWeightFromBranchProb (const BranchProbability Prob)
 
void initializeDummyCGSCCPassPass (PassRegistry &)
 
ModulePasscreateCallGraphViewerPass ()
 
ModulePasscreateCallGraphDOTPrinterPass ()
 
unsigned getDefaultMaxUsesToExploreForCaptureTracking ()
 getDefaultMaxUsesToExploreForCaptureTracking - Return default value of the maximal number of uses to explore before giving up.
 
bool PointerMayBeCaptured (const Value *V, bool ReturnCaptures, bool StoreCaptures, unsigned MaxUsesToExplore=0)
 PointerMayBeCaptured - Return true if this pointer value may be captured by the enclosing function (which is required to exist).
 
bool PointerMayBeCapturedBefore (const Value *V, bool ReturnCaptures, bool StoreCaptures, const Instruction *I, const DominatorTree *DT, bool IncludeI=false, unsigned MaxUsesToExplore=0, const LoopInfo *LI=nullptr)
 PointerMayBeCapturedBefore - Return true if this pointer value may be captured by the enclosing function (which is required to exist).
 
InstructionFindEarliestCapture (const Value *V, Function &F, bool ReturnCaptures, bool StoreCaptures, const DominatorTree &DT, unsigned MaxUsesToExplore=0)
 
UseCaptureKind DetermineUseCaptureKind (const Use &U, llvm::function_ref< bool(Value *, const DataLayout &)> IsDereferenceableOrNull)
 Determine what kind of capture behaviour U may exhibit.
 
void PointerMayBeCaptured (const Value *V, CaptureTracker *Tracker, unsigned MaxUsesToExplore=0)
 PointerMayBeCaptured - Visit the value and the values derived from it and find values which appear to be capturing the pointer value.
 
bool isNonEscapingLocalObject (const Value *V, SmallDenseMap< const Value *, bool, 8 > *IsCapturedCache=nullptr)
 Returns true if the pointer is to a function-local object that never escapes from the function.
 
void FindFunctionBackedges (const Function &F, SmallVectorImpl< std::pair< const BasicBlock *, const BasicBlock * > > &Result)
 Analyze the specified function to find all of the loop backedges in the function and return them.
 
unsigned GetSuccessorNumber (const BasicBlock *BB, const BasicBlock *Succ)
 Search for the specified successor of basic block BB and return its position in the terminator instruction's list of successors.
 
bool isCriticalEdge (const Instruction *TI, unsigned SuccNum, bool AllowIdenticalEdges=false)
 Return true if the specified edge is a critical edge.
 
bool isCriticalEdge (const Instruction *TI, const BasicBlock *Succ, bool AllowIdenticalEdges=false)
 
bool isPotentiallyReachable (const Instruction *From, const Instruction *To, const SmallPtrSetImpl< BasicBlock * > *ExclusionSet=nullptr, const DominatorTree *DT=nullptr, const LoopInfo *LI=nullptr)
 Determine whether instruction 'To' is reachable from 'From', without passing through any blocks in ExclusionSet, returning true if uncertain.
 
bool isPotentiallyReachable (const BasicBlock *From, const BasicBlock *To, const SmallPtrSetImpl< BasicBlock * > *ExclusionSet=nullptr, const DominatorTree *DT=nullptr, const LoopInfo *LI=nullptr)
 Determine whether block 'To' is reachable from 'From', returning true if uncertain.
 
bool isPotentiallyReachableFromMany (SmallVectorImpl< BasicBlock * > &Worklist, const BasicBlock *StopBB, const SmallPtrSetImpl< BasicBlock * > *ExclusionSet, const DominatorTree *DT=nullptr, const LoopInfo *LI=nullptr)
 Determine whether there is at least one path from a block in 'Worklist' to 'StopBB' without passing through any blocks in 'ExclusionSet', returning true if uncertain.
 
bool isManyPotentiallyReachableFromMany (SmallVectorImpl< BasicBlock * > &Worklist, const SmallPtrSetImpl< const BasicBlock * > &StopSet, const SmallPtrSetImpl< BasicBlock * > *ExclusionSet, const DominatorTree *DT=nullptr, const LoopInfo *LI=nullptr)
 Determine whether there is a potentially a path from at least one block in 'Worklist' to at least one block in 'StopSet' within a single function without passing through any of the blocks in 'ExclusionSet'.
 
template<class NodeT , class RPOTraversalT , class LoopInfoT , class GT = GraphTraits<NodeT>>
bool containsIrreducibleCFG (RPOTraversalT &RPOTraversal, const LoopInfoT &LI)
 Return true if the control flow in RPOTraversal is irreducible.
 
template<typename BasicBlockT >
std::string SimpleNodeLabelString (const BasicBlockT *Node)
 
template<typename BasicBlockT >
std::string CompleteNodeLabelString (const BasicBlockT *Node, function_ref< void(raw_string_ostream &, const BasicBlockT &)> HandleBasicBlock, function_ref< void(std::string &, unsigned &, unsigned)> HandleComment)
 
template<typename CGSCCPassT >
ModuleToPostOrderCGSCCPassAdaptor createModuleToPostOrderCGSCCPassAdaptor (CGSCCPassT &&Pass)
 A function to deduce a function pass type and wrap it in the templated adaptor.
 
LazyCallGraph::SCCupdateCGAndAnalysisManagerForFunctionPass (LazyCallGraph &G, LazyCallGraph::SCC &C, LazyCallGraph::Node &N, CGSCCAnalysisManager &AM, CGSCCUpdateResult &UR, FunctionAnalysisManager &FAM)
 Helper to update the call graph after running a function pass.
 
LazyCallGraph::SCCupdateCGAndAnalysisManagerForCGSCCPass (LazyCallGraph &G, LazyCallGraph::SCC &C, LazyCallGraph::Node &N, CGSCCAnalysisManager &AM, CGSCCUpdateResult &UR, FunctionAnalysisManager &FAM)
 Helper to update the call graph after running a CGSCC pass.
 
template<typename FunctionPassT >
CGSCCToFunctionPassAdaptor createCGSCCToFunctionPassAdaptor (FunctionPassT &&Pass, bool EagerlyInvalidate=false, bool NoRerun=false)
 A function to deduce a function pass type and wrap it in the templated adaptor.
 
template<typename CGSCCPassT >
DevirtSCCRepeatedPass createDevirtSCCRepeatedPass (CGSCCPassT &&Pass, int MaxIterations)
 A function to deduce a function pass type and wrap it in the templated adaptor.
 
unsigned getICmpCode (CmpInst::Predicate Pred)
 Encode a icmp predicate into a three bit mask.
 
ConstantgetPredForICmpCode (unsigned Code, bool Sign, Type *OpTy, CmpInst::Predicate &Pred)
 This is the complement of getICmpCode.
 
bool predicatesFoldable (CmpInst::Predicate P1, CmpInst::Predicate P2)
 Return true if both predicates match sign or if at least one of them is an equality comparison (which is signless).
 
unsigned getFCmpCode (CmpInst::Predicate CC)
 Similar to getICmpCode but for FCmpInst.
 
ConstantgetPredForFCmpCode (unsigned Code, Type *OpTy, CmpInst::Predicate &Pred)
 This is the complement of getFCmpCode.
 
std::optional< DecomposedBitTestdecomposeBitTestICmp (Value *LHS, Value *RHS, CmpInst::Predicate Pred, bool LookThroughTrunc=true, bool AllowNonZeroC=false)
 Decompose an icmp into the form ((X & Mask) pred C) if possible.
 
bool IsConstantOffsetFromGlobal (Constant *C, GlobalValue *&GV, APInt &Offset, const DataLayout &DL, DSOLocalEquivalent **DSOEquiv=nullptr)
 If this constant is a constant offset from a global, return the global and the constant.
 
ConstantConstantFoldInstruction (Instruction *I, const DataLayout &DL, const TargetLibraryInfo *TLI=nullptr)
 ConstantFoldInstruction - Try to constant fold the specified instruction.
 
ConstantConstantFoldConstant (const Constant *C, const DataLayout &DL, const TargetLibraryInfo *TLI=nullptr)
 ConstantFoldConstant - Fold the constant using the specified DataLayout.
 
ConstantConstantFoldInstOperands (Instruction *I, ArrayRef< Constant * > Ops, const DataLayout &DL, const TargetLibraryInfo *TLI=nullptr, bool AllowNonDeterministic=true)
 ConstantFoldInstOperands - Attempt to constant fold an instruction with the specified operands.
 
ConstantConstantFoldCompareInstOperands (unsigned Predicate, Constant *LHS, Constant *RHS, const DataLayout &DL, const TargetLibraryInfo *TLI=nullptr, const Instruction *I=nullptr)
 Attempt to constant fold a compare instruction (icmp/fcmp) with the specified operands.
 
ConstantConstantFoldUnaryOpOperand (unsigned Opcode, Constant *Op, const DataLayout &DL)
 Attempt to constant fold a unary operation with the specified operand.
 
ConstantConstantFoldBinaryOpOperands (unsigned Opcode, Constant *LHS, Constant *RHS, const DataLayout &DL)
 Attempt to constant fold a binary operation with the specified operands.
 
ConstantConstantFoldFPInstOperands (unsigned Opcode, Constant *LHS, Constant *RHS, const DataLayout &DL, const Instruction *I, bool AllowNonDeterministic=true)
 Attempt to constant fold a floating point binary operation with the specified operands, applying the denormal handling mod to the operands.
 
ConstantFlushFPConstant (Constant *Operand, const Instruction *I, bool IsOutput)
 Attempt to flush float point constant according to denormal mode set in the instruction's parent function attributes.
 
ConstantConstantFoldSelectInstruction (Constant *Cond, Constant *V1, Constant *V2)
 Attempt to constant fold a select instruction with the specified operands.
 
ConstantConstantFoldCastOperand (unsigned Opcode, Constant *C, Type *DestTy, const DataLayout &DL)
 Attempt to constant fold a cast with the specified operand.
 
ConstantConstantFoldIntegerCast (Constant *C, Type *DestTy, bool IsSigned, const DataLayout &DL)
 Constant fold a zext, sext or trunc, depending on IsSigned and whether the DestTy is wider or narrower than C.
 
ConstantConstantFoldInsertValueInstruction (Constant *Agg, Constant *Val, ArrayRef< unsigned > Idxs)
 ConstantFoldInsertValueInstruction - Attempt to constant fold an insertvalue instruction with the specified operands and indices.
 
ConstantConstantFoldExtractValueInstruction (Constant *Agg, ArrayRef< unsigned > Idxs)
 Attempt to constant fold an extractvalue instruction with the specified operands and indices.
 
ConstantConstantFoldInsertElementInstruction (Constant *Val, Constant *Elt, Constant *Idx)
 Attempt to constant fold an insertelement instruction with the specified operands and indices.
 
ConstantConstantFoldExtractElementInstruction (Constant *Val, Constant *Idx)
 Attempt to constant fold an extractelement instruction with the specified operands and indices.
 
ConstantConstantFoldShuffleVectorInstruction (Constant *V1, Constant *V2, ArrayRef< int > Mask)
 Attempt to constant fold a shufflevector instruction with the specified operands and mask.
 
ConstantConstantFoldLoadFromConst (Constant *C, Type *Ty, const APInt &Offset, const DataLayout &DL)
 Extract value of C at the given Offset reinterpreted as Ty.
 
ConstantConstantFoldLoadFromConst (Constant *C, Type *Ty, const DataLayout &DL)
 Extract value of C reinterpreted as Ty.
 
ConstantConstantFoldLoadFromConstPtr (Constant *C, Type *Ty, APInt Offset, const DataLayout &DL)
 Return the value that a load from C with offset Offset would produce if it is constant and determinable.
 
ConstantConstantFoldLoadFromConstPtr (Constant *C, Type *Ty, const DataLayout &DL)
 Return the value that a load from C would produce if it is constant and determinable.
 
ConstantConstantFoldLoadFromUniformValue (Constant *C, Type *Ty, const DataLayout &DL)
 If C is a uniform value where all bits are the same (either all zero, all ones, all undef or all poison), return the corresponding uniform value in the new type.
 
bool canConstantFoldCallTo (const CallBase *Call, const Function *F)
 canConstantFoldCallTo - Return true if its even possible to fold a call to the specified function.
 
ConstantConstantFoldCall (const CallBase *Call, Function *F, ArrayRef< Constant * > Operands, const TargetLibraryInfo *TLI=nullptr, bool AllowNonDeterministic=true)
 ConstantFoldCall - Attempt to constant fold a call to the specified function with the specified arguments, returning null if unsuccessful.
 
ConstantConstantFoldBinaryIntrinsic (Intrinsic::ID ID, Constant *LHS, Constant *RHS, Type *Ty, Instruction *FMFSource)
 
ConstantConstantFoldLoadThroughBitcast (Constant *C, Type *DestTy, const DataLayout &DL)
 ConstantFoldLoadThroughBitcast - try to cast constant to destination type returning null if unsuccessful.
 
bool isMathLibCallNoop (const CallBase *Call, const TargetLibraryInfo *TLI)
 Check whether the given call has no side-effects.
 
ConstantReadByteArrayFromGlobal (const GlobalVariable *GV, uint64_t Offset)
 
raw_ostreamoperator<< (raw_ostream &OS, const DDGNode &N)
 
raw_ostreamoperator<< (raw_ostream &OS, const DDGNode::NodeKind K)
 
raw_ostreamoperator<< (raw_ostream &OS, const DDGEdge &E)
 
raw_ostreamoperator<< (raw_ostream &OS, const DDGEdge::EdgeKind K)
 
raw_ostreamoperator<< (raw_ostream &OS, const DataDependenceGraph &G)
 
void findArrayDimensions (ScalarEvolution &SE, SmallVectorImpl< const SCEV * > &Terms, SmallVectorImpl< const SCEV * > &Sizes, const SCEV *ElementSize)
 Compute the array dimensions Sizes from the set of Terms extracted from the memory access function of this SCEVAddRecExpr (second step of delinearization).
 
void collectParametricTerms (ScalarEvolution &SE, const SCEV *Expr, SmallVectorImpl< const SCEV * > &Terms)
 Collect parametric terms occurring in step expressions (first step of delinearization).
 
void computeAccessFunctions (ScalarEvolution &SE, const SCEV *Expr, SmallVectorImpl< const SCEV * > &Subscripts, SmallVectorImpl< const SCEV * > &Sizes)
 Return in Subscripts the access functions for each dimension in Sizes (third step of delinearization).
 
void delinearize (ScalarEvolution &SE, const SCEV *Expr, SmallVectorImpl< const SCEV * > &Subscripts, SmallVectorImpl< const SCEV * > &Sizes, const SCEV *ElementSize)
 Split this SCEVAddRecExpr into two vectors of SCEVs representing the subscripts and sizes of an array access.
 
bool getIndexExpressionsFromGEP (ScalarEvolution &SE, const GetElementPtrInst *GEP, SmallVectorImpl< const SCEV * > &Subscripts, SmallVectorImpl< int > &Sizes)
 Gathers the individual index expressions from a GEP instruction.
 
bool tryDelinearizeFixedSizeImpl (ScalarEvolution *SE, Instruction *Inst, const SCEV *AccessFn, SmallVectorImpl< const SCEV * > &Subscripts, SmallVectorImpl< int > &Sizes)
 Implementation of fixed size array delinearization.
 
FunctionPasscreateDependenceAnalysisWrapperPass ()
 createDependenceAnalysisPass - This creates an instance of the DependenceAnalysis wrapper pass.
 
FunctionPasscreateDomPrinterWrapperPassPass ()
 
FunctionPasscreateDomOnlyPrinterWrapperPassPass ()
 
FunctionPasscreateDomViewerWrapperPassPass ()
 
FunctionPasscreateDomOnlyViewerWrapperPassPass ()
 
FunctionPasscreatePostDomPrinterWrapperPassPass ()
 
FunctionPasscreatePostDomOnlyPrinterWrapperPassPass ()
 
FunctionPasscreatePostDomViewerWrapperPassPass ()
 
FunctionPasscreatePostDomOnlyViewerWrapperPassPass ()
 
template<typename GraphT >
void viewGraphForFunction (Function &F, GraphT Graph, StringRef Name, bool IsSimple)
 
static void shortenFileName (std::string &FN, unsigned char len=250)
 
template<typename GraphT >
void printGraphForFunction (Function &F, GraphT Graph, StringRef Name, bool IsSimple)
 
template<typename GraphT >
void WriteDOTGraphToFile (Function &F, GraphT &&Graph, std::string FileNamePrefix, bool IsSimple)
 
ModulePasscreateDXILResourceTypeWrapperPassPass ()
 
ModulePasscreateDXILResourceBindingWrapperPassPass ()
 
template<typename FunctionT , typename BlockT >
static void computeEHOnlyBlocks (FunctionT &F, DenseSet< BlockT * > &EHBlocks)
 Compute a list of blocks that are only reachable via EH paths.
 
ModulePasscreateGlobalsAAWrapperPass ()
 
bool isGuard (const User *U)
 Returns true iff U has semantics of a guard expressed in a form of call of llvm.experimental.guard intrinsic.
 
bool isWidenableCondition (const Value *V)
 Returns true iff V has semantics of llvm.experimental.widenable.condition call.
 
bool isWidenableBranch (const User *U)
 Returns true iff U is a widenable branch (that is, extractWidenableCondition returns widenable condition).
 
bool isGuardAsWidenableBranch (const User *U)
 Returns true iff U has semantics of a guard expressed in a form of a widenable conditional branch to deopt block.
 
bool parseWidenableBranch (const User *U, Value *&Condition, Value *&WidenableCondition, BasicBlock *&IfTrueBB, BasicBlock *&IfFalseBB)
 If U is widenable branch looking like: cond = ... wc = call i1 @llvm.experimental.widenable.condition() branch_cond = and i1 cond, wc br i1 branch_cond, label if_true_bb, label if_false_bb ; <— U The function returns true, and the values cond and wc and blocks if_true_bb, if_false_bb are returned in the parameters (Condition, WidenableCondition, IfTrueBB and IfFalseFF) respectively.
 
bool parseWidenableBranch (User *U, Use *&Cond, Use *&WC, BasicBlock *&IfTrueBB, BasicBlock *&IfFalseBB)
 Analogous to the above, but return the Uses so that they can be modified.
 
void parseWidenableGuard (const User *U, llvm::SmallVectorImpl< Value * > &Checks)
 
ValueextractWidenableCondition (const User *U)
 
uint64_t getNumOfCalls (Function &callerFunction, Function &calledFunction)
 
uint64_t getMaxFreq (const Function &F, const BlockFrequencyInfo *BFI)
 
std::string getHeatColor (uint64_t freq, uint64_t maxFreq)
 
std::string getHeatColor (double percent)
 
std::vector< CallBase * > findIndirectCalls (Function &F)
 
std::vector< Instruction * > findVTableAddrs (Function &F)
 
std::string AnnotateInlinePassName (InlineContext IC)
 
std::unique_ptr< InlineAdvisorgetReleaseModeAdvisor (Module &M, ModuleAnalysisManager &MAM, std::function< bool(CallBase &)> GetDefaultAdvice)
 
std::unique_ptr< InlineAdvisorgetDevelopmentModeAdvisor (Module &M, ModuleAnalysisManager &MAM, std::function< bool(CallBase &)> GetDefaultAdvice)
 
std::optional< InlineCostshouldInline (CallBase &CB, TargetTransformInfo &CalleeTTI, function_ref< InlineCost(CallBase &CB)> GetInlineCost, OptimizationRemarkEmitter &ORE, bool EnableDeferral=true)
 Return the cost only if the inliner should attempt to inline at the given CallSite.
 
void emitInlinedInto (OptimizationRemarkEmitter &ORE, DebugLoc DLoc, const BasicBlock *Block, const Function &Callee, const Function &Caller, bool IsMandatory, function_ref< void(OptimizationRemark &)> ExtraContext={}, const char *PassName=nullptr)
 Emit ORE message.
 
void emitInlinedIntoBasedOnCost (OptimizationRemarkEmitter &ORE, DebugLoc DLoc, const BasicBlock *Block, const Function &Callee, const Function &Caller, const InlineCost &IC, bool ForProfileContext=false, const char *PassName=nullptr)
 Emit ORE message based in cost (default heuristic).
 
void addLocationToRemarks (OptimizationRemark &Remark, DebugLoc DLoc)
 Add location info to ORE message.
 
void setInlineRemark (CallBase &CB, StringRef Message)
 Set the inline-remark attribute.
 
std::string inlineCostStr (const InlineCost &IC)
 Utility for extracting the inline cost message to a string.
 
std::optional< int > getStringFnAttrAsInt (CallBase &CB, StringRef AttrKind)
 
InlineParams getInlineParams ()
 Generate the parameters to tune the inline cost analysis based only on the commandline options.
 
InlineParams getInlineParams (int Threshold)
 Generate the parameters to tune the inline cost analysis based on command line options.
 
InlineParams getInlineParams (unsigned OptLevel, unsigned SizeOptLevel)
 Generate the parameters to tune the inline cost analysis based on command line options.
 
int getCallsiteCost (const TargetTransformInfo &TTI, const CallBase &Call, const DataLayout &DL)
 Return the cost associated with a callsite, including parameter passing and the call/return instruction.
 
InlineCost getInlineCost (CallBase &Call, const InlineParams &Params, TargetTransformInfo &CalleeTTI, function_ref< AssumptionCache &(Function &)> GetAssumptionCache, function_ref< const TargetLibraryInfo &(Function &)> GetTLI, function_ref< BlockFrequencyInfo &(Function &)> GetBFI=nullptr, ProfileSummaryInfo *PSI=nullptr, OptimizationRemarkEmitter *ORE=nullptr)
 Get an InlineCost object representing the cost of inlining this callsite.
 
InlineCost getInlineCost (CallBase &Call, Function *Callee, const InlineParams &Params, TargetTransformInfo &CalleeTTI, function_ref< AssumptionCache &(Function &)> GetAssumptionCache, function_ref< const TargetLibraryInfo &(Function &)> GetTLI, function_ref< BlockFrequencyInfo &(Function &)> GetBFI=nullptr, ProfileSummaryInfo *PSI=nullptr, OptimizationRemarkEmitter *ORE=nullptr)
 Get an InlineCost with the callee explicitly specified.
 
std::optional< InlineResultgetAttributeBasedInliningDecision (CallBase &Call, Function *Callee, TargetTransformInfo &CalleeTTI, function_ref< const TargetLibraryInfo &(Function &)> GetTLI)
 Returns InlineResult::success() if the call site should be always inlined because of user directives, and the inlining is viable.
 
std::optional< int > getInliningCostEstimate (CallBase &Call, TargetTransformInfo &CalleeTTI, function_ref< AssumptionCache &(Function &)> GetAssumptionCache, function_ref< BlockFrequencyInfo &(Function &)> GetBFI=nullptr, function_ref< const TargetLibraryInfo &(Function &)> GetTLI=nullptr, ProfileSummaryInfo *PSI=nullptr, OptimizationRemarkEmitter *ORE=nullptr)
 Get the cost estimate ignoring thresholds.
 
std::optional< InlineCostFeaturesgetInliningCostFeatures (CallBase &Call, TargetTransformInfo &CalleeTTI, function_ref< AssumptionCache &(Function &)> GetAssumptionCache, function_ref< BlockFrequencyInfo &(Function &)> GetBFI=nullptr, function_ref< const TargetLibraryInfo &(Function &)> GetTLI=nullptr, ProfileSummaryInfo *PSI=nullptr, OptimizationRemarkEmitter *ORE=nullptr)
 Get the expanded cost features.
 
InlineResult isInlineViable (Function &Callee)
 Minimal filter to detect invalid constructs for inlining.
 
constexpr bool isHeuristicInlineCostFeature (InlineCostFeatureIndex Feature)
 
constexpr FeatureIndex inlineCostFeatureToMlFeature (InlineCostFeatureIndex Feature)
 
std::unique_ptr< InlineOrder< std::pair< CallBase *, int > > > getDefaultInlineOrder (FunctionAnalysisManager &FAM, const InlineParams &Params, ModuleAnalysisManager &MAM, Module &M)
 
std::unique_ptr< InlineOrder< std::pair< CallBase *, int > > > getInlineOrder (FunctionAnalysisManager &FAM, const InlineParams &Params, ModuleAnalysisManager &MAM, Module &M)
 
ValuesimplifyAddInst (Value *LHS, Value *RHS, bool IsNSW, bool IsNUW, const SimplifyQuery &Q)
 Given operands for an Add, fold the result or return null.
 
ValuesimplifySubInst (Value *LHS, Value *RHS, bool IsNSW, bool IsNUW, const SimplifyQuery &Q)
 Given operands for a Sub, fold the result or return null.
 
ValuesimplifyMulInst (Value *LHS, Value *RHS, bool IsNSW, bool IsNUW, const SimplifyQuery &Q)
 Given operands for a Mul, fold the result or return null.
 
ValuesimplifySDivInst (Value *LHS, Value *RHS, bool IsExact, const SimplifyQuery &Q)
 Given operands for an SDiv, fold the result or return null.
 
ValuesimplifyUDivInst (Value *LHS, Value *RHS, bool IsExact, const SimplifyQuery &Q)
 Given operands for a UDiv, fold the result or return null.
 
ValuesimplifySRemInst (Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for an SRem, fold the result or return null.
 
ValuesimplifyURemInst (Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for a URem, fold the result or return null.
 
ValuesimplifyFNegInst (Value *Op, FastMathFlags FMF, const SimplifyQuery &Q)
 Given operand for an FNeg, fold the result or return null.
 
ValuesimplifyFAddInst (Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q, fp::ExceptionBehavior ExBehavior=fp::ebIgnore, RoundingMode Rounding=RoundingMode::NearestTiesToEven)
 Given operands for an FAdd, fold the result or return null.
 
ValuesimplifyFSubInst (Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q, fp::ExceptionBehavior ExBehavior=fp::ebIgnore, RoundingMode Rounding=RoundingMode::NearestTiesToEven)
 Given operands for an FSub, fold the result or return null.
 
ValuesimplifyFMulInst (Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q, fp::ExceptionBehavior ExBehavior=fp::ebIgnore, RoundingMode Rounding=RoundingMode::NearestTiesToEven)
 Given operands for an FMul, fold the result or return null.
 
ValuesimplifyFMAFMul (Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q, fp::ExceptionBehavior ExBehavior=fp::ebIgnore, RoundingMode Rounding=RoundingMode::NearestTiesToEven)
 Given operands for the multiplication of a FMA, fold the result or return null.
 
ValuesimplifyFDivInst (Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q, fp::ExceptionBehavior ExBehavior=fp::ebIgnore, RoundingMode Rounding=RoundingMode::NearestTiesToEven)
 Given operands for an FDiv, fold the result or return null.
 
ValuesimplifyFRemInst (Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q, fp::ExceptionBehavior ExBehavior=fp::ebIgnore, RoundingMode Rounding=RoundingMode::NearestTiesToEven)
 Given operands for an FRem, fold the result or return null.
 
ValuesimplifyShlInst (Value *Op0, Value *Op1, bool IsNSW, bool IsNUW, const SimplifyQuery &Q)
 Given operands for a Shl, fold the result or return null.
 
ValuesimplifyLShrInst (Value *Op0, Value *Op1, bool IsExact, const SimplifyQuery &Q)
 Given operands for a LShr, fold the result or return null.
 
ValuesimplifyAShrInst (Value *Op0, Value *Op1, bool IsExact, const SimplifyQuery &Q)
 Given operands for a AShr, fold the result or return nulll.
 
ValuesimplifyAndInst (Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for an And, fold the result or return null.
 
ValuesimplifyOrInst (Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for an Or, fold the result or return null.
 
ValuesimplifyXorInst (Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for an Xor, fold the result or return null.
 
ValuesimplifyICmpInst (CmpPredicate Pred, Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for an ICmpInst, fold the result or return null.
 
ValuesimplifyFCmpInst (CmpPredicate Predicate, Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q)
 Given operands for an FCmpInst, fold the result or return null.
 
ValuesimplifySelectInst (Value *Cond, Value *TrueVal, Value *FalseVal, const SimplifyQuery &Q)
 Given operands for a SelectInst, fold the result or return null.
 
ValuesimplifyGEPInst (Type *SrcTy, Value *Ptr, ArrayRef< Value * > Indices, GEPNoWrapFlags NW, const SimplifyQuery &Q)
 Given operands for a GetElementPtrInst, fold the result or return null.
 
ValuesimplifyInsertValueInst (Value *Agg, Value *Val, ArrayRef< unsigned > Idxs, const SimplifyQuery &Q)
 Given operands for an InsertValueInst, fold the result or return null.
 
ValuesimplifyInsertElementInst (Value *Vec, Value *Elt, Value *Idx, const SimplifyQuery &Q)
 Given operands for an InsertElement, fold the result or return null.
 
ValuesimplifyExtractValueInst (Value *Agg, ArrayRef< unsigned > Idxs, const SimplifyQuery &Q)
 Given operands for an ExtractValueInst, fold the result or return null.
 
ValuesimplifyExtractElementInst (Value *Vec, Value *Idx, const SimplifyQuery &Q)
 Given operands for an ExtractElementInst, fold the result or return null.
 
ValuesimplifyCastInst (unsigned CastOpc, Value *Op, Type *Ty, const SimplifyQuery &Q)
 Given operands for a CastInst, fold the result or return null.
 
ValuesimplifyBinaryIntrinsic (Intrinsic::ID IID, Type *ReturnType, Value *Op0, Value *Op1, const SimplifyQuery &Q, const CallBase *Call)
 Given operands for a BinaryIntrinsic, fold the result or return null.
 
ValuesimplifyShuffleVectorInst (Value *Op0, Value *Op1, ArrayRef< int > Mask, Type *RetTy, const SimplifyQuery &Q)
 Given operands for a ShuffleVectorInst, fold the result or return null.
 
ValuesimplifyCmpInst (CmpPredicate Predicate, Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for a CmpInst, fold the result or return null.
 
ValuesimplifyUnOp (unsigned Opcode, Value *Op, const SimplifyQuery &Q)
 Given operand for a UnaryOperator, fold the result or return null.
 
ValuesimplifyUnOp (unsigned Opcode, Value *Op, FastMathFlags FMF, const SimplifyQuery &Q)
 Given operand for a UnaryOperator, fold the result or return null.
 
ValuesimplifyBinOp (unsigned Opcode, Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for a BinaryOperator, fold the result or return null.
 
ValuesimplifyBinOp (unsigned Opcode, Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q)
 Given operands for a BinaryOperator, fold the result or return null.
 
ValuesimplifyCall (CallBase *Call, Value *Callee, ArrayRef< Value * > Args, const SimplifyQuery &Q)
 Given a callsite, callee, and arguments, fold the result or return null.
 
ValuesimplifyConstrainedFPCall (CallBase *Call, const SimplifyQuery &Q)
 Given a constrained FP intrinsic call, tries to compute its simplified version.
 
ValuesimplifyFreezeInst (Value *Op, const SimplifyQuery &Q)
 Given an operand for a Freeze, see if we can fold the result.
 
ValuesimplifyLoadInst (LoadInst *LI, Value *PtrOp, const SimplifyQuery &Q)
 Given a load instruction and its pointer operand, fold the result or return null.
 
ValuesimplifyInstruction (Instruction *I, const SimplifyQuery &Q)
 See if we can compute a simplified version of this instruction.
 
ValuesimplifyInstructionWithOperands (Instruction *I, ArrayRef< Value * > NewOps, const SimplifyQuery &Q)
 Like simplifyInstruction but the operands of I are replaced with NewOps.
 
ValuesimplifyWithOpReplaced (Value *V, Value *Op, Value *RepOp, const SimplifyQuery &Q, bool AllowRefinement, SmallVectorImpl< Instruction * > *DropFlags=nullptr)
 See if V simplifies when its operand Op is replaced with RepOp.
 
bool replaceAndRecursivelySimplify (Instruction *I, Value *SimpleV, const TargetLibraryInfo *TLI=nullptr, const DominatorTree *DT=nullptr, AssumptionCache *AC=nullptr, SmallSetVector< Instruction *, 8 > *UnsimplifiedUsers=nullptr)
 Replace all uses of 'I' with 'SimpleV' and simplify the uses recursively.
 
const SimplifyQuery getBestSimplifyQuery (Pass &, Function &)
 
template<class T , class... TArgs>
const SimplifyQuery getBestSimplifyQuery (AnalysisManager< T, TArgs... > &, Function &)
 
const SimplifyQuery getBestSimplifyQuery (LoopStandardAnalysisResults &, const DataLayout &)
 
PasscreateIVUsersPass ()
 
void initializeLazyBFIPassPass (PassRegistry &Registry)
 Helper for client passes to initialize dependent passes for LBFI.
 
void initializeLazyBPIPassPass (PassRegistry &Registry)
 Helper for client passes to initialize dependent passes for LBPI.
 
void lintModule (const Module &M)
 Lint a module.
 
void lintFunction (const Function &F)
 lintFunction - Check a function for errors, printing messages on stderr.
 
bool isDereferenceablePointer (const Value *V, Type *Ty, const DataLayout &DL, const Instruction *CtxI=nullptr, AssumptionCache *AC=nullptr, const DominatorTree *DT=nullptr, const TargetLibraryInfo *TLI=nullptr)
 Return true if this is always a dereferenceable pointer.
 
bool isDereferenceableAndAlignedPointer (const Value *V, Type *Ty, Align Alignment, const DataLayout &DL, const Instruction *CtxI=nullptr, AssumptionCache *AC=nullptr, const DominatorTree *DT=nullptr, const TargetLibraryInfo *TLI=nullptr)
 Returns true if V is always a dereferenceable pointer with alignment greater or equal than requested.
 
bool isDereferenceableAndAlignedPointer (const Value *V, Align Alignment, const APInt &Size, const DataLayout &DL, const Instruction *CtxI=nullptr, AssumptionCache *AC=nullptr, const DominatorTree *DT=nullptr, const TargetLibraryInfo *TLI=nullptr)
 Returns true if V is always dereferenceable for Size byte with alignment greater or equal than requested.
 
bool isSafeToLoadUnconditionally (Value *V, Align Alignment, const APInt &Size, const DataLayout &DL, Instruction *ScanFrom, AssumptionCache *AC=nullptr, const DominatorTree *DT=nullptr, const TargetLibraryInfo *TLI=nullptr)
 Return true if we know that executing a load from this value cannot trap.
 
bool isDereferenceableAndAlignedInLoop (LoadInst *LI, Loop *L, ScalarEvolution &SE, DominatorTree &DT, AssumptionCache *AC=nullptr, SmallVectorImpl< const SCEVPredicate * > *Predicates=nullptr)
 Return true if we can prove that the given load (which is assumed to be within the specified loop) would access only dereferenceable memory, and be properly aligned on every iteration of the specified loop regardless of its placement within the loop.
 
bool isDereferenceableReadOnlyLoop (Loop *L, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC, SmallVectorImpl< const SCEVPredicate * > *Predicates=nullptr)
 Return true if the loop L cannot fault on any iteration and only contains read-only memory accesses.
 
bool isSafeToLoadUnconditionally (Value *V, Type *Ty, Align Alignment, const DataLayout &DL, Instruction *ScanFrom, AssumptionCache *AC=nullptr, const DominatorTree *DT=nullptr, const TargetLibraryInfo *TLI=nullptr)
 Return true if we know that executing a load from this value cannot trap.
 
bool mustSuppressSpeculation (const LoadInst &LI)
 Return true if speculation of the given load must be suppressed to avoid ordering or interfering with an active sanitizer.
 
ValueFindAvailableLoadedValue (LoadInst *Load, BasicBlock *ScanBB, BasicBlock::iterator &ScanFrom, unsigned MaxInstsToScan=DefMaxInstsToScan, BatchAAResults *AA=nullptr, bool *IsLoadCSE=nullptr, unsigned *NumScanedInst=nullptr)
 Scan backwards to see if we have the value of the given load available locally within a small number of instructions.
 
ValueFindAvailableLoadedValue (LoadInst *Load, BatchAAResults &AA, bool *IsLoadCSE, unsigned MaxInstsToScan=DefMaxInstsToScan)
 This overload provides a more efficient implementation of FindAvailableLoadedValue() for the case where we are not interested in finding the closest clobbering instruction if no available load is found.
 
ValuefindAvailablePtrLoadStore (const MemoryLocation &Loc, Type *AccessTy, bool AtLeastAtomic, BasicBlock *ScanBB, BasicBlock::iterator &ScanFrom, unsigned MaxInstsToScan, BatchAAResults *AA, bool *IsLoadCSE, unsigned *NumScanedInst)
 Scan backwards to see if we have the value of the given pointer available locally within a small number of instructions.
 
bool canReplacePointersIfEqual (const Value *From, const Value *To, const DataLayout &DL)
 Returns true if a pointer value From can be replaced with another pointer value \To if they are deemed equal through some means (e.g.
 
bool canReplacePointersInUseIfEqual (const Use &U, const Value *To, const DataLayout &DL)
 
const SCEVreplaceSymbolicStrideSCEV (PredicatedScalarEvolution &PSE, const DenseMap< Value *, const SCEV * > &PtrToStride, Value *Ptr)
 Return the SCEV corresponding to a pointer with the symbolic stride replaced with constant one, assuming the SCEV predicate associated with PSE is true.
 
std::optional< int64_t > getPtrStride (PredicatedScalarEvolution &PSE, Type *AccessTy, Value *Ptr, const Loop *Lp, const DenseMap< Value *, const SCEV * > &StridesMap=DenseMap< Value *, const SCEV * >(), bool Assume=false, bool ShouldCheckWrap=true)
 If the pointer has a constant stride return it in units of the access type size.
 
std::optional< int > getPointersDiff (Type *ElemTyA, Value *PtrA, Type *ElemTyB, Value *PtrB, const DataLayout &DL, ScalarEvolution &SE, bool StrictCheck=false, bool CheckType=true)
 Returns the distance between the pointers PtrA and PtrB iff they are compatible and it is possible to calculate the distance between them.
 
bool sortPtrAccesses (ArrayRef< Value * > VL, Type *ElemTy, const DataLayout &DL, ScalarEvolution &SE, SmallVectorImpl< unsigned > &SortedIndices)
 Attempt to sort the pointers in VL and return the sorted indices in SortedIndices, if reordering is required.
 
bool isConsecutiveAccess (Value *A, Value *B, const DataLayout &DL, ScalarEvolution &SE, bool CheckType=true)
 Returns true if the memory operations A and B are consecutive.
 
PreservedAnalyses getLoopPassPreservedAnalyses ()
 Returns the minimum set of Analyses that all loop passes must preserve.
 
raw_ostreamoperator<< (raw_ostream &OS, const IndexedReference &R)
 
raw_ostreamoperator<< (raw_ostream &OS, const CacheCost &CC)
 
void printLoop (Loop &L, raw_ostream &OS, const std::string &Banner="")
 Function to print a loop's contents as LLVM's text IR assembly.
 
MDNodefindOptionMDForLoopID (MDNode *LoopID, StringRef Name)
 Find and return the loop attribute node for the attribute Name in LoopID.
 
MDNodefindOptionMDForLoop (const Loop *TheLoop, StringRef Name)
 Find string metadata for a loop.
 
std::optional< boolgetOptionalBoolLoopAttribute (const Loop *TheLoop, StringRef Name)
 
bool getBooleanLoopAttribute (const Loop *TheLoop, StringRef Name)
 Returns true if Name is applied to TheLoop and enabled.
 
std::optional< int > getOptionalIntLoopAttribute (const Loop *TheLoop, StringRef Name)
 Find named metadata for a loop with an integer value.
 
int getIntLoopAttribute (const Loop *TheLoop, StringRef Name, int Default=0)
 Find named metadata for a loop with an integer value.
 
std::optional< const MDOperand * > findStringMetadataForLoop (const Loop *TheLoop, StringRef Name)
 Find string metadata for loop.
 
CallBasegetLoopConvergenceHeart (const Loop *TheLoop)
 Find the convergence heart of the loop.
 
bool hasMustProgress (const Loop *L)
 Look for the loop attribute that requires progress within the loop.
 
bool isMustProgress (const Loop *L)
 Return true if this loop can be assumed to make progress.
 
bool isFinite (const Loop *L)
 Return true if this loop can be assumed to run for a finite number of iterations.
 
bool isValidAsAccessGroup (MDNode *AccGroup)
 Return whether an MDNode might represent an access group.
 
llvm::MDNodemakePostTransformationMetadata (llvm::LLVMContext &Context, MDNode *OrigLoopID, llvm::ArrayRef< llvm::StringRef > RemovePrefixes, llvm::ArrayRef< llvm::MDNode * > AddAttrs)
 Create a new LoopID after the loop has been transformed.
 
raw_ostreamoperator<< (raw_ostream &, const LoopNest &)
 
bool isAllocationFn (const Value *V, const TargetLibraryInfo *TLI)
 Tests if a value is a call or invoke to a library function that allocates or reallocates memory (either malloc, calloc, realloc, or strdup like).
 
bool isAllocationFn (const Value *V, function_ref< const TargetLibraryInfo &(Function &)> GetTLI)
 
bool isNewLikeFn (const Value *V, const TargetLibraryInfo *TLI)
 Tests if a value is a call or invoke to a library function that allocates memory via new.
 
bool isMallocOrCallocLikeFn (const Value *V, const TargetLibraryInfo *TLI)
 Tests if a value is a call or invoke to a library function that allocates memory similar to malloc or calloc.
 
bool isAllocLikeFn (const Value *V, const TargetLibraryInfo *TLI)
 Tests if a value is a call or invoke to a library function that allocates memory (either malloc, calloc, or strdup like).
 
bool isReallocLikeFn (const Function *F)
 Tests if a function is a call or invoke to a library function that reallocates memory (e.g., realloc).
 
ValuegetReallocatedOperand (const CallBase *CB)
 If this is a call to a realloc function, return the reallocated operand.
 
bool isLibFreeFunction (const Function *F, const LibFunc TLIFn)
 isLibFreeFunction - Returns true if the function is a builtin free()
 
ValuegetFreedOperand (const CallBase *CB, const TargetLibraryInfo *TLI)
 If this if a call to a free function, return the freed operand.
 
bool isRemovableAlloc (const CallBase *V, const TargetLibraryInfo *TLI)
 Return true if this is a call to an allocation function that does not have side effects that we are required to preserve beyond the effect of allocating a new object.
 
ValuegetAllocAlignment (const CallBase *V, const TargetLibraryInfo *TLI)
 Gets the alignment argument for an aligned_alloc-like function, using either built-in knowledge based on fuction names/signatures or allocalign attributes.
 
std::optional< APIntgetAllocSize (const CallBase *CB, const TargetLibraryInfo *TLI, function_ref< const Value *(const Value *)> Mapper=[](const Value *V) { return V;})
 Return the size of the requested allocation.
 
ConstantgetInitialValueOfAllocation (const Value *V, const TargetLibraryInfo *TLI, Type *Ty)
 If this is a call to an allocation function that initializes memory to a fixed value, return said value in the requested type.
 
std::optional< StringRefgetAllocationFamily (const Value *I, const TargetLibraryInfo *TLI)
 If a function is part of an allocation family (e.g.
 
bool getObjectSize (const Value *Ptr, uint64_t &Size, const DataLayout &DL, const TargetLibraryInfo *TLI, ObjectSizeOpts Opts={})
 Compute the size of the object pointed by Ptr.
 
ValuelowerObjectSizeCall (IntrinsicInst *ObjectSize, const DataLayout &DL, const TargetLibraryInfo *TLI, bool MustSucceed)
 Try to turn a call to @llvm.objectsize into an integer value of the given Type.
 
ValuelowerObjectSizeCall (IntrinsicInst *ObjectSize, const DataLayout &DL, const TargetLibraryInfo *TLI, AAResults *AA, bool MustSucceed, SmallVectorImpl< Instruction * > *InsertedInstructions=nullptr)
 
raw_ostreamoperator<< (raw_ostream &OS, LocationSize Size)
 
raw_ostreamoperator<< (raw_ostream &OS, const MemoryAccess &MA)
 
upward_defs_iterator upward_defs_begin (const MemoryAccessPair &Pair, DominatorTree &DT)
 
upward_defs_iterator upward_defs_end ()
 
iterator_range< upward_defs_iteratorupward_defs (const MemoryAccessPair &Pair, DominatorTree &DT)
 
template<class T >
iterator_range< def_chain_iterator< T > > def_chain (T MA, MemoryAccess *UpTo=nullptr)
 
template<class T >
iterator_range< def_chain_iterator< T, true > > optimized_def_chain (T MA)
 
ModuleSummaryIndex buildModuleSummaryIndex (const Module &M, std::function< BlockFrequencyInfo *(const Function &F)> GetBFICallback, ProfileSummaryInfo *PSI, std::function< const StackSafetyInfo *(const Function &F)> GetSSICallback=[](const Function &F) -> const StackSafetyInfo *{ return nullptr;})
 Direct function to compute a ModuleSummaryIndex from a given module.
 
ModulePasscreateModuleSummaryIndexWrapperPass ()
 
ImmutablePasscreateImmutableModuleSummaryIndexWrapperPass (const ModuleSummaryIndex *Index)
 
bool mayHaveMemprofSummary (const CallBase *CB)
 Returns true if the instruction could have memprof metadata, used to ensure consistency between summary analysis and the ThinLTO backend processing.
 
bool mayContainIrreducibleControl (const Function &F, const LoopInfo *LI)
 
bool isCheckForZeroAndMulWithOverflow (Value *Op0, Value *Op1, bool IsAnd, Use *&Y)
 Match one of the patterns up to the select/logic op: Op0 = icmp ne i4 X, 0 Agg = call { i4, i1 } @llvm.
 
bool isCheckForZeroAndMulWithOverflow (Value *Op0, Value *Op1, bool IsAnd)
 
FunctionPasscreateLazyValueInfoPass ()
 createLazyValueInfoPass - This creates an instance of the LazyValueInfo pass.
 
FunctionPasscreateRegionInfoPass ()
 
FunctionPasscreatePostDomTree ()
 
template<class Tr >
raw_ostreamoperator<< (raw_ostream &OS, const RegionNodeBase< Tr > &Node)
 Print a RegionNode.
 
template<class NodeRef , class BlockT , class RegionT >
RNSuccIterator< NodeRef, BlockT, RegionT > succ_begin (NodeRef Node)
 
template<class NodeRef , class BlockT , class RegionT >
RNSuccIterator< NodeRef, BlockT, RegionT > succ_end (NodeRef Node)
 
 RegionNodeGraphTraits (RegionNode, BasicBlock, Region)
 
 RegionGraphTraits (Region, RegionNode)
 
FunctionPasscreateRegionViewerPass ()
 
FunctionPasscreateRegionOnlyViewerPass ()
 
FunctionPasscreateRegionPrinterPass ()
 
FunctionPasscreateRegionOnlyPrinterPass ()
 
void viewRegion (llvm::RegionInfo *RI)
 Open a viewer to display the GraphViz vizualization of the analysis result.
 
void viewRegion (const llvm::Function *F)
 Analyze the regions of a function and open its GraphViz visualization in a viewer.
 
void viewRegionOnly (llvm::RegionInfo *RI)
 Open a viewer to display the GraphViz vizualization of the analysis result.
 
void viewRegionOnly (const llvm::Function *F)
 Analyze the regions of a function and open its GraphViz visualization in a viewer.
 
template<class T >
bool isEmbeddedModelEvaluatorValid ()
 
template<>
bool isEmbeddedModelEvaluatorValid< NoopSavedModelImpl > ()
 
std::string formatCallSiteLocation (DebugLoc DLoc, const CallSiteFormat &Format)
 Get call site location as a string with the given format.
 
std::unique_ptr< InlineAdvisorgetReplayInlineAdvisor (Module &M, FunctionAnalysisManager &FAM, LLVMContext &Context, std::unique_ptr< InlineAdvisor > OriginalAdvisor, const ReplayInlinerSettings &ReplaySettings, bool EmitRemarks, InlineContext IC)
 
raw_ostreamoperator<< (raw_ostream &OS, const SCEV &S)
 
raw_ostreamoperator<< (raw_ostream &OS, const SCEVPredicate &P)
 
FunctionPasscreateSCEVAAWrapperPass ()
 Creates an instance of SCEVAAWrapperPass.
 
unsigned short computeExpressionSize (ArrayRef< const SCEV * > Args)
 
template<typename SV >
void visitAll (const SCEV *Root, SV &Visitor)
 Use SCEVTraversal to visit all nodes in the given expression tree.
 
template<typename PredTy >
bool SCEVExprContains (const SCEV *Root, PredTy Pred)
 Return true if any node in Root satisfies the predicate Pred.
 
const SCEVnormalizeForPostIncUse (const SCEV *S, const PostIncLoopSet &Loops, ScalarEvolution &SE, bool CheckInvertible=true)
 Normalize S to be post-increment for all loops present in Loops.
 
const SCEVnormalizeForPostIncUseIf (const SCEV *S, NormalizePredTy Pred, ScalarEvolution &SE)
 Normalize S for all add recurrence sub-expressions for which Pred returns true.
 
const SCEVdenormalizeForPostIncUse (const SCEV *S, const PostIncLoopSet &Loops, ScalarEvolution &SE)
 Denormalize S to be post-increment for all loops present in Loops.
 
ImmutablePasscreateScopedNoAliasAAWrapperPass ()
 
static raw_ostreamoperator<< (raw_ostream &OS, const BitVector &V)
 
raw_ostreamoperator<< (raw_ostream &OS, const StackLifetime::LiveRange &R)
 
bool needsParamAccessSummary (const Module &M)
 
void generateParamAccessSummary (ModuleSummaryIndex &Index)
 
ImmutablePasscreateTargetTransformInfoWrapperPass (TargetIRAnalysis TIRA)
 Create an analysis pass wrapper around a TTI object.
 
std::string tensorValueToString (const char *Buffer, const TensorSpec &Spec)
 For debugging.
 
std::optional< TensorSpecgetTensorSpecFromJSON (LLVMContext &Ctx, const json::Value &Value)
 Construct a TensorSpec from a JSON dictionary of the form: { "name": <string>, "port": <int>, "type": <string.
 
ImmutablePasscreateTypeBasedAAWrapperPass ()
 
void findDevirtualizableCallsForTypeTest (SmallVectorImpl< DevirtCallSite > &DevirtCalls, SmallVectorImpl< CallInst * > &Assumes, const CallInst *CI, DominatorTree &DT)
 Given a call to the intrinsic @llvm.type.test, find all devirtualizable call sites based on the call and return them in DevirtCalls.
 
void findDevirtualizableCallsForTypeCheckedLoad (SmallVectorImpl< DevirtCallSite > &DevirtCalls, SmallVectorImpl< Instruction * > &LoadedPtrs, SmallVectorImpl< Instruction * > &Preds, bool &HasNonCallUses, const CallInst *CI, DominatorTree &DT)
 Given a call to the intrinsic @llvm.type.checked.load, find all devirtualizable call sites based on the call and return them in DevirtCalls.
 
ConstantgetPointerAtOffset (Constant *I, uint64_t Offset, Module &M, Constant *TopLevelGlobal=nullptr)
 Processes a Constant recursively looking into elements of arrays, structs and expressions to find a trivial pointer element that is located at the given offset (relative to the beginning of the whole outer Constant).
 
std::pair< Function *, Constant * > getFunctionAtVTableOffset (GlobalVariable *GV, uint64_t Offset, Module &M)
 Given a vtable and a specified offset, returns the function and the trivial pointer at the specified offset in pair iff the pointer at the specified offset is a function or an alias to a function.
 
void replaceRelativePointerUsersWithZero (Constant *C)
 Finds the same "relative pointer" pattern as described above, where the target is C, and replaces the entire pattern with a constant zero.
 
ValueemitGEPOffset (IRBuilderBase *Builder, const DataLayout &DL, User *GEP, bool NoAssumptions=false)
 Given a getelementptr instruction/constantexpr, emit the code necessary to compute the offset from the base pointer (without adding in the base pointer).
 
raw_ostreamoperator<< (raw_ostream &OS, const ValueLatticeElement &Val)
 
bool canTrackArgumentsInterprocedurally (Function *F)
 Determine if the values of the given function's arguments can be tracked interprocedurally.
 
bool canTrackReturnsInterprocedurally (Function *F)
 Determine if the values of the given function's returns can be tracked interprocedurally.
 
bool canTrackGlobalVariableInterprocedurally (GlobalVariable *GV)
 Determine if the value maintained in the given global variable can be tracked interprocedurally.
 
void computeKnownBits (const Value *V, KnownBits &Known, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr, bool UseInstrInfo=true)
 Determine which bits of V are known to be either zero or one and return them in the KnownZero/KnownOne bit sets.
 
KnownBits computeKnownBits (const Value *V, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr, bool UseInstrInfo=true)
 Returns the known bits rather than passing by reference.
 
KnownBits computeKnownBits (const Value *V, const APInt &DemandedElts, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr, bool UseInstrInfo=true)
 Returns the known bits rather than passing by reference.
 
KnownBits computeKnownBits (const Value *V, const APInt &DemandedElts, unsigned Depth, const SimplifyQuery &Q)
 Determine which bits of V are known to be either zero or one and return them.
 
KnownBits computeKnownBits (const Value *V, unsigned Depth, const SimplifyQuery &Q)
 Determine which bits of V are known to be either zero or one and return them.
 
void computeKnownBits (const Value *V, KnownBits &Known, unsigned Depth, const SimplifyQuery &Q)
 
void computeKnownBitsFromRangeMetadata (const MDNode &Ranges, KnownBits &Known)
 Compute known bits from the range metadata.
 
void computeKnownBitsFromContext (const Value *V, KnownBits &Known, unsigned Depth, const SimplifyQuery &Q)
 Merge bits known from context-dependent facts into Known.
 
KnownBits analyzeKnownBitsFromAndXorOr (const Operator *I, const KnownBits &KnownLHS, const KnownBits &KnownRHS, unsigned Depth, const SimplifyQuery &SQ)
 Using KnownBits LHS/RHS produce the known bits for logic op (and/xor/or).
 
void adjustKnownBitsForSelectArm (KnownBits &Known, Value *Cond, Value *Arm, bool Invert, unsigned Depth, const SimplifyQuery &Q)
 Adjust Known for the given select Arm to include information from the select Cond.
 
bool haveNoCommonBitsSet (const WithCache< const Value * > &LHSCache, const WithCache< const Value * > &RHSCache, const SimplifyQuery &SQ)
 Return true if LHS and RHS have no common bits set.
 
bool isKnownToBeAPowerOfTwo (const Value *V, const DataLayout &DL, bool OrZero=false, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr, bool UseInstrInfo=true)
 Return true if the given value is known to have exactly one bit set when defined.
 
bool isKnownToBeAPowerOfTwo (const Value *V, bool OrZero, unsigned Depth, const SimplifyQuery &Q)
 Return true if the given value is known to have exactly one bit set when defined.
 
bool isOnlyUsedInZeroComparison (const Instruction *CxtI)
 
bool isOnlyUsedInZeroEqualityComparison (const Instruction *CxtI)
 
bool isKnownNonZero (const Value *V, const SimplifyQuery &Q, unsigned Depth=0)
 Return true if the given value is known to be non-zero when defined.
 
bool isKnownNegation (const Value *X, const Value *Y, bool NeedNSW=false, bool AllowPoison=true)
 Return true if the two given values are negation.
 
bool isKnownInversion (const Value *X, const Value *Y)
 Return true iff:
 
bool isKnownNonNegative (const Value *V, const SimplifyQuery &SQ, unsigned Depth=0)
 Returns true if the give value is known to be non-negative.
 
bool isKnownPositive (const Value *V, const SimplifyQuery &SQ, unsigned Depth=0)
 Returns true if the given value is known be positive (i.e.
 
bool isKnownNegative (const Value *V, const SimplifyQuery &SQ, unsigned Depth=0)
 Returns true if the given value is known be negative (i.e.
 
bool isKnownNonEqual (const Value *V1, const Value *V2, const DataLayout &DL, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr, bool UseInstrInfo=true)
 Return true if the given values are known to be non-equal when defined.
 
bool MaskedValueIsZero (const Value *V, const APInt &Mask, const SimplifyQuery &SQ, unsigned Depth=0)
 Return true if 'V & Mask' is known to be zero.
 
unsigned ComputeNumSignBits (const Value *Op, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr, bool UseInstrInfo=true)
 Return the number of times the sign bit of the register is replicated into the other bits.
 
unsigned ComputeMaxSignificantBits (const Value *Op, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr)
 Get the upper bound on bit size for this Value Op as a signed integer.
 
Intrinsic::ID getIntrinsicForCallSite (const CallBase &CB, const TargetLibraryInfo *TLI)
 Map a call instruction to an intrinsic ID.
 
bool isSignBitCheck (ICmpInst::Predicate Pred, const APInt &RHS, bool &TrueIfSigned)
 Given an exploded icmp instruction, return true if the comparison only checks the sign bit.
 
std::pair< Value *, FPClassTestfcmpToClassTest (CmpInst::Predicate Pred, const Function &F, Value *LHS, Value *RHS, bool LookThroughSrc=true)
 Returns a pair of values, which if passed to llvm.is.fpclass, returns the same result as an fcmp with the given operands.
 
std::pair< Value *, FPClassTestfcmpToClassTest (CmpInst::Predicate Pred, const Function &F, Value *LHS, const APFloat *ConstRHS, bool LookThroughSrc=true)
 
std::tuple< Value *, FPClassTest, FPClassTestfcmpImpliesClass (CmpInst::Predicate Pred, const Function &F, Value *LHS, Value *RHS, bool LookThroughSrc=true)
 Compute the possible floating-point classes that LHS could be based on fcmp \Pred LHS, RHS.
 
std::tuple< Value *, FPClassTest, FPClassTestfcmpImpliesClass (CmpInst::Predicate Pred, const Function &F, Value *LHS, FPClassTest RHS, bool LookThroughSrc=true)
 
std::tuple< Value *, FPClassTest, FPClassTestfcmpImpliesClass (CmpInst::Predicate Pred, const Function &F, Value *LHS, const APFloat &RHS, bool LookThroughSrc=true)
 
KnownFPClass operator| (KnownFPClass LHS, const KnownFPClass &RHS)
 
KnownFPClass operator| (const KnownFPClass &LHS, KnownFPClass &&RHS)
 
KnownFPClass computeKnownFPClass (const Value *V, const APInt &DemandedElts, FPClassTest InterestedClasses, unsigned Depth, const SimplifyQuery &SQ)
 Determine which floating-point classes are valid for V, and return them in KnownFPClass bit sets.
 
KnownFPClass computeKnownFPClass (const Value *V, FPClassTest InterestedClasses, unsigned Depth, const SimplifyQuery &SQ)
 
KnownFPClass computeKnownFPClass (const Value *V, const DataLayout &DL, FPClassTest InterestedClasses=fcAllFlags, unsigned Depth=0, const TargetLibraryInfo *TLI=nullptr, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr, bool UseInstrInfo=true)
 
KnownFPClass computeKnownFPClass (const Value *V, const APInt &DemandedElts, FastMathFlags FMF, FPClassTest InterestedClasses, unsigned Depth, const SimplifyQuery &SQ)
 Wrapper to account for known fast math flags at the use instruction.
 
KnownFPClass computeKnownFPClass (const Value *V, FastMathFlags FMF, FPClassTest InterestedClasses, unsigned Depth, const SimplifyQuery &SQ)
 
bool cannotBeNegativeZero (const Value *V, unsigned Depth, const SimplifyQuery &SQ)
 Return true if we can prove that the specified FP value is never equal to -0.0.
 
bool cannotBeOrderedLessThanZero (const Value *V, unsigned Depth, const SimplifyQuery &SQ)
 Return true if we can prove that the specified FP value is either NaN or never less than -0.0.
 
bool isKnownNeverInfinity (const Value *V, unsigned Depth, const SimplifyQuery &SQ)
 Return true if the floating-point scalar value is not an infinity or if the floating-point vector value has no infinities.
 
bool isKnownNeverInfOrNaN (const Value *V, unsigned Depth, const SimplifyQuery &SQ)
 Return true if the floating-point value can never contain a NaN or infinity.
 
bool isKnownNeverNaN (const Value *V, unsigned Depth, const SimplifyQuery &SQ)
 Return true if the floating-point scalar value is not a NaN or if the floating-point vector value has no NaN elements.
 
std::optional< boolcomputeKnownFPSignBit (const Value *V, unsigned Depth, const SimplifyQuery &SQ)
 Return false if we can prove that the specified FP value's sign bit is 0.
 
ValueisBytewiseValue (Value *V, const DataLayout &DL)
 If the specified value can be set by repeating the same byte in memory, return the i8 value that it is represented with.
 
ValueFindInsertedValue (Value *V, ArrayRef< unsigned > idx_range, std::optional< BasicBlock::iterator > InsertBefore=std::nullopt)
 Given an aggregate and an sequence of indices, see if the scalar value indexed is already around as a register, for example if it were inserted directly into the aggregate.
 
ValueGetPointerBaseWithConstantOffset (Value *Ptr, int64_t &Offset, const DataLayout &DL, bool AllowNonInbounds=true)
 Analyze the specified pointer to see if it can be expressed as a base pointer plus a constant offset.
 
const ValueGetPointerBaseWithConstantOffset (const Value *Ptr, int64_t &Offset, const DataLayout &DL, bool AllowNonInbounds=true)
 
bool isGEPBasedOnPointerToString (const GEPOperator *GEP, unsigned CharSize=8)
 Returns true if the GEP is based on a pointer to a string (array of.
 
bool getConstantDataArrayInfo (const Value *V, ConstantDataArraySlice &Slice, unsigned ElementSize, uint64_t Offset=0)
 Returns true if the value V is a pointer into a ConstantDataArray.
 
bool getConstantStringInfo (const Value *V, StringRef &Str, bool TrimAtNul=true)
 This function computes the length of a null-terminated C string pointed to by V.
 
uint64_t GetStringLength (const Value *V, unsigned CharSize=8)
 If we can compute the length of the string pointed to by the specified pointer, return 'len+1'.
 
const ValuegetArgumentAliasingToReturnedPointer (const CallBase *Call, bool MustPreserveNullness)
 This function returns call pointer argument that is considered the same by aliasing rules.
 
ValuegetArgumentAliasingToReturnedPointer (CallBase *Call, bool MustPreserveNullness)
 
bool isIntrinsicReturningPointerAliasingArgumentWithoutCapturing (const CallBase *Call, bool MustPreserveNullness)
 {launder,strip}.invariant.group returns pointer that aliases its argument, and it only captures pointer by returning it.
 
const ValuegetUnderlyingObject (const Value *V, unsigned MaxLookup=6)
 This method strips off any GEP address adjustments, pointer casts or llvm.threadlocal.address from the specified value V, returning the original object being addressed.
 
ValuegetUnderlyingObject (Value *V, unsigned MaxLookup=6)
 
const ValuegetUnderlyingObjectAggressive (const Value *V)
 Like getUnderlyingObject(), but will try harder to find a single underlying object.
 
void getUnderlyingObjects (const Value *V, SmallVectorImpl< const Value * > &Objects, const LoopInfo *LI=nullptr, unsigned MaxLookup=6)
 This method is similar to getUnderlyingObject except that it can look through phi and select instructions and return multiple objects.
 
bool getUnderlyingObjectsForCodeGen (const Value *V, SmallVectorImpl< Value * > &Objects)
 This is a wrapper around getUnderlyingObjects and adds support for basic ptrtoint+arithmetic+inttoptr sequences.
 
AllocaInstfindAllocaForValue (Value *V, bool OffsetZero=false)
 Returns unique alloca where the value comes from, or nullptr.
 
const AllocaInstfindAllocaForValue (const Value *V, bool OffsetZero=false)
 
bool onlyUsedByLifetimeMarkers (const Value *V)
 Return true if the only users of this pointer are lifetime markers.
 
bool onlyUsedByLifetimeMarkersOrDroppableInsts (const Value *V)
 Return true if the only users of this pointer are lifetime markers or droppable instructions.
 
bool isNotCrossLaneOperation (const Instruction *I)
 Return true if the instruction doesn't potentially cross vector lanes.
 
bool isSafeToSpeculativelyExecute (const Instruction *I, const Instruction *CtxI=nullptr, AssumptionCache *AC=nullptr, const DominatorTree *DT=nullptr, const TargetLibraryInfo *TLI=nullptr, bool UseVariableInfo=true)
 Return true if the instruction does not have any effects besides calculating the result and does not have undefined behavior.
 
bool isSafeToSpeculativelyExecute (const Instruction *I, BasicBlock::iterator CtxI, AssumptionCache *AC=nullptr, const DominatorTree *DT=nullptr, const TargetLibraryInfo *TLI=nullptr, bool UseVariableInfo=true)
 
bool isSafeToSpeculativelyExecuteWithVariableReplaced (const Instruction *I)
 Don't use information from its non-constant operands.
 
bool isSafeToSpeculativelyExecuteWithOpcode (unsigned Opcode, const Instruction *Inst, const Instruction *CtxI=nullptr, AssumptionCache *AC=nullptr, const DominatorTree *DT=nullptr, const TargetLibraryInfo *TLI=nullptr, bool UseVariableInfo=true)
 This returns the same result as isSafeToSpeculativelyExecute if Opcode is the actual opcode of Inst.
 
bool mayHaveNonDefUseDependency (const Instruction &I)
 Returns true if the result or effects of the given instructions I depend values not reachable through the def use graph.
 
bool isAssumeLikeIntrinsic (const Instruction *I)
 Return true if it is an intrinsic that cannot be speculated but also cannot trap.
 
bool isValidAssumeForContext (const Instruction *I, const Instruction *CxtI, const DominatorTree *DT=nullptr, bool AllowEphemerals=false)
 Return true if it is valid to use the assumptions provided by an assume intrinsic, I, at the point in the control-flow identified by the context instruction, CxtI.
 
OverflowResult computeOverflowForUnsignedMul (const Value *LHS, const Value *RHS, const SimplifyQuery &SQ, bool IsNSW=false)
 
OverflowResult computeOverflowForSignedMul (const Value *LHS, const Value *RHS, const SimplifyQuery &SQ)
 
OverflowResult computeOverflowForUnsignedAdd (const WithCache< const Value * > &LHS, const WithCache< const Value * > &RHS, const SimplifyQuery &SQ)
 
OverflowResult computeOverflowForSignedAdd (const WithCache< const Value * > &LHS, const WithCache< const Value * > &RHS, const SimplifyQuery &SQ)
 
OverflowResult computeOverflowForSignedAdd (const AddOperator *Add, const SimplifyQuery &SQ)
 This version also leverages the sign bit of Add if known.
 
OverflowResult computeOverflowForUnsignedSub (const Value *LHS, const Value *RHS, const SimplifyQuery &SQ)
 
OverflowResult computeOverflowForSignedSub (const Value *LHS, const Value *RHS, const SimplifyQuery &SQ)
 
bool isOverflowIntrinsicNoWrap (const WithOverflowInst *WO, const DominatorTree &DT)
 Returns true if the arithmetic part of the WO 's result is used only along the paths control dependent on the computation not overflowing, WO being an <op>.with.overflow intrinsic.
 
ConstantRange getVScaleRange (const Function *F, unsigned BitWidth)
 Determine the possible constant range of vscale with the given bit width, based on the vscale_range function attribute.
 
ConstantRange computeConstantRange (const Value *V, bool ForSigned, bool UseInstrInfo=true, AssumptionCache *AC=nullptr, const Instruction *CtxI=nullptr, const DominatorTree *DT=nullptr, unsigned Depth=0)
 Determine the possible constant range of an integer or vector of integer value.
 
ConstantRange computeConstantRangeIncludingKnownBits (const WithCache< const Value * > &V, bool ForSigned, const SimplifyQuery &SQ)
 Combine constant ranges from computeConstantRange() and computeKnownBits().
 
bool isGuaranteedToTransferExecutionToSuccessor (const Instruction *I)
 Return true if this function can prove that the instruction I will always transfer execution to one of its successors (including the next instruction that follows within a basic block).
 
bool isGuaranteedToTransferExecutionToSuccessor (const BasicBlock *BB)
 Returns true if this block does not contain a potential implicit exit.
 
bool isGuaranteedToTransferExecutionToSuccessor (BasicBlock::const_iterator Begin, BasicBlock::const_iterator End, unsigned ScanLimit=32)
 Return true if every instruction in the range (Begin, End) is guaranteed to transfer execution to its static successor.
 
bool isGuaranteedToTransferExecutionToSuccessor (iterator_range< BasicBlock::const_iterator > Range, unsigned ScanLimit=32)
 Same as previous, but with range expressed via iterator_range.
 
bool isGuaranteedToExecuteForEveryIteration (const Instruction *I, const Loop *L)
 Return true if this function can prove that the instruction I is executed for every iteration of the loop L.
 
bool propagatesPoison (const Use &PoisonOp)
 Return true if PoisonOp's user yields poison or raises UB if its operand PoisonOp is poison.
 
void getGuaranteedNonPoisonOps (const Instruction *I, SmallVectorImpl< const Value * > &Ops)
 Insert operands of I into Ops such that I will trigger undefined behavior if I is executed and that operand has a poison value.
 
void getGuaranteedWellDefinedOps (const Instruction *I, SmallVectorImpl< const Value * > &Ops)
 Insert operands of I into Ops such that I will trigger undefined behavior if I is executed and that operand is not a well-defined value (i.e.
 
bool mustTriggerUB (const Instruction *I, const SmallPtrSetImpl< const Value * > &KnownPoison)
 Return true if the given instruction must trigger undefined behavior when I is executed with any operands which appear in KnownPoison holding a poison value at the point of execution.
 
bool programUndefinedIfUndefOrPoison (const Instruction *Inst)
 Return true if this function can prove that if Inst is executed and yields a poison value or undef bits, then that will trigger undefined behavior.
 
bool programUndefinedIfPoison (const Instruction *Inst)
 
bool canCreateUndefOrPoison (const Operator *Op, bool ConsiderFlagsAndMetadata=true)
 canCreateUndefOrPoison returns true if Op can create undef or poison from non-undef & non-poison operands.
 
bool canCreatePoison (const Operator *Op, bool ConsiderFlagsAndMetadata=true)
 
bool impliesPoison (const Value *ValAssumedPoison, const Value *V)
 Return true if V is poison given that ValAssumedPoison is already poison.
 
bool isGuaranteedNotToBeUndefOrPoison (const Value *V, AssumptionCache *AC=nullptr, const Instruction *CtxI=nullptr, const DominatorTree *DT=nullptr, unsigned Depth=0)
 Return true if this function can prove that V does not have undef bits and is never poison.
 
bool isGuaranteedNotToBePoison (const Value *V, AssumptionCache *AC=nullptr, const Instruction *CtxI=nullptr, const DominatorTree *DT=nullptr, unsigned Depth=0)
 Returns true if V cannot be poison, but may be undef.
 
bool isGuaranteedNotToBePoison (const Value *V, AssumptionCache *AC, BasicBlock::iterator CtxI, const DominatorTree *DT=nullptr, unsigned Depth=0)
 
bool isGuaranteedNotToBeUndef (const Value *V, AssumptionCache *AC=nullptr, const Instruction *CtxI=nullptr, const DominatorTree *DT=nullptr, unsigned Depth=0)
 Returns true if V cannot be undef, but may be poison.
 
bool mustExecuteUBIfPoisonOnPathTo (Instruction *Root, Instruction *OnPathTo, DominatorTree *DT)
 Return true if undefined behavior would provable be executed on the path to OnPathTo if Root produced a posion result.
 
std::optional< std::pair< CmpPredicate, Constant * > > getFlippedStrictnessPredicateAndConstant (CmpPredicate Pred, Constant *C)
 Convert an integer comparison with a constant RHS into an equivalent form with the strictness flipped predicate.
 
SelectPatternResult matchSelectPattern (Value *V, Value *&LHS, Value *&RHS, Instruction::CastOps *CastOp=nullptr, unsigned Depth=0)
 Pattern match integer [SU]MIN, [SU]MAX and ABS idioms, returning the kind and providing the out parameter results if we successfully match.
 
SelectPatternResult matchSelectPattern (const Value *V, const Value *&LHS, const Value *&RHS)
 
SelectPatternResult matchDecomposedSelectPattern (CmpInst *CmpI, Value *TrueVal, Value *FalseVal, Value *&LHS, Value *&RHS, Instruction::CastOps *CastOp=nullptr, unsigned Depth=0)
 Determine the pattern that a select with the given compare as its predicate and given values as its true/false operands would match.
 
SelectPatternResult getSelectPattern (CmpInst::Predicate Pred, SelectPatternNaNBehavior NaNBehavior=SPNB_NA, bool Ordered=false)
 Determine the pattern for predicate X Pred Y ? X : Y.
 
CmpInst::Predicate getMinMaxPred (SelectPatternFlavor SPF, bool Ordered=false)
 Return the canonical comparison predicate for the specified minimum/maximum flavor.
 
Intrinsic::ID getMinMaxIntrinsic (SelectPatternFlavor SPF)
 Convert given SPF to equivalent min/max intrinsic.
 
SelectPatternFlavor getInverseMinMaxFlavor (SelectPatternFlavor SPF)
 Return the inverse minimum/maximum flavor of the specified flavor.
 
Intrinsic::ID getInverseMinMaxIntrinsic (Intrinsic::ID MinMaxID)
 
APInt getMinMaxLimit (SelectPatternFlavor SPF, unsigned BitWidth)
 Return the minimum or maximum constant value for the specified integer min/max flavor and type.
 
std::pair< Intrinsic::ID, boolcanConvertToMinOrMaxIntrinsic (ArrayRef< Value * > VL)
 Check if the values in VL are select instructions that can be converted to a min or max (vector) intrinsic.
 
bool matchSimpleRecurrence (const PHINode *P, BinaryOperator *&BO, Value *&Start, Value *&Step)
 Attempt to match a simple first order recurrence cycle of the form: iv = phi Ty [Start, Entry], [Inc, backedge] inc = binop iv, step OR iv = phi Ty [Start, Entry], [Inc, backedge] inc = binop step, iv.
 
bool matchSimpleRecurrence (const BinaryOperator *I, PHINode *&P, Value *&Start, Value *&Step)
 Analogous to the above, but starting from the binary operator.
 
std::optional< boolisImpliedCondition (const Value *LHS, const Value *RHS, const DataLayout &DL, bool LHSIsTrue=true, unsigned Depth=0)
 Return true if RHS is known to be implied true by LHS.
 
std::optional< boolisImpliedCondition (const Value *LHS, CmpPredicate RHSPred, const Value *RHSOp0, const Value *RHSOp1, const DataLayout &DL, bool LHSIsTrue=true, unsigned Depth=0)
 
std::optional< boolisImpliedByDomCondition (const Value *Cond, const Instruction *ContextI, const DataLayout &DL)
 Return the boolean condition value in the context of the given instruction if it is known based on dominating conditions.
 
std::optional< boolisImpliedByDomCondition (CmpPredicate Pred, const Value *LHS, const Value *RHS, const Instruction *ContextI, const DataLayout &DL)
 
void findValuesAffectedByCondition (Value *Cond, bool IsAssume, function_ref< void(Value *)> InsertAffected)
 Call InsertAffected on all Values whose known bits / value may be affected by the condition Cond.
 
bool isTriviallyVectorizable (Intrinsic::ID ID)
 Identify if the intrinsic is trivially vectorizable.
 
bool isTriviallyScalarizable (Intrinsic::ID ID, const TargetTransformInfo *TTI)
 Identify if the intrinsic is trivially scalarizable.
 
bool isVectorIntrinsicWithScalarOpAtArg (Intrinsic::ID ID, unsigned ScalarOpdIdx, const TargetTransformInfo *TTI)
 Identifies if the vector form of the intrinsic has a scalar operand.
 
bool isVectorIntrinsicWithOverloadTypeAtArg (Intrinsic::ID ID, int OpdIdx, const TargetTransformInfo *TTI)
 Identifies if the vector form of the intrinsic is overloaded on the type of the operand at index OpdIdx, or on the return type if OpdIdx is -1.
 
bool isVectorIntrinsicWithStructReturnOverloadAtField (Intrinsic::ID ID, int RetIdx, const TargetTransformInfo *TTI)
 Identifies if the vector form of the intrinsic that returns a struct is overloaded at the struct element index RetIdx.
 
Intrinsic::ID getVectorIntrinsicIDForCall (const CallInst *CI, const TargetLibraryInfo *TLI)
 Returns intrinsic ID for call.
 
ValuefindScalarElement (Value *V, unsigned EltNo)
 Given a vector and an element number, see if the scalar value is already around as a register, for example if it were inserted then extracted from the vector.
 
int getSplatIndex (ArrayRef< int > Mask)
 If all non-negative Mask elements are the same value, return that value.
 
ValuegetSplatValue (const Value *V)
 Get splat value if the input is a splat vector or return nullptr.
 
bool isSplatValue (const Value *V, int Index=-1, unsigned Depth=0)
 Return true if each element of the vector value V is poisoned or equal to every other non-poisoned element.
 
bool getShuffleDemandedElts (int SrcWidth, ArrayRef< int > Mask, const APInt &DemandedElts, APInt &DemandedLHS, APInt &DemandedRHS, bool AllowUndefElts=false)
 Transform a shuffle mask's output demanded element mask into demanded element masks for the 2 operands, returns false if the mask isn't valid.
 
void narrowShuffleMaskElts (int Scale, ArrayRef< int > Mask, SmallVectorImpl< int > &ScaledMask)
 Replace each shuffle mask index with the scaled sequential indices for an equivalent mask of narrowed elements.
 
bool widenShuffleMaskElts (int Scale, ArrayRef< int > Mask, SmallVectorImpl< int > &ScaledMask)
 Try to transform a shuffle mask by replacing elements with the scaled index for an equivalent mask of widened elements.
 
bool widenShuffleMaskElts (ArrayRef< int > M, SmallVectorImpl< int > &NewMask)
 A variant of the previous method which is specialized for Scale=2, and treats -1 as undef and allows widening when a wider element is partially undef in the narrow form of the mask.
 
bool scaleShuffleMaskElts (unsigned NumDstElts, ArrayRef< int > Mask, SmallVectorImpl< int > &ScaledMask)
 Attempt to narrow/widen the Mask shuffle mask to the NumDstElts target width.
 
void getShuffleMaskWithWidestElts (ArrayRef< int > Mask, SmallVectorImpl< int > &ScaledMask)
 Repetitively apply widenShuffleMaskElts() for as long as it succeeds, to get the shuffle mask with widest possible elements.
 
void processShuffleMasks (ArrayRef< int > Mask, unsigned NumOfSrcRegs, unsigned NumOfDestRegs, unsigned NumOfUsedRegs, function_ref< void()> NoInputAction, function_ref< void(ArrayRef< int >, unsigned, unsigned)> SingleInputAction, function_ref< void(ArrayRef< int >, unsigned, unsigned)> ManyInputsAction)
 Splits and processes shuffle mask depending on the number of input and output registers.
 
void getHorizDemandedEltsForFirstOperand (unsigned VectorBitWidth, const APInt &DemandedElts, APInt &DemandedLHS, APInt &DemandedRHS)
 Compute the demanded elements mask of horizontal binary operations.
 
MapVector< Instruction *, uint64_tcomputeMinimumValueSizes (ArrayRef< BasicBlock * > Blocks, DemandedBits &DB, const TargetTransformInfo *TTI=nullptr)
 Compute a map of integer instructions to their minimum legal type size.
 
MDNodeuniteAccessGroups (MDNode *AccGroups1, MDNode *AccGroups2)
 Compute the union of two access-group lists.
 
MDNodeintersectAccessGroups (const Instruction *Inst1, const Instruction *Inst2)
 Compute the access-group list of access groups that Inst1 and Inst2 are both in.
 
InstructionpropagateMetadata (Instruction *I, ArrayRef< Value * > VL)
 Specifically, let Kinds = [MD_tbaa, MD_alias_scope, MD_noalias, MD_fpmath, MD_nontemporal, MD_access_group, MD_mmra].
 
ConstantcreateBitMaskForGaps (IRBuilderBase &Builder, unsigned VF, const InterleaveGroup< Instruction > &Group)
 Create a mask that filters the members of an interleave group where there are gaps.
 
llvm::SmallVector< int, 16 > createReplicatedMask (unsigned ReplicationFactor, unsigned VF)
 Create a mask with replicated elements.
 
llvm::SmallVector< int, 16 > createInterleaveMask (unsigned VF, unsigned NumVecs)
 Create an interleave shuffle mask.
 
llvm::SmallVector< int, 16 > createStrideMask (unsigned Start, unsigned Stride, unsigned VF)
 Create a stride shuffle mask.
 
llvm::SmallVector< int, 16 > createSequentialMask (unsigned Start, unsigned NumInts, unsigned NumUndefs)
 Create a sequential shuffle mask.
 
llvm::SmallVector< int, 16 > createUnaryMask (ArrayRef< int > Mask, unsigned NumElts)
 Given a shuffle mask for a binary shuffle, create the equivalent shuffle mask assuming both operands are identical.
 
ValueconcatenateVectors (IRBuilderBase &Builder, ArrayRef< Value * > Vecs)
 Concatenate a list of vectors.
 
bool maskIsAllZeroOrUndef (Value *Mask)
 Given a mask vector of i1, Return true if all of the elements of this predicate mask are known to be false or undef.
 
bool maskIsAllOneOrUndef (Value *Mask)
 Given a mask vector of i1, Return true if all of the elements of this predicate mask are known to be true or undef.
 
bool maskContainsAllOneOrUndef (Value *Mask)
 Given a mask vector of i1, Return true if any of the elements of this predicate mask are known to be true or undef.
 
APInt possiblyDemandedEltsInMask (Value *Mask)
 Given a mask vector of the form <Y x i1>, return an APInt (of bitwidth Y) for each lane which may be active.
 
std::unique_ptr< ModuleparseAssemblyFile (StringRef Filename, SMDiagnostic &Err, LLVMContext &Context, SlotMapping *Slots=nullptr)
 This function is a main interface to the LLVM Assembly Parser.
 
std::unique_ptr< ModuleparseAssemblyString (StringRef AsmString, SMDiagnostic &Err, LLVMContext &Context, SlotMapping *Slots=nullptr)
 The function is a secondary interface to the LLVM Assembly Parser.
 
ParsedModuleAndIndex parseAssemblyFileWithIndex (StringRef Filename, SMDiagnostic &Err, LLVMContext &Context, SlotMapping *Slots=nullptr, DataLayoutCallbackTy DataLayoutCallback=[](StringRef, StringRef) { return std::nullopt;})
 This function is a main interface to the LLVM Assembly Parser.
 
ParsedModuleAndIndex parseAssemblyFileWithIndexNoUpgradeDebugInfo (StringRef Filename, SMDiagnostic &Err, LLVMContext &Context, SlotMapping *Slots, DataLayoutCallbackTy DataLayoutCallback)
 Only for use in llvm-as for testing; this does not produce a valid module.
 
std::unique_ptr< ModuleSummaryIndexparseSummaryIndexAssemblyFile (StringRef Filename, SMDiagnostic &Err)
 This function is a main interface to the LLVM Assembly Parser.
 
std::unique_ptr< ModuleSummaryIndexparseSummaryIndexAssemblyString (StringRef AsmString, SMDiagnostic &Err)
 The function is a secondary interface to the LLVM Assembly Parser.
 
std::unique_ptr< ModuleparseAssembly (MemoryBufferRef F, SMDiagnostic &Err, LLVMContext &Context, SlotMapping *Slots=nullptr, DataLayoutCallbackTy DataLayoutCallback=[](StringRef, StringRef) { return std::nullopt;})
 parseAssemblyFile and parseAssemblyString are wrappers around this function.
 
ParsedModuleAndIndex parseAssemblyWithIndex (MemoryBufferRef F, SMDiagnostic &Err, LLVMContext &Context, SlotMapping *Slots=nullptr)
 Parse LLVM Assembly including the summary index from a MemoryBuffer.
 
std::unique_ptr< ModuleSummaryIndexparseSummaryIndexAssembly (MemoryBufferRef F, SMDiagnostic &Err)
 Parse LLVM Assembly for summary index from a MemoryBuffer.
 
bool parseAssemblyInto (MemoryBufferRef F, Module *M, ModuleSummaryIndex *Index, SMDiagnostic &Err, SlotMapping *Slots=nullptr, DataLayoutCallbackTy DataLayoutCallback=[](StringRef, StringRef) { return std::nullopt;})
 This function is the low-level interface to the LLVM Assembly Parser.
 
ConstantparseConstantValue (StringRef Asm, SMDiagnostic &Err, const Module &M, const SlotMapping *Slots=nullptr)
 Parse a type and a constant value in the given string.
 
TypeparseType (StringRef Asm, SMDiagnostic &Err, const Module &M, const SlotMapping *Slots=nullptr)
 Parse a type in the given string.
 
TypeparseTypeAtBeginning (StringRef Asm, unsigned &Read, SMDiagnostic &Err, const Module &M, const SlotMapping *Slots=nullptr)
 Parse a string Asm that starts with a type.
 
DIExpressionparseDIExpressionBodyAtBeginning (StringRef Asm, unsigned &Read, SMDiagnostic &Err, const Module &M, const SlotMapping *Slots)
 
file_magic identify_magic (StringRef magic)
 Identify the type of a binary file based on how magical it is.
 
std::error_code identify_magic (const Twine &path, file_magic &result)
 Get and identify path's type based on its content.
 
std::error_code errorToErrorCodeAndEmitErrors (LLVMContext &Ctx, Error Err)
 
template<typename T >
ErrorOr< TexpectedToErrorOrAndEmitErrors (LLVMContext &Ctx, Expected< T > Val)
 
Expected< BitcodeFileContentsgetBitcodeFileContents (MemoryBufferRef Buffer)
 Returns the contents of a bitcode file.
 
Expected< std::vector< BitcodeModule > > getBitcodeModuleList (MemoryBufferRef Buffer)
 Returns a list of modules in the specified bitcode buffer.
 
Expected< std::unique_ptr< Module > > getLazyBitcodeModule (MemoryBufferRef Buffer, LLVMContext &Context, bool ShouldLazyLoadMetadata=false, bool IsImporting=false, ParserCallbacks Callbacks={})
 Read the header of the specified bitcode buffer and prepare for lazy deserialization of function bodies.
 
Expected< std::unique_ptr< Module > > getOwningLazyBitcodeModule (std::unique_ptr< MemoryBuffer > &&Buffer, LLVMContext &Context, bool ShouldLazyLoadMetadata=false, bool IsImporting=false, ParserCallbacks Callbacks={})
 Like getLazyBitcodeModule, except that the module takes ownership of the memory buffer if successful.
 
Expected< std::string > getBitcodeTargetTriple (MemoryBufferRef Buffer)
 Read the header of the specified bitcode buffer and extract just the triple information.
 
Expected< boolisBitcodeContainingObjCCategory (MemoryBufferRef Buffer)
 Return true if Buffer contains a bitcode file with ObjC code (category or class) in it.
 
Expected< std::string > getBitcodeProducerString (MemoryBufferRef Buffer)
 Read the header of the specified bitcode buffer and extract just the producer string information.
 
Expected< std::unique_ptr< Module > > parseBitcodeFile (MemoryBufferRef Buffer, LLVMContext &Context, ParserCallbacks Callbacks={})
 Read the specified bitcode file, returning the module.
 
Expected< BitcodeLTOInfogetBitcodeLTOInfo (MemoryBufferRef Buffer)
 Returns LTO information for the specified bitcode file.
 
Expected< std::unique_ptr< ModuleSummaryIndex > > getModuleSummaryIndex (MemoryBufferRef Buffer)
 Parse the specified bitcode buffer, returning the module summary index.
 
Error readModuleSummaryIndex (MemoryBufferRef Buffer, ModuleSummaryIndex &CombinedIndex)
 Parse the specified bitcode buffer and merge the index into CombinedIndex.
 
Expected< std::unique_ptr< ModuleSummaryIndex > > getModuleSummaryIndexForFile (StringRef Path, bool IgnoreEmptyThinLTOIndexFile=false)
 Parse the module summary index out of an IR file and return the module summary index object if found, or an empty summary if not.
 
bool isBitcodeWrapper (const unsigned char *BufPtr, const unsigned char *BufEnd)
 isBitcodeWrapper - Return true if the given bytes are the magic bytes for an LLVM IR bitcode wrapper.
 
bool isRawBitcode (const unsigned char *BufPtr, const unsigned char *BufEnd)
 isRawBitcode - Return true if the given bytes are the magic bytes for raw LLVM IR bitcode (without a wrapper).
 
bool isBitcode (const unsigned char *BufPtr, const unsigned char *BufEnd)
 isBitcode - Return true if the given bytes are the magic bytes for LLVM IR bitcode, either with or without a wrapper.
 
bool SkipBitcodeWrapperHeader (const unsigned char *&BufPtr, const unsigned char *&BufEnd, bool VerifyBufferSize)
 SkipBitcodeWrapperHeader - Some systems wrap bc files with a special header for padding or other reasons.
 
APInt readWideAPInt (ArrayRef< uint64_t > Vals, unsigned TypeBits)
 
const std::error_category & BitcodeErrorCategory ()
 
std::error_code make_error_code (BitcodeError E)
 
void WriteBitcodeToFile (const Module &M, raw_ostream &Out, bool ShouldPreserveUseListOrder=false, const ModuleSummaryIndex *Index=nullptr, bool GenerateHash=false, ModuleHash *ModHash=nullptr)
 Write the specified module to the specified raw output stream.
 
void writeThinLinkBitcodeToFile (const Module &M, raw_ostream &Out, const ModuleSummaryIndex &Index, const ModuleHash &ModHash)
 Write the specified thin link bitcode file (i.e., the minimized bitcode file) to the given raw output stream, where it will be written in a new bitcode block.
 
void writeIndexToFile (const ModuleSummaryIndex &Index, raw_ostream &Out, const ModuleToSummariesForIndexTy *ModuleToSummariesForIndex=nullptr, const GVSummaryPtrSet *DecSummaries=nullptr)
 Write the specified module summary index to the given raw output stream, where it will be written in a new bitcode block.
 
void embedBitcodeInModule (Module &M, MemoryBufferRef Buf, bool EmbedBitcode, bool EmbedCmdline, const std::vector< uint8_t > &CmdArgs)
 If EmbedBitcode is set, save a copy of the llvm IR as data in the __LLVM,__bitcode section (.llvmbc on non-MacOS).
 
ModulePasscreateBitcodeWriterPass (raw_ostream &Str, bool ShouldPreserveUseListOrder=false)
 Create and return a pass that writes the module to the specified ostream.
 
bool isBitcodeWriterPass (Pass *P)
 Check whether a pass is a BitcodeWriterPass.
 
std::string getCodeGenDataSectionName (CGDataSectKind CGSK, Triple::ObjectFormatType OF, bool AddSegmentInfo=true)
 
const std::error_category & cgdata_category ()
 
std::error_code make_error_code (cgdata_error E)
 
void emitAppleAccelTableImpl (AsmPrinter *Asm, AccelTableBase &Contents, StringRef Prefix, const MCSymbol *SecBegin, ArrayRef< AppleAccelTableData::Atom > Atoms)
 
template<typename DataT >
void emitAppleAccelTable (AsmPrinter *Asm, AccelTable< DataT > &Contents, StringRef Prefix, const MCSymbol *SecBegin)
 Emit an Apple Accelerator Table consisting of entries in the specified AccelTable.
 
void emitDWARF5AccelTable (AsmPrinter *Asm, DWARF5AccelTable &Contents, const DwarfDebug &DD, ArrayRef< std::unique_ptr< DwarfCompileUnit > > CUs)
 
void emitDWARF5AccelTable (AsmPrinter *Asm, DWARF5AccelTable &Contents, ArrayRef< std::variant< MCSymbol *, uint64_t > > CUs, llvm::function_ref< std::optional< DWARF5AccelTable::UnitIndexAndEncoding >(const DWARF5AccelTableData &)> getIndexForEntry)
 Emit a DWARFv5 Accelerator Table consisting of entries in the specified AccelTable.
 
unsigned ComputeLinearIndex (Type *Ty, const unsigned *Indices, const unsigned *IndicesEnd, unsigned CurIndex=0)
 Compute the linearized index of a member in a nested aggregate/struct/array.
 
unsigned ComputeLinearIndex (Type *Ty, ArrayRef< unsigned > Indices, unsigned CurIndex=0)
 
void ComputeValueVTs (const TargetLowering &TLI, const DataLayout &DL, Type *Ty, SmallVectorImpl< EVT > &ValueVTs, SmallVectorImpl< EVT > *MemVTs, SmallVectorImpl< TypeSize > *Offsets=nullptr, TypeSize StartingOffset=TypeSize::getZero())
 ComputeValueVTs - Given an LLVM IR type, compute a sequence of EVTs that represent all the individual underlying non-aggregate types that comprise it.
 
void ComputeValueVTs (const TargetLowering &TLI, const DataLayout &DL, Type *Ty, SmallVectorImpl< EVT > &ValueVTs, SmallVectorImpl< EVT > *MemVTs, SmallVectorImpl< uint64_t > *FixedOffsets, uint64_t StartingOffset)
 
void ComputeValueVTs (const TargetLowering &TLI, const DataLayout &DL, Type *Ty, SmallVectorImpl< EVT > &ValueVTs, SmallVectorImpl< TypeSize > *Offsets=nullptr, TypeSize StartingOffset=TypeSize::getZero())
 Variant of ComputeValueVTs that don't produce memory VTs.
 
void ComputeValueVTs (const TargetLowering &TLI, const DataLayout &DL, Type *Ty, SmallVectorImpl< EVT > &ValueVTs, SmallVectorImpl< uint64_t > *FixedOffsets, uint64_t StartingOffset)
 
void computeValueLLTs (const DataLayout &DL, Type &Ty, SmallVectorImpl< LLT > &ValueTys, SmallVectorImpl< uint64_t > *Offsets=nullptr, uint64_t StartingOffset=0)
 computeValueLLTs - Given an LLVM IR type, compute a sequence of LLTs that represent all the individual underlying non-aggregate types that comprise it.
 
GlobalValueExtractTypeInfo (Value *V)
 ExtractTypeInfo - Returns the type info, possibly bitcast, encoded in V.
 
ISD::CondCode getFCmpCondCode (FCmpInst::Predicate Pred)
 getFCmpCondCode - Return the ISD condition code corresponding to the given LLVM IR floating-point condition code.
 
ISD::CondCode getFCmpCodeWithoutNaN (ISD::CondCode CC)
 getFCmpCodeWithoutNaN - Given an ISD condition code comparing floats, return the equivalent code if we're allowed to assume that NaNs won't occur.
 
ISD::CondCode getICmpCondCode (ICmpInst::Predicate Pred)
 getICmpCondCode - Return the ISD condition code corresponding to the given LLVM IR integer condition code.
 
ICmpInst::Predicate getICmpCondCode (ISD::CondCode Pred)
 getICmpCondCode - Return the LLVM IR integer condition code corresponding to the given ISD integer condition code.
 
bool isInTailCallPosition (const CallBase &Call, const TargetMachine &TM, bool ReturnsFirstArg=false)
 Test if the given instruction is in a position to be optimized with a tail-call.
 
bool attributesPermitTailCall (const Function *F, const Instruction *I, const ReturnInst *Ret, const TargetLoweringBase &TLI, bool *AllowDifferingSizes=nullptr)
 Test if given that the input instruction is in the tail call position, if there is an attribute mismatch between the caller and the callee that will inhibit tail call optimizations.
 
bool returnTypeIsEligibleForTailCall (const Function *F, const Instruction *I, const ReturnInst *Ret, const TargetLoweringBase &TLI, bool ReturnsFirstArg=false)
 Test if given that the input instruction is in the tail call position if the return type or any attributes of the function will inhibit tail call optimization.
 
bool funcReturnsFirstArgOfCall (const CallInst &CI)
 Returns true if the parent of CI returns CI's first argument after calling CI.
 
DenseMap< const MachineBasicBlock *, int > getEHScopeMembership (const MachineFunction &MF)
 
AntiDepBreakercreateAggressiveAntiDepBreaker (MachineFunction &MFi, const RegisterClassInfo &RCI, TargetSubtargetInfo::RegClassVector &CriticalPathRCs)
 
AntiDepBreakercreateCriticalAntiDepBreaker (MachineFunction &MFi, const RegisterClassInfo &RCI)
 
bool expandAtomicRMWToCmpXchg (AtomicRMWInst *AI, CreateCmpXchgInstFun CreateCmpXchg)
 Expand an atomic RMW instruction into a loop utilizing cmpxchg.
 
ImmutablePasscreateBasicBlockSectionsProfileReaderWrapperPass (const MemoryBuffer *Buf)
 
void sortBasicBlocksAndUpdateBranches (MachineFunction &MF, MachineBasicBlockComparator MBBCmp)
 
void avoidZeroOffsetLandingPad (MachineFunction &MF)
 
bool hasInstrProfHashMismatch (MachineFunction &MF)
 This checks if the source of this function has drifted since this binary was profiled previously.
 
static float normalizeSpillWeight (float UseDefFreq, unsigned Size, unsigned NumInstr)
 Normalize the spill weight of a live interval.
 
MachineBasicBlock::iterator findSplitPointForStackProtector (MachineBasicBlock *BB, const TargetInstrInfo &TII)
 Find the split point at which to splice the end of BB into its success stack protector check machine basic block.
 
FPClassTest invertFPClassTestIfSimpler (FPClassTest Test, bool UseFCmp)
 Evaluates if the specified FP class test is better performed as the inverse (i.e.
 
void salvageDebugInfoForDbgValue (const MachineRegisterInfo &MRI, MachineInstr &MI, ArrayRef< MachineOperand * > DbgUsers)
 Assuming the instruction MI is going to be deleted, attempt to salvage debug users of MI by writing the effect of MI in a DIExpression.
 
CodeModel::Model getEffectiveCodeModel (std::optional< CodeModel::Model > CM, CodeModel::Model Default)
 Helper method for getting the code model, returning Default if CM does not have a value.
 
template<class CostType >
const CostTblEntryT< CostType > * CostTableLookup (ArrayRef< CostTblEntryT< CostType > > Tbl, int ISD, MVT Ty)
 Find in cost table.
 
template<size_t N, class CostType >
const CostTblEntryT< CostType > * CostTableLookup (const CostTblEntryT< CostType >(&Table)[N], int ISD, MVT Ty)
 
template<class CostType >
const TypeConversionCostTblEntryT< CostType > * ConvertCostTableLookup (ArrayRef< TypeConversionCostTblEntryT< CostType > > Tbl, int ISD, MVT Dst, MVT Src)
 Find in type conversion cost table.
 
template<size_t N, class CostType >
const TypeConversionCostTblEntryT< CostType > * ConvertCostTableLookup (const TypeConversionCostTblEntryT< CostType >(&Table)[N], int ISD, MVT Dst, MVT Src)
 
void calculateDbgEntityHistory (const MachineFunction *MF, const TargetRegisterInfo *TRI, DbgValueHistoryMap &DbgValues, DbgLabelInstrMap &DbgLabels)
 
VPExpansionDetails expandVectorPredicationIntrinsic (VPIntrinsic &VPI, const TargetTransformInfo &TTI)
 Expand a vector predication intrinsic.
 
std::unique_ptr< CSEConfigBasegetStandardCSEConfigForOpt (CodeGenOptLevel Level)
 
raw_ostreamoperator<< (raw_ostream &OS, LegacyLegalizeActions::LegacyLegalizeAction Action)
 
LegalizerHelper::LegalizeResult createLibcall (MachineIRBuilder &MIRBuilder, const char *Name, const CallLowering::ArgInfo &Result, ArrayRef< CallLowering::ArgInfo > Args, CallingConv::ID CC, LostDebugLocObserver &LocObserver, MachineInstr *MI=nullptr)
 Helper function that creates a libcall to the given Name using the given calling convention CC.
 
LegalizerHelper::LegalizeResult createLibcall (MachineIRBuilder &MIRBuilder, RTLIB::Libcall Libcall, const CallLowering::ArgInfo &Result, ArrayRef< CallLowering::ArgInfo > Args, LostDebugLocObserver &LocObserver, MachineInstr *MI=nullptr)
 Helper function that creates the given libcall.
 
LegalizerHelper::LegalizeResult createMemLibcall (MachineIRBuilder &MIRBuilder, MachineRegisterInfo &MRI, MachineInstr &MI, LostDebugLocObserver &LocObserver)
 Create a libcall to memcpy et al.
 
raw_ostreamoperator<< (raw_ostream &OS, LegalizeActions::LegalizeAction Action)
 
const MachineInstrmachineFunctionIsIllegal (const MachineFunction &MF)
 Checks that MIR is fully legal, returns an illegal instruction if it's not, nullptr otherwise.
 
Register constrainRegToClass (MachineRegisterInfo &MRI, const TargetInstrInfo &TII, const RegisterBankInfo &RBI, Register Reg, const TargetRegisterClass &RegClass)
 Try to constrain Reg to the specified register class.
 
Register constrainOperandRegClass (const MachineFunction &MF, const TargetRegisterInfo &TRI, MachineRegisterInfo &MRI, const TargetInstrInfo &TII, const RegisterBankInfo &RBI, MachineInstr &InsertPt, const TargetRegisterClass &RegClass, MachineOperand &RegMO)
 Constrain the Register operand OpIdx, so that it is now constrained to the TargetRegisterClass passed as an argument (RegClass).
 
Register constrainOperandRegClass (const MachineFunction &MF, const TargetRegisterInfo &TRI, MachineRegisterInfo &MRI, const TargetInstrInfo &TII, const RegisterBankInfo &RBI, MachineInstr &InsertPt, const MCInstrDesc &II, MachineOperand &RegMO, unsigned OpIdx)
 Try to constrain Reg so that it is usable by argument OpIdx of the provided MCInstrDesc II.
 
bool constrainSelectedInstRegOperands (MachineInstr &I, const TargetInstrInfo &TII, const TargetRegisterInfo &TRI, const RegisterBankInfo &RBI)
 Mutate the newly-selected instruction I to constrain its (possibly generic) virtual register operands to the instruction's register class.
 
bool canReplaceReg (Register DstReg, Register SrcReg, MachineRegisterInfo &MRI)
 Check if DstReg can be replaced with SrcReg depending on the register constraints.
 
bool isTriviallyDead (const MachineInstr &MI, const MachineRegisterInfo &MRI)
 Check whether an instruction MI is dead: it only defines dead virtual registers, and doesn't have other side effects.
 
void reportGISelFailure (MachineFunction &MF, const TargetPassConfig &TPC, MachineOptimizationRemarkEmitter &MORE, MachineOptimizationRemarkMissed &R)
 Report an ISel error as a missed optimization remark to the LLVMContext's diagnostic stream.
 
void reportGISelFailure (MachineFunction &MF, const TargetPassConfig &TPC, MachineOptimizationRemarkEmitter &MORE, const char *PassName, StringRef Msg, const MachineInstr &MI)
 
void reportGISelWarning (MachineFunction &MF, const TargetPassConfig &TPC, MachineOptimizationRemarkEmitter &MORE, MachineOptimizationRemarkMissed &R)
 Report an ISel warning as a missed optimization remark to the LLVMContext's diagnostic stream.
 
unsigned getInverseGMinMaxOpcode (unsigned MinMaxOpc)
 Returns the inverse opcode of MinMaxOpc, which is a generic min/max opcode like G_SMIN.
 
std::optional< APIntgetIConstantVRegVal (Register VReg, const MachineRegisterInfo &MRI)
 If VReg is defined by a G_CONSTANT, return the corresponding value.
 
std::optional< int64_t > getIConstantVRegSExtVal (Register VReg, const MachineRegisterInfo &MRI)
 If VReg is defined by a G_CONSTANT fits in int64_t returns it.
 
const APIntgetIConstantFromReg (Register VReg, const MachineRegisterInfo &MRI)
 VReg is defined by a G_CONSTANT, return the corresponding value.
 
std::optional< ValueAndVReggetIConstantVRegValWithLookThrough (Register VReg, const MachineRegisterInfo &MRI, bool LookThroughInstrs=true)
 If VReg is defined by a statically evaluable chain of instructions rooted on a G_CONSTANT returns its APInt value and def register.
 
std::optional< ValueAndVReggetAnyConstantVRegValWithLookThrough (Register VReg, const MachineRegisterInfo &MRI, bool LookThroughInstrs=true, bool LookThroughAnyExt=false)
 If VReg is defined by a statically evaluable chain of instructions rooted on a G_CONSTANT or G_FCONSTANT returns its value as APInt and def register.
 
std::optional< FPValueAndVReggetFConstantVRegValWithLookThrough (Register VReg, const MachineRegisterInfo &MRI, bool LookThroughInstrs=true)
 If VReg is defined by a statically evaluable chain of instructions rooted on a G_FCONSTANT returns its APFloat value and def register.
 
const ConstantFPgetConstantFPVRegVal (Register VReg, const MachineRegisterInfo &MRI)
 
MachineInstrgetOpcodeDef (unsigned Opcode, Register Reg, const MachineRegisterInfo &MRI)
 See if Reg is defined by an single def instruction that is Opcode.
 
std::optional< DefinitionAndSourceRegistergetDefSrcRegIgnoringCopies (Register Reg, const MachineRegisterInfo &MRI)
 Find the def instruction for Reg, and underlying value Register folding away any copies.
 
MachineInstrgetDefIgnoringCopies (Register Reg, const MachineRegisterInfo &MRI)
 Find the def instruction for Reg, folding away any trivial copies.
 
Register getSrcRegIgnoringCopies (Register Reg, const MachineRegisterInfo &MRI)
 Find the source register for Reg, folding away any trivial copies.
 
void extractParts (Register Reg, LLT Ty, int NumParts, SmallVectorImpl< Register > &VRegs, MachineIRBuilder &MIRBuilder, MachineRegisterInfo &MRI)
 Helper function to split a wide generic register into bitwise blocks with the given Type (which implies the number of blocks needed).
 
bool extractParts (Register Reg, LLT RegTy, LLT MainTy, LLT &LeftoverTy, SmallVectorImpl< Register > &VRegs, SmallVectorImpl< Register > &LeftoverVRegs, MachineIRBuilder &MIRBuilder, MachineRegisterInfo &MRI)
 Version which handles irregular splits.
 
void extractVectorParts (Register Reg, unsigned NumElts, SmallVectorImpl< Register > &VRegs, MachineIRBuilder &MIRBuilder, MachineRegisterInfo &MRI)
 Version which handles irregular sub-vector splits.
 
template<class T >
TgetOpcodeDef (Register Reg, const MachineRegisterInfo &MRI)
 See if Reg is defined by an single def instruction of type T Also try to do trivial folding if it's a COPY with same types.
 
APFloat getAPFloatFromSize (double Val, unsigned Size)
 Returns an APFloat from Val converted to the appropriate size.
 
void getSelectionDAGFallbackAnalysisUsage (AnalysisUsage &AU)
 Modify analysis usage so it preserves passes required for the SelectionDAG fallback.
 
std::optional< APIntConstantFoldBinOp (unsigned Opcode, const Register Op1, const Register Op2, const MachineRegisterInfo &MRI)
 
std::optional< APFloatConstantFoldFPBinOp (unsigned Opcode, const Register Op1, const Register Op2, const MachineRegisterInfo &MRI)
 
SmallVector< APIntConstantFoldVectorBinop (unsigned Opcode, const Register Op1, const Register Op2, const MachineRegisterInfo &MRI)
 Tries to constant fold a vector binop with sources Op1 and Op2.
 
std::optional< APIntConstantFoldCastOp (unsigned Opcode, LLT DstTy, const Register Op0, const MachineRegisterInfo &MRI)
 
std::optional< APIntConstantFoldExtOp (unsigned Opcode, const Register Op1, uint64_t Imm, const MachineRegisterInfo &MRI)
 
std::optional< APFloatConstantFoldIntToFloat (unsigned Opcode, LLT DstTy, Register Src, const MachineRegisterInfo &MRI)
 
std::optional< SmallVector< unsigned > > ConstantFoldCountZeros (Register Src, const MachineRegisterInfo &MRI, std::function< unsigned(APInt)> CB)
 Tries to constant fold a counting-zero operation (G_CTLZ or G_CTTZ) on Src.
 
std::optional< SmallVector< APInt > > ConstantFoldICmp (unsigned Pred, const Register Op1, const Register Op2, const MachineRegisterInfo &MRI)
 
bool isKnownToBeAPowerOfTwo (Register Val, const MachineRegisterInfo &MRI, GISelKnownBits *KnownBits=nullptr)
 Test if the given value is known to have exactly one bit set.
 
bool isKnownNeverNaN (Register Val, const MachineRegisterInfo &MRI, bool SNaN=false)
 Returns true if Val can be assumed to never be a NaN.
 
bool isKnownNeverSNaN (Register Val, const MachineRegisterInfo &MRI)
 Returns true if Val can be assumed to never be a signaling NaN.
 
Align inferAlignFromPtrInfo (MachineFunction &MF, const MachinePointerInfo &MPO)
 
Register getFunctionLiveInPhysReg (MachineFunction &MF, const TargetInstrInfo &TII, MCRegister PhysReg, const TargetRegisterClass &RC, const DebugLoc &DL, LLT RegTy=LLT())
 Return a virtual register corresponding to the incoming argument register PhysReg.
 
LLVM_READNONE LLT getLCMType (LLT OrigTy, LLT TargetTy)
 Return the least common multiple type of OrigTy and TargetTy, by changing the number of vector elements or scalar bitwidth.
 
LLVM_READNONE LLT getCoverTy (LLT OrigTy, LLT TargetTy)
 Return smallest type that covers both OrigTy and TargetTy and is multiple of TargetTy.
 
LLVM_READNONE LLT getGCDType (LLT OrigTy, LLT TargetTy)
 Return a type where the total size is the greatest common divisor of OrigTy and TargetTy.
 
std::optional< int > getSplatIndex (MachineInstr &MI)
 
std::optional< APIntgetIConstantSplatVal (const Register Reg, const MachineRegisterInfo &MRI)
 
std::optional< APIntgetIConstantSplatVal (const MachineInstr &MI, const MachineRegisterInfo &MRI)
 
std::optional< int64_t > getIConstantSplatSExtVal (const Register Reg, const MachineRegisterInfo &MRI)
 
std::optional< int64_t > getIConstantSplatSExtVal (const MachineInstr &MI, const MachineRegisterInfo &MRI)
 
std::optional< FPValueAndVReggetFConstantSplat (Register VReg, const MachineRegisterInfo &MRI, bool AllowUndef=true)
 Returns a floating point scalar constant of a build vector splat if it exists.
 
bool isBuildVectorConstantSplat (const Register Reg, const MachineRegisterInfo &MRI, int64_t SplatValue, bool AllowUndef)
 Return true if the specified register is defined by G_BUILD_VECTOR or G_BUILD_VECTOR_TRUNC where all of the elements are SplatValue or undef.
 
bool isBuildVectorConstantSplat (const MachineInstr &MI, const MachineRegisterInfo &MRI, int64_t SplatValue, bool AllowUndef)
 Return true if the specified instruction is a G_BUILD_VECTOR or G_BUILD_VECTOR_TRUNC where all of the elements are SplatValue or undef.
 
bool isBuildVectorAllZeros (const MachineInstr &MI, const MachineRegisterInfo &MRI, bool AllowUndef=false)
 Return true if the specified instruction is a G_BUILD_VECTOR or G_BUILD_VECTOR_TRUNC where all of the elements are 0 or undef.
 
bool isBuildVectorAllOnes (const MachineInstr &MI, const MachineRegisterInfo &MRI, bool AllowUndef=false)
 Return true if the specified instruction is a G_BUILD_VECTOR or G_BUILD_VECTOR_TRUNC where all of the elements are ~0 or undef.
 
bool isConstantOrConstantVector (const MachineInstr &MI, const MachineRegisterInfo &MRI, bool AllowFP=true, bool AllowOpaqueConstants=true)
 Return true if the specified instruction is known to be a constant, or a vector of constants.
 
bool isNullOrNullSplat (const MachineInstr &MI, const MachineRegisterInfo &MRI, bool AllowUndefs=false)
 Return true if the value is a constant 0 integer or a splatted vector of a constant 0 integer (with no undefs if AllowUndefs is false).
 
bool isAllOnesOrAllOnesSplat (const MachineInstr &MI, const MachineRegisterInfo &MRI, bool AllowUndefs=false)
 Return true if the value is a constant -1 integer or a splatted vector of a constant -1 integer (with no undefs if AllowUndefs is false).
 
std::optional< RegOrConstantgetVectorSplat (const MachineInstr &MI, const MachineRegisterInfo &MRI)
 
bool isConstantOrConstantVector (MachineInstr &MI, const MachineRegisterInfo &MRI)
 Determines if MI defines a constant integer or a build vector of constant integers.
 
std::optional< APIntisConstantOrConstantSplatVector (MachineInstr &MI, const MachineRegisterInfo &MRI)
 Determines if MI defines a constant integer or a splat vector of constant integers.
 
std::optional< APFloatisConstantOrConstantSplatVectorFP (MachineInstr &MI, const MachineRegisterInfo &MRI)
 Determines if MI defines a float constant integer or a splat vector of float constant integers.
 
bool matchUnaryPredicate (const MachineRegisterInfo &MRI, Register Reg, std::function< bool(const Constant *ConstVal)> Match, bool AllowUndefs=false)
 Attempt to match a unary predicate against a scalar/splat constant or every element of a constant G_BUILD_VECTOR.
 
bool isConstTrueVal (const TargetLowering &TLI, int64_t Val, bool IsVector, bool IsFP)
 Returns true if given the TargetLowering's boolean contents information, the value Val contains a true value.
 
bool isConstFalseVal (const TargetLowering &TLI, int64_t Val, bool IsVector, bool IsFP)
 
int64_t getICmpTrueVal (const TargetLowering &TLI, bool IsVector, bool IsFP)
 Returns an integer representing true, as defined by the TargetBooleanContents.
 
void saveUsesAndErase (MachineInstr &MI, MachineRegisterInfo &MRI, LostDebugLocObserver *LocObserver, SmallInstListTy &DeadInstChain)
 
void eraseInstrs (ArrayRef< MachineInstr * > DeadInstrs, MachineRegisterInfo &MRI, LostDebugLocObserver *LocObserver=nullptr)
 
void eraseInstr (MachineInstr &MI, MachineRegisterInfo &MRI, LostDebugLocObserver *LocObserver=nullptr)
 
void salvageDebugInfo (const MachineRegisterInfo &MRI, MachineInstr &MI)
 Assuming the instruction MI is going to be deleted, attempt to salvage debug users of MI by writing the effect of MI in a DIExpression.
 
bool isPreISelGenericFloatingPointOpcode (unsigned Opc)
 Returns whether opcode Opc is a pre-isel generic floating-point opcode, having only floating-point operands.
 
bool canCreateUndefOrPoison (Register Reg, const MachineRegisterInfo &MRI, bool ConsiderFlagsAndMetadata=true)
 Returns true if Reg can create undef or poison from non-undef & non-poison operands.
 
bool canCreatePoison (Register Reg, const MachineRegisterInfo &MRI, bool ConsiderFlagsAndMetadata=true)
 Returns true if Reg can create poison from non-poison operands.
 
bool isGuaranteedNotToBeUndefOrPoison (Register Reg, const MachineRegisterInfo &MRI, unsigned Depth=0)
 Returns true if Reg cannot be poison and undef.
 
bool isGuaranteedNotToBePoison (Register Reg, const MachineRegisterInfo &MRI, unsigned Depth=0)
 Returns true if Reg cannot be poison, but may be undef.
 
bool isGuaranteedNotToBeUndef (Register Reg, const MachineRegisterInfo &MRI, unsigned Depth=0)
 Returns true if Reg cannot be undef, but may be poison.
 
TypegetTypeForLLT (LLT Ty, LLVMContext &C)
 Get the type back from LLT.
 
raw_ostreamoperator<< (raw_ostream &OS, const LiveRange &LR)
 
raw_ostreamoperator<< (raw_ostream &OS, const LiveInterval::SubRange &SR)
 
raw_ostreamoperator<< (raw_ostream &OS, const LiveInterval &LI)
 
raw_ostreamoperator<< (raw_ostream &OS, const LiveRange::Segment &S)
 
bool operator< (SlotIndex V, const LiveRange::Segment &S)
 
bool operator< (const LiveRange::Segment &S, SlotIndex V)
 
raw_ostreamoperator<< (raw_ostream &OS, const LiveRangeUpdater &X)
 
raw_ostreamoperator<< (raw_ostream &OS, const LivePhysRegs &LR)
 
void computeLiveIns (LivePhysRegs &LiveRegs, const MachineBasicBlock &MBB)
 Computes registers live-in to MBB assuming all of its successors live-in lists are up-to-date.
 
void recomputeLivenessFlags (MachineBasicBlock &MBB)
 Recomputes dead and kill flags in MBB.
 
void addLiveIns (MachineBasicBlock &MBB, const LivePhysRegs &LiveRegs)
 Adds registers contained in LiveRegs to the block live-in list of MBB.
 
void computeAndAddLiveIns (LivePhysRegs &LiveRegs, MachineBasicBlock &MBB)
 Convenience function combining computeLiveIns() and addLiveIns().
 
static bool recomputeLiveIns (MachineBasicBlock &MBB)
 Convenience function for recomputing live-in's for a MBB.
 
void fullyRecomputeLiveIns (ArrayRef< MachineBasicBlock * > MBBs)
 Convenience function for recomputing live-in's for a set of MBBs until the computation converges.
 
iterator_range< filter_iterator< ConstMIBundleOperands, bool(*)(const MachineOperand &)> > phys_regs_and_masks (const MachineInstr &MI)
 Returns an iterator range over all physical register and mask operands for MI and bundled instructions.
 
LLT getLLTForType (Type &Ty, const DataLayout &DL)
 Construct a low-level type based on an LLVM type.
 
MVT getMVTForLLT (LLT Ty)
 Get a rough equivalent of an MVT for a given LLT.
 
EVT getApproximateEVTForLLT (LLT Ty, LLVMContext &Ctx)
 
LLT getLLTForMVT (MVT Ty)
 Get a rough equivalent of an LLT for a given MVT.
 
const llvm::fltSemanticsgetFltSemanticForLLT (LLT Ty)
 Get the appropriate floating point arithmetic semantic based on the bit size of the given scalar LLT.
 
raw_ostreamoperator<< (raw_ostream &OS, const MachineBasicBlock &MBB)
 
Printable printMBBReference (const MachineBasicBlock &MBB)
 Prints a machine basic block reference.
 
auto successors (const MachineBasicBlock *BB)
 
auto predecessors (const MachineBasicBlock *BB)
 
auto succ_size (const MachineBasicBlock *BB)
 
auto pred_size (const MachineBasicBlock *BB)
 
auto succ_begin (const MachineBasicBlock *BB)
 
auto pred_begin (const MachineBasicBlock *BB)
 
auto succ_end (const MachineBasicBlock *BB)
 
auto pred_end (const MachineBasicBlock *BB)
 
template<typename IterT >
IterT skipDebugInstructionsForward (IterT It, IterT End, bool SkipPseudoOp=true)
 Increment It until it points to a non-debug instruction or to End and return the resulting iterator.
 
template<class IterT >
IterT skipDebugInstructionsBackward (IterT It, IterT Begin, bool SkipPseudoOp=true)
 Decrement It until it points to a non-debug instruction or to Begin and return the resulting iterator.
 
template<typename IterT >
IterT next_nodbg (IterT It, IterT End, bool SkipPseudoOp=true)
 Increment It, then continue incrementing it while it points to a debug instruction.
 
template<typename IterT >
IterT prev_nodbg (IterT It, IterT Begin, bool SkipPseudoOp=true)
 Decrement It, then continue decrementing it while it points to a debug instruction.
 
template<typename IterT >
auto instructionsWithoutDebug (IterT It, IterT End, bool SkipPseudoOp=true)
 Construct a range iterator which begins at It and moves forwards until End is reached, skipping any debug instructions.
 
Printable printBlockFreq (const MachineBlockFrequencyInfo &MBFI, BlockFrequency Freq)
 Print the block frequency Freq relative to the current functions entry frequency.
 
Printable printBlockFreq (const MachineBlockFrequencyInfo &MBFI, const MachineBasicBlock &MBB)
 Convenience function equivalent to calling printBlockFreq(MBFI, MBFI.getBlockFreq(&MBB)).
 
raw_ostreamoperator<< (raw_ostream &OS, const MachineConstantPoolValue &V)
 
bool isCycleInvariant (const MachineCycle *Cycle, MachineInstr &I)
 
void verifyMachineFunction (const std::string &Banner, const MachineFunction &MF)
 
raw_ostreamoperator<< (raw_ostream &OS, const MachineInstr &MI)
 
MachineInstrBuilder BuildMI (MachineFunction &MF, const MIMetadata &MIMD, const MCInstrDesc &MCID)
 Builder interface. Specify how to create the initial instruction itself.
 
MachineInstrBuilder BuildMI (MachineFunction &MF, const MIMetadata &MIMD, const MCInstrDesc &MCID, Register DestReg)
 This version of the builder sets up the first operand as a destination virtual register.
 
MachineInstrBuilder BuildMI (MachineBasicBlock &BB, MachineBasicBlock::iterator I, const MIMetadata &MIMD, const MCInstrDesc &MCID, Register DestReg)
 This version of the builder inserts the newly-built instruction before the given position in the given MachineBasicBlock, and sets up the first operand as a destination virtual register.
 
MachineInstrBuilder BuildMI (MachineBasicBlock &BB, MachineBasicBlock::instr_iterator I, const MIMetadata &MIMD, const MCInstrDesc &MCID, Register DestReg)
 This version of the builder inserts the newly-built instruction before the given position in the given MachineBasicBlock, and sets up the first operand as a destination virtual register.
 
MachineInstrBuilder BuildMI (MachineBasicBlock &BB, MachineInstr &I, const MIMetadata &MIMD, const MCInstrDesc &MCID, Register DestReg)
 
MachineInstrBuilder BuildMI (MachineBasicBlock &BB, MachineInstr *I, const MIMetadata &MIMD, const MCInstrDesc &MCID, Register DestReg)
 
MachineInstrBuilder BuildMI (MachineBasicBlock &BB, MachineBasicBlock::iterator I, const MIMetadata &MIMD, const MCInstrDesc &MCID)
 This version of the builder inserts the newly-built instruction before the given position in the given MachineBasicBlock, and does NOT take a destination register.
 
MachineInstrBuilder BuildMI (MachineBasicBlock &BB, MachineBasicBlock::instr_iterator I, const MIMetadata &MIMD, const MCInstrDesc &MCID)
 
MachineInstrBuilder BuildMI (MachineBasicBlock &BB, MachineInstr &I, const MIMetadata &MIMD, const MCInstrDesc &MCID)
 
MachineInstrBuilder BuildMI (MachineBasicBlock &BB, MachineInstr *I, const MIMetadata &MIMD, const MCInstrDesc &MCID)
 
MachineInstrBuilder BuildMI (MachineBasicBlock *BB, const MIMetadata &MIMD, const MCInstrDesc &MCID)
 This version of the builder inserts the newly-built instruction at the end of the given MachineBasicBlock, and does NOT take a destination register.
 
MachineInstrBuilder BuildMI (MachineBasicBlock *BB, const MIMetadata &MIMD, const MCInstrDesc &MCID, Register DestReg)
 This version of the builder inserts the newly-built instruction at the end of the given MachineBasicBlock, and sets up the first operand as a destination virtual register.
 
MachineInstrBuilder BuildMI (MachineFunction &MF, const DebugLoc &DL, const MCInstrDesc &MCID, bool IsIndirect, Register Reg, const MDNode *Variable, const MDNode *Expr)
 This version of the builder builds a DBG_VALUE intrinsic for either a value in a register or a register-indirect address.
 
MachineInstrBuilder BuildMI (MachineFunction &MF, const DebugLoc &DL, const MCInstrDesc &MCID, bool IsIndirect, ArrayRef< MachineOperand > MOs, const MDNode *Variable, const MDNode *Expr)
 This version of the builder builds a DBG_VALUE or DBG_VALUE_LIST intrinsic for a MachineOperand.
 
MachineInstrBuilder BuildMI (MachineBasicBlock &BB, MachineBasicBlock::iterator I, const DebugLoc &DL, const MCInstrDesc &MCID, bool IsIndirect, Register Reg, const MDNode *Variable, const MDNode *Expr)
 This version of the builder builds a DBG_VALUE intrinsic for either a value in a register or a register-indirect address and inserts it at position I.
 
MachineInstrBuilder BuildMI (MachineBasicBlock &BB, MachineBasicBlock::iterator I, const DebugLoc &DL, const MCInstrDesc &MCID, bool IsIndirect, ArrayRef< MachineOperand > MOs, const MDNode *Variable, const MDNode *Expr)
 This version of the builder builds a DBG_VALUE, DBG_INSTR_REF, or DBG_VALUE_LIST intrinsic for a machine operand and inserts it at position I.
 
MachineInstrbuildDbgValueForSpill (MachineBasicBlock &BB, MachineBasicBlock::iterator I, const MachineInstr &Orig, int FrameIndex, Register SpillReg)
 Clone a DBG_VALUE whose value has been spilled to FrameIndex.
 
MachineInstrbuildDbgValueForSpill (MachineBasicBlock &BB, MachineBasicBlock::iterator I, const MachineInstr &Orig, int FrameIndex, const SmallVectorImpl< const MachineOperand * > &SpilledOperands)
 
void updateDbgValueForSpill (MachineInstr &Orig, int FrameIndex, Register Reg)
 Update a DBG_VALUE whose value has been spilled to FrameIndex.
 
unsigned getDefRegState (bool B)
 
unsigned getImplRegState (bool B)
 
unsigned getKillRegState (bool B)
 
unsigned getDeadRegState (bool B)
 
unsigned getUndefRegState (bool B)
 
unsigned getInternalReadRegState (bool B)
 
unsigned getDebugRegState (bool B)
 
unsigned getRenamableRegState (bool B)
 
unsigned getRegState (const MachineOperand &RegOp)
 Get all register state flags from machine operand RegOp.
 
void finalizeBundle (MachineBasicBlock &MBB, MachineBasicBlock::instr_iterator FirstMI, MachineBasicBlock::instr_iterator LastMI)
 finalizeBundle - Finalize a machine instruction bundle which includes a sequence of instructions starting from FirstMI to LastMI (exclusive).
 
MachineBasicBlock::instr_iterator finalizeBundle (MachineBasicBlock &MBB, MachineBasicBlock::instr_iterator FirstMI)
 finalizeBundle - Same functionality as the previous finalizeBundle except the last instruction in the bundle is not provided as an input.
 
bool finalizeBundles (MachineFunction &MF)
 finalizeBundles - Finalize instruction bundles in the specified MachineFunction.
 
MachineBasicBlock::instr_iterator getBundleStart (MachineBasicBlock::instr_iterator I)
 Returns an iterator to the first instruction in the bundle containing I.
 
MachineBasicBlock::const_instr_iterator getBundleStart (MachineBasicBlock::const_instr_iterator I)
 Returns an iterator to the first instruction in the bundle containing I.
 
MachineBasicBlock::instr_iterator getBundleEnd (MachineBasicBlock::instr_iterator I)
 Returns an iterator pointing beyond the bundle containing I.
 
MachineBasicBlock::const_instr_iterator getBundleEnd (MachineBasicBlock::const_instr_iterator I)
 Returns an iterator pointing beyond the bundle containing I.
 
iterator_range< ConstMIBundleOperandsconst_mi_bundle_ops (const MachineInstr &MI)
 
iterator_range< MIBundleOperandsmi_bundle_ops (MachineInstr &MI)
 
VirtRegInfo AnalyzeVirtRegInBundle (MachineInstr &MI, Register Reg, SmallVectorImpl< std::pair< MachineInstr *, unsigned > > *Ops=nullptr)
 AnalyzeVirtRegInBundle - Analyze how the current instruction or bundle uses a virtual register.
 
std::pair< LaneBitmask, LaneBitmaskAnalyzeVirtRegLanesInBundle (const MachineInstr &MI, Register Reg, const MachineRegisterInfo &MRI, const TargetRegisterInfo &TRI)
 Return a pair of lane masks (reads, writes) indicating which lanes this instruction uses with Reg.
 
PhysRegInfo AnalyzePhysRegInBundle (const MachineInstr &MI, Register Reg, const TargetRegisterInfo *TRI)
 AnalyzePhysRegInBundle - Analyze how the current instruction or bundle uses a physical register.
 
Printable printJumpTableEntryReference (unsigned Idx)
 Prints a jump table entry reference.
 
MachineBasicBlockPeelSingleBlockLoop (LoopPeelDirection Direction, MachineBasicBlock *Loop, MachineRegisterInfo &MRI, const TargetInstrInfo *TII)
 Peels a single block loop.
 
raw_ostreamoperator<< (raw_ostream &OS, const MachineOperand &MO)
 
hash_code hash_value (const MachineOperand &MO)
 
template<typename PassT >
 MFPropsModifier (PassT &P, MachineFunction &MF) -> MFPropsModifier< PassT >
 
template<typename MachineFunctionPassT >
FunctionToMachineFunctionPassAdaptor createFunctionToMachineFunctionPassAdaptor (MachineFunctionPassT &&Pass)
 
PreservedAnalyses getMachineFunctionPassPreservedAnalyses ()
 Returns the minimum set of Analyses that all machine function passes must preserve.
 
 RegionNodeGraphTraits (MachineRegionNode, MachineBasicBlock, MachineRegion)
 
 RegionGraphTraits (MachineRegion, MachineRegionNode)
 
bool tryLess (int TryVal, int CandVal, GenericSchedulerBase::SchedCandidate &TryCand, GenericSchedulerBase::SchedCandidate &Cand, GenericSchedulerBase::CandReason Reason)
 Return true if this heuristic determines order.
 
bool tryGreater (int TryVal, int CandVal, GenericSchedulerBase::SchedCandidate &TryCand, GenericSchedulerBase::SchedCandidate &Cand, GenericSchedulerBase::CandReason Reason)
 
bool tryLatency (GenericSchedulerBase::SchedCandidate &TryCand, GenericSchedulerBase::SchedCandidate &Cand, SchedBoundary &Zone)
 
bool tryPressure (const PressureChange &TryP, const PressureChange &CandP, GenericSchedulerBase::SchedCandidate &TryCand, GenericSchedulerBase::SchedCandidate &Cand, GenericSchedulerBase::CandReason Reason, const TargetRegisterInfo *TRI, const MachineFunction &MF)
 
unsigned getWeakLeft (const SUnit *SU, bool isTop)
 
int biasPhysReg (const SUnit *SU, bool isTop)
 Minimize physical register live ranges.
 
ScheduleDAGMILivecreateGenericSchedLive (MachineSchedContext *C)
 Create the standard converging machine scheduler.
 
ScheduleDAGMIcreateGenericSchedPostRA (MachineSchedContext *C)
 Create a generic scheduler with no vreg liveness or DAG mutation passes.
 
std::unique_ptr< ScheduleDAGMutationcreateLoadClusterDAGMutation (const TargetInstrInfo *TII, const TargetRegisterInfo *TRI, bool ReorderWhileClustering=false)
 If ReorderWhileClustering is set to true, no attempt will be made to reduce reordering due to store clustering.
 
std::unique_ptr< ScheduleDAGMutationcreateStoreClusterDAGMutation (const TargetInstrInfo *TII, const TargetRegisterInfo *TRI, bool ReorderWhileClustering=false)
 If ReorderWhileClustering is set to true, no attempt will be made to reduce reordering due to store clustering.
 
std::unique_ptr< ScheduleDAGMutationcreateCopyConstrainDAGMutation (const TargetInstrInfo *TII, const TargetRegisterInfo *TRI)
 
bool shouldOptimizeForSize (const MachineFunction *MF, ProfileSummaryInfo *PSI, const MachineBlockFrequencyInfo *BFI, PGSOQueryType QueryType=PGSOQueryType::Other)
 Returns true if machine function MF is suggested to be size-optimized based on the profile.
 
bool shouldOptimizeForSize (const MachineBasicBlock *MBB, ProfileSummaryInfo *PSI, const MachineBlockFrequencyInfo *MBFI, PGSOQueryType QueryType=PGSOQueryType::Other)
 Returns true if machine basic block MBB is suggested to be size-optimized based on the profile.
 
bool shouldOptimizeForSize (const MachineBasicBlock *MBB, ProfileSummaryInfo *PSI, MBFIWrapper *MBFIWrapper, PGSOQueryType QueryType=PGSOQueryType::Other)
 Returns true if machine basic block MBB is suggested to be size-optimized based on the profile.
 
auto instrs (const MachineBasicBlock &BB)
 
stable_hash stableHashValue (const MachineOperand &MO)
 
stable_hash stableHashValue (const MachineInstr &MI, bool HashVRegs=false, bool HashConstantPoolIndices=false, bool HashMemOperands=false)
 A stable hash value for machine instructions.
 
stable_hash stableHashValue (const MachineBasicBlock &MBB)
 
stable_hash stableHashValue (const MachineFunction &MF)
 
raw_ostreamoperator<< (raw_ostream &OS, const MachineTraceMetrics::Trace &Tr)
 
raw_ostreamoperator<< (raw_ostream &OS, const MachineTraceMetrics::Ensemble &En)
 
MachineUniformityInfo computeMachineUniformityInfo (MachineFunction &F, const MachineCycleInfo &cycleInfo, const MachineDominatorTree &domTree, bool HasBranchDivergence)
 Compute uniformity information for a Machine IR function.
 
bool hasLessThanNumFused (const SUnit &SU, unsigned FuseLimit)
 Checks if the number of cluster edges between SU and its predecessors is less than FuseLimit.
 
bool fuseInstructionPair (ScheduleDAGInstrs &DAG, SUnit &FirstSU, SUnit &SecondSU)
 Create an artificial edge between FirstSU and SecondSU.
 
std::unique_ptr< ScheduleDAGMutationcreateMacroFusionDAGMutation (ArrayRef< MacroFusionPredTy > Predicates, bool BranchOnly=false)
 Create a DAG scheduling mutation to pair instructions back to back for instructions that benefit according to the target-specific predicate functions.
 
bool parseMachineBasicBlockDefinitions (PerFunctionMIParsingState &PFS, StringRef Src, SMDiagnostic &Error)
 Parse the machine basic block definitions, and skip the machine instructions.
 
bool parseMachineInstructions (PerFunctionMIParsingState &PFS, StringRef Src, SMDiagnostic &Error)
 Parse the machine instructions.
 
bool parseMBBReference (PerFunctionMIParsingState &PFS, MachineBasicBlock *&MBB, StringRef Src, SMDiagnostic &Error)
 
bool parseRegisterReference (PerFunctionMIParsingState &PFS, Register &Reg, StringRef Src, SMDiagnostic &Error)
 
bool parseNamedRegisterReference (PerFunctionMIParsingState &PFS, Register &Reg, StringRef Src, SMDiagnostic &Error)
 
bool parseVirtualRegisterReference (PerFunctionMIParsingState &PFS, VRegInfo *&Info, StringRef Src, SMDiagnostic &Error)
 
bool parseStackObjectReference (PerFunctionMIParsingState &PFS, int &FI, StringRef Src, SMDiagnostic &Error)
 
bool parseMDNode (PerFunctionMIParsingState &PFS, MDNode *&Node, StringRef Src, SMDiagnostic &Error)
 
bool parseMachineMetadata (PerFunctionMIParsingState &PFS, StringRef Src, SMRange SourceRange, SMDiagnostic &Error)
 
std::unique_ptr< MIRParsercreateMIRParserFromFile (StringRef Filename, SMDiagnostic &Error, LLVMContext &Context, std::function< void(Function &)> ProcessIRFunction=nullptr)
 This function is the main interface to the MIR serialization format parser.
 
std::unique_ptr< MIRParsercreateMIRParser (std::unique_ptr< MemoryBuffer > Contents, LLVMContext &Context, std::function< void(Function &)> ProcessIRFunction=nullptr)
 This function is another interface to the MIR serialization format parser.
 
void printMIR (raw_ostream &OS, const Module &M)
 Print LLVM IR using the MIR serialization format to the given output stream.
 
void printMIR (raw_ostream &OS, const MachineModuleInfo &MMI, const MachineFunction &MF)
 Print a machine function using the MIR serialization format to the given output stream.
 
void guessSuccessors (const MachineBasicBlock &MBB, SmallVectorImpl< MachineBasicBlock * > &Result, bool &IsFallthrough)
 Determine a possible list of successors of a basic block based on the basic block machine operand being used inside the block.
 
FunctionPasscreateAtomicExpandLegacyPass ()
 AtomicExpandPass - At IR level this pass replace atomic instructions with __atomic_* library calls, or target specific instruction which implement the same semantics in a way which better fits the target backend.
 
FunctionPasscreateUnreachableBlockEliminationPass ()
 createUnreachableBlockEliminationPass - The LLVM code generator does not work well with unreachable basic blocks (what live ranges make sense for a block that cannot be reached?).
 
MachineFunctionPasscreateGCEmptyBasicBlocksPass ()
 createGCEmptyBasicblocksPass - Empty basic blocks (basic blocks without real code) appear as the result of optimization passes removing instructions.
 
MachineFunctionPasscreateBasicBlockSectionsPass ()
 createBasicBlockSections Pass - This pass assigns sections to machine basic blocks and is enabled with -fbasic-block-sections.
 
MachineFunctionPasscreateBasicBlockPathCloningPass ()
 
MachineFunctionPasscreateMachineFunctionSplitterPass ()
 createMachineFunctionSplitterPass - This pass splits machine functions using profile information.
 
MachineFunctionPasscreateMachineFunctionPrinterPass (raw_ostream &OS, const std::string &Banner="")
 MachineFunctionPrinter pass - This pass prints out the machine function to the given stream as a debugging tool.
 
MachineFunctionPasscreateStackFrameLayoutAnalysisPass ()
 StackFramePrinter pass - This pass prints out the machine function's stack frame to the given stream as a debugging tool.
 
MachineFunctionPasscreatePrintMIRPass (raw_ostream &OS)
 MIRPrinting pass - this pass prints out the LLVM IR into the given stream using the MIR serialization format.
 
MachineFunctionPasscreateResetMachineFunctionPass (bool EmitFallbackDiag, bool AbortOnFailedISel)
 This pass resets a MachineFunction when it has the FailedISel property as if it was just created.
 
FunctionPasscreateCodeGenPrepareLegacyPass ()
 createCodeGenPrepareLegacyPass - Transform the code to expose more pattern matching during instruction selection.
 
FunctionPasscreateComplexDeinterleavingPass (const TargetMachine *TM)
 This pass implements generation of target-specific intrinsics to support handling of complex number arithmetic.
 
FunctionPasscreateVirtRegRewriter (bool ClearVirtRegs=true)
 
FunctionPasscreateFastRegisterAllocator ()
 FastRegisterAllocation Pass - This pass register allocates as fast as possible.
 
FunctionPasscreateFastRegisterAllocator (RegAllocFilterFunc F, bool ClearVirtRegs)
 
FunctionPasscreateBasicRegisterAllocator ()
 BasicRegisterAllocation Pass - This pass implements a degenerate global register allocator using the basic regalloc framework.
 
FunctionPasscreateBasicRegisterAllocator (RegAllocFilterFunc F)
 
FunctionPasscreateGreedyRegisterAllocator ()
 Greedy register allocation pass - This pass implements a global register allocator for optimized builds.
 
FunctionPasscreateGreedyRegisterAllocator (RegAllocFilterFunc F)
 
FunctionPasscreateDefaultPBQPRegisterAllocator ()
 PBQPRegisterAllocation Pass - This pass implements the Partitioned Boolean Quadratic Prograaming (PBQP) based register allocator.
 
MachineFunctionPasscreatePrologEpilogInserterPass ()
 
FunctionPasscreateIfConverter (std::function< bool(const MachineFunction &)> Ftor)
 
FunctionPasscreateGCLoweringPass ()
 GCLowering Pass - Used by gc.root to perform its default lowering operations.
 
FunctionPasscreateShadowStackGCLoweringPass ()
 ShadowStackGCLowering - Implements the custom lowering mechanism used by the shadow stack GC.
 
MachineFunctionPasscreateMachineCopyPropagationPass (bool UseCopyInstr)
 
FunctionPasscreateStackProtectorPass ()
 createStackProtectorPass - This pass adds stack protectors to functions.
 
FunctionPasscreateMachineVerifierPass (const std::string &Banner)
 createMachineVerifierPass - This pass verifies cenerated machine code instructions for correctness.
 
FunctionPasscreateDwarfEHPass (CodeGenOptLevel OptLevel)
 createDwarfEHPass - This pass mulches exception handling code into a form adapted to code generation.
 
FunctionPasscreateWinEHPass (bool DemoteCatchSwitchPHIOnly=false)
 createWinEHPass - Prepares personality functions used by MSVC on Windows, in addition to the Itanium LSDA based personalities.
 
FunctionPasscreateSjLjEHPreparePass (const TargetMachine *TM)
 createSjLjEHPreparePass - This pass adapts exception handling code to use the GCC-style builtin setjmp/longjmp (sjlj) to handling EH control flow.
 
FunctionPasscreateWasmEHPass ()
 createWasmEHPass - This pass adapts exception handling code to use WebAssembly's exception handling scheme.
 
FunctionPasscreateUnpackMachineBundles (std::function< bool(const MachineFunction &)> Ftor)
 
FunctionPasscreateInterleavedAccessPass ()
 InterleavedAccess Pass - This pass identifies and matches interleaved memory accesses to target specific intrinsics.
 
FunctionPasscreateInterleavedLoadCombinePass ()
 InterleavedLoadCombines Pass - This pass identifies interleaved loads and combines them into wide loads detectable by InterleavedAccessPass.
 
ModulePasscreateLowerEmuTLSPass ()
 LowerEmuTLS - This pass generates __emutls_[vt].xyz variables for all TLS variables for the emulated TLS model.
 
ModulePasscreatePreISelIntrinsicLoweringPass ()
 This pass lowers the @llvm.load.relative and @llvm.objc.
 
PasscreateGlobalMergePass (const TargetMachine *TM, unsigned MaximalOffset, bool OnlyOptimizeForSize=false, bool MergeExternalByDefault=false, bool MergeConstantByDefault=false, bool MergeConstAggressiveByDefault=false)
 GlobalMerge - This pass merges internal (by default) globals into structs to enable reuse of a base pointer by indexed addressing modes.
 
FunctionPasscreateSafeStackPass ()
 This pass splits the stack into a safe stack and an unsafe stack to protect against stack-based overflow vulnerabilities.
 
FunctionPasscreateRegUsageInfoCollector ()
 This pass is executed POST-RA to collect which physical registers are preserved by given machine function.
 
FunctionPasscreateRegUsageInfoPropPass ()
 Return a MachineFunction pass that identifies call sites and propagates register usage information of callee to caller if available with PysicalRegisterUsageInfo pass.
 
FunctionPasscreateFreeMachineFunctionPass ()
 This pass frees the memory occupied by the MachineFunction.
 
ModulePasscreateGlobalMergeFuncPass ()
 This pass performs merging similar functions globally.
 
ModulePasscreateMachineOutlinerPass (bool RunOnAllFunctions=true)
 This pass performs outlining on machine instructions directly before printing assembly.
 
FunctionPasscreateExpandReductionsPass ()
 This pass expands the reduction intrinsics into sequences of shuffles.
 
FunctionPasscreateReplaceWithVeclibLegacyPass ()
 
FunctionPasscreateExpandLargeDivRemPass ()
 
FunctionPasscreateExpandLargeFpConvertPass ()
 
FunctionPasscreateExpandMemCmpLegacyPass ()
 
FunctionPasscreateBreakFalseDeps ()
 Creates Break False Dependencies pass.
 
FunctionPasscreateIndirectBrExpandPass ()
 
FunctionPasscreateCFIFixup ()
 Creates CFI Fixup pass.
 
FunctionPasscreateCFIInstrInserter ()
 Creates CFI Instruction Inserter pass.
 
FunctionPasscreateCFGuardLongjmpPass ()
 Creates CFGuard longjmp target identification pass.
 
FunctionPasscreateEHContGuardCatchretPass ()
 Creates EHContGuard catchret target identification pass.
 
FunctionPasscreateHardwareLoopsLegacyPass ()
 Create Hardware Loop pass.
 
FunctionPasscreatePseudoProbeInserter ()
 This pass inserts pseudo probe annotation for callsite profiling.
 
FunctionPasscreateTypePromotionLegacyPass ()
 Create IR Type Promotion pass.
 
FunctionPasscreateMIRAddFSDiscriminatorsPass (sampleprof::FSDiscriminatorPass P)
 Add Flow Sensitive Discriminators.
 
FunctionPasscreateMIRProfileLoaderPass (std::string File, std::string RemappingFile, sampleprof::FSDiscriminatorPass P, IntrusiveRefCntPtr< vfs::FileSystem > FS)
 Read Flow Sensitive Profile.
 
ModulePasscreateDebugifyMachineModulePass ()
 Creates MIR Debugify pass.
 
ModulePasscreateStripDebugMachineModulePass (bool OnlyDebugified)
 Creates MIR Strip Debug pass.
 
ModulePasscreateCheckDebugMachineModulePass ()
 Creates MIR Check Debug pass.
 
FunctionPasscreateX86LowerAMXTypePass ()
 The pass transforms load/store <256 x i32> to AMX load/store intrinsics or split the data to two <128 x i32>.
 
FunctionPasscreateX86LowerAMXIntrinsicsPass ()
 The pass transforms amx intrinsics to scalar operation if the function has optnone attribute or it is O0.
 
FunctionPasscreateRegAllocScoringPass ()
 When learning an eviction policy, extract score(reward) information, otherwise this does nothing.
 
ModulePasscreateJMCInstrumenterPass ()
 JMC instrument pass.
 
FunctionPasscreateSelectOptimizePass ()
 This pass converts conditional moves to conditional jumps when profitable.
 
FunctionPasscreateCallBrPass ()
 
FunctionPasscreateKCFIPass ()
 Lowers KCFI operand bundles for indirect calls.
 
raw_ostreamoperator<< (raw_ostream &OS, const PseudoSourceValue *PSV)
 
FunctionPasscreatePBQPRegisterAllocator (char *customPassID=nullptr)
 Create a PBQP register allocator instance.
 
raw_ostreamoperator<< (raw_ostream &OS, const RegisterBank &RegBank)
 
raw_ostreamoperator<< (raw_ostream &OS, const RegisterBankInfo::PartialMapping &PartMapping)
 
raw_ostreamoperator<< (raw_ostream &OS, const RegisterBankInfo::ValueMapping &ValMapping)
 
raw_ostreamoperator<< (raw_ostream &OS, const RegisterBankInfo::InstructionMapping &InstrMapping)
 
raw_ostreamoperator<< (raw_ostream &OS, const RegisterBankInfo::OperandsMapper &OpdMapper)
 
hash_code hash_value (const RegisterBankInfo::PartialMapping &PartMapping)
 Hashing function for PartialMapping.
 
void dumpRegSetPressure (ArrayRef< unsigned > SetPressure, const TargetRegisterInfo *TRI)
 
void scavengeFrameVirtualRegs (MachineFunction &MF, RegScavenger &RS)
 Replaces all frame index virtual registers with physical registers.
 
raw_ostreamoperator<< (raw_ostream &OS, const ILPValue &Val)
 
ScheduleDAGSDNodescreateBURRListDAGScheduler (SelectionDAGISel *IS, CodeGenOptLevel OptLevel)
 createBURRListDAGScheduler - This creates a bottom up register usage reduction list scheduler.
 
ScheduleDAGSDNodescreateSourceListDAGScheduler (SelectionDAGISel *IS, CodeGenOptLevel OptLevel)
 createSourceListDAGScheduler - This creates a bottom up list scheduler that schedules nodes in source code order when possible.
 
ScheduleDAGSDNodescreateHybridListDAGScheduler (SelectionDAGISel *IS, CodeGenOptLevel)
 createHybridListDAGScheduler - This creates a bottom up register pressure aware list scheduler that make use of latency information to avoid stalls for long latency instructions in low register pressure mode.
 
ScheduleDAGSDNodescreateILPListDAGScheduler (SelectionDAGISel *IS, CodeGenOptLevel)
 createILPListDAGScheduler - This creates a bottom up register pressure aware list scheduler that tries to increase instruction level parallelism in low register pressure mode.
 
ScheduleDAGSDNodescreateFastDAGScheduler (SelectionDAGISel *IS, CodeGenOptLevel OptLevel)
 createFastDAGScheduler - This creates a "fast" scheduler.
 
ScheduleDAGSDNodescreateVLIWDAGScheduler (SelectionDAGISel *IS, CodeGenOptLevel OptLevel)
 createVLIWDAGScheduler - Scheduler for VLIW targets.
 
ScheduleDAGSDNodescreateDefaultScheduler (SelectionDAGISel *IS, CodeGenOptLevel OptLevel)
 createDefaultScheduler - This creates an instruction scheduler appropriate for the target.
 
ScheduleDAGSDNodescreateDAGLinearizer (SelectionDAGISel *IS, CodeGenOptLevel OptLevel)
 createDAGLinearizer - This creates a "no-scheduling" scheduler which linearize the DAG using topological order.
 
void checkForCycles (const SelectionDAG *DAG, bool force=false)
 
void checkForCycles (const SDNode *N, const SelectionDAG *DAG=nullptr, bool force=false)
 
 LLVM_DECLARE_ENUM_AS_BITMASK (decltype(SDNodeFlags::None), SDNodeFlags::SameSign)
 
SDNodeFlags operator| (SDNodeFlags LHS, SDNodeFlags RHS)
 
SDNodeFlags operator& (SDNodeFlags LHS, SDNodeFlags RHS)
 
bool isNullConstant (SDValue V)
 Returns true if V is a constant integer zero.
 
bool isNullConstantOrUndef (SDValue V)
 Returns true if V is a constant integer zero or an UNDEF node.
 
bool isNullFPConstant (SDValue V)
 Returns true if V is an FP constant with a value of positive zero.
 
bool isAllOnesConstant (SDValue V)
 Returns true if V is an integer constant with all bits set.
 
bool isOneConstant (SDValue V)
 Returns true if V is a constant integer one.
 
bool isMinSignedConstant (SDValue V)
 Returns true if V is a constant min signed integer value.
 
bool isNeutralConstant (unsigned Opc, SDNodeFlags Flags, SDValue V, unsigned OperandNo)
 Returns true if V is a neutral element of Opc with Flags.
 
SDValue peekThroughBitcasts (SDValue V)
 Return the non-bitcasted source operand of V if it exists.
 
SDValue peekThroughOneUseBitcasts (SDValue V)
 Return the non-bitcasted and one-use source operand of V if it exists.
 
SDValue peekThroughExtractSubvectors (SDValue V)
 Return the non-extracted vector source operand of V if it exists.
 
SDValue peekThroughTruncates (SDValue V)
 Return the non-truncated source operand of V if it exists.
 
bool isBitwiseNot (SDValue V, bool AllowUndefs=false)
 Returns true if V is a bitwise not operation.
 
SDValue getBitwiseNotOperand (SDValue V, SDValue Mask, bool AllowUndefs)
 If V is a bitwise not, returns the inverted operand.
 
ConstantSDNodeisConstOrConstSplat (SDValue N, bool AllowUndefs=false, bool AllowTruncation=false)
 Returns the SDNode if it is a constant splat BuildVector or constant int.
 
ConstantSDNodeisConstOrConstSplat (SDValue N, const APInt &DemandedElts, bool AllowUndefs=false, bool AllowTruncation=false)
 Returns the SDNode if it is a demanded constant splat BuildVector or constant int.
 
ConstantFPSDNodeisConstOrConstSplatFP (SDValue N, bool AllowUndefs=false)
 Returns the SDNode if it is a constant splat BuildVector or constant float.
 
ConstantFPSDNodeisConstOrConstSplatFP (SDValue N, const APInt &DemandedElts, bool AllowUndefs=false)
 Returns the SDNode if it is a demanded constant splat BuildVector or constant float.
 
bool isNullOrNullSplat (SDValue V, bool AllowUndefs=false)
 Return true if the value is a constant 0 integer or a splatted vector of a constant 0 integer (with no undefs by default).
 
bool isOneOrOneSplat (SDValue V, bool AllowUndefs=false)
 Return true if the value is a constant 1 integer or a splatted vector of a constant 1 integer (with no undefs).
 
bool isAllOnesOrAllOnesSplat (SDValue V, bool AllowUndefs=false)
 Return true if the value is a constant -1 integer or a splatted vector of a constant -1 integer (with no undefs).
 
bool isIntOrFPConstant (SDValue V)
 Return true if V is either a integer or FP constant.
 
raw_ostreamoperator<< (raw_ostream &os, SlotIndex li)
 
SpillercreateInlineSpiller (const Spiller::RequiredAnalyses &Analyses, MachineFunction &MF, VirtRegMap &VRM, VirtRegAuxInfo &VRAI)
 Create and return a spiller that will insert spill code directly instead of deferring though VirtRegMap.
 
void GetReturnInfo (CallingConv::ID CC, Type *ReturnType, AttributeList attr, SmallVectorImpl< ISD::OutputArg > &Outs, const TargetLowering &TLI, const DataLayout &DL)
 Given an LLVM IR type and return type attributes, compute the return value EVTs and flags, and optionally also the offsets, if the return value is being lowered to memory.
 
bool isPreISelGenericOpcode (unsigned Opcode)
 Check whether the given Opcode is a generic opcode that is not supposed to appear after ISel.
 
bool isTargetSpecificOpcode (unsigned Opcode)
 Check whether the given Opcode is a target-specific opcode.
 
bool isPreISelGenericOptimizationHint (unsigned Opcode)
 
void registerCodeGenCallback (PassInstrumentationCallbacks &PIC, TargetMachine &)
 
Printable printReg (Register Reg, const TargetRegisterInfo *TRI=nullptr, unsigned SubIdx=0, const MachineRegisterInfo *MRI=nullptr)
 Prints virtual and physical registers with or without a TRI instance.
 
Printable printRegUnit (unsigned Unit, const TargetRegisterInfo *TRI)
 Create Printable object to print register units on a raw_ostream.
 
Printable printVRegOrUnit (unsigned VRegOrUnit, const TargetRegisterInfo *TRI)
 Create Printable object to print virtual registers and physical registers on a raw_ostream.
 
Printable printRegClassOrBank (Register Reg, const MachineRegisterInfo &RegInfo, const TargetRegisterInfo *TRI)
 Create Printable object to print register classes or register banks on a raw_ostream.
 
raw_ostreamoperator<< (raw_ostream &OS, const EVT &V)
 
raw_ostreamoperator<< (raw_ostream &OS, const VirtRegMap &VRM)
 
void calculateWasmEHInfo (const Function *F, WasmEHFuncInfo &EHInfo)
 
void calculateWinCXXEHStateNumbers (const Function *ParentFn, WinEHFuncInfo &FuncInfo)
 Analyze the IR in ParentFn and it's handlers to build WinEHFuncInfo, which describes the state numbers and tables used by __CxxFrameHandler3.
 
void calculateSEHStateNumbers (const Function *ParentFn, WinEHFuncInfo &FuncInfo)
 
void calculateClrEHStateNumbers (const Function *Fn, WinEHFuncInfo &FuncInfo)
 
void calculateCXXStateForAsynchEH (const BasicBlock *BB, int State, WinEHFuncInfo &FuncInfo)
 
void calculateSEHStateForAsynchEH (const BasicBlock *BB, int State, WinEHFuncInfo &FuncInfo)
 
raw_ostreamoperator<< (raw_ostream &OS, const LLT &Ty)
 
raw_ostreamoperator<< (raw_ostream &OS, const MVT &VT)
 
std::optional< StringRefStripTemplateParameters (StringRef Name)
 If Name is the name of a templated function that includes template parameters, returns a substring of Name containing no template parameters.
 
std::optional< ObjCSelectorNamesgetObjCNamesIfSelector (StringRef Name)
 If Name is the AT_name of a DIE which refers to an Objective-C selector, returns an instance of ObjCSelectorNames.
 
bool operator< (const DWARFAddressRange &LHS, const DWARFAddressRange &RHS)
 
bool operator== (const DWARFAddressRange &LHS, const DWARFAddressRange &RHS)
 
raw_ostreamoperator<< (raw_ostream &OS, const DWARFAddressRange &R)
 
bool operator== (const DWARFDie::attribute_iterator &LHS, const DWARFDie::attribute_iterator &RHS)
 
bool operator!= (const DWARFDie::attribute_iterator &LHS, const DWARFDie::attribute_iterator &RHS)
 
bool operator== (const DWARFDie &LHS, const DWARFDie &RHS)
 
bool operator!= (const DWARFDie &LHS, const DWARFDie &RHS)
 
bool operator< (const DWARFDie &LHS, const DWARFDie &RHS)
 
bool operator== (const DWARFDie::iterator &LHS, const DWARFDie::iterator &RHS)
 
bool operator== (const std::reverse_iterator< DWARFDie::iterator > &LHS, const std::reverse_iterator< DWARFDie::iterator > &RHS)
 
bool operator!= (const std::reverse_iterator< DWARFDie::iterator > &LHS, const std::reverse_iterator< DWARFDie::iterator > &RHS)
 
void dumpTypeQualifiedName (const DWARFDie &DIE, raw_ostream &OS)
 
void dumpTypeUnqualifiedName (const DWARFDie &DIE, raw_ostream &OS, std::string *OriginalFullName=nullptr)
 
bool operator== (const DWARFExpression::iterator &LHS, const DWARFExpression::iterator &RHS)
 
bool operator== (const DWARFLocationExpression &L, const DWARFLocationExpression &R)
 
bool operator!= (const DWARFLocationExpression &L, const DWARFLocationExpression &R)
 
raw_ostreamoperator<< (raw_ostream &OS, const DWARFLocationExpression &Loc)
 
const DWARFUnitIndexgetDWARFUnitIndex (DWARFContext &Context, DWARFSectionKind Kind)
 
bool isCompileUnit (const std::unique_ptr< DWARFUnit > &U)
 
const chartoString (DWARFSectionKind Kind)
 
uint32_t serializeSectionKind (DWARFSectionKind Kind, unsigned IndexVersion)
 Convert the internal value for a section kind to an on-disk value.
 
DWARFSectionKind deserializeSectionKind (uint32_t Value, unsigned IndexVersion)
 Convert a value read from an index section to the internal representation.
 
static bool operator< (const DWARFVerifier::DieRangeInfo &LHS, const DWARFVerifier::DieRangeInfo &RHS)
 
raw_ostreamoperator<< (raw_ostream &OS, const AddressRange &R)
 
raw_ostreamoperator<< (raw_ostream &OS, const AddressRanges &AR)
 
bool canUseDebuginfod ()
 Returns false if a debuginfod lookup can be determined to have no chance of succeeding.
 
SmallVector< StringRefgetDefaultDebuginfodUrls ()
 Finds default array of Debuginfod server URLs by checking DEBUGINFOD_URLS environment variable.
 
std::string getDebuginfodCacheKey (StringRef UrlPath)
 Returns the cache key for a given debuginfod URL path.
 
void setDefaultDebuginfodUrls (const SmallVector< StringRef > &URLs)
 Sets the list of debuginfod server URLs to query.
 
Expected< std::string > getDefaultDebuginfodCacheDirectory ()
 Finds a default local file caching directory for the debuginfod client, first checking DEBUGINFOD_CACHE_PATH.
 
std::chrono::milliseconds getDefaultDebuginfodTimeout ()
 Finds a default timeout for debuginfod HTTP requests.
 
std::string getDebuginfodSourceUrlPath (object::BuildIDRef ID, StringRef SourceFilePath)
 Get the full URL path for a source request of a given BuildID and file path.
 
Expected< std::string > getCachedOrDownloadSource (object::BuildIDRef ID, StringRef SourceFilePath)
 Fetches a specified source file by searching the default local cache directory and server URLs.
 
std::string getDebuginfodExecutableUrlPath (object::BuildIDRef ID)
 Get the full URL path for an executable request of a given BuildID.
 
Expected< std::string > getCachedOrDownloadExecutable (object::BuildIDRef ID)
 Fetches an executable by searching the default local cache directory and server URLs.
 
std::string getDebuginfodDebuginfoUrlPath (object::BuildIDRef ID)
 Get the full URL path for a debug binary request of a given BuildID.
 
Expected< std::string > getCachedOrDownloadDebuginfo (object::BuildIDRef ID)
 Fetches a debug binary by searching the default local cache directory and server URLs.
 
Expected< std::string > getCachedOrDownloadArtifact (StringRef UniqueKey, StringRef UrlPath)
 Fetches any debuginfod artifact using the default local cache directory and server URLs.
 
Expected< std::string > getCachedOrDownloadArtifact (StringRef UniqueKey, StringRef UrlPath, StringRef CacheDirectoryPath, ArrayRef< StringRef > DebuginfodUrls, std::chrono::milliseconds Timeout, llvm::CachePruningPolicy policy)
 Fetches any debuginfod artifact using the specified local cache directory, server URLs, and request timeout (in milliseconds).
 
bool operator== (const HTTPRequest &A, const HTTPRequest &B)
 
bool streamFile (HTTPServerRequest &Request, StringRef FilePath)
 Sets the response to stream the file at FilePath, if available, and otherwise an HTTP 404 error response.
 
charitaniumDemangle (std::string_view mangled_name, bool ParseParams=true)
 Returns a non-NULL pointer to a NUL-terminated C style string that should be explicitly freed, if successful.
 
charmicrosoftDemangle (std::string_view mangled_name, size_t *n_read, int *status, MSDemangleFlags Flags=MSDF_None)
 Demangles the Microsoft symbol pointed at by mangled_name and returns it.
 
std::optional< size_t > getArm64ECInsertionPointInMangledName (std::string_view MangledName)
 
charrustDemangle (std::string_view MangledName)
 
chardlangDemangle (std::string_view MangledName)
 
std::string demangle (std::string_view MangledName)
 Attempt to demangle a string using different demangling schemes.
 
bool nonMicrosoftDemangle (std::string_view MangledName, std::string &Result, bool CanHaveLeadingDot=true, bool ParseParams=true)
 
Error write (MCStreamer &Out, ArrayRef< std::string > Inputs, OnCuIndexOverflow OverflowOptValue)
 
unsigned getContributionIndex (DWARFSectionKind Kind, uint32_t IndexVersion)
 
Error handleSection (const StringMap< std::pair< MCSection *, DWARFSectionKind > > &KnownSections, const MCSection *StrSection, const MCSection *StrOffsetSection, const MCSection *TypesSection, const MCSection *CUIndexSection, const MCSection *TUIndexSection, const MCSection *InfoSection, const object::SectionRef &Section, MCStreamer &Out, std::deque< SmallString< 32 > > &UncompressedSections, uint32_t(&ContributionOffsets)[8], UnitIndexEntry &CurEntry, StringRef &CurStrSection, StringRef &CurStrOffsetSection, std::vector< StringRef > &CurTypesSection, std::vector< StringRef > &CurInfoSection, StringRef &AbbrevSection, StringRef &CurCUIndexSection, StringRef &CurTUIndexSection, std::vector< std::pair< DWARFSectionKind, uint32_t > > &SectionLength)
 
Expected< InfoSectionUnitHeaderparseInfoSectionUnitHeader (StringRef Info)
 
void writeStringsAndOffsets (MCStreamer &Out, DWPStringPool &Strings, MCSection *StrOffsetSection, StringRef CurStrSection, StringRef CurStrOffsetSection, uint16_t Version)
 
Error buildDuplicateError (const std::pair< uint64_t, UnitIndexEntry > &PrevE, const CompileUnitIdentifiers &ID, StringRef DWPName)
 
void writeIndex (MCStreamer &Out, MCSection *Section, ArrayRef< unsigned > ContributionOffsets, const MapVector< uint64_t, UnitIndexEntry > &IndexEntries, uint32_t IndexVersion)
 
GenericValue PTOGV (void *P)
 
void * GVTOP (const GenericValue &GV)
 
template<typename T >
T jitTargetAddressToPointer (JITTargetAddress Addr)
 Convert a JITTargetAddress to a pointer.
 
template<typename T >
T jitTargetAddressToFunction (JITTargetAddress Addr)
 Convert a JITTargetAddress to a callable function pointer.
 
template<typename T >
JITTargetAddress pointerToJITTargetAddress (T *Ptr)
 Convert a pointer to a JITTargetAddress.
 
JITSymbolFlags operator& (const JITSymbolFlags &LHS, const JITSymbolFlags::FlagNames &RHS)
 
JITSymbolFlags operator| (const JITSymbolFlags &LHS, const JITSymbolFlags::FlagNames &RHS)
 
void jitLinkForORC (object::OwningBinary< object::ObjectFile > O, RuntimeDyld::MemoryManager &MemMgr, JITSymbolResolver &Resolver, bool ProcessAllSections, unique_function< Error(const object::ObjectFile &Obj, RuntimeDyld::LoadedObjectInfo &, std::map< StringRef, JITEvaluatedSymbol >)> OnLoaded, unique_function< void(object::OwningBinary< object::ObjectFile >, std::unique_ptr< RuntimeDyld::LoadedObjectInfo >, Error)> OnEmitted)
 
void spliceBB (IRBuilderBase::InsertPoint IP, BasicBlock *New, bool CreateBranch)
 Move the instruction after an InsertPoint to the beginning of another BasicBlock.
 
void spliceBB (IRBuilder<> &Builder, BasicBlock *New, bool CreateBranch)
 Splice a BasicBlock at an IRBuilder's current insertion point.
 
BasicBlocksplitBB (IRBuilderBase::InsertPoint IP, bool CreateBranch, llvm::Twine Name={})
 Split a BasicBlock at an InsertPoint, even if the block is degenerate (missing the terminator).
 
BasicBlocksplitBB (IRBuilderBase &Builder, bool CreateBranch, llvm::Twine Name={})
 Split a BasicBlock at Builder's insertion point, even if the block is degenerate (missing the terminator).
 
BasicBlocksplitBB (IRBuilder<> &Builder, bool CreateBranch, llvm::Twine Name)
 Split a BasicBlock at Builder's insertion point, even if the block is degenerate (missing the terminator).
 
BasicBlocksplitBBWithSuffix (IRBuilderBase &Builder, bool CreateBranch, llvm::Twine Suffix=".split")
 Like splitBB, but reuses the current block's name for the new name.
 
void parseFuzzerCLOpts (int ArgC, char *ArgV[])
 Parse cl::opts from a fuzz target commandline.
 
void handleExecNameEncodedBEOpts (StringRef ExecName)
 Handle backend options that are encoded in the executable name.
 
void handleExecNameEncodedOptimizerOpts (StringRef ExecName)
 Handle optimizer options which are encoded in the executable name.
 
int runFuzzerOnInputs (int ArgC, char *ArgV[], FuzzerTestFun TestOne, FuzzerInitFun Init=[](int *, char ***) { return 0;})
 Runs a fuzz target on the inputs specified on the command line.
 
std::unique_ptr< ModuleparseModule (const uint8_t *Data, size_t Size, LLVMContext &Context)
 Fuzzer friendly interface for the llvm bitcode parser.
 
size_t writeModule (const Module &M, uint8_t *Dest, size_t MaxSize)
 Fuzzer friendly interface for the llvm bitcode printer.
 
std::unique_ptr< ModuleparseAndVerify (const uint8_t *Data, size_t Size, LLVMContext &Context)
 Try to parse module and verify it.
 
template<typename T , typename GenT >
T uniform (GenT &Gen, T Min, T Max)
 Return a uniformly distributed random value between Min and Max.
 
template<typename T , typename GenT >
T uniform (GenT &Gen)
 Return a uniformly distributed random value of type T.
 
template<typename GenT , typename RangeT , typename ElT = std::remove_reference_t< decltype(*std::begin(std::declval<RangeT>()))>>
ReservoirSampler< ElT, GenT > makeSampler (GenT &RandGen, RangeT &&Items)
 
template<typename GenT , typename T >
ReservoirSampler< T, GenT > makeSampler (GenT &RandGen, const T &Item, uint64_t Weight)
 
template<typename T , typename GenT >
ReservoirSampler< T, GenT > makeSampler (GenT &RandGen)
 
void initializeCore (PassRegistry &)
 Initialize all passes linked into the Core library.
 
void initializeTransformUtils (PassRegistry &)
 Initialize all passes linked into the TransformUtils library.
 
void initializeScalarOpts (PassRegistry &)
 Initialize all passes linked into the ScalarOpts library.
 
void initializeVectorization (PassRegistry &)
 Initialize all passes linked into the Vectorize library.
 
void initializeInstCombine (PassRegistry &)
 Initialize all passes linked into the InstCombine library.
 
void initializeIPO (PassRegistry &)
 Initialize all passes linked into the IPO library.
 
void initializeAnalysis (PassRegistry &)
 Initialize all passes linked into the Analysis library.
 
void initializeCodeGen (PassRegistry &)
 Initialize all passes linked into the CodeGen library.
 
void initializeGlobalISel (PassRegistry &)
 Initialize all passes linked into the GlobalISel library.
 
void initializeTarget (PassRegistry &)
 Initialize all passes linked into the CodeGen library.
 
void initializeAAResultsWrapperPassPass (PassRegistry &)
 
void initializeAlwaysInlinerLegacyPassPass (PassRegistry &)
 
void initializeAssignmentTrackingAnalysisPass (PassRegistry &)
 
void initializeAssumptionCacheTrackerPass (PassRegistry &)
 
void initializeAtomicExpandLegacyPass (PassRegistry &)
 
void initializeBasicBlockPathCloningPass (PassRegistry &)
 
void initializeBasicBlockSectionsProfileReaderWrapperPassPass (PassRegistry &)
 
void initializeBasicBlockSectionsPass (PassRegistry &)
 
void initializeBarrierNoopPass (PassRegistry &)
 
void initializeBasicAAWrapperPassPass (PassRegistry &)
 
void initializeBlockFrequencyInfoWrapperPassPass (PassRegistry &)
 
void initializeBranchFolderPassPass (PassRegistry &)
 
void initializeBranchProbabilityInfoWrapperPassPass (PassRegistry &)
 
void initializeBranchRelaxationPass (PassRegistry &)
 
void initializeBreakCriticalEdgesPass (PassRegistry &)
 
void initializeBreakFalseDepsPass (PassRegistry &)
 
void initializeCanonicalizeFreezeInLoopsPass (PassRegistry &)
 
void initializeCFGSimplifyPassPass (PassRegistry &)
 
void initializeCFGuardPass (PassRegistry &)
 
void initializeCFGuardLongjmpPass (PassRegistry &)
 
void initializeCFIFixupPass (PassRegistry &)
 
void initializeCFIInstrInserterPass (PassRegistry &)
 
void initializeCallBrPreparePass (PassRegistry &)
 
void initializeCallGraphDOTPrinterPass (PassRegistry &)
 
void initializeCallGraphViewerPass (PassRegistry &)
 
void initializeCallGraphWrapperPassPass (PassRegistry &)
 
void initializeCheckDebugMachineModulePass (PassRegistry &)
 
void initializeCodeGenPrepareLegacyPassPass (PassRegistry &)
 
void initializeComplexDeinterleavingLegacyPassPass (PassRegistry &)
 
void initializeConstantHoistingLegacyPassPass (PassRegistry &)
 
void initializeCycleInfoWrapperPassPass (PassRegistry &)
 
void initializeDAEPass (PassRegistry &)
 
void initializeDAHPass (PassRegistry &)
 
void initializeDCELegacyPassPass (PassRegistry &)
 
void initializeDXILMetadataAnalysisWrapperPassPass (PassRegistry &)
 
void initializeDXILMetadataAnalysisWrapperPrinterPass (PassRegistry &)
 
void initializeDXILResourceBindingWrapperPassPass (PassRegistry &)
 
void initializeDXILResourceTypeWrapperPassPass (PassRegistry &)
 
void initializeDeadMachineInstructionElimPass (PassRegistry &)
 
void initializeDebugifyMachineModulePass (PassRegistry &)
 
void initializeDependenceAnalysisWrapperPassPass (PassRegistry &)
 
void initializeDetectDeadLanesPass (PassRegistry &)
 
void initializeDomOnlyPrinterWrapperPassPass (PassRegistry &)
 
void initializeDomOnlyViewerWrapperPassPass (PassRegistry &)
 
void initializeDomPrinterWrapperPassPass (PassRegistry &)
 
void initializeDomViewerWrapperPassPass (PassRegistry &)
 
void initializeDominanceFrontierWrapperPassPass (PassRegistry &)
 
void initializeDominatorTreeWrapperPassPass (PassRegistry &)
 
void initializeDwarfEHPrepareLegacyPassPass (PassRegistry &)
 
void initializeEarlyCSELegacyPassPass (PassRegistry &)
 
void initializeEarlyCSEMemSSALegacyPassPass (PassRegistry &)
 
void initializeEarlyIfConverterLegacyPass (PassRegistry &)
 
void initializeEarlyIfPredicatorPass (PassRegistry &)
 
void initializeEarlyMachineLICMPass (PassRegistry &)
 
void initializeEarlyTailDuplicateLegacyPass (PassRegistry &)
 
void initializeEdgeBundlesWrapperLegacyPass (PassRegistry &)
 
void initializeEHContGuardCatchretPass (PassRegistry &)
 
void initializeExpandLargeFpConvertLegacyPassPass (PassRegistry &)
 
void initializeExpandLargeDivRemLegacyPassPass (PassRegistry &)
 
void initializeExpandMemCmpLegacyPassPass (PassRegistry &)
 
void initializeExpandPostRAPass (PassRegistry &)
 
void initializeExpandReductionsPass (PassRegistry &)
 
void initializeExpandVariadicsPass (PassRegistry &)
 
void initializeExpandVectorPredicationPass (PassRegistry &)
 
void initializeExternalAAWrapperPassPass (PassRegistry &)
 
void initializeFEntryInserterPass (PassRegistry &)
 
void initializeFinalizeISelPass (PassRegistry &)
 
void initializeFinalizeMachineBundlesPass (PassRegistry &)
 
void initializeFixIrreduciblePass (PassRegistry &)
 
void initializeFixupStatepointCallerSavedPass (PassRegistry &)
 
void initializeFlattenCFGLegacyPassPass (PassRegistry &)
 
void initializeFuncletLayoutPass (PassRegistry &)
 
void initializeGCEmptyBasicBlocksPass (PassRegistry &)
 
void initializeGCMachineCodeAnalysisPass (PassRegistry &)
 
void initializeGCModuleInfoPass (PassRegistry &)
 
void initializeGVNLegacyPassPass (PassRegistry &)
 
void initializeGlobalMergeFuncPassWrapperPass (PassRegistry &)
 
void initializeGlobalMergePass (PassRegistry &)
 
void initializeGlobalsAAWrapperPassPass (PassRegistry &)
 
void initializeHardwareLoopsLegacyPass (PassRegistry &)
 
void initializeMIRProfileLoaderPassPass (PassRegistry &)
 
void initializeIRSimilarityIdentifierWrapperPassPass (PassRegistry &)
 
void initializeIRTranslatorPass (PassRegistry &)
 
void initializeIVUsersWrapperPassPass (PassRegistry &)
 
void initializeIfConverterPass (PassRegistry &)
 
void initializeImmutableModuleSummaryIndexWrapperPassPass (PassRegistry &)
 
void initializeImplicitNullChecksPass (PassRegistry &)
 
void initializeIndirectBrExpandLegacyPassPass (PassRegistry &)
 
void initializeInferAddressSpacesPass (PassRegistry &)
 
void initializeInstSimplifyLegacyPassPass (PassRegistry &)
 
void initializeInstructionCombiningPassPass (PassRegistry &)
 
void initializeInstructionSelectPass (PassRegistry &)
 
void initializeInterleavedAccessPass (PassRegistry &)
 
void initializeInterleavedLoadCombinePass (PassRegistry &)
 
void initializeJMCInstrumenterPass (PassRegistry &)
 
void initializeKCFIPass (PassRegistry &)
 
void initializeLCSSAVerificationPassPass (PassRegistry &)
 
void initializeLCSSAWrapperPassPass (PassRegistry &)
 
void initializeLazyBlockFrequencyInfoPassPass (PassRegistry &)
 
void initializeLazyBranchProbabilityInfoPassPass (PassRegistry &)
 
void initializeLazyMachineBlockFrequencyInfoPassPass (PassRegistry &)
 
void initializeLazyValueInfoWrapperPassPass (PassRegistry &)
 
void initializeLegacyLICMPassPass (PassRegistry &)
 
void initializeLegalizerPass (PassRegistry &)
 
void initializeGISelCSEAnalysisWrapperPassPass (PassRegistry &)
 
void initializeGISelKnownBitsAnalysisPass (PassRegistry &)
 
void initializeLiveDebugValuesPass (PassRegistry &)
 
void initializeLiveDebugVariablesWrapperLegacyPass (PassRegistry &)
 
void initializeLiveIntervalsWrapperPassPass (PassRegistry &)
 
void initializeLiveRangeShrinkPass (PassRegistry &)
 
void initializeLiveRegMatrixWrapperLegacyPass (PassRegistry &)
 
void initializeLiveStacksWrapperLegacyPass (PassRegistry &)
 
void initializeLiveVariablesWrapperPassPass (PassRegistry &)
 
void initializeLoadStoreOptPass (PassRegistry &)
 
void initializeLoadStoreVectorizerLegacyPassPass (PassRegistry &)
 
void initializeLocalStackSlotPassPass (PassRegistry &)
 
void initializeLocalizerPass (PassRegistry &)
 
void initializeLoopDataPrefetchLegacyPassPass (PassRegistry &)
 
void initializeLoopExtractorLegacyPassPass (PassRegistry &)
 
void initializeLoopInfoWrapperPassPass (PassRegistry &)
 
void initializeLoopPassPass (PassRegistry &)
 Manually defined generic "LoopPass" dependency initialization.
 
void initializeLoopSimplifyPass (PassRegistry &)
 
void initializeLoopStrengthReducePass (PassRegistry &)
 
void initializeLoopTermFoldPass (PassRegistry &)
 
void initializeLoopUnrollPass (PassRegistry &)
 
void initializeLowerAtomicLegacyPassPass (PassRegistry &)
 
void initializeLowerConstantIntrinsicsPass (PassRegistry &)
 
void initializeLowerEmuTLSPass (PassRegistry &)
 
void initializeLowerGlobalDtorsLegacyPassPass (PassRegistry &)
 
void initializeLowerIntrinsicsPass (PassRegistry &)
 
void initializeLowerInvokeLegacyPassPass (PassRegistry &)
 
void initializeLowerSwitchLegacyPassPass (PassRegistry &)
 
void initializeMIRAddFSDiscriminatorsPass (PassRegistry &)
 
void initializeMIRCanonicalizerPass (PassRegistry &)
 
void initializeMIRNamerPass (PassRegistry &)
 
void initializeMIRPrintingPassPass (PassRegistry &)
 
void initializeMachineBlockFrequencyInfoWrapperPassPass (PassRegistry &)
 
void initializeMachineBlockPlacementPass (PassRegistry &)
 
void initializeMachineBlockPlacementStatsPass (PassRegistry &)
 
void initializeMachineBranchProbabilityInfoWrapperPassPass (PassRegistry &)
 
void initializeMachineCFGPrinterPass (PassRegistry &)
 
void initializeMachineCSELegacyPass (PassRegistry &)
 
void initializeMachineCombinerPass (PassRegistry &)
 
void initializeMachineCopyPropagationPass (PassRegistry &)
 
void initializeMachineCycleInfoPrinterPassPass (PassRegistry &)
 
void initializeMachineCycleInfoWrapperPassPass (PassRegistry &)
 
void initializeMachineDominanceFrontierPass (PassRegistry &)
 
void initializeMachineDominatorTreeWrapperPassPass (PassRegistry &)
 
void initializeMachineFunctionPrinterPassPass (PassRegistry &)
 
void initializeMachineFunctionSplitterPass (PassRegistry &)
 
void initializeMachineLateInstrsCleanupPass (PassRegistry &)
 
void initializeMachineLICMPass (PassRegistry &)
 
void initializeMachineLoopInfoWrapperPassPass (PassRegistry &)
 
void initializeMachineModuleInfoWrapperPassPass (PassRegistry &)
 
void initializeMachineOptimizationRemarkEmitterPassPass (PassRegistry &)
 
void initializeMachineOutlinerPass (PassRegistry &)
 
void initializeMachinePipelinerPass (PassRegistry &)
 
void initializeMachinePostDominatorTreeWrapperPassPass (PassRegistry &)
 
void initializeMachineRegionInfoPassPass (PassRegistry &)
 
void initializeMachineSanitizerBinaryMetadataPass (PassRegistry &)
 
void initializeMachineSchedulerPass (PassRegistry &)
 
void initializeMachineSinkingPass (PassRegistry &)
 
void initializeMachineTraceMetricsWrapperPassPass (PassRegistry &)
 
void initializeMachineUniformityInfoPrinterPassPass (PassRegistry &)
 
void initializeMachineUniformityAnalysisPassPass (PassRegistry &)
 
void initializeMachineVerifierLegacyPassPass (PassRegistry &)
 
void initializeMemoryDependenceWrapperPassPass (PassRegistry &)
 
void initializeMemorySSAWrapperPassPass (PassRegistry &)
 
void initializeMergeICmpsLegacyPassPass (PassRegistry &)
 
void initializeModuleSummaryIndexWrapperPassPass (PassRegistry &)
 
void initializeModuloScheduleTestPass (PassRegistry &)
 
void initializeNaryReassociateLegacyPassPass (PassRegistry &)
 
void initializeObjCARCContractLegacyPassPass (PassRegistry &)
 
void initializeOptimizationRemarkEmitterWrapperPassPass (PassRegistry &)
 
void initializeOptimizePHIsLegacyPass (PassRegistry &)
 
void initializePEIPass (PassRegistry &)
 
void initializePHIEliminationPass (PassRegistry &)
 
void initializePartiallyInlineLibCallsLegacyPassPass (PassRegistry &)
 
void initializePatchableFunctionPass (PassRegistry &)
 
void initializePeepholeOptimizerLegacyPass (PassRegistry &)
 
void initializePhiValuesWrapperPassPass (PassRegistry &)
 
void initializePhysicalRegisterUsageInfoWrapperLegacyPass (PassRegistry &)
 
void initializePlaceBackedgeSafepointsLegacyPassPass (PassRegistry &)
 
void initializePostDomOnlyPrinterWrapperPassPass (PassRegistry &)
 
void initializePostDomOnlyViewerWrapperPassPass (PassRegistry &)
 
void initializePostDomPrinterWrapperPassPass (PassRegistry &)
 
void initializePostDomViewerWrapperPassPass (PassRegistry &)
 
void initializePostDominatorTreeWrapperPassPass (PassRegistry &)
 
void initializePostInlineEntryExitInstrumenterPass (PassRegistry &)
 
void initializePostMachineSchedulerPass (PassRegistry &)
 
void initializePostRAHazardRecognizerPass (PassRegistry &)
 
void initializePostRAMachineSinkingPass (PassRegistry &)
 
void initializePostRASchedulerPass (PassRegistry &)
 
void initializePreISelIntrinsicLoweringLegacyPassPass (PassRegistry &)
 
void initializePrintFunctionPassWrapperPass (PassRegistry &)
 
void initializePrintModulePassWrapperPass (PassRegistry &)
 
void initializeProcessImplicitDefsPass (PassRegistry &)
 
void initializeProfileSummaryInfoWrapperPassPass (PassRegistry &)
 
void initializePromoteLegacyPassPass (PassRegistry &)
 
void initializeRABasicPass (PassRegistry &)
 
void initializePseudoProbeInserterPass (PassRegistry &)
 
void initializeRAGreedyPass (PassRegistry &)
 
void initializeReachingDefAnalysisPass (PassRegistry &)
 
void initializeReassociateLegacyPassPass (PassRegistry &)
 
void initializeRegAllocEvictionAdvisorAnalysisPass (PassRegistry &)
 
void initializeRegAllocFastPass (PassRegistry &)
 
void initializeRegAllocPriorityAdvisorAnalysisPass (PassRegistry &)
 
void initializeRegAllocScoringPass (PassRegistry &)
 
void initializeRegBankSelectPass (PassRegistry &)
 
void initializeRegToMemWrapperPassPass (PassRegistry &)
 
void initializeRegUsageInfoCollectorLegacyPass (PassRegistry &)
 
void initializeRegUsageInfoPropagationLegacyPass (PassRegistry &)
 
void initializeRegionInfoPassPass (PassRegistry &)
 
void initializeRegionOnlyPrinterPass (PassRegistry &)
 
void initializeRegionOnlyViewerPass (PassRegistry &)
 
void initializeRegionPrinterPass (PassRegistry &)
 
void initializeRegionViewerPass (PassRegistry &)
 
void initializeRegisterCoalescerPass (PassRegistry &)
 
void initializeRemoveLoadsIntoFakeUsesPass (PassRegistry &)
 
void initializeRemoveRedundantDebugValuesPass (PassRegistry &)
 
void initializeRenameIndependentSubregsPass (PassRegistry &)
 
void initializeReplaceWithVeclibLegacyPass (PassRegistry &)
 
void initializeResetMachineFunctionPass (PassRegistry &)
 
void initializeSCEVAAWrapperPassPass (PassRegistry &)
 
void initializeSROALegacyPassPass (PassRegistry &)
 
void initializeSafeStackLegacyPassPass (PassRegistry &)
 
void initializeSafepointIRVerifierPass (PassRegistry &)
 
void initializeSelectOptimizePass (PassRegistry &)
 
void initializeScalarEvolutionWrapperPassPass (PassRegistry &)
 
void initializeScalarizeMaskedMemIntrinLegacyPassPass (PassRegistry &)
 
void initializeScalarizerLegacyPassPass (PassRegistry &)
 
void initializeScavengerTestPass (PassRegistry &)
 
void initializeScopedNoAliasAAWrapperPassPass (PassRegistry &)
 
void initializeSeparateConstOffsetFromGEPLegacyPassPass (PassRegistry &)
 
void initializeShadowStackGCLoweringPass (PassRegistry &)
 
void initializeShrinkWrapPass (PassRegistry &)
 
void initializeSingleLoopExtractorPass (PassRegistry &)
 
void initializeSinkingLegacyPassPass (PassRegistry &)
 
void initializeSjLjEHPreparePass (PassRegistry &)
 
void initializeSlotIndexesWrapperPassPass (PassRegistry &)
 
void initializeSpeculativeExecutionLegacyPassPass (PassRegistry &)
 
void initializeSpillPlacementWrapperLegacyPass (PassRegistry &)
 
void initializeStackColoringLegacyPass (PassRegistry &)
 
void initializeStackFrameLayoutAnalysisPassPass (PassRegistry &)
 
void initializeStackMapLivenessPass (PassRegistry &)
 
void initializeStackProtectorPass (PassRegistry &)
 
void initializeStackSafetyGlobalInfoWrapperPassPass (PassRegistry &)
 
void initializeStackSafetyInfoWrapperPassPass (PassRegistry &)
 
void initializeStackSlotColoringPass (PassRegistry &)
 
void initializeStraightLineStrengthReduceLegacyPassPass (PassRegistry &)
 
void initializeStripDebugMachineModulePass (PassRegistry &)
 
void initializeStructurizeCFGLegacyPassPass (PassRegistry &)
 
void initializeTailCallElimPass (PassRegistry &)
 
void initializeTailDuplicateLegacyPass (PassRegistry &)
 
void initializeTargetLibraryInfoWrapperPassPass (PassRegistry &)
 
void initializeTargetPassConfigPass (PassRegistry &)
 
void initializeTargetTransformInfoWrapperPassPass (PassRegistry &)
 
void initializeTwoAddressInstructionLegacyPassPass (PassRegistry &)
 
void initializeTypeBasedAAWrapperPassPass (PassRegistry &)
 
void initializeTypePromotionLegacyPass (PassRegistry &)
 
void initializeInitUndefPass (PassRegistry &)
 
void initializeUniformityInfoWrapperPassPass (PassRegistry &)
 
void initializeUnifyLoopExitsLegacyPassPass (PassRegistry &)
 
void initializeUnpackMachineBundlesPass (PassRegistry &)
 
void initializeUnreachableBlockElimLegacyPassPass (PassRegistry &)
 
void initializeUnreachableMachineBlockElimPass (PassRegistry &)
 
void initializeVerifierLegacyPassPass (PassRegistry &)
 
void initializeVirtRegMapWrapperLegacyPass (PassRegistry &)
 
void initializeVirtRegRewriterPass (PassRegistry &)
 
void initializeWasmEHPreparePass (PassRegistry &)
 
void initializeWinEHPreparePass (PassRegistry &)
 
void initializeWriteBitcodePassPass (PassRegistry &)
 
void initializeXRayInstrumentationPass (PassRegistry &)
 
template<typename UnaryFunction >
void forEachCallbackCallSite (const CallBase &CB, UnaryFunction Func)
 Apply function Func to each CB's callback call site.
 
template<typename UnaryFunction >
void forEachCallbackFunction (const CallBase &CB, UnaryFunction Func)
 Apply function Func to each CB's callback function.
 
bool hasAssumption (const Function &F, const KnownAssumptionString &AssumptionStr)
 Return true if F has the assumption AssumptionStr attached.
 
bool hasAssumption (const CallBase &CB, const KnownAssumptionString &AssumptionStr)
 Return true if CB or the callee has the assumption AssumptionStr attached.
 
DenseSet< StringRefgetAssumptions (const Function &F)
 Return the set of all assumptions for the function F.
 
DenseSet< StringRefgetAssumptions (const CallBase &CB)
 Return the set of all assumptions for the call CB.
 
bool addAssumptions (Function &F, const DenseSet< StringRef > &Assumptions)
 Appends the set of assumptions Assumptions to \F.
 
bool addAssumptions (CallBase &CB, const DenseSet< StringRef > &Assumptions)
 Appends the set of assumptions Assumptions to \CB.
 
LLVMAttributeRef wrap (Attribute Attr)
 
Attribute unwrap (LLVMAttributeRef Attr)
 
bool UpgradeIntrinsicFunction (Function *F, Function *&NewFn, bool CanUpgradeDebugIntrinsicsToRecords=true)
 This is a more granular function that simply checks an intrinsic function for upgrading, and returns true if it requires upgrading.
 
void UpgradeIntrinsicCall (CallBase *CB, Function *NewFn)
 This is the complement to the above, replacing a specific call to an intrinsic function with a call to the specified new function.
 
void UpgradeInlineAsmString (std::string *AsmStr)
 Upgrade comment in call to inline asm that represents an objc retain release marker.
 
void UpgradeCallsToIntrinsic (Function *F)
 This is an auto-upgrade hook for any old intrinsic function syntaxes which need to have both the function updated as well as all calls updated to the new function.
 
GlobalVariableUpgradeGlobalVariable (GlobalVariable *GV)
 This checks for global variables which should be upgraded.
 
bool UpgradeModuleFlags (Module &M)
 This checks for module flags which should be upgraded.
 
void UpgradeARCRuntime (Module &M)
 Convert calls to ARC runtime functions to intrinsic calls and upgrade the old retain release marker to new module flag format.
 
void UpgradeSectionAttributes (Module &M)
 
void UpgradeFunctionAttributes (Function &F)
 Correct any IR that is relying on old function attribute behavior.
 
MDNodeUpgradeTBAANode (MDNode &TBAANode)
 If the given TBAA tag uses the scalar TBAA format, create a new node corresponding to the upgrade to the struct-path aware TBAA format.
 
InstructionUpgradeBitCastInst (unsigned Opc, Value *V, Type *DestTy, Instruction *&Temp)
 This is an auto-upgrade for bitcast between pointers with different address spaces: the instruction is replaced by a pair ptrtoint+inttoptr.
 
ConstantUpgradeBitCastExpr (unsigned Opc, Constant *C, Type *DestTy)
 This is an auto-upgrade for bitcast constant expression between pointers with different address spaces: the instruction is replaced by a pair ptrtoint+inttoptr.
 
bool UpgradeDebugInfo (Module &M)
 Check the debug info version number, if it is out-dated, drop the debug info.
 
bool mayBeOldLoopAttachmentTag (StringRef Name)
 Check whether a string looks like an old loop attachment tag.
 
MDNodeupgradeInstructionLoopAttachment (MDNode &N)
 Upgrade the loop attachment metadata node.
 
std::string UpgradeDataLayoutString (StringRef DL, StringRef Triple)
 Upgrade the datalayout string by adding a section for address space pointers.
 
void UpgradeAttributes (AttrBuilder &B)
 Upgrade attributes that changed format or kind.
 
void UpgradeOperandBundles (std::vector< OperandBundleDef > &OperandBundles)
 Upgrade operand bundles (without knowing about their user instruction).
 
BasicBlock::iterator skipDebugIntrinsics (BasicBlock::iterator It)
 Advance It while it points to a debug instruction and return the result.
 
void linkAllBuiltinGCs ()
 FIXME: Collector instances are not useful on their own.
 
void linkOcamlGCPrinter ()
 Creates an ocaml-compatible metadata printer.
 
void linkErlangGCPrinter ()
 Creates an erlang-compatible metadata printer.
 
pred_iterator pred_begin (BasicBlock *BB)
 
const_pred_iterator pred_begin (const BasicBlock *BB)
 
pred_iterator pred_end (BasicBlock *BB)
 
const_pred_iterator pred_end (const BasicBlock *BB)
 
bool pred_empty (const BasicBlock *BB)
 
unsigned pred_size (const BasicBlock *BB)
 Get the number of predecessors of BB.
 
pred_range predecessors (BasicBlock *BB)
 
const_pred_range predecessors (const BasicBlock *BB)
 
succ_iterator succ_begin (Instruction *I)
 
const_succ_iterator succ_begin (const Instruction *I)
 
succ_iterator succ_end (Instruction *I)
 
const_succ_iterator succ_end (const Instruction *I)
 
bool succ_empty (const Instruction *I)
 
unsigned succ_size (const Instruction *I)
 
succ_range successors (Instruction *I)
 
const_succ_range successors (const Instruction *I)
 
succ_iterator succ_begin (BasicBlock *BB)
 
const_succ_iterator succ_begin (const BasicBlock *BB)
 
succ_iterator succ_end (BasicBlock *BB)
 
const_succ_iterator succ_end (const BasicBlock *BB)
 
bool succ_empty (const BasicBlock *BB)
 
unsigned succ_size (const BasicBlock *BB)
 
succ_range successors (BasicBlock *BB)
 
const_succ_range successors (const BasicBlock *BB)
 
raw_ostreamoperator<< (raw_ostream &OS, const Comdat &C)
 
ConstantConstantFoldCastInstruction (unsigned opcode, Constant *V, Type *DestTy)
 
ConstantConstantFoldUnaryInstruction (unsigned Opcode, Constant *V)
 
ConstantConstantFoldBinaryInstruction (unsigned Opcode, Constant *V1, Constant *V2)
 
ConstantConstantFoldCompareInstruction (CmpInst::Predicate Predicate, Constant *C1, Constant *C2)
 
ConstantConstantFoldGetElementPtr (Type *Ty, Constant *C, std::optional< ConstantRange > InRange, ArrayRef< Value * > Idxs)
 
raw_ostreamoperator<< (raw_ostream &OS, const ConstantFPRange &CR)
 
raw_ostreamoperator<< (raw_ostream &OS, const ConstantRange &CR)
 
ConstantRange getConstantRangeFromMetadata (const MDNode &RangeMD)
 Parse out a conservative ConstantRange from !range metadata.
 
DataLayoutunwrap (LLVMTargetDataRef P)
 
LLVMTargetDataRef wrap (const DataLayout *P)
 
TinyPtrVector< DbgDeclareInst * > findDbgDeclares (Value *V)
 Finds dbg.declare intrinsics declaring local variables as living in the memory that 'V' points to.
 
TinyPtrVector< DbgVariableRecord * > findDVRDeclares (Value *V)
 As above, for DVRDeclares.
 
TinyPtrVector< DbgVariableRecord * > findDVRValues (Value *V)
 As above, for DVRValues.
 
void findDbgValues (SmallVectorImpl< DbgValueInst * > &DbgValues, Value *V, SmallVectorImpl< DbgVariableRecord * > *DbgVariableRecords=nullptr)
 Finds the llvm.dbg.value intrinsics describing a value.
 
void findDbgUsers (SmallVectorImpl< DbgVariableIntrinsic * > &DbgInsts, Value *V, SmallVectorImpl< DbgVariableRecord * > *DbgVariableRecords=nullptr)
 Finds the debug info intrinsics describing a value.
 
DISubprogramgetDISubprogram (const MDNode *Scope)
 Find subprogram that is enclosing this scope.
 
DebugLoc getDebugValueLoc (DbgVariableIntrinsic *DII)
 Produce a DebugLoc to use for each dbg.declare that is promoted to a dbg.value.
 
DebugLoc getDebugValueLoc (DbgVariableRecord *DVR)
 
bool StripDebugInfo (Module &M)
 Strip debug info in the module if it exists.
 
bool stripDebugInfo (Function &F)
 
bool stripNonLineTableDebugInfo (Module &M)
 Downgrade the debug info in a module to contain only line table information.
 
void updateLoopMetadataDebugLocations (Instruction &I, function_ref< Metadata *(Metadata *)> Updater)
 Update the debug locations contained within the MD_loop metadata attached to the instruction I, if one exists.
 
unsigned getDebugMetadataVersionFromModule (const Module &M)
 Return Debug Info Metadata Version by checking module flags.
 
bool isAssignmentTrackingEnabled (const Module &M)
 Return true if assignment tracking is enabled for module M.
 
bool operator== (DIDerivedType::PtrAuthData Lhs, DIDerivedType::PtrAuthData Rhs)
 
bool operator!= (DIDerivedType::PtrAuthData Lhs, DIDerivedType::PtrAuthData Rhs)
 
bool operator== (const DIExpression::FragmentInfo &A, const DIExpression::FragmentInfo &B)
 
bool operator< (const DIExpression::FragmentInfo &A, const DIExpression::FragmentInfo &B)
 
raw_ostreamoperator<< (raw_ostream &OS, const DbgRecord &R)
 
static auto filterDbgVars (iterator_range< simple_ilist< DbgRecord >::iterator > R)
 Filter the DbgRecord range to DbgVariableRecord types only and downcast.
 
raw_ostreamoperator<< (raw_ostream &OS, const DbgMarker &Marker)
 
iterator_range< simple_ilist< DbgRecord >::iterator > getDbgRecordRange (DbgMarker *DebugMarker)
 Inline helper to return a range of DbgRecords attached to a marker.
 
template<typename T >
 ScopedDbgInfoFormatSetter (T &Obj, bool NewState) -> ScopedDbgInfoFormatSetter< T >
 
int getNextAvailablePluginDiagnosticKind ()
 Get the next available kind ID for a plugin diagnostic.
 
template<class RemarkT >
RemarkT & operator<< (RemarkT &R, std::enable_if_t< std::is_base_of< DiagnosticInfoOptimizationBase, RemarkT >::value, StringRef > S)
 Allow the insertion operator to return the actual remark type rather than a common base class.
 
template<class RemarkT >
RemarkT & operator<< (RemarkT &&R, std::enable_if_t< std::is_base_of< DiagnosticInfoOptimizationBase, RemarkT >::value, StringRef > S)
 Also allow r-value for the remark to allow insertion into a temporarily-constructed remark.
 
template<class RemarkT >
RemarkT & operator<< (RemarkT &R, std::enable_if_t< std::is_base_of< DiagnosticInfoOptimizationBase, RemarkT >::value, DiagnosticInfoOptimizationBase::Argument > A)
 
template<class RemarkT >
RemarkT & operator<< (RemarkT &&R, std::enable_if_t< std::is_base_of< DiagnosticInfoOptimizationBase, RemarkT >::value, DiagnosticInfoOptimizationBase::Argument > A)
 
template<class RemarkT >
RemarkT & operator<< (RemarkT &R, std::enable_if_t< std::is_base_of< DiagnosticInfoOptimizationBase, RemarkT >::value, DiagnosticInfoOptimizationBase::setIsVerbose > V)
 
template<class RemarkT >
RemarkT & operator<< (RemarkT &&R, std::enable_if_t< std::is_base_of< DiagnosticInfoOptimizationBase, RemarkT >::value, DiagnosticInfoOptimizationBase::setIsVerbose > V)
 
template<class RemarkT >
RemarkT & operator<< (RemarkT &R, std::enable_if_t< std::is_base_of< DiagnosticInfoOptimizationBase, RemarkT >::value, DiagnosticInfoOptimizationBase::setExtraArgs > EA)
 
static DiagnosticSeverity getDiagnosticSeverity (SourceMgr::DiagKind DK)
 
void diagnoseDontCall (const CallInst &CI)
 
EHPersonality classifyEHPersonality (const Value *Pers)
 See if the given exception handling personality function is one that we understand.
 
StringRef getEHPersonalityName (EHPersonality Pers)
 
EHPersonality getDefaultEHPersonality (const Triple &T)
 
bool isAsynchronousEHPersonality (EHPersonality Pers)
 Returns true if this personality function catches asynchronous exceptions.
 
bool isFuncletEHPersonality (EHPersonality Pers)
 Returns true if this is a personality function that invokes handler funclets (which must return to it).
 
bool isScopedEHPersonality (EHPersonality Pers)
 Returns true if this personality uses scope-style EH IR instructions: catchswitch, catchpad/ret, and cleanuppad/ret.
 
bool isNoOpWithoutInvoke (EHPersonality Pers)
 Return true if this personality may be safely removed if there are no invoke instructions remaining in the current function.
 
bool canSimplifyInvokeNoUnwind (const Function *F)
 
DenseMap< BasicBlock *, ColorVectorcolorEHFunclets (Function &F)
 If an EH funclet personality is in use (see isFuncletEHPersonality), this will recompute which blocks are in which funclet.
 
FastMathFlags operator| (FastMathFlags LHS, FastMathFlags RHS)
 
FastMathFlags operator& (FastMathFlags LHS, FastMathFlags RHS)
 
raw_ostreamoperator<< (raw_ostream &O, FastMathFlags FMF)
 
std::optional< RoundingModeconvertStrToRoundingMode (StringRef)
 Returns a valid RoundingMode enumerator when given a string that is valid as input in constrained intrinsic rounding mode metadata.
 
std::optional< StringRefconvertRoundingModeToStr (RoundingMode)
 For any RoundingMode enumerator, returns a string valid as input in constrained intrinsic rounding mode metadata.
 
std::optional< fp::ExceptionBehaviorconvertStrToExceptionBehavior (StringRef)
 Returns a valid ExceptionBehavior enumerator when given a string valid as input in constrained intrinsic exception behavior metadata.
 
std::optional< StringRefconvertExceptionBehaviorToStr (fp::ExceptionBehavior)
 For any ExceptionBehavior enumerator, returns a string valid as input in constrained intrinsic exception behavior metadata.
 
bool isDefaultFPEnvironment (fp::ExceptionBehavior EB, RoundingMode RM)
 Returns true if the exception handling behavior and rounding mode match what is used in the default floating point environment.
 
Intrinsic::ID getConstrainedIntrinsicID (const Instruction &Instr)
 Returns constrained intrinsic id to represent the given instruction in strictfp function.
 
bool canRoundingModeBe (RoundingMode RM, RoundingMode QRM)
 Returns true if the rounding mode RM may be QRM at compile time or at run time.
 
bool canIgnoreSNaN (fp::ExceptionBehavior EB, FastMathFlags FMF)
 Returns true if the possibility of a signaling NaN can be safely ignored.
 
bool NullPointerIsDefined (const Function *F, unsigned AS=0)
 Check whether null pointer dereferencing is considered undefined behavior for a given function or an address space.
 
std::unique_ptr< GCStrategygetGCStrategy (const StringRef Name)
 Lookup the GCStrategy object associated with the given gc name.
 
gep_type_iterator gep_type_begin (const User *GEP)
 
gep_type_iterator gep_type_end (const User *GEP)
 
gep_type_iterator gep_type_begin (const User &GEP)
 
gep_type_iterator gep_type_end (const User &GEP)
 
template<typename T >
generic_gep_type_iterator< const T * > gep_type_begin (Type *Op0, ArrayRef< T > A)
 
template<typename T >
generic_gep_type_iterator< const T * > gep_type_end (Type *, ArrayRef< T > A)
 
inst_iterator inst_begin (Function *F)
 
inst_iterator inst_end (Function *F)
 
inst_range instructions (Function *F)
 
const_inst_iterator inst_begin (const Function *F)
 
const_inst_iterator inst_end (const Function *F)
 
const_inst_range instructions (const Function *F)
 
inst_iterator inst_begin (Function &F)
 
inst_iterator inst_end (Function &F)
 
inst_range instructions (Function &F)
 
const_inst_iterator inst_begin (const Function &F)
 
const_inst_iterator inst_end (const Function &F)
 
const_inst_range instructions (const Function &F)
 
raw_ostreamoperator<< (raw_ostream &OS, CmpInst::Predicate Pred)
 
TypecheckGEPType (Type *Ty)
 
const ValuegetLoadStorePointerOperand (const Value *V)
 A helper function that returns the pointer operand of a load or store instruction.
 
ValuegetLoadStorePointerOperand (Value *V)
 
const ValuegetPointerOperand (const Value *V)
 A helper function that returns the pointer operand of a load, store or GEP instruction.
 
ValuegetPointerOperand (Value *V)
 
Align getLoadStoreAlignment (const Value *I)
 A helper function that returns the alignment of load or store instruction.
 
void setLoadStoreAlignment (Value *I, Align NewAlign)
 A helper function that set the alignment of load or store instruction.
 
unsigned getLoadStoreAddressSpace (const Value *I)
 A helper function that returns the address space of the pointer operand of load or store instruction.
 
TypegetLoadStoreType (const Value *I)
 A helper function that returns the type of a load or store instruction.
 
std::optional< SyncScope::IDgetAtomicSyncScopeID (const Instruction *I)
 A helper function that returns an atomic operation's sync scope; returns std::nullopt if it is not an atomic operation.
 
void setAtomicSyncScopeID (Instruction *I, SyncScope::ID SSID)
 A helper function that sets an atomic operation's sync scope.
 
static bool isLifetimeIntrinsic (Intrinsic::ID ID)
 Check if ID corresponds to a lifetime intrinsic.
 
static bool isDbgInfoIntrinsic (Intrinsic::ID ID)
 Check if ID corresponds to a debug info intrinsic.
 
static bool isConvergenceControlIntrinsic (unsigned IntrinsicID)
 Check if ID corresponds to a convergence control intrinsic.
 
template<typename FolderTy , typename InserterTy >
 IRBuilder (LLVMContext &, FolderTy, InserterTy, MDNode *, ArrayRef< OperandBundleDef >) -> IRBuilder< FolderTy, InserterTy >
 
 IRBuilder (LLVMContext &, MDNode *, ArrayRef< OperandBundleDef >) -> IRBuilder<>
 
template<typename FolderTy >
 IRBuilder (BasicBlock *, FolderTy, MDNode *, ArrayRef< OperandBundleDef >) -> IRBuilder< FolderTy >
 
 IRBuilder (BasicBlock *, MDNode *, ArrayRef< OperandBundleDef >) -> IRBuilder<>
 
 IRBuilder (Instruction *, MDNode *, ArrayRef< OperandBundleDef >) -> IRBuilder<>
 
template<typename FolderTy >
 IRBuilder (BasicBlock *, BasicBlock::iterator, FolderTy, MDNode *, ArrayRef< OperandBundleDef >) -> IRBuilder< FolderTy >
 
 IRBuilder (BasicBlock *, BasicBlock::iterator, MDNode *, ArrayRef< OperandBundleDef >) -> IRBuilder<>
 
ModulePasscreatePrintModulePass (raw_ostream &OS, const std::string &Banner="", bool ShouldPreserveUseListOrder=false)
 Create and return a pass that writes the module to the specified raw_ostream.
 
FunctionPasscreatePrintFunctionPass (raw_ostream &OS, const std::string &Banner="")
 Create and return a pass that prints functions to the specified raw_ostream as they are processed.
 
void printLLVMNameWithoutPrefix (raw_ostream &OS, StringRef Name)
 Print out a name of an LLVM value without any prefixes.
 
bool isIRPrintingPass (Pass *P)
 Return true if a pass is for IR printing.
 
LLVMContext ** unwrap (LLVMContextRef *Tys)
 
LLVMContextRefwrap (const LLVMContext **Tys)
 
Expected< std::unique_ptr< ToolOutputFile > > setupLLVMOptimizationRemarks (LLVMContext &Context, StringRef RemarksFilename, StringRef RemarksPasses, StringRef RemarksFormat, bool RemarksWithHotness, std::optional< uint64_t > RemarksHotnessThreshold=0)
 Setup optimization remarks that output to a file.
 
Error setupLLVMOptimizationRemarks (LLVMContext &Context, raw_ostream &OS, StringRef RemarksPasses, StringRef RemarksFormat, bool RemarksWithHotness, std::optional< uint64_t > RemarksHotnessThreshold=0)
 Setup optimization remarks that output directly to a raw_ostream.
 
void emitLinkerFlagsForGlobalCOFF (raw_ostream &OS, const GlobalValue *GV, const Triple &TT, Mangler &Mangler)
 
void emitLinkerFlagsForUsedCOFF (raw_ostream &OS, const GlobalValue *GV, const Triple &T, Mangler &M)
 
std::optional< std::string > getArm64ECMangledFunctionName (StringRef Name)
 Returns the ARM64EC mangled function name unless the input is already mangled.
 
std::optional< std::string > getArm64ECDemangledFunctionName (StringRef Name)
 Returns the ARM64EC demangled function name, unless the input is not mangled.
 
bool isArm64ECMangledFunctionName (StringRef Name)
 Check if an ARM64EC function name is mangled.
 
bool canInstructionHaveMMRAs (const Instruction &I)
 
Metadata ** unwrap (LLVMMetadataRef *MDs)
 
raw_ostreamoperator<< (raw_ostream &OS, const Metadata &MD)
 
GlobalVariablecollectUsedGlobalVariables (const Module &M, SmallVectorImpl< GlobalValue * > &Vec, bool CompilerUsed)
 Given "llvm.used" or "llvm.compiler.used" as a global name, collect the initializer elements of that global in a SmallVector and return the global itself.
 
raw_ostreamoperator<< (raw_ostream &O, const Module &M)
 An raw_ostream inserter for modules.
 
Moduleunwrap (LLVMModuleProviderRef MP)
 
const chargetHotnessName (CalleeInfo::HotnessType HT)
 
raw_ostreamoperator<< (raw_ostream &OS, const ValueInfo &VI)
 
bool operator== (const ValueInfo &A, const ValueInfo &B)
 
bool operator!= (const ValueInfo &A, const ValueInfo &B)
 
bool operator< (const ValueInfo &A, const ValueInfo &B)
 
raw_ostreamoperator<< (raw_ostream &OS, const CallsiteInfo &SNI)
 
raw_ostreamoperator<< (raw_ostream &OS, const MIBInfo &MIB)
 
raw_ostreamoperator<< (raw_ostream &OS, const AllocInfo &AE)
 
OptPassGategetGlobalPassGate ()
 Singleton instance of the OptBisect class, so multiple pass managers don't need to coordinate their uses of OptBisect.
 
bool isSpecialPass (StringRef PassID, const std::vector< StringRef > &Specials)
 
template<typename IRUnitT >
void printIRUnitNameForStackTrace (raw_ostream &OS, const IRUnitT &IR)
 
template<>
void printIRUnitNameForStackTrace< Module > (raw_ostream &OS, const Module &IR)
 
template<>
void printIRUnitNameForStackTrace< Function > (raw_ostream &OS, const Function &IR)
 
template<typename FunctionPassT >
ModuleToFunctionPassAdaptor createModuleToFunctionPassAdaptor (FunctionPassT &&Pass, bool EagerlyInvalidate=false)
 A function to deduce a function pass type and wrap it in the templated adaptor.
 
void reportAndResetTimings (raw_ostream *OutStream=nullptr)
 If -time-passes has been specified, report the timings immediately and then reset the timers to zero.
 
TimergetPassTimer (Pass *)
 Request the timer for this legacy-pass-manager's pass instance.
 
bool shouldPrintBeforeSomePass ()
 This is a helper to determine whether to print IR before or after a pass.
 
bool shouldPrintAfterSomePass ()
 
bool shouldPrintBeforePass (StringRef PassID)
 
bool shouldPrintAfterPass (StringRef PassID)
 
bool shouldPrintBeforeAll ()
 
bool shouldPrintAfterAll ()
 
std::vector< std::string > printBeforePasses ()
 
std::vector< std::string > printAfterPasses ()
 
bool forcePrintModuleIR ()
 
bool isPassInPrintList (StringRef PassName)
 
bool isFilterPassesEmpty ()
 
bool isFunctionInPrintList (StringRef FunctionName)
 
std::error_code prepareTempFiles (SmallVector< int > &FD, ArrayRef< StringRef > SR, SmallVector< std::string > &FileName)
 
std::error_code cleanUpTempFiles (ArrayRef< std::string > FileName)
 
std::string doSystemDiff (StringRef Before, StringRef After, StringRef OldLineFormat, StringRef NewLineFormat, StringRef UnchangedLineFormat)
 
bool hasProfMD (const Instruction &I)
 Checks if an Instruction has MD_prof Metadata.
 
bool isBranchWeightMD (const MDNode *ProfileData)
 Checks if an MDNode contains Branch Weight Metadata.
 
bool hasBranchWeightMD (const Instruction &I)
 Checks if an instructions has Branch Weight Metadata.
 
bool hasValidBranchWeightMD (const Instruction &I)
 Checks if an instructions has valid Branch Weight Metadata.
 
MDNodegetBranchWeightMDNode (const Instruction &I)
 Get the branch weights metadata node.
 
MDNodegetValidBranchWeightMDNode (const Instruction &I)
 Get the valid branch weights metadata node.
 
bool hasBranchWeightOrigin (const Instruction &I)
 Check if Branch Weight Metadata has an "expected" field from an llvm.expect* intrinsic.
 
bool hasBranchWeightOrigin (const MDNode *ProfileData)
 Check if Branch Weight Metadata has an "expected" field from an llvm.expect* intrinsic.
 
unsigned getBranchWeightOffset (const MDNode *ProfileData)
 Return the offset to the first branch weight data.
 
unsigned getNumBranchWeights (const MDNode &ProfileData)
 
bool extractBranchWeights (const MDNode *ProfileData, SmallVectorImpl< uint32_t > &Weights)
 Extract branch weights from MD_prof metadata.
 
void extractFromBranchWeightMD32 (const MDNode *ProfileData, SmallVectorImpl< uint32_t > &Weights)
 Faster version of extractBranchWeights() that skips checks and must only be called with "branch_weights" metadata nodes.
 
void extractFromBranchWeightMD64 (const MDNode *ProfileData, SmallVectorImpl< uint64_t > &Weights)
 Faster version of extractBranchWeights() that skips checks and must only be called with "branch_weights" metadata nodes.
 
bool extractBranchWeights (const Instruction &I, SmallVectorImpl< uint32_t > &Weights)
 Extract branch weights attatched to an Instruction.
 
bool extractBranchWeights (const Instruction &I, uint64_t &TrueVal, uint64_t &FalseVal)
 Extract branch weights from a conditional branch or select Instruction.
 
bool extractProfTotalWeight (const MDNode *ProfileData, uint64_t &TotalWeights)
 Retrieve the total of all weights from MD_prof data.
 
bool extractProfTotalWeight (const Instruction &I, uint64_t &TotalWeights)
 Retrieve the total of all weights from an instruction.
 
void setBranchWeights (Instruction &I, ArrayRef< uint32_t > Weights, bool IsExpected)
 Create a new branch_weights metadata node and add or overwrite a prof metadata reference to instruction I.
 
void scaleProfData (Instruction &I, uint64_t S, uint64_t T)
 Scaling the profile data attached to 'I' using the ratio of S/T.
 
static bool isSentinelProbe (uint32_t Flags)
 
static bool hasDiscriminator (uint32_t Flags)
 
std::optional< PseudoProbeextractProbe (const Instruction &Inst)
 
void setProbeDistributionFactor (Instruction &Inst, float Factor)
 
bool convertUsersOfConstantsToInstructions (ArrayRef< Constant * > Consts, Function *RestrictToFunc=nullptr, bool RemoveDeadConstants=true, bool IncludeSelf=false)
 Replace constant expressions users of the given constants with instructions.
 
void verifySafepointIR (Function &F)
 Run the safepoint verifier over a single function. Crashes on failure.
 
FunctionPasscreateSafepointIRVerifierPass ()
 Create an instance of the safepoint verifier pass which can be added to a pass pipeline to check for relocation bugs.
 
auto instrs (const BasicBlock &BB)
 
StatepointDirectives parseStatepointDirectivesFromAttrs (AttributeList AS)
 Parse out statepoint directives from the function attributes present in AS.
 
bool isStatepointDirectiveAttr (Attribute Attr)
 Return true if the Attr is an attribute that is a statepoint directive.
 
stable_hash StructuralHash (const Function &F, bool DetailedHash=false)
 Returns a hash of the function F.
 
stable_hash StructuralHash (const GlobalVariable &G)
 Returns a hash of the global variable G.
 
stable_hash StructuralHash (const Module &M, bool DetailedHash=false)
 Returns a hash of the module M by hashing all functions and global variables contained within.
 
FunctionHashInfo StructuralHashWithDifferences (const Function &F, IgnoreOperandFunc IgnoreOp)
 Computes a structural hash of a given function, considering the structure and content of the function's instructions while allowing for selective ignoring of certain operands based on custom criteria.
 
raw_ostreamoperator<< (raw_ostream &OS, const Type &T)
 
Type ** unwrap (LLVMTypeRef *Tys)
 
LLVMTypeRefwrap (Type **Tys)
 
raw_ostreamoperator<< (raw_ostream &OS, const Value &V)
 
Value ** unwrap (LLVMValueRef *Vals)
 
template<typename T >
T ** unwrap (LLVMValueRef *Vals, unsigned Length)
 
LLVMValueRefwrap (const Value **Vals)
 
TypetoVectorTy (Type *Scalar, ElementCount EC)
 A helper function for converting Scalar types to vector types.
 
TypetoVectorTy (Type *Scalar, unsigned VF)
 
TypetoVectorizedStructTy (StructType *StructTy, ElementCount EC)
 A helper for converting structs of scalar types to structs of vector types.
 
TypetoScalarizedStructTy (StructType *StructTy)
 A helper for converting structs of vector types to structs of scalar types.
 
bool isVectorizedStructTy (StructType *StructTy)
 Returns true if StructTy is an unpacked literal struct where all elements are vectors of matching element count.
 
bool canVectorizeStructTy (StructType *StructTy)
 Returns true if StructTy is an unpacked literal struct where all elements are scalars that can be used as vector element types.
 
TypetoVectorizedTy (Type *Ty, ElementCount EC)
 A helper for converting to vectorized types.
 
TypetoScalarizedTy (Type *Ty)
 A helper for converting vectorized types to scalarized (non-vector) types.
 
bool isVectorizedTy (Type *Ty)
 Returns true if Ty is a vector type or a struct of vector types where all vector types share the same VF.
 
bool canVectorizeTy (Type *Ty)
 Returns true if Ty is a valid vector element type, void, or an unpacked literal struct where all elements are valid vector element types.
 
ArrayRef< Type * > getContainedTypes (Type *const &Ty)
 Returns the types contained in Ty.
 
ElementCount getVectorizedTypeVF (Type *Ty)
 Returns the number of vector elements for a vectorized type.
 
bool isUnpackedStructLiteral (StructType *StructTy)
 
bool verifyFunction (const Function &F, raw_ostream *OS=nullptr)
 Check a function for errors, useful for use when debugging a pass.
 
bool verifyModule (const Module &M, raw_ostream *OS=nullptr, bool *BrokenDebugInfo=nullptr)
 Check a module for errors.
 
FunctionPasscreateVerifierPass (bool FatalErrors=true)
 
std::unique_ptr< ModulegetLazyIRModule (std::unique_ptr< MemoryBuffer > Buffer, SMDiagnostic &Err, LLVMContext &Context, bool ShouldLazyLoadMetadata=false)
 If the given MemoryBuffer holds a bitcode image, return a Module for it which does lazy deserialization of function bodies.
 
std::unique_ptr< ModulegetLazyIRFileModule (StringRef Filename, SMDiagnostic &Err, LLVMContext &Context, bool ShouldLazyLoadMetadata=false)
 If the given file holds a bitcode image, return a Module for it which does lazy deserialization of function bodies.
 
std::unique_ptr< ModuleparseIR (MemoryBufferRef Buffer, SMDiagnostic &Err, LLVMContext &Context, ParserCallbacks Callbacks={})
 If the given MemoryBuffer holds a bitcode image, return a Module for it.
 
std::unique_ptr< ModuleparseIRFile (StringRef Filename, SMDiagnostic &Err, LLVMContext &Context, ParserCallbacks Callbacks={})
 If the given file holds a bitcode image, return a Module for it.
 
void parseCommandLineOptions (std::vector< std::string > &Options)
 A convenience function that calls cl::ParseCommandLineOptions on the given set of options.
 
void updateCompilerUsed (Module &TheModule, const TargetMachine &TM, const StringSet<> &AsmUndefinedRefs)
 Find all globals in TheModule that are referenced in AsmUndefinedRefs, as well as the user-supplied functions definitions that are also libcalls, and create or update the magic "llvm.compiler_used" global in TheModule.
 
void thinLTOResolvePrevailingInIndex (const lto::Config &C, ModuleSummaryIndex &Index, function_ref< bool(GlobalValue::GUID, const GlobalValueSummary *)> isPrevailing, function_ref< void(StringRef, GlobalValue::GUID, GlobalValue::LinkageTypes)> recordNewLinkage, const DenseSet< GlobalValue::GUID > &GUIDPreservedSymbols)
 Resolve linkage for prevailing symbols in the Index.
 
void thinLTOInternalizeAndPromoteInIndex (ModuleSummaryIndex &Index, function_ref< bool(StringRef, ValueInfo)> isExported, function_ref< bool(GlobalValue::GUID, const GlobalValueSummary *)> isPrevailing)
 Update the linkages in the given Index to mark exported values as external and non-exported values as internal.
 
std::string computeLTOCacheKey (const lto::Config &Conf, const ModuleSummaryIndex &Index, StringRef ModuleID, const FunctionImporter::ImportMapTy &ImportList, const FunctionImporter::ExportSetTy &ExportList, const std::map< GlobalValue::GUID, GlobalValue::LinkageTypes > &ResolvedODR, const GVSummaryMapTy &DefinedGlobals, const DenseSet< GlobalValue::GUID > &CfiFunctionDefs={}, const DenseSet< GlobalValue::GUID > &CfiFunctionDecls={})
 Computes a unique hash for the Module considering the current list of export/import and other global analysis results.
 
std::string recomputeLTOCacheKey (const std::string &Key, StringRef ExtraID)
 Recomputes the LTO cache key for a given key with an extra identifier.
 
Printable PrintLaneMask (LaneBitmask LaneMask)
 Create Printable object to print LaneBitmasks on a raw_ostream.
 
bool operator!= (const MachineLocation &LHS, const MachineLocation &RHS)
 
MCELFStreamercreateARMELFStreamer (MCContext &Context, std::unique_ptr< MCAsmBackend > TAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter, bool IsThumb, bool IsAndroid)
 
raw_ostreamoperator<< (raw_ostream &OS, const MCExpr &E)
 
std::unique_ptr< MCObjectWritercreateGOFFObjectWriter (std::unique_ptr< MCGOFFObjectTargetWriter > MOTW, raw_pwrite_stream &OS)
 Construct a new GOFF writer instance.
 
raw_ostreamoperator<< (raw_ostream &OS, const MCOperand &MO)
 
raw_ostreamoperator<< (raw_ostream &OS, const MCInst &MI)
 
void dumpBytes (ArrayRef< uint8_t > Bytes, raw_ostream &OS)
 Convert ‘Bytes’ to a hex string and output to ‘OS’.
 
raw_ostreamoperator<< (raw_ostream &OS, const MCLabel &Label)
 
static StringRef MCLOHDirectiveName ()
 
static bool isValidMCLOHType (unsigned Kind)
 
static int MCLOHNameToId (StringRef Name)
 
static StringRef MCLOHIdToName (MCLOHType Kind)
 
static int MCLOHIdToNbArgs (MCLOHType Kind)
 
MCAsmParsercreateMCAsmParser (SourceMgr &, MCContext &, MCStreamer &, const MCAsmInfo &, unsigned CB=0)
 Create an MCAsmParser instance for parsing assembly similar to gas syntax.
 
MCAsmParsercreateMCMasmParser (SourceMgr &, MCContext &, MCStreamer &, const MCAsmInfo &, struct tm, unsigned CB=0)
 Create an MCAsmParser instance for parsing Microsoft MASM-style assembly.
 
raw_ostreamoperator<< (raw_ostream &OS, const MCParsedAsmOperand &MO)
 
hash_code hash_value (const MCRegister &Reg)
 
std::unique_ptr< MCObjectWritercreateSPIRVObjectWriter (std::unique_ptr< MCSPIRVObjectTargetWriter > MOTW, raw_pwrite_stream &OS)
 Construct a new SPIR-V writer instance.
 
MCStreamercreateNullStreamer (MCContext &Ctx)
 Create a dummy machine code streamer, which does nothing.
 
raw_ostreamoperator<< (raw_ostream &OS, const MCSymbol &Sym)
 
std::unique_ptr< MCObjectWritercreateWasmObjectWriter (std::unique_ptr< MCWasmObjectTargetWriter > MOTW, raw_pwrite_stream &OS)
 Construct a new Wasm writer instance.
 
std::unique_ptr< MCObjectWritercreateWasmDwoObjectWriter (std::unique_ptr< MCWasmObjectTargetWriter > MOTW, raw_pwrite_stream &OS, raw_pwrite_stream &DwoOS)
 
std::unique_ptr< MCObjectWritercreateWinCOFFObjectWriter (std::unique_ptr< MCWinCOFFObjectTargetWriter > MOTW, raw_pwrite_stream &OS)
 Construct a new Win COFF writer instance.
 
std::unique_ptr< MCObjectWritercreateWinCOFFDwoObjectWriter (std::unique_ptr< MCWinCOFFObjectTargetWriter > MOTW, raw_pwrite_stream &OS, raw_pwrite_stream &DwoOS)
 
std::unique_ptr< MCObjectWritercreateXCOFFObjectWriter (std::unique_ptr< MCXCOFFObjectTargetWriter > MOTW, raw_pwrite_stream &OS)
 
MCStreamercreateAsmStreamer (MCContext &Ctx, std::unique_ptr< formatted_raw_ostream > OS, MCInstPrinter *InstPrint, std::unique_ptr< MCCodeEmitter > &&CE, std::unique_ptr< MCAsmBackend > &&TAB)
 Create a machine code streamer which will print out assembly for the native target, suitable for compiling with a native assembler.
 
MCStreamercreateELFStreamer (MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)
 
MCStreamercreateGOFFStreamer (MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)
 
MCStreamercreateMachOStreamer (MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE, bool DWARFMustBeAtTheEnd, bool LabelSections=false)
 
MCStreamercreateWasmStreamer (MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)
 
MCStreamercreateSPIRVStreamer (MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)
 
MCStreamercreateDXContainerStreamer (MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)
 
MCRelocationInfocreateMCRelocationInfo (const Triple &TT, MCContext &Ctx)
 
MCSymbolizercreateMCSymbolizer (const Triple &TT, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp, void *DisInfo, MCContext *Ctx, std::unique_ptr< MCRelocationInfo > &&RelInfo)
 
mca::CustomBehaviourcreateCustomBehaviour (const MCSubtargetInfo &STI, const mca::SourceMgr &SrcMgr, const MCInstrInfo &MCII)
 
mca::InstrPostProcesscreateInstrPostProcess (const MCSubtargetInfo &STI, const MCInstrInfo &MCII)
 
mca::InstrumentManagercreateInstrumentManager (const MCSubtargetInfo &STI, const MCInstrInfo &MCII)
 
Expected< std::string > computeArchiveRelativePath (StringRef From, StringRef To)
 
void warnToStderr (Error Err)
 
Error writeArchiveToStream (raw_ostream &Out, ArrayRef< NewArchiveMember > NewMembers, SymtabWritingMode WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin, std::optional< bool > IsEC=std::nullopt, function_ref< void(Error)> Warn=warnToStderr)
 
Error writeArchive (StringRef ArcName, ArrayRef< NewArchiveMember > NewMembers, SymtabWritingMode WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin, std::unique_ptr< MemoryBuffer > OldArchiveBuf=nullptr, std::optional< bool > IsEC=std::nullopt, function_ref< void(Error)> Warn=warnToStderr)
 
Expected< std::unique_ptr< MemoryBuffer > > writeArchiveToBuffer (ArrayRef< NewArchiveMember > NewMembers, SymtabWritingMode WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin, function_ref< void(Error)> Warn=warnToStderr)
 
raw_ostreamoperator<< (raw_ostream &OS, const FaultMapParser::FunctionFaultInfoAccessor &)
 
raw_ostreamoperator<< (raw_ostream &OS, const FaultMapParser::FunctionInfoAccessor &)
 
raw_ostreamoperator<< (raw_ostream &OS, const FaultMapParser &)
 
raw_ostreamoperator<< (raw_ostream &OS, const object::WasmSymbol &Sym)
 
StringRef machineToStr (COFF::MachineTypes MT)
 
COFF::MachineTypes getMachineType (StringRef S)
 
template<typename T >
Triple::ArchType getMachineArchType (T machine)
 
template<typename AnalysisT , typename IRUnitT , typename AnalysisManagerT , typename... ExtraArgTs>
bool parseAnalysisUtilityPasses (StringRef AnalysisName, StringRef PipelineName, PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs... > &PM)
 This utility template takes care of adding require<> and invalidate<> passes for an analysis to a given PassManager.
 
template<class PassName , std::enable_if_t< std::is_default_constructible< PassName >{}, bool > = true>
PasscallDefaultCtor ()
 
void gcovOneInput (const GCOV::Options &options, StringRef filename, StringRef gcno, StringRef gcda, GCOVFile &file)
 
uint64_t getInstrMaxCountValue ()
 Return the max count value. We reserver a few large values for special use.
 
std::string getInstrProfSectionName (InstrProfSectKind IPSK, Triple::ObjectFormatType OF, bool AddSegmentInfo=true)
 Return the name of the profile section corresponding to IPSK.
 
StringRef getInstrProfValueProfFuncName ()
 Return the name profile runtime entry point to do value profiling for a given site.
 
StringRef getInstrProfValueProfMemOpFuncName ()
 Return the name profile runtime entry point to do memop size value profiling.
 
StringRef getInstrProfNameVarPrefix ()
 Return the name prefix of variables containing instrumented function names.
 
StringRef getInstrProfVTableVarPrefix ()
 Return the name prefix of variables containing virtual table profile data.
 
StringRef getInstrProfDataVarPrefix ()
 Return the name prefix of variables containing per-function control data.
 
StringRef getInstrProfCountersVarPrefix ()
 Return the name prefix of profile counter variables.
 
StringRef getInstrProfBitmapVarPrefix ()
 Return the name prefix of profile bitmap variables.
 
StringRef getInstrProfValuesVarPrefix ()
 Return the name prefix of value profile variables.
 
StringRef getInstrProfVNodesVarName ()
 Return the name of value profile node array variables:
 
StringRef getInstrProfNamesVarName ()
 Return the name of the variable holding the strings (possibly compressed) of all function's PGO names.
 
StringRef getInstrProfVTableNamesVarName ()
 
StringRef getCoverageMappingVarName ()
 Return the name of a covarage mapping variable (internal linkage) for each instrumented source module.
 
StringRef getCoverageUnusedNamesVarName ()
 Return the name of the internal variable recording the array of PGO name vars referenced by the coverage mapping.
 
StringRef getInstrProfRegFuncsName ()
 Return the name of function that registers all the per-function control data at program startup time by calling __llvm_register_function.
 
StringRef getInstrProfRegFuncName ()
 Return the name of the runtime interface that registers per-function control data for one instrumented function.
 
StringRef getInstrProfNamesRegFuncName ()
 Return the name of the runtime interface that registers the PGO name strings.
 
StringRef getInstrProfInitFuncName ()
 Return the name of the runtime initialization method that is generated by the compiler.
 
StringRef getInstrProfRuntimeHookVarName ()
 Return the name of the hook variable defined in profile runtime library.
 
StringRef getInstrProfRuntimeHookVarUseFuncName ()
 Return the name of the compiler generated function that references the runtime hook variable.
 
StringRef getInstrProfCounterBiasVarName ()
 
StringRef getInstrProfBitmapBiasVarName ()
 
StringRef getInstrProfNameSeparator ()
 Return the marker used to separate PGO names during serialization.
 
bool isGPUProfTarget (const Module &M)
 Determines whether module targets a GPU eligable for PGO instrumentation.
 
std::string getPGOFuncName (const Function &F, bool InLTO=false, uint64_t Version=INSTR_PROF_INDEX_VERSION)
 Please use getIRPGOFuncName for LLVM IR instrumentation.
 
std::string getPGOFuncName (StringRef RawFuncName, GlobalValue::LinkageTypes Linkage, StringRef FileName, uint64_t Version=INSTR_PROF_INDEX_VERSION)
 Return the modified name for a function suitable to be used the key for profile lookup.
 
std::string getIRPGOFuncName (const Function &F, bool InLTO=false)
 
std::pair< StringRef, StringRefgetParsedIRPGOName (StringRef IRPGOName)
 
std::string getPGOFuncNameVarName (StringRef FuncName, GlobalValue::LinkageTypes Linkage)
 Return the name of the global variable used to store a function name in PGO instrumentation.
 
GlobalVariablecreatePGOFuncNameVar (Function &F, StringRef PGOFuncName)
 Create and return the global variable for function name used in PGO instrumentation.
 
GlobalVariablecreatePGOFuncNameVar (Module &M, GlobalValue::LinkageTypes Linkage, StringRef PGOFuncName)
 Create and return the global variable for function name used in PGO instrumentation.
 
StringRef getPGOFuncNameVarInitializer (GlobalVariable *NameVar)
 Return the initializer in string of the PGO name var NameVar.
 
StringRef getFuncNameWithoutPrefix (StringRef PGOFuncName, StringRef FileName="<unknown>")
 Given a PGO function name, remove the filename prefix and return the original (static) function name.
 
Error collectGlobalObjectNameStrings (ArrayRef< std::string > NameStrs, bool doCompression, std::string &Result)
 Given a vector of strings (names of global objects like functions or, virtual tables) NameStrs, the method generates a combined string Result that is ready to be serialized.
 
Error collectPGOFuncNameStrings (ArrayRef< GlobalVariable * > NameVars, std::string &Result, bool doCompression=true)
 Produce Result string with the same format described above.
 
Error collectVTableStrings (ArrayRef< GlobalVariable * > VTables, std::string &Result, bool doCompression)
 
bool isIRPGOFlagSet (const Module *M)
 Check if INSTR_PROF_RAW_VERSION_VAR is defined.
 
bool canRenameComdatFunc (const Function &F, bool CheckAddressTaken=false)
 Check if we can safely rename this Comdat function.
 
void annotateValueSite (Module &M, Instruction &Inst, const InstrProfRecord &InstrProfR, InstrProfValueKind ValueKind, uint32_t SiteIndx, uint32_t MaxMDCount=3)
 Get the value profile data for value site SiteIdx from InstrProfR and annotate the instruction Inst with the value profile meta data.
 
void annotateValueSite (Module &M, Instruction &Inst, ArrayRef< InstrProfValueData > VDs, uint64_t Sum, InstrProfValueKind ValueKind, uint32_t MaxMDCount)
 Same as the above interface but using an ArrayRef, as well as Sum.
 
SmallVector< InstrProfValueData, 4 > getValueProfDataFromInst (const Instruction &Inst, InstrProfValueKind ValueKind, uint32_t MaxNumValueData, uint64_t &TotalC, bool GetNoICPValue=false)
 Extract the value profile data from Inst and returns them if Inst is annotated with value profile data.
 
StringRef getPGOFuncNameMetadataName ()
 
StringRef getPGONameMetadataName ()
 
MDNodegetPGOFuncNameMetadata (const Function &F)
 Return the PGOFuncName meta data associated with a function.
 
std::string getPGOName (const GlobalVariable &V, bool InLTO=false)
 
void createPGOFuncNameMetadata (Function &F, StringRef PGOFuncName)
 Create the PGOFuncName meta data if PGOFuncName is different from function's raw name.
 
void createPGONameMetadata (GlobalObject &GO, StringRef PGOName)
 Create the PGOName metadata if a global object's PGO name is different from its mangled name.
 
bool needsComdatForCounter (const GlobalObject &GV, const Module &M)
 Check if we can use Comdat for profile variables.
 
const std::error_category & instrprof_category ()
 
std::error_code make_error_code (instrprof_error E)
 
void createProfileFileNameVar (Module &M, StringRef InstrProfileOutput)
 
Error createCtxProfFromYAML (StringRef Profile, raw_ostream &Out)
 
const std::error_category & sampleprof_category ()
 
std::error_code make_error_code (sampleprof_error E)
 
sampleprof_error mergeSampleProfErrors (sampleprof_error &Accumulator, sampleprof_error Result)
 
std::string getUniqueInternalLinkagePostfix (const StringRef &FName)
 
Align assumeAligned (uint64_t Value)
 Treats the value 0 as a 1, so Align is always at least 1.
 
bool isAligned (Align Lhs, uint64_t SizeInBytes)
 Checks that SizeInBytes is a multiple of the alignment.
 
bool isAddrAligned (Align Lhs, const void *Addr)
 Checks that Addr is a multiple of the alignment.
 
uint64_t alignTo (uint64_t Size, Align A)
 Returns a multiple of A needed to store Size bytes.
 
uint64_t alignTo (uint64_t Size, Align A, uint64_t Skew)
 If non-zero Skew is specified, the return value will be a minimal integer that is greater than or equal to Size and equal to A * N + Skew for some integer N.
 
uintptr_t alignAddr (const void *Addr, Align Alignment)
 Aligns Addr to Alignment bytes, rounding up.
 
uint64_t offsetToAlignment (uint64_t Value, Align Alignment)
 Returns the offset to the next integer (mod 2**64) that is greater than or equal to Value and is a multiple of Align.
 
uint64_t offsetToAlignedAddr (const void *Addr, Align Alignment)
 Returns the necessary adjustment for aligning Addr to Alignment bytes, rounding up.
 
unsigned Log2 (Align A)
 Returns the log2 of the alignment.
 
Align commonAlignment (Align A, uint64_t Offset)
 Returns the alignment that satisfies both alignments.
 
unsigned encode (MaybeAlign A)
 Returns a representation of the alignment that encodes undefined as 0.
 
MaybeAlign decodeMaybeAlign (unsigned Value)
 Dual operation of the encode function above.
 
unsigned encode (Align A)
 Returns a representation of the alignment, the encoded value is positive by definition.
 
bool operator== (Align Lhs, uint64_t Rhs)
 Comparisons between Align and scalars. Rhs must be positive.
 
bool operator!= (Align Lhs, uint64_t Rhs)
 
bool operator<= (Align Lhs, uint64_t Rhs)
 
bool operator>= (Align Lhs, uint64_t Rhs)
 
bool operator< (Align Lhs, uint64_t Rhs)
 
bool operator> (Align Lhs, uint64_t Rhs)
 
bool operator== (Align Lhs, Align Rhs)
 Comparisons operators between Align.
 
bool operator!= (Align Lhs, Align Rhs)
 
bool operator<= (Align Lhs, Align Rhs)
 
bool operator>= (Align Lhs, Align Rhs)
 
bool operator< (Align Lhs, Align Rhs)
 
bool operator> (Align Lhs, Align Rhs)
 
bool operator<= (Align Lhs, MaybeAlign Rhs)=delete
 
bool operator>= (Align Lhs, MaybeAlign Rhs)=delete
 
bool operator< (Align Lhs, MaybeAlign Rhs)=delete
 
bool operator> (Align Lhs, MaybeAlign Rhs)=delete
 
bool operator<= (MaybeAlign Lhs, Align Rhs)=delete
 
bool operator>= (MaybeAlign Lhs, Align Rhs)=delete
 
bool operator< (MaybeAlign Lhs, Align Rhs)=delete
 
bool operator> (MaybeAlign Lhs, Align Rhs)=delete
 
bool operator<= (MaybeAlign Lhs, MaybeAlign Rhs)=delete
 
bool operator>= (MaybeAlign Lhs, MaybeAlign Rhs)=delete
 
bool operator< (MaybeAlign Lhs, MaybeAlign Rhs)=delete
 
bool operator> (MaybeAlign Lhs, MaybeAlign Rhs)=delete
 
bool operator== (MaybeAlign Lhs, Align Rhs)
 
bool operator!= (MaybeAlign Lhs, Align Rhs)
 
bool operator== (Align Lhs, MaybeAlign Rhs)
 
bool operator!= (Align Lhs, MaybeAlign Rhs)
 
bool operator== (MaybeAlign Lhs, MaybeAlign Rhs)
 
bool operator!= (MaybeAlign Lhs, MaybeAlign Rhs)
 
bool operator== (MaybeAlign Lhs, std::nullopt_t)
 
bool operator!= (MaybeAlign Lhs, std::nullopt_t)
 
bool operator== (std::nullopt_t, MaybeAlign Rhs)
 
bool operator!= (std::nullopt_t, MaybeAlign Rhs)
 
std::string DebugStr (const Align &A)
 
std::string DebugStr (const MaybeAlign &MA)
 
bool operator< (AtomicOrderingCABI, AtomicOrderingCABI)=delete
 
bool operator> (AtomicOrderingCABI, AtomicOrderingCABI)=delete
 
bool operator<= (AtomicOrderingCABI, AtomicOrderingCABI)=delete
 
bool operator>= (AtomicOrderingCABI, AtomicOrderingCABI)=delete
 
template<typename Int >
bool isValidAtomicOrderingCABI (Int I)
 
bool operator< (AtomicOrdering, AtomicOrdering)=delete
 
bool operator> (AtomicOrdering, AtomicOrdering)=delete
 
bool operator<= (AtomicOrdering, AtomicOrdering)=delete
 
bool operator>= (AtomicOrdering, AtomicOrdering)=delete
 
template<typename Int >
bool isValidAtomicOrdering (Int I)
 
const chartoIRString (AtomicOrdering ao)
 String used by LLVM IR to represent atomic ordering.
 
bool isStrongerThan (AtomicOrdering AO, AtomicOrdering Other)
 Returns true if ao is stronger than other as defined by the AtomicOrdering lattice, which is based on C++'s definition.
 
bool isAtLeastOrStrongerThan (AtomicOrdering AO, AtomicOrdering Other)
 
bool isStrongerThanUnordered (AtomicOrdering AO)
 
bool isStrongerThanMonotonic (AtomicOrdering AO)
 
bool isAcquireOrStronger (AtomicOrdering AO)
 
bool isReleaseOrStronger (AtomicOrdering AO)
 
AtomicOrdering getMergedAtomicOrdering (AtomicOrdering AO, AtomicOrdering Other)
 Return a single atomic ordering that is at least as strong as both the AO and Other orderings for an atomic operation.
 
AtomicOrderingCABI toCABI (AtomicOrdering AO)
 
template<class InputBytes >
std::string encodeBase64 (InputBytes const &Bytes)
 
llvm::Error decodeBase64 (llvm::StringRef Input, std::vector< char > &Output)
 
int64_t decodePackedBCD (const uint8_t *Ptr, size_t ByteLen, bool IsSigned=true)
 
template<typename ResultT , typename ValT >
ResultT decodePackedBCD (const ValT Val, bool IsSigned=true)
 
void printRelativeBlockFreq (raw_ostream &OS, BlockFrequency EntryFreq, BlockFrequency Freq)
 
raw_ostreamoperator<< (raw_ostream &OS, BranchProbability Prob)
 
void BuryPointer (const void *Ptr)
 
template<typename T >
void BuryPointer (std::unique_ptr< T > Ptr)
 
Expected< CachePruningPolicyparseCachePruningPolicy (StringRef PolicyStr)
 Parse the given string as a cache pruning policy.
 
bool pruneCache (StringRef Path, CachePruningPolicy Policy, const std::vector< std::unique_ptr< MemoryBuffer > > &Files={})
 Peform pruning using the supplied policy, returns true if pruning occurred, i.e.
 
Expected< FileCachelocalCache (const Twine &CacheNameRef, const Twine &TempFilePrefixRef, const Twine &CacheDirectoryPathRef, AddBufferFn AddBuffer=[](size_t Task, const Twine &ModuleName, std::unique_ptr< MemoryBuffer > MB) {})
 Create a local file system cache which uses the given cache name, temporary file prefix, cache directory and file callback.
 
template<typename T >
static size_t capacity_in_bytes (const T &x)
 
template<typename To , typename From >
bool isa (const From &Val)
 isa<X> - Return true if the parameter to the template is an instance of one of the template type arguments.
 
template<typename First , typename Second , typename... Rest, typename From >
bool isa (const From &Val)
 
template<typename To , typename From >
decltype(auto) cast (const From &Val)
 cast<X> - Return the argument parameter cast to the specified type.
 
template<typename To , typename From >
decltype(auto) cast (From &Val)
 
template<typename To , typename From >
decltype(auto) cast (From *Val)
 
template<typename To , typename From >
decltype(auto) cast (std::unique_ptr< From > &&Val)
 
template<typename To , typename From >
decltype(auto) dyn_cast (const From &Val)
 dyn_cast<X> - Return the argument parameter cast to the specified type.
 
template<typename To , typename From >
decltype(auto) dyn_cast (From &Val)
 
template<typename To , typename From >
decltype(auto) dyn_cast (From *Val)
 
template<typename To , typename From >
decltype(auto) dyn_cast (std::unique_ptr< From > &Val)
 
template<typename... X, class Y >
bool isa_and_present (const Y &Val)
 isa_and_present<X> - Functionally identical to isa, except that a null value is accepted.
 
template<typename... X, class Y >
bool isa_and_nonnull (const Y &Val)
 
template<class X , class Y >
auto cast_if_present (const Y &Val)
 cast_if_present<X> - Functionally identical to cast, except that a null value is accepted.
 
template<class X , class Y >
auto cast_if_present (Y &Val)
 
template<class X , class Y >
auto cast_if_present (Y *Val)
 
template<class X , class Y >
auto cast_if_present (std::unique_ptr< Y > &&Val)
 
template<class X , class Y >
auto cast_or_null (const Y &Val)
 
template<class X , class Y >
auto cast_or_null (Y &Val)
 
template<class X , class Y >
auto cast_or_null (Y *Val)
 
template<class X , class Y >
auto cast_or_null (std::unique_ptr< Y > &&Val)
 
template<class X , class Y >
auto dyn_cast_if_present (const Y &Val)
 dyn_cast_if_present<X> - Functionally identical to dyn_cast, except that a null (or none in the case of optionals) value is accepted.
 
template<class X , class Y >
auto dyn_cast_if_present (Y &Val)
 
template<class X , class Y >
auto dyn_cast_if_present (Y *Val)
 
template<class X , class Y >
auto dyn_cast_or_null (const Y &Val)
 
template<class X , class Y >
auto dyn_cast_or_null (Y &Val)
 
template<class X , class Y >
auto dyn_cast_or_null (Y *Val)
 
template<class X , class Y >
CastInfo< X, std::unique_ptr< Y > >::CastResultType unique_dyn_cast (std::unique_ptr< Y > &Val)
 unique_dyn_cast<X> - Given a unique_ptr<Y>, try to return a unique_ptr<X>, taking ownership of the input pointer iff isa<X>(Val) is true.
 
template<class X , class Y >
auto unique_dyn_cast (std::unique_ptr< Y > &&Val)
 
template<class X , class Y >
CastInfo< X, std::unique_ptr< Y > >::CastResultType unique_dyn_cast_or_null (std::unique_ptr< Y > &Val)
 
template<class X , class Y >
auto unique_dyn_cast_or_null (std::unique_ptr< Y > &&Val)
 
template<typename T >
std::enable_if_t< std::is_signed_v< T >, std::optional< T > > checkedAdd (T LHS, T RHS)
 Add two signed integers LHS and RHS.
 
template<typename T >
std::enable_if_t< std::is_signed_v< T >, std::optional< T > > checkedSub (T LHS, T RHS)
 Subtract two signed integers LHS and RHS.
 
template<typename T >
std::enable_if_t< std::is_signed_v< T >, std::optional< T > > checkedMul (T LHS, T RHS)
 Multiply two signed integers LHS and RHS.
 
template<typename T >
std::enable_if_t< std::is_signed_v< T >, std::optional< T > > checkedMulAdd (T A, T B, T C)
 Multiply A and B, and add C to the resulting product.
 
template<typename T >
std::enable_if_t< std::is_unsigned_v< T >, std::optional< T > > checkedAddUnsigned (T LHS, T RHS)
 Add two unsigned integers LHS and RHS.
 
template<typename T >
std::enable_if_t< std::is_unsigned_v< T >, std::optional< T > > checkedMulUnsigned (T LHS, T RHS)
 Multiply two unsigned integers LHS and RHS.
 
template<typename T >
std::enable_if_t< std::is_unsigned_v< T >, std::optional< T > > checkedMulAddUnsigned (T A, T B, T C)
 Multiply unsigned integers A and B, and add C to the resulting product.
 
raw_ostreamoperator<< (raw_ostream &OS, sys::TimePoint<> TP)
 
raw_ostreamoperator<< (raw_ostream &OS, sys::UtcTime<> TP)
 
ConversionResult ConvertUTF8toUTF16 (const UTF8 **sourceStart, const UTF8 *sourceEnd, UTF16 **targetStart, UTF16 *targetEnd, ConversionFlags flags)
 
ConversionResult ConvertUTF8toUTF32Partial (const UTF8 **sourceStart, const UTF8 *sourceEnd, UTF32 **targetStart, UTF32 *targetEnd, ConversionFlags flags)
 Convert a partial UTF8 sequence to UTF32.
 
ConversionResult ConvertUTF8toUTF32 (const UTF8 **sourceStart, const UTF8 *sourceEnd, UTF32 **targetStart, UTF32 *targetEnd, ConversionFlags flags)
 Convert a partial UTF8 sequence to UTF32.
 
ConversionResult ConvertUTF16toUTF8 (const UTF16 **sourceStart, const UTF16 *sourceEnd, UTF8 **targetStart, UTF8 *targetEnd, ConversionFlags flags)
 
ConversionResult ConvertUTF32toUTF8 (const UTF32 **sourceStart, const UTF32 *sourceEnd, UTF8 **targetStart, UTF8 *targetEnd, ConversionFlags flags)
 
ConversionResult ConvertUTF16toUTF32 (const UTF16 **sourceStart, const UTF16 *sourceEnd, UTF32 **targetStart, UTF32 *targetEnd, ConversionFlags flags)
 
ConversionResult ConvertUTF32toUTF16 (const UTF32 **sourceStart, const UTF32 *sourceEnd, UTF16 **targetStart, UTF16 *targetEnd, ConversionFlags flags)
 
Boolean isLegalUTF8Sequence (const UTF8 *source, const UTF8 *sourceEnd)
 
Boolean isLegalUTF8String (const UTF8 **source, const UTF8 *sourceEnd)
 
unsigned getUTF8SequenceSize (const UTF8 *source, const UTF8 *sourceEnd)
 
unsigned getNumBytesForUTF8 (UTF8 firstByte)
 
bool ConvertUTF8toWide (unsigned WideCharWidth, llvm::StringRef Source, char *&ResultPtr, const UTF8 *&ErrorPtr)
 Convert an UTF8 StringRef to UTF8, UTF16, or UTF32 depending on WideCharWidth.
 
bool ConvertUTF8toWide (llvm::StringRef Source, std::wstring &Result)
 Converts a UTF-8 StringRef to a std::wstring.
 
bool ConvertUTF8toWide (const char *Source, std::wstring &Result)
 Converts a UTF-8 C-string to a std::wstring.
 
bool convertWideToUTF8 (const std::wstring &Source, std::string &Result)
 Converts a std::wstring to a UTF-8 encoded std::string.
 
bool ConvertCodePointToUTF8 (unsigned Source, char *&ResultPtr)
 Convert an Unicode code point to UTF8 sequence.
 
ConversionResult convertUTF8Sequence (const UTF8 **source, const UTF8 *sourceEnd, UTF32 *target, ConversionFlags flags)
 Convert the first UTF8 sequence in the given source buffer to a UTF32 code point.
 
bool hasUTF16ByteOrderMark (ArrayRef< char > SrcBytes)
 Returns true if a blob of text starts with a UTF-16 big or little endian byte order mark.
 
bool convertUTF16ToUTF8String (ArrayRef< char > SrcBytes, std::string &Out)
 Converts a stream of raw bytes assumed to be UTF16 into a UTF8 std::string.
 
bool convertUTF16ToUTF8String (ArrayRef< UTF16 > Src, std::string &Out)
 Converts a UTF16 string into a UTF8 std::string.
 
bool convertUTF32ToUTF8String (ArrayRef< char > SrcBytes, std::string &Out)
 Converts a stream of raw bytes assumed to be UTF32 into a UTF8 std::string.
 
bool convertUTF32ToUTF8String (ArrayRef< UTF32 > Src, std::string &Out)
 Converts a UTF32 string into a UTF8 std::string.
 
bool convertUTF8ToUTF16String (StringRef SrcUTF8, SmallVectorImpl< UTF16 > &DstUTF16)
 Converts a UTF-8 string into a UTF-16 string with native endianness.
 
uint32_t crc32 (ArrayRef< uint8_t > Data)
 
uint32_t crc32 (uint32_t CRC, ArrayRef< uint8_t > Data)
 
uint24_t getSwappedBytes (uint24_t C)
 Needed by swapByteOrder().
 
bool isCurrentDebugType (const char *Type)
 isCurrentDebugType - Return true if the specified string is the debug type specified on the command line, or if none was specified on the command line with the -debug-only=X option.
 
void setCurrentDebugType (const char *Type)
 setCurrentDebugType - Set the current debug type, as if the -debug-only=X option were specified.
 
void setCurrentDebugTypes (const char **Types, unsigned Count)
 setCurrentDebugTypes - Set the current debug type, as if the -debug-only=X,Y,Z option were specified.
 
raw_ostreamdbgs ()
 dbgs() - This returns a reference to a raw_ostream for debugging messages.
 
static unsigned getNumFSPasses ()
 
static unsigned getFSPassBitEnd (sampleprof::FSDiscriminatorPass P)
 
static unsigned getFSPassBitBegin (sampleprof::FSDiscriminatorPass P)
 
static int getLastFSPassBitBegin ()
 
static unsigned getLastFSPassBitEnd ()
 
static unsigned getBaseFSBitBegin ()
 
static unsigned getBaseFSBitEnd ()
 
static unsigned getN1Bits (int N)
 
uint32_t djbHash (StringRef Buffer, uint32_t H=5381)
 The Bernstein hash function used by the DWARF accelerator tables.
 
uint32_t caseFoldingDjbHash (StringRef Buffer, uint32_t H=5381)
 Computes the Bernstein hash after folding the input according to the Dwarf 5 standard case folding rules.
 
std::error_code make_error_code (errc E)
 
template<typename ErrT , typename... ArgTs>
Error make_error (ArgTs &&... Args)
 Make a Error instance representing failure using the given error info type.
 
Error joinErrors (Error E1, Error E2)
 Concatenate errors.
 
void report_fatal_error (Error Err, bool gen_crash_diag=true)
 Report a serious error, calling any installed error handler.
 
void cantFail (Error Err, const char *Msg=nullptr)
 Report a fatal error if Err is a failure value.
 
template<typename T >
T cantFail (Expected< T > ValOrErr, const char *Msg=nullptr)
 Report a fatal error if ValOrErr is a failure value, otherwise unwraps and returns the contained value.
 
template<typename T >
TcantFail (Expected< T & > ValOrErr, const char *Msg=nullptr)
 Report a fatal error if ValOrErr is a failure value, otherwise unwraps and returns the contained reference.
 
Error handleErrorImpl (std::unique_ptr< ErrorInfoBase > Payload)
 
template<typename HandlerT , typename... HandlerTs>
Error handleErrorImpl (std::unique_ptr< ErrorInfoBase > Payload, HandlerT &&Handler, HandlerTs &&... Handlers)
 
template<typename... HandlerTs>
Error handleErrors (Error E, HandlerTs &&... Hs)
 Pass the ErrorInfo(s) contained in E to their respective handlers.
 
template<typename... HandlerTs>
void handleAllErrors (Error E, HandlerTs &&... Handlers)
 Behaves the same as handleErrors, except that by contract all errors must be handled by the given handlers (i.e.
 
void handleAllErrors (Error E)
 Check that E is a non-error, then drop it.
 
template<typename HandlerT >
void visitErrors (const Error &E, HandlerT H)
 Visit all the ErrorInfo(s) contained in E by passing them to the respective handler, without consuming the error.
 
template<typename T , typename RecoveryFtor , typename... HandlerTs>
Expected< ThandleExpected (Expected< T > ValOrErr, RecoveryFtor &&RecoveryPath, HandlerTs &&... Handlers)
 Handle any errors (if present) in an Expected<T>, then try a recovery path.
 
void logAllUnhandledErrors (Error E, raw_ostream &OS, Twine ErrorBanner={})
 Log all errors (if any) in E to OS.
 
std::string toString (Error E)
 Write all error messages (if any) in E to a string.
 
std::string toStringWithoutConsuming (const Error &E)
 Like toString(), but does not consume the error.
 
void consumeError (Error Err)
 Consume a Error without doing anything.
 
template<typename T >
std::optional< TexpectedToOptional (Expected< T > &&E)
 Convert an Expected to an Optional without doing anything.
 
template<typename T >
std::optional< TexpectedToStdOptional (Expected< T > &&E)
 
bool errorToBool (Error Err)
 Helper for converting an Error to a bool.
 
std::error_code inconvertibleErrorCode ()
 The value returned by this function can be returned from convertToErrorCode for Error values where no sensible translation to std::error_code exists.
 
Error errorCodeToError (std::error_code EC)
 Helper for converting an std::error_code to a Error.
 
std::error_code errorToErrorCode (Error Err)
 Helper for converting an ECError to a std::error_code.
 
std::error_code errnoAsErrorCode ()
 Helper to get errno as an std::error_code.
 
template<typename T >
Expected< TerrorOrToExpected (ErrorOr< T > &&EO)
 Convert an ErrorOr<T> to an Expected<T>.
 
template<typename T >
ErrorOr< TexpectedToErrorOr (Expected< T > &&E)
 Convert an Expected<T> to an ErrorOr<T>.
 
template<typename... Ts>
Error createStringError (std::error_code EC, char const *Fmt, const Ts &... Vals)
 Create formatted StringError object.
 
Error createStringError (std::string &&Msg, std::error_code EC)
 
Error createStringError (std::error_code EC, const char *S)
 
Error createStringError (std::error_code EC, const Twine &S)
 
Error createStringError (const Twine &S)
 Create a StringError with an inconvertible error code.
 
template<typename... Ts>
Error createStringError (char const *Fmt, const Ts &...Vals)
 
template<typename... Ts>
Error createStringError (std::errc EC, char const *Fmt, const Ts &... Vals)
 
Error createFileError (const Twine &F, Error E)
 Concatenate a source file path and/or name with an Error.
 
Error createFileError (const Twine &F, size_t Line, Error E)
 Concatenate a source file path and/or name with line number and an Error.
 
Error createFileError (const Twine &F, std::error_code EC)
 Concatenate a source file path and/or name with a std::error_code to form an Error object.
 
Error createFileError (const Twine &F, size_t Line, std::error_code EC)
 Concatenate a source file path and/or name with line number and std::error_code to form an Error object.
 
Error createFileError (const Twine &F, ErrorSuccess)=delete
 
LLVMErrorRef wrap (Error Err)
 Conversion from Error to LLVMErrorRef for C error bindings.
 
Error unwrap (LLVMErrorRef ErrRef)
 Conversion from LLVMErrorRef to Error for C error bindings.
 
void install_fatal_error_handler (fatal_error_handler_t handler, void *user_data=nullptr)
 install_fatal_error_handler - Installs a new error handler to be used whenever a serious (non-recoverable) error is encountered by LLVM.
 
void remove_fatal_error_handler ()
 Restores default error handling behaviour.
 
void report_fatal_error (const char *reason, bool gen_crash_diag=true)
 Reports a serious error, calling any installed error handler.
 
void report_fatal_error (StringRef reason, bool gen_crash_diag=true)
 
void report_fatal_error (const Twine &reason, bool gen_crash_diag=true)
 
void install_bad_alloc_error_handler (fatal_error_handler_t handler, void *user_data=nullptr)
 Installs a new bad alloc error handler that should be used whenever a bad alloc error, e.g.
 
void remove_bad_alloc_error_handler ()
 Restores default bad alloc error handling behavior.
 
void install_out_of_memory_new_handler ()
 
void report_bad_alloc_error (const char *Reason, bool GenCrashDiag=true)
 Reports a bad alloc error, calling any user defined bad alloc error handler.
 
void llvm_unreachable_internal (const char *msg=nullptr, const char *file=nullptr, unsigned line=0)
 This function calls abort(), and prints the optional message to stderr.
 
template<class T , class E >
std::enable_if_t< std::is_error_code_enum< E >::value||std::is_error_condition_enum< E >::value, booloperator== (const ErrorOr< T > &Err, E Code)
 
int DiffFilesWithTolerance (StringRef FileA, StringRef FileB, double AbsTol, double RelTol, std::string *Error=nullptr)
 DiffFilesWithTolerance - Compare the two files specified, returning 0 if the files match, 1 if they are different, and 2 if there is a file error.
 
template<typename... Ts>
format_object< Ts... > format (const char *Fmt, const Ts &... Vals)
 These are helper functions used to produce formatted output.
 
FormattedString left_justify (StringRef Str, unsigned Width)
 left_justify - append spaces after string so total output is Width characters.
 
FormattedString right_justify (StringRef Str, unsigned Width)
 right_justify - add spaces before string so total output is Width characters.
 
FormattedString center_justify (StringRef Str, unsigned Width)
 center_justify - add spaces before and after string so total output is Width characters.
 
FormattedNumber format_hex (uint64_t N, unsigned Width, bool Upper=false)
 format_hex - Output N as a fixed width hexadecimal.
 
FormattedNumber format_hex_no_prefix (uint64_t N, unsigned Width, bool Upper=false)
 format_hex_no_prefix - Output N as a fixed width hexadecimal.
 
FormattedNumber format_decimal (int64_t N, unsigned Width)
 format_decimal - Output N as a right justified, fixed-width decimal.
 
FormattedBytes format_bytes (ArrayRef< uint8_t > Bytes, std::optional< uint64_t > FirstByteOffset=std::nullopt, uint32_t NumPerLine=16, uint8_t ByteGroupSize=4, uint32_t IndentLevel=0, bool Upper=false)
 
FormattedBytes format_bytes_with_ascii (ArrayRef< uint8_t > Bytes, std::optional< uint64_t > FirstByteOffset=std::nullopt, uint32_t NumPerLine=16, uint8_t ByteGroupSize=4, uint32_t IndentLevel=0, bool Upper=false)
 
template<typename T >
support::detail::AlignAdapter< Tfmt_align (T &&Item, AlignStyle Where, size_t Amount, char Fill=' ')
 
template<typename T >
support::detail::PadAdapter< Tfmt_pad (T &&Item, size_t Left, size_t Right)
 
template<typename T >
support::detail::RepeatAdapter< Tfmt_repeat (T &&Item, size_t Count)
 
support::detail::ErrorAdapter fmt_consume (Error &&Item)
 
formatted_raw_ostreamfouts ()
 fouts() - This returns a reference to a formatted_raw_ostream for standard output.
 
formatted_raw_ostreamferrs ()
 ferrs() - This returns a reference to a formatted_raw_ostream for standard error.
 
formatted_raw_ostreamfdbgs ()
 fdbgs() - This returns a reference to a formatted_raw_ostream for debug output.
 
template<typename... Ts>
auto formatv (bool Validate, const char *Fmt, Ts &&...Vals)
 
template<typename... Ts>
auto formatv (const char *Fmt, Ts &&...Vals)
 
template<class NodeT >
raw_ostreamoperator<< (raw_ostream &O, const DomTreeNodeBase< NodeT > *Node)
 
template<class NodeT >
void PrintDomTree (const DomTreeNodeBase< NodeT > *N, raw_ostream &O, unsigned Lev)
 
template<class BlockT , class LoopT >
raw_ostreamoperator<< (raw_ostream &OS, const LoopBase< BlockT, LoopT > &Loop)
 
template<class BlockT , class LoopT >
std::pair< BlockT *, boolgetExitBlockHelper (const LoopBase< BlockT, LoopT > *L, bool Unique)
 getExitBlock - If getExitBlocks would return exactly one block, return that block.
 
template<class BlockT , class LoopT , typename PredicateT >
void getUniqueExitBlocksHelper (const LoopT *L, SmallVectorImpl< BlockT * > &ExitBlocks, PredicateT Pred)
 
template<class BlockT , class LoopT >
static void discoverAndMapSubloop (LoopT *L, ArrayRef< BlockT * > Backedges, LoopInfoBase< BlockT, LoopT > *LI, const DomTreeBase< BlockT > &DomTree)
 Stable LoopInfo Analysis - Build a loop tree using stable iterators so the result does / not depend on use list (block predecessor) order.
 
template<typename T >
bool compareVectors (std::vector< T > &BB1, std::vector< T > &BB2)
 
template<class BlockT , class LoopT >
void addInnerLoopsToHeadersMap (DenseMap< BlockT *, const LoopT * > &LoopHeaders, const LoopInfoBase< BlockT, LoopT > &LI, const LoopT &L)
 
template<class BlockT , class LoopT >
static void compareLoops (const LoopT *L, const LoopT *OtherL, DenseMap< BlockT *, const LoopT * > &OtherLoopHeaders)
 
bool DisplayGraph (StringRef Filename, bool wait=true, GraphProgram::Name program=GraphProgram::DOT)
 
template<typename GraphType >
raw_ostreamWriteGraph (raw_ostream &O, const GraphType &G, bool ShortNames=false, const Twine &Title="")
 
std::string createGraphFilename (const Twine &Name, int &FD)
 
template<typename GraphType >
std::string WriteGraph (const GraphType &G, const Twine &Name, bool ShortNames=false, const Twine &Title="", std::string Filename="")
 Writes graph into a provided Filename.
 
template<typename GraphType >
LLVM_DUMP_METHOD void dumpDotGraphToFile (const GraphType &G, const Twine &FileName, const Twine &Title, bool ShortNames=false, const Twine &Name="")
 DumpDotGraph - Just dump a dot graph to the user-provided file name.
 
template<typename GraphType >
void ViewGraph (const GraphType &G, const Twine &Name, bool ShortNames=false, const Twine &Title="", GraphProgram::Name Program=GraphProgram::DOT)
 ViewGraph - Emit a dot graph, run 'dot', run gv on the postscript file, then cleanup.
 
template<typename T >
std::enable_if_t< is_detected< hashbuilder_detail::HashCodeHashBuilder::HasAddHashT, T >::value, hash_codehash_value (const T &Value)
 Provide a default implementation of hash_value when addHash(const T &) is supported.
 
InstructionCost operator+ (const InstructionCost &LHS, const InstructionCost &RHS)
 
InstructionCost operator- (const InstructionCost &LHS, const InstructionCost &RHS)
 
InstructionCost operator* (const InstructionCost &LHS, const InstructionCost &RHS)
 
InstructionCost operator/ (const InstructionCost &LHS, const InstructionCost &RHS)
 
raw_ostreamoperator<< (raw_ostream &OS, const InstructionCost &V)
 
KnownBits operator& (KnownBits LHS, const KnownBits &RHS)
 
KnownBits operator& (const KnownBits &LHS, KnownBits &&RHS)
 
KnownBits operator| (KnownBits LHS, const KnownBits &RHS)
 
KnownBits operator| (const KnownBits &LHS, KnownBits &&RHS)
 
KnownBits operator^ (KnownBits LHS, const KnownBits &RHS)
 
KnownBits operator^ (const KnownBits &LHS, KnownBits &&RHS)
 
raw_ostreamoperator<< (raw_ostream &OS, const KnownBits &Known)
 
unsigned encodeSLEB128 (int64_t Value, raw_ostream &OS, unsigned PadTo=0)
 Utility function to encode a SLEB128 value to an output stream.
 
unsigned encodeSLEB128 (int64_t Value, uint8_t *p, unsigned PadTo=0)
 Utility function to encode a SLEB128 value to a buffer.
 
unsigned encodeULEB128 (uint64_t Value, raw_ostream &OS, unsigned PadTo=0)
 Utility function to encode a ULEB128 value to an output stream.
 
unsigned encodeULEB128 (uint64_t Value, uint8_t *p, unsigned PadTo=0)
 Utility function to encode a ULEB128 value to a buffer.
 
uint64_t decodeULEB128 (const uint8_t *p, unsigned *n=nullptr, const uint8_t *end=nullptr, const char **error=nullptr)
 Utility function to decode a ULEB128 value.
 
int64_t decodeSLEB128 (const uint8_t *p, unsigned *n=nullptr, const uint8_t *end=nullptr, const char **error=nullptr)
 Utility function to decode a SLEB128 value.
 
uint64_t decodeULEB128AndInc (const uint8_t *&p, const uint8_t *end, const char **error=nullptr)
 
int64_t decodeSLEB128AndInc (const uint8_t *&p, const uint8_t *end, const char **error=nullptr)
 
uint64_t decodeULEB128AndIncUnsafe (const uint8_t *&p)
 
unsigned getULEB128Size (uint64_t Value)
 Utility function to get the size of the ULEB128-encoded value.
 
unsigned getSLEB128Size (int64_t Value)
 Utility function to get the size of the SLEB128-encoded value.
 
LogicalResult success (bool IsSuccess=true)
 Utility function to generate a LogicalResult.
 
LogicalResult failure (bool IsFailure=true)
 Utility function to generate a LogicalResult.
 
bool succeeded (LogicalResult Result)
 Utility function that returns true if the provided LogicalResult corresponds to a success value.
 
bool failed (LogicalResult Result)
 Utility function that returns true if the provided LogicalResult corresponds to a failure value.
 
template<typename T , typename = std::enable_if_t<!std::is_convertible_v<T, bool>>>
auto success (T &&Y)
 Wrap a value on the success path in a FailureOr of the same value type.
 
void llvm_shutdown ()
 llvm_shutdown - Deallocate and destroy all ManagedStatic variables.
 
template<typename T >
T maskTrailingOnes (unsigned N)
 Create a bitmask with the N right-most bits set to 1, and all other bits set to 0.
 
template<typename T >
T maskLeadingOnes (unsigned N)
 Create a bitmask with the N left-most bits set to 1, and all other bits set to 0.
 
template<typename T >
T maskTrailingZeros (unsigned N)
 Create a bitmask with the N right-most bits set to 0, and all other bits set to 1.
 
template<typename T >
T maskLeadingZeros (unsigned N)
 Create a bitmask with the N left-most bits set to 0, and all other bits set to 1.
 
template<typename T >
T reverseBits (T Val)
 Reverse the bits in Val.
 
constexpr uint32_t Hi_32 (uint64_t Value)
 Return the high 32 bits of a 64 bit value.
 
constexpr uint32_t Lo_32 (uint64_t Value)
 Return the low 32 bits of a 64 bit value.
 
constexpr uint64_t Make_64 (uint32_t High, uint32_t Low)
 Make a 64-bit integer from a high / low pair of 32-bit integers.
 
template<unsigned N>
constexpr bool isInt (int64_t x)
 Checks if an integer fits into the given bit width.
 
template<unsigned N, unsigned S>
constexpr bool isShiftedInt (int64_t x)
 Checks if a signed integer is an N bit number shifted left by S.
 
template<unsigned N>
constexpr bool isUInt (uint64_t x)
 Checks if an unsigned integer fits into the given bit width.
 
template<unsigned N, unsigned S>
constexpr bool isShiftedUInt (uint64_t x)
 Checks if a unsigned integer is an N bit number shifted left by S.
 
uint64_t maxUIntN (uint64_t N)
 Gets the maximum value for a N-bit unsigned integer.
 
int64_t minIntN (int64_t N)
 Gets the minimum value for a N-bit signed integer.
 
int64_t maxIntN (int64_t N)
 Gets the maximum value for a N-bit signed integer.
 
bool isUIntN (unsigned N, uint64_t x)
 Checks if an unsigned integer fits into the given (dynamic) bit width.
 
bool isIntN (unsigned N, int64_t x)
 Checks if an signed integer fits into the given (dynamic) bit width.
 
constexpr bool isMask_32 (uint32_t Value)
 Return true if the argument is a non-empty sequence of ones starting at the least significant bit with the remainder zero (32 bit version).
 
constexpr bool isMask_64 (uint64_t Value)
 Return true if the argument is a non-empty sequence of ones starting at the least significant bit with the remainder zero (64 bit version).
 
constexpr bool isShiftedMask_32 (uint32_t Value)
 Return true if the argument contains a non-empty sequence of ones with the remainder zero (32 bit version.) Ex.
 
constexpr bool isShiftedMask_64 (uint64_t Value)
 Return true if the argument contains a non-empty sequence of ones with the remainder zero (64 bit version.)
 
constexpr bool isPowerOf2_32 (uint32_t Value)
 Return true if the argument is a power of two > 0.
 
constexpr bool isPowerOf2_64 (uint64_t Value)
 Return true if the argument is a power of two > 0 (64 bit edition.)
 
bool isShiftedMask_32 (uint32_t Value, unsigned &MaskIdx, unsigned &MaskLen)
 Return true if the argument contains a non-empty sequence of ones with the remainder zero (32 bit version.) Ex.
 
bool isShiftedMask_64 (uint64_t Value, unsigned &MaskIdx, unsigned &MaskLen)
 Return true if the argument contains a non-empty sequence of ones with the remainder zero (64 bit version.) If true, MaskIdx will specify the index of the lowest set bit and MaskLen is updated to specify the length of the mask, else neither are updated.
 
template<size_t kValue>
constexpr size_t CTLog2 ()
 Compile time Log2.
 
template<>
constexpr size_t CTLog2< 1 > ()
 
unsigned Log2_32 (uint32_t Value)
 Return the floor log base 2 of the specified value, -1 if the value is zero.
 
unsigned Log2_64 (uint64_t Value)
 Return the floor log base 2 of the specified value, -1 if the value is zero.
 
unsigned Log2_32_Ceil (uint32_t Value)
 Return the ceil log base 2 of the specified value, 32 if the value is zero.
 
unsigned Log2_64_Ceil (uint64_t Value)
 Return the ceil log base 2 of the specified value, 64 if the value is zero.
 
template<typename U , typename V , typename T = common_uint<U, V>>
constexpr T MinAlign (U A, V B)
 A and B are either alignments or offsets.
 
constexpr uint64_t MinAlign (uint64_t A, uint64_t B)
 Fallback when arguments aren't integral.
 
constexpr uint64_t NextPowerOf2 (uint64_t A)
 Returns the next power of two (in 64-bits) that is strictly greater than A.
 
uint64_t PowerOf2Ceil (uint64_t A)
 Returns the power of two which is greater than or equal to the given value.
 
template<typename U , typename V , typename T = common_uint<U, V>>
constexpr T divideCeil (U Numerator, V Denominator)
 Returns the integer ceil(Numerator / Denominator).
 
constexpr uint64_t divideCeil (uint64_t Numerator, uint64_t Denominator)
 Fallback when arguments aren't integral.
 
template<typename U , typename V >
constexpr bool divideSignedWouldOverflow (U Numerator, V Denominator)
 
template<typename U , typename V , typename T = common_sint<U, V>>
constexpr T divideCeilSigned (U Numerator, V Denominator)
 Returns the integer ceil(Numerator / Denominator).
 
template<typename U , typename V , typename T = common_sint<U, V>>
constexpr T divideFloorSigned (U Numerator, V Denominator)
 Returns the integer floor(Numerator / Denominator).
 
template<typename U , typename V , typename T = common_sint<U, V>>
constexpr T mod (U Numerator, V Denominator)
 Returns the remainder of the Euclidean division of LHS by RHS.
 
template<typename U , typename V , typename T = common_uint<U, V>>
constexpr T divideNearest (U Numerator, V Denominator)
 Returns (Numerator / Denominator) rounded by round-half-up.
 
template<typename U , typename V , typename T = common_uint<U, V>>
constexpr T alignTo (U Value, V Align)
 Returns the next integer (mod 2**nbits) that is greater than or equal to Value and is a multiple of Align.
 
constexpr uint64_t alignTo (uint64_t Value, uint64_t Align)
 Fallback when arguments aren't integral.
 
template<typename U , typename V , typename T = common_uint<U, V>>
constexpr T alignToPowerOf2 (U Value, V Align)
 Will overflow only if result is not representable in T.
 
constexpr uint64_t alignToPowerOf2 (uint64_t Value, uint64_t Align)
 Fallback when arguments aren't integral.
 
template<typename U , typename V , typename W , typename T = common_uint<common_uint<U, V>, W>>
constexpr T alignTo (U Value, V Align, W Skew)
 If non-zero Skew is specified, the return value will be a minimal integer that is greater than or equal to Size and equal to A * N + Skew for some integer N.
 
template<auto Align, typename V , typename T = common_uint<decltype(Align), V>>
constexpr T alignTo (V Value)
 Returns the next integer (mod 2**nbits) that is greater than or equal to Value and is a multiple of Align.
 
template<typename U , typename V , typename W = uint8_t, typename T = common_uint<common_uint<U, V>, W>>
constexpr T alignDown (U Value, V Align, W Skew=0)
 Returns the largest unsigned integer less than or equal to Value and is Skew mod Align.
 
template<unsigned B>
constexpr int32_t SignExtend32 (uint32_t X)
 Sign-extend the number in the bottom B bits of X to a 32-bit integer.
 
int32_t SignExtend32 (uint32_t X, unsigned B)
 Sign-extend the number in the bottom B bits of X to a 32-bit integer.
 
template<unsigned B>
constexpr int64_t SignExtend64 (uint64_t x)
 Sign-extend the number in the bottom B bits of X to a 64-bit integer.
 
int64_t SignExtend64 (uint64_t X, unsigned B)
 Sign-extend the number in the bottom B bits of X to a 64-bit integer.
 
template<typename U , typename V , typename T = common_uint<U, V>>
constexpr T AbsoluteDifference (U X, V Y)
 Subtract two unsigned integers, X and Y, of type T and return the absolute value of the result.
 
template<typename T >
std::enable_if_t< std::is_unsigned_v< T >, TSaturatingAdd (T X, T Y, bool *ResultOverflowed=nullptr)
 Add two unsigned integers, X and Y, of type T.
 
template<class T , class... Ts>
std::enable_if_t< std::is_unsigned_v< T >, TSaturatingAdd (T X, T Y, T Z, Ts... Args)
 Add multiple unsigned integers of type T.
 
template<typename T >
std::enable_if_t< std::is_unsigned_v< T >, TSaturatingMultiply (T X, T Y, bool *ResultOverflowed=nullptr)
 Multiply two unsigned integers, X and Y, of type T.
 
template<typename T >
std::enable_if_t< std::is_unsigned_v< T >, TSaturatingMultiplyAdd (T X, T Y, T A, bool *ResultOverflowed=nullptr)
 Multiply two unsigned integers, X and Y, and add the unsigned integer, A to the product.
 
template<typename T >
std::enable_if_t< std::is_signed_v< T >, TAddOverflow (T X, T Y, T &Result)
 Add two signed integers, computing the two's complement truncated result, returning true if overflow occurred.
 
template<typename T >
std::enable_if_t< std::is_signed_v< T >, TSubOverflow (T X, T Y, T &Result)
 Subtract two signed integers, computing the two's complement truncated result, returning true if an overflow ocurred.
 
template<typename T >
std::enable_if_t< std::is_signed_v< T >, TMulOverflow (T X, T Y, T &Result)
 Multiply two signed integers, computing the two's complement truncated result, returning true if an overflow ocurred.
 
uint64_t MD5Hash (StringRef Str)
 Helper to compute and return lower 64 bits of the given string's MD5 hash.
 
LLVM_ATTRIBUTE_RETURNS_NONNULL void * safe_malloc (size_t Sz)
 
LLVM_ATTRIBUTE_RETURNS_NONNULL void * safe_calloc (size_t Count, size_t Sz)
 
LLVM_ATTRIBUTE_RETURNS_NONNULL void * safe_realloc (void *Ptr, size_t Sz)
 
LLVM_ATTRIBUTE_RETURNS_NONNULL LLVM_ATTRIBUTE_RETURNS_NOALIAS void * allocate_buffer (size_t Size, size_t Alignment)
 Allocate a buffer of memory with the given size and alignment.
 
void deallocate_buffer (void *Ptr, size_t Size, size_t Alignment)
 Deallocate a buffer of memory with the given size and alignment.
 
bool isNoModRef (const ModRefInfo MRI)
 
bool isModOrRefSet (const ModRefInfo MRI)
 
bool isModAndRefSet (const ModRefInfo MRI)
 
bool isModSet (const ModRefInfo MRI)
 
bool isRefSet (const ModRefInfo MRI)
 
raw_ostreamoperator<< (raw_ostream &OS, ModRefInfo MR)
 Debug print ModRefInfo.
 
raw_ostreamoperator<< (raw_ostream &OS, MemoryEffects RMRB)
 Debug print MemoryEffects.
 
bool capturesNothing (CaptureComponents CC)
 
bool capturesAnything (CaptureComponents CC)
 
bool capturesAddressIsNullOnly (CaptureComponents CC)
 
bool capturesAddress (CaptureComponents CC)
 
bool capturesReadProvenanceOnly (CaptureComponents CC)
 
bool capturesFullProvenance (CaptureComponents CC)
 
raw_ostreamoperator<< (raw_ostream &OS, CaptureComponents CC)
 
raw_ostreamoperator<< (raw_ostream &OS, CaptureInfo Info)
 
size_t getDefaultPrecision (FloatStyle Style)
 
bool isPrefixedHexStyle (HexPrintStyle S)
 
void write_integer (raw_ostream &S, unsigned int N, size_t MinDigits, IntegerStyle Style)
 
void write_integer (raw_ostream &S, int N, size_t MinDigits, IntegerStyle Style)
 
void write_integer (raw_ostream &S, unsigned long N, size_t MinDigits, IntegerStyle Style)
 
void write_integer (raw_ostream &S, long N, size_t MinDigits, IntegerStyle Style)
 
void write_integer (raw_ostream &S, unsigned long long N, size_t MinDigits, IntegerStyle Style)
 
void write_integer (raw_ostream &S, long long N, size_t MinDigits, IntegerStyle Style)
 
void write_hex (raw_ostream &S, uint64_t N, HexPrintStyle Style, std::optional< size_t > Width=std::nullopt)
 
void write_double (raw_ostream &S, double D, FloatStyle Style, std::optional< size_t > Precision=std::nullopt)
 
std::pair< uint64_t, AlignperformOptimizedStructLayout (MutableArrayRef< OptimizedStructLayoutField > Fields)
 Compute a layout for a struct containing the given fields, making a best-effort attempt to minimize the amount of space required.
 
int StrCmpOptionName (StringRef A, StringRef B, bool FallbackCaseSensitive=true)
 
int StrCmpOptionPrefixes (ArrayRef< StringRef > APrefixes, ArrayRef< StringRef > BPrefixes)
 
template<class RandomAccessIterator , class Comparator = std::less< typename std::iterator_traits<RandomAccessIterator>::value_type>>
void parallelSort (RandomAccessIterator Start, RandomAccessIterator End, const Comparator &Comp=Comparator())
 
void parallelFor (size_t Begin, size_t End, function_ref< void(size_t)> Fn)
 
template<class IterTy , class FuncTy >
void parallelForEach (IterTy Begin, IterTy End, FuncTy Fn)
 
template<class IterTy , class ResultTy , class ReduceFuncTy , class TransformFuncTy >
ResultTy parallelTransformReduce (IterTy Begin, IterTy End, ResultTy Init, ReduceFuncTy Reduce, TransformFuncTy Transform)
 
template<class RangeTy , class Comparator = std::less<decltype(*std::begin(RangeTy()))>>
void parallelSort (RangeTy &&R, const Comparator &Comp=Comparator())
 
template<class RangeTy , class FuncTy >
void parallelForEach (RangeTy &&R, FuncTy Fn)
 
template<class RangeTy , class ResultTy , class ReduceFuncTy , class TransformFuncTy >
ResultTy parallelTransformReduce (RangeTy &&R, ResultTy Init, ReduceFuncTy Reduce, TransformFuncTy Transform)
 
template<class RangeTy , class FuncTy >
Error parallelForEachError (RangeTy &&R, FuncTy Fn)
 
static cl::opt< PluginLoader, false, cl::parser< std::string > > LoadOpt ("load", cl::value_desc("pluginfilename"), cl::desc("Load the specified plugin"))
 
void EnablePrettyStackTrace ()
 Enables dumping a "pretty" stack trace when the program crashes.
 
void EnablePrettyStackTraceOnSigInfoForThisThread (bool ShouldEnable=true)
 Enables (or disables) dumping a "pretty" stack trace when the user sends SIGINFO or SIGUSR1 to the current process.
 
void setBugReportMsg (const char *Msg)
 Replaces the generic bug report message that is output upon a crash.
 
const chargetBugReportMsg ()
 Get the bug report message that will be output upon a crash.
 
const void * SavePrettyStackState ()
 Returns the topmost element of the "pretty" stack state.
 
void RestorePrettyStackState (const void *State)
 Restores the topmost element of the "pretty" stack state to State, which should come from a previous call to SavePrettyStackState().
 
raw_ostreamoperator<< (raw_ostream &OS, const Printable &P)
 
std::error_code getRandomBytes (void *Buffer, size_t Size)
 
template<typename OStream , typename T >
std::enable_if_t<!std::is_reference_v< OStream > &&std::is_base_of_v< raw_ostream, OStream >, OStream && > operator<< (OStream &&OS, const T &Value)
 Call the appropriate insertion operator, given an rvalue reference to a raw_ostream object and return a stream of the same type as the argument.
 
raw_fd_ostreamouts ()
 This returns a reference to a raw_fd_ostream for standard output.
 
raw_fd_ostreamerrs ()
 This returns a reference to a raw_ostream for standard error.
 
raw_ostreamnulls ()
 This returns a reference to a raw_ostream which simply discards output.
 
raw_ostreamoperator<< (raw_ostream &OS, const indent &Indent)
 
Error writeToOutput (StringRef OutputFileName, std::function< Error(raw_ostream &)> Write)
 This helper creates an output stream and then passes it to Write.
 
raw_ostreamoperator<< (raw_ostream &OS, std::nullopt_t)
 
template<typename T , typename = decltype(std::declval<raw_ostream &>() << std::declval<const T &>())>
raw_ostreamoperator<< (raw_ostream &OS, const std::optional< T > &O)
 
void PrintRecyclerStats (size_t Size, size_t Align, size_t FreeListSize)
 PrintRecyclingAllocatorStats - Helper for RecyclingAllocator for printing statistics.
 
template<class T = void *>
bool shouldReverseIterate ()
 
template<typename T >
 SaveAndRestore (T &) -> SaveAndRestore< T >
 
template<typename T >
 SaveAndRestore (T &, const T &) -> SaveAndRestore< T >
 
template<typename T >
 SaveAndRestore (T &, T &&) -> SaveAndRestore< T >
 
template<class DigitsT >
ScaledNumber< DigitsT > operator<< (const ScaledNumber< DigitsT > &L, int16_t Shift)
 
template<class DigitsT >
ScaledNumber< DigitsT > operator>> (const ScaledNumber< DigitsT > &L, int16_t Shift)
 
template<class DigitsT >
raw_ostreamoperator<< (raw_ostream &OS, const ScaledNumber< DigitsT > &X)
 
raw_ostreamoperator<< (raw_ostream &OS, const HexNumber &Value)
 
template<class T >
std::string to_string (const T &Value)
 
template<typename T , typename TEnum >
std::string enumToString (T Value, ArrayRef< EnumEntry< TEnum > > EnumValues)
 
template<>
void ScopedPrinter::printHex< support::ulittle16_t > (StringRef Label, support::ulittle16_t Value)
 
void getSipHash_2_4_64 (ArrayRef< uint8_t > In, const uint8_t(&K)[16], uint8_t(&Out)[8])
 Computes a SipHash-2-4 64-bit result.
 
void getSipHash_2_4_128 (ArrayRef< uint8_t > In, const uint8_t(&K)[16], uint8_t(&Out)[16])
 Computes a SipHash-2-4 128-bit result.
 
uint16_t getPointerAuthStableSipHash (StringRef S)
 Compute a stable non-zero 16-bit hash of the given string.
 
SMTSolverRef CreateZ3Solver ()
 Convenience method to create and Z3Solver object.
 
bool CheckBitcodeOutputToConsole (raw_ostream &stream_to_check)
 Determine if the raw_ostream provided is connected to a terminal.
 
void InitializeAllTargetInfos ()
 InitializeAllTargetInfos - The main program should call this function if it wants access to all available targets that LLVM is configured to support, to make them available via the TargetRegistry.
 
void InitializeAllTargets ()
 InitializeAllTargets - The main program should call this function if it wants access to all available target machines that LLVM is configured to support, to make them available via the TargetRegistry.
 
void InitializeAllTargetMCs ()
 InitializeAllTargetMCs - The main program should call this function if it wants access to all available target MC that LLVM is configured to support, to make them available via the TargetRegistry.
 
void InitializeAllAsmPrinters ()
 InitializeAllAsmPrinters - The main program should call this function if it wants all asm printers that LLVM is configured to support, to make them available via the TargetRegistry.
 
void InitializeAllAsmParsers ()
 InitializeAllAsmParsers - The main program should call this function if it wants all asm parsers that LLVM is configured to support, to make them available via the TargetRegistry.
 
void InitializeAllDisassemblers ()
 InitializeAllDisassemblers - The main program should call this function if it wants all disassemblers that LLVM is configured to support, to make them available via the TargetRegistry.
 
bool InitializeNativeTarget ()
 InitializeNativeTarget - The main program should call this function to initialize the native target corresponding to the host.
 
bool InitializeNativeTargetAsmPrinter ()
 InitializeNativeTargetAsmPrinter - The main program should call this function to initialize the native target asm printer.
 
bool InitializeNativeTargetAsmParser ()
 InitializeNativeTargetAsmParser - The main program should call this function to initialize the native target asm parser.
 
bool InitializeNativeTargetDisassembler ()
 InitializeNativeTargetDisassembler - The main program should call this function to initialize the native target disassembler.
 
void InitializeAllTargetMCAs ()
 InitializeAllTargetMCAs - The main program should call this function to initialize the target CustomBehaviour and InstrPostProcess classes.
 
constexpr bool llvm_is_multithreaded ()
 Returns true if LLVM is compiled with support for multi-threading, and false otherwise.
 
template<typename Function , typename... Args>
void call_once (once_flag &flag, Function &&F, Args &&... ArgList)
 Execute the function specified as a parameter once.
 
std::optional< ThreadPoolStrategyget_threadpool_strategy (StringRef Num, ThreadPoolStrategy Default={})
 Build a strategy from a number of threads as a string provided in Num.
 
ThreadPoolStrategy heavyweight_hardware_concurrency (unsigned ThreadCount=0)
 Returns a thread strategy for tasks requiring significant memory or other resources.
 
ThreadPoolStrategy heavyweight_hardware_concurrency (StringRef Num)
 Like heavyweight_hardware_concurrency() above, but builds a strategy based on the rules described for get_threadpool_strategy().
 
ThreadPoolStrategy hardware_concurrency (unsigned ThreadCount=0)
 Returns a default thread strategy where all available hardware resources are to be used, except for those initially excluded by an affinity mask.
 
ThreadPoolStrategy hardware_concurrency (StringRef Num)
 Like hardware_concurrency() above, but builds a strategy based on the rules described for get_threadpool_strategy().
 
ThreadPoolStrategy optimal_concurrency (unsigned TaskCount=0)
 Returns an optimal thread strategy to execute specified amount of tasks.
 
uint64_t get_threadid ()
 Return the current thread id, as used in various OS system calls.
 
uint32_t get_max_thread_name_length ()
 Get the maximum length of a thread name on this platform.
 
void set_thread_name (const Twine &Name)
 Set the name of the current thread.
 
void get_thread_name (SmallVectorImpl< char > &Name)
 Get the name of the current thread.
 
llvm::BitVector get_thread_affinity_mask ()
 Returns a mask that represents on which hardware thread, core, CPU, NUMA group, the calling thread can be executed.
 
unsigned get_cpus ()
 Returns how many physical CPUs or NUMA groups the system has.
 
int get_physical_cores ()
 Returns how many physical cores (as opposed to logical cores returned from thread::hardware_concurrency(), which includes hyperthreads).
 
SetThreadPriorityResult set_thread_priority (ThreadPriority Priority)
 
TimeTraceProfilergetTimeTraceProfilerInstance ()
 
bool isTimeTraceVerbose ()
 
void timeTraceProfilerInitialize (unsigned TimeTraceGranularity, StringRef ProcName, bool TimeTraceVerbose=false)
 Initialize the time trace profiler.
 
void timeTraceProfilerCleanup ()
 Cleanup the time trace profiler, if it was initialized.
 
void timeTraceProfilerFinishThread ()
 Finish a time trace profiler running on a worker thread.
 
bool timeTraceProfilerEnabled ()
 Is the time trace profiler enabled, i.e. initialized?
 
void timeTraceProfilerWrite (raw_pwrite_stream &OS)
 Write profiling data to output stream.
 
Error timeTraceProfilerWrite (StringRef PreferredFileName, StringRef FallbackFileName)
 Write profiling data to a file.
 
TimeTraceProfilerEntrytimeTraceProfilerBegin (StringRef Name, StringRef Detail)
 Manually begin a time section, with the given Name and Detail.
 
TimeTraceProfilerEntrytimeTraceProfilerBegin (StringRef Name, llvm::function_ref< std::string()> Detail)
 
TimeTraceProfilerEntrytimeTraceProfilerBegin (StringRef Name, llvm::function_ref< TimeTraceMetadata()> MetaData)
 
TimeTraceProfilerEntrytimeTraceAsyncProfilerBegin (StringRef Name, StringRef Detail)
 Manually begin a time section, with the given Name and Detail.
 
void timeTraceAddInstantEvent (StringRef Name, llvm::function_ref< std::string()> Detail)
 
void timeTraceProfilerEnd ()
 Manually end the last time section.
 
void timeTraceProfilerEnd (TimeTraceProfilerEntry *E)
 
template<typename DesiredTypeName >
StringRef getTypeName ()
 We provide a function which tries to compute the (demangled) name of a type statically.
 
void reportInvalidSizeRequest (const char *Msg)
 Reports a diagnostic message to indicate an invalid size request has been done on a scalable vector.
 
constexpr TypeSize alignTo (TypeSize Size, uint64_t Align)
 Returns a TypeSize with a known minimum size that is the next integer (mod 2**64) that is greater than or equal to Quantity and is a multiple of Align.
 
template<typename LeafTy , typename ScalarTy >
raw_ostreamoperator<< (raw_ostream &OS, const details::FixedOrScalableQuantity< LeafTy, ScalarTy > &PS)
 Stream operator function for FixedOrScalableQuantity.
 
raw_ostreamoperator<< (raw_ostream &Out, const VersionTuple &V)
 Print a version number.
 
bool RunningWindows8OrGreater ()
 Determines if the program is running on Windows 8 or newer.
 
bool RunningWindows11OrGreater ()
 Determines if the program is running on Windows 11 or Windows Server 2022.
 
llvm::VersionTuple GetWindowsOSVersion ()
 Returns the Windows version as Major.Minor.0.BuildNumber.
 
bool MakeErrMsg (std::string *ErrMsg, const std::string &prefix)
 
void ReportLastErrorFatal (const char *Msg)
 
template<class T >
SmallVectorImpl< T >::const_pointer c_str (SmallVectorImpl< T > &str)
 
std::error_code mapLastWindowsError ()
 
std::error_code mapWindowsError (unsigned EV)
 
cl::OptionCategorygetColorCategory ()
 
uint64_t xxHash64 (llvm::StringRef Data)
 
uint64_t xxHash64 (llvm::ArrayRef< uint8_t > Data)
 
uint64_t xxh3_64bits (ArrayRef< uint8_t > data)
 
uint64_t xxh3_64bits (StringRef data)
 
XXH128_hash_t xxh3_128bits (ArrayRef< uint8_t > data)
 XXH3's 128-bit variant.
 
void PrintNote (const Twine &Msg)
 
void PrintNote (function_ref< void(raw_ostream &OS)> PrintMsg)
 
void PrintNote (ArrayRef< SMLoc > NoteLoc, const Twine &Msg)
 
void PrintFatalNote (const Twine &Msg)
 
void PrintFatalNote (ArrayRef< SMLoc > ErrorLoc, const Twine &Msg)
 
void PrintFatalNote (const Record *Rec, const Twine &Msg)
 
void PrintFatalNote (const RecordVal *RecVal, const Twine &Msg)
 
void PrintWarning (const Twine &Msg)
 
void PrintWarning (ArrayRef< SMLoc > WarningLoc, const Twine &Msg)
 
void PrintWarning (const char *Loc, const Twine &Msg)
 
void PrintError (const Twine &Msg)
 
void PrintError (function_ref< void(raw_ostream &OS)> PrintMsg)
 
void PrintError (ArrayRef< SMLoc > ErrorLoc, const Twine &Msg)
 
void PrintError (const char *Loc, const Twine &Msg)
 
void PrintError (const Record *Rec, const Twine &Msg)
 
void PrintError (const RecordVal *RecVal, const Twine &Msg)
 
void PrintFatalError (const Twine &Msg)
 
void PrintFatalError (ArrayRef< SMLoc > ErrorLoc, const Twine &Msg)
 
void PrintFatalError (const Record *Rec, const Twine &Msg)
 
void PrintFatalError (const RecordVal *RecVal, const Twine &Msg)
 
void PrintFatalError (function_ref< void(raw_ostream &OS)> PrintMsg)
 
bool CheckAssert (SMLoc Loc, const Init *Condition, const Init *Message)
 
void dumpMessage (SMLoc Loc, const Init *Message)
 
int TableGenMain (const char *argv0, std::function< TableGenMainFn > MainFn=nullptr)
 
bool TableGenParseFile (SourceMgr &InputSrcMgr, RecordKeeper &Records)
 Parse the TableGen file defined within the main buffer of the given SourceMgr.
 
raw_ostreamoperator<< (raw_ostream &OS, const RecTy &Ty)
 
const RecTyresolveTypes (const RecTy *T1, const RecTy *T2)
 Find a common type that T1 and T2 convert to.
 
raw_ostreamoperator<< (raw_ostream &OS, const Init &I)
 
raw_ostreamoperator<< (raw_ostream &OS, const RecordVal &RV)
 
raw_ostreamoperator<< (raw_ostream &OS, const Record &R)
 
raw_ostreamoperator<< (raw_ostream &OS, const RecordKeeper &RK)
 
void EmitDetailedRecords (const RecordKeeper &RK, raw_ostream &OS)
 
void EmitJSON (const RecordKeeper &RK, raw_ostream &OS)
 
void emitSourceFileHeader (StringRef Desc, raw_ostream &OS, const RecordKeeper &Record=RecordKeeper())
 emitSourceFileHeader - Output an LLVM style file header to the specified raw_ostream.
 
CGPassBuilderOption getCGPassBuilderOption ()
 
std::optional< CodeModel::Modelunwrap (LLVMCodeModel Model, bool &JIT)
 
LLVMCodeModel wrap (CodeModel::Model Model)
 
template<typename T >
std::ostream & operator<< (std::ostream &OS, const StringMap< T > &M)
 Support for printing to std::ostream, for use with e.g.
 
template<typename T >
std::ostream & operator<< (std::ostream &OS, const StringMapEntry< T > &E)
 Support for printing to std::ostream, for use with e.g.
 
template<typename KeyMatcherT , typename ValueMatcherT >
detail::StringMapEntryMatcher< KeyMatcherT, ValueMatcherT > IsStringMapEntry (KeyMatcherT KM, ValueMatcherT VM)
 Returns a gMock matcher that matches a StringMapEntry whose string key matches KeyMatcher, and whose value matches ValueMatcher.
 
llvm::raw_ostreamoperator<< (llvm::raw_ostream &O, const llvm::Annotations::Range &R)
 
 MATCHER (Succeeded, "")
 
 MATCHER (Failed, "")
 
template<typename InfoT >
testing::Matcher< const detail::ErrorHolder & > Failed ()
 
template<typename InfoT , typename M >
testing::Matcher< const detail::ErrorHolder & > Failed (M Matcher)
 
template<typename... M>
testing::Matcher< const detail::ErrorHolder & > FailedWithMessage (M... Matcher)
 
template<typename M >
testing::Matcher< const detail::ErrorHolder & > FailedWithMessageArray (M Matcher)
 
template<typename M >
detail::ValueMatchesPoly< M > HasValue (M Matcher)
 
template<class InnerMatcher >
detail::ValueIsMatcher< InnerMatcher > ValueIs (const InnerMatcher &ValueMatcher)
 Matches an std::optional<T> with a value that conforms to an inner matcher.
 
template<typename DerivedT , typename KeyInfoT , typename BucketT >
bool operator== (const DenseMapBase< DerivedT, SymbolsMapKey, MachO::Symbol *, KeyInfoT, BucketT > &LHS, const DenseMapBase< DerivedT, SymbolsMapKey, MachO::Symbol *, KeyInfoT, BucketT > &RHS)
 
template<typename DerivedT , typename KeyInfoT , typename BucketT >
bool operator!= (const DenseMapBase< DerivedT, SymbolsMapKey, MachO::Symbol *, KeyInfoT, BucketT > &LHS, const DenseMapBase< DerivedT, SymbolsMapKey, MachO::Symbol *, KeyInfoT, BucketT > &RHS)
 
int dlltoolDriverMain (ArrayRef< const char * > ArgsArr)
 
int libDriverMain (ArrayRef< const char * > ARgs)
 
FunctionPasscreateCFGuardCheckPass ()
 Insert Control FLow Guard checks on indirect function calls.
 
FunctionPasscreateCFGuardDispatchPass ()
 Insert Control FLow Guard dispatches on indirect function calls.
 
FunctionPasscreateInstructionCombiningPass ()
 
void getAddressSanitizerParams (const Triple &TargetTriple, int LongSize, bool IsKasan, uint64_t *ShadowBase, int *MappingScale, bool *OrShadowOffset)
 
void setProfMetadata (Module *M, Instruction *TI, ArrayRef< uint64_t > EdgeCounts, uint64_t MaxCount)
 
void setIrrLoopHeaderMetadata (Module *M, Instruction *TI, uint64_t Count)
 
ModulePasscreateDeadArgEliminationPass ()
 createDeadArgEliminationPass - This pass removes arguments from functions which are not used by the body of the function.
 
ModulePasscreateDeadArgHackingPass ()
 DeadArgHacking pass - Same as DAE, but delete arguments of external functions as well.
 
PasscreateLoopExtractorPass ()
 createLoopExtractorPass - This pass extracts all natural loops from the program into a function if it can.
 
PasscreateSingleLoopExtractorPass ()
 createSingleLoopExtractorPass - This pass extracts one natural loop from the program into a function if it can.
 
ModulePasscreateBarrierNoopPass ()
 createBarrierNoopPass - This pass is purely a module pass barrier in a pass manager.
 
PasscreateAlwaysInlinerLegacyPass (bool InsertLifetime=true)
 Create a legacy pass manager instance of a pass to inline and remove functions marked as "always_inline".
 
ChangeStatus operator| (ChangeStatus l, ChangeStatus r)
 Logic operators for the change status enum class.
 
ChangeStatusoperator|= (ChangeStatus &l, ChangeStatus r)
 
ChangeStatus operator& (ChangeStatus l, ChangeStatus r)
 
ChangeStatusoperator&= (ChangeStatus &l, ChangeStatus r)
 
 DEBUG_COUNTER (NumAbstractAttributes, "num-abstract-attributes", "How many AAs should be initialized")
 A debug counter to limit the number of AAs created.
 
raw_ostreamoperator<< (raw_ostream &OS, const AbstractAttribute &AA)
 Forward declarations of output streams for debug purposes.
 
raw_ostreamoperator<< (raw_ostream &OS, ChangeStatus S)
 Helpers to ease debugging through output streams and print calls.
 
raw_ostreamoperator<< (raw_ostream &OS, IRPosition::Kind)
 
raw_ostreamoperator<< (raw_ostream &OS, const IRPosition &)
 
raw_ostreamoperator<< (raw_ostream &OS, const AbstractState &State)
 
template<typename base_ty , base_ty BestState, base_ty WorstState>
raw_ostreamoperator<< (raw_ostream &OS, const IntegerStateBase< base_ty, BestState, WorstState > &S)
 
raw_ostreamoperator<< (raw_ostream &OS, const IntegerRangeState &State)
 
template<typename StateType >
ChangeStatus clampStateAndIndicateChange (StateType &S, const StateType &R)
 Helper function to clamp a state S of type StateType with the information in R and indicate/return if S did change (as-in update is required to be run again).
 
raw_ostreamoperator<< (raw_ostream &OS, const PotentialConstantIntValuesState &R)
 
raw_ostreamoperator<< (raw_ostream &OS, const PotentialLLVMValuesState &R)
 
raw_ostreamoperator<< (raw_ostream &, const AAPointerInfo::Access &)
 
ModulePasscreateExpandVariadicsPass (ExpandVariadicsMode)
 
MemoryEffects computeFunctionBodyMemoryAccess (Function &F, AAResults &AAR)
 Returns the memory access properties of this copy of the function.
 
bool thinLTOPropagateFunctionAttrs (ModuleSummaryIndex &Index, function_ref< bool(GlobalValue::GUID, const GlobalValueSummary *)> isPrevailing)
 Propagate function attributes for function summaries along the index's callgraph during thinlink.
 
void ComputeCrossModuleImport (const ModuleSummaryIndex &Index, const DenseMap< StringRef, GVSummaryMapTy > &ModuleToDefinedGVSummaries, function_ref< bool(GlobalValue::GUID, const GlobalValueSummary *)> isPrevailing, FunctionImporter::ImportListsTy &ImportLists, DenseMap< StringRef, FunctionImporter::ExportSetTy > &ExportLists)
 Compute all the imports and exports for every module in the Index.
 
void updateIndirectCalls (ModuleSummaryIndex &Index)
 Update call edges for indirect calls to local functions added from SamplePGO when needed.
 
void computeDeadSymbolsAndUpdateIndirectCalls (ModuleSummaryIndex &Index, const DenseSet< GlobalValue::GUID > &GUIDPreservedSymbols, function_ref< PrevailingType(GlobalValue::GUID)> isPrevailing)
 Compute all the symbols that are "dead": i.e these that can't be reached in the graph from any of the given symbols listed in GUIDPreservedSymbols.
 
void computeDeadSymbolsWithConstProp (ModuleSummaryIndex &Index, const DenseSet< GlobalValue::GUID > &GUIDPreservedSymbols, function_ref< PrevailingType(GlobalValue::GUID)> isPrevailing, bool ImportEnabled)
 Compute dead symbols and run constant propagation in combined index after that.
 
bool convertToDeclaration (GlobalValue &GV)
 Converts value GV to declaration, or replaces with a declaration if it is an alias.
 
void gatherImportedSummariesForModule (StringRef ModulePath, const DenseMap< StringRef, GVSummaryMapTy > &ModuleToDefinedGVSummaries, const FunctionImporter::ImportMapTy &ImportList, ModuleToSummariesForIndexTy &ModuleToSummariesForIndex, GVSummaryPtrSet &DecSummaries)
 Compute the set of summaries needed for a ThinLTO backend compilation of ModulePath.
 
Error EmitImportsFiles (StringRef ModulePath, StringRef OutputFilename, const ModuleToSummariesForIndexTy &ModuleToSummariesForIndex)
 Emit into OutputFilename the files module ModulePath will import from.
 
void thinLTOFinalizeInModule (Module &TheModule, const GVSummaryMapTy &DefinedGlobals, bool PropagateAttrs)
 Based on the information recorded in the summaries during global summary-based analysis:
 
void thinLTOInternalizeModule (Module &TheModule, const GVSummaryMapTy &DefinedGlobals)
 Internalize TheModule based on the information recorded in the summaries during global summary-based analysis.
 
bool internalizeModule (Module &TheModule, std::function< bool(const GlobalValue &)> MustPreserveGV)
 Helper function to internalize functions and variables in a Module.
 
bool hasWholeProgramVisibility (bool WholeProgramVisibilityEnabledInLTO)
 
void updatePublicTypeTestCalls (Module &M, bool WholeProgramVisibilityEnabledInLTO)
 
void updateVCallVisibilityInModule (Module &M, bool WholeProgramVisibilityEnabledInLTO, const DenseSet< GlobalValue::GUID > &DynamicExportSymbols, bool ValidateAllVtablesHaveTypeInfos, function_ref< bool(StringRef)> IsVisibleToRegularObj)
 If whole program visibility asserted, then upgrade all public vcall visibility metadata on vtable definitions to linkage unit visibility in Module IR (for regular or hybrid LTO).
 
void updateVCallVisibilityInIndex (ModuleSummaryIndex &Index, bool WholeProgramVisibilityEnabledInLTO, const DenseSet< GlobalValue::GUID > &DynamicExportSymbols, const DenseSet< GlobalValue::GUID > &VisibleToRegularObjSymbols)
 If whole program visibility asserted, then upgrade all public vcall visibility metadata on vtable definition summaries to linkage unit visibility in Module summary index (for ThinLTO).
 
void getVisibleToRegularObjVtableGUIDs (ModuleSummaryIndex &Index, DenseSet< GlobalValue::GUID > &VisibleToRegularObjSymbols, function_ref< bool(StringRef)> IsVisibleToRegularObj)
 Based on typeID string, get all associated vtable GUIDS that are visible to regular objects.
 
void runWholeProgramDevirtOnIndex (ModuleSummaryIndex &Summary, std::set< GlobalValue::GUID > &ExportedGUIDs, std::map< ValueInfo, std::vector< VTableSlotSummary > > &LocalWPDTargetsMap)
 Perform index-based whole program devirtualization on the Summary index.
 
void updateIndexWPDForExports (ModuleSummaryIndex &Summary, function_ref< bool(StringRef, ValueInfo)> isExported, std::map< ValueInfo, std::vector< VTableSlotSummary > > &LocalWPDTargetsMap)
 Call after cross-module importing to update the recorded single impl devirt target names for any locals that were exported.
 
PasscreateObjCARCContractPass ()
 
FunctionPasscreateDeadCodeEliminationPass ()
 
FunctionPasscreateSROAPass (bool PreserveCFG=true)
 
PasscreateLICMPass ()
 
PasscreateLoopStrengthReducePass ()
 
PasscreateLoopTermFoldPass ()
 
PasscreateLoopUnrollPass (int OptLevel=2, bool OnlyWhenForced=false, bool ForgetAllSCEV=false, int Threshold=-1, int Count=-1, int AllowPartial=-1, int Runtime=-1, int UpperBound=-1, int AllowPeeling=-1)
 
FunctionPasscreateReassociatePass ()
 
FunctionPasscreateCFGSimplificationPass (SimplifyCFGOptions Options=SimplifyCFGOptions(), std::function< bool(const Function &)> Ftor=nullptr)
 
FunctionPasscreateFlattenCFGPass ()
 
PasscreateStructurizeCFGPass (bool SkipUniformRegions=false)
 When SkipUniformRegions is true the structizer will not structurize regions that only contain uniform branches.
 
FunctionPasscreateTailCallEliminationPass ()
 
FunctionPasscreateEarlyCSEPass (bool UseMemorySSA=false)
 
FunctionPasscreateConstantHoistingPass ()
 
FunctionPasscreateSinkingPass ()
 
PasscreateLowerAtomicPass ()
 
PasscreateMergeICmpsLegacyPass ()
 
FunctionPasscreateInferAddressSpacesPass (unsigned AddressSpace=~0u)
 
FunctionPasscreatePartiallyInlineLibCallsPass ()
 
FunctionPasscreateSeparateConstOffsetFromGEPPass (bool LowerGEP=false)
 
FunctionPasscreateSpeculativeExecutionPass ()
 
FunctionPasscreateSpeculativeExecutionIfHasBranchDivergencePass ()
 
FunctionPasscreateStraightLineStrengthReducePass ()
 
FunctionPasscreateNaryReassociatePass ()
 
FunctionPasscreateLoopDataPrefetchPass ()
 
FunctionPasscreateInstSimplifyLegacyPass ()
 
FunctionPasscreateScalarizeMaskedMemIntrinLegacyPass ()
 
FunctionPasscreateGVNPass (bool NoMemDepAnalysis=false)
 Create a legacy GVN pass.
 
template<typename LoopPassT >
std::enable_if_t< is_detected< HasRunOnLoopT, LoopPassT >::value, FunctionToLoopPassAdaptorcreateFunctionToLoopPassAdaptor (LoopPassT &&Pass, bool UseMemorySSA=false, bool UseBlockFrequencyInfo=false, bool UseBranchProbabilityInfo=false)
 A function to deduce a loop pass type and wrap it in the templated adaptor.
 
template<typename LoopNestPassT >
std::enable_if_t<!is_detected< HasRunOnLoopT, LoopNestPassT >::value, FunctionToLoopPassAdaptorcreateFunctionToLoopPassAdaptor (LoopNestPassT &&Pass, bool UseMemorySSA=false, bool UseBlockFrequencyInfo=false, bool UseBranchProbabilityInfo=false)
 If Pass is a loop-nest pass, Pass will first be wrapped into a LoopPassManager and the returned adaptor will be in loop-nest mode.
 
template<>
FunctionToLoopPassAdaptor createFunctionToLoopPassAdaptor< LoopPassManager > (LoopPassManager &&LPM, bool UseMemorySSA, bool UseBlockFrequencyInfo, bool UseBranchProbabilityInfo)
 If Pass is an instance of LoopPassManager, the returned adaptor will be in loop-nest mode if the pass manager contains only loop-nest passes.
 
bool lowerConstantIntrinsics (Function &F, const TargetLibraryInfo &TLI, DominatorTree *DT)
 
FunctionPasscreateScalarizerPass (const ScalarizerPassOptions &Options=ScalarizerPassOptions())
 Create a legacy pass manager instance of the Scalarizer pass.
 
FunctionPasscreateLowerInvokePass ()
 
FunctionPasscreateLowerSwitchPass ()
 
FunctionPasscreatePostInlineEntryExitInstrumenterPass ()
 
FunctionPasscreateBreakCriticalEdgesPass ()
 
PasscreateLCSSAPass ()
 
FunctionPasscreatePromoteMemoryToRegisterPass ()
 
FunctionPasscreateRegToMemWrapperPass ()
 
PasscreateLoopSimplifyPass ()
 
FunctionPasscreateUnifyLoopExitsPass ()
 
FunctionPasscreateFixIrreduciblePass ()
 
PasscreateCanonicalizeFreezeInLoopsPass ()
 
ModulePasscreateLowerGlobalDtorsLegacyPass ()
 
ValueemitAMDGPUPrintfCall (IRBuilder<> &Builder, ArrayRef< Value * > Args, bool isBuffered)
 
ASanStackFrameLayout ComputeASanStackFrameLayout (SmallVectorImpl< ASanStackVariableDescription > &Vars, uint64_t Granularity, uint64_t MinHeaderSize)
 
SmallString< 64 > ComputeASanStackFrameDescription (const SmallVectorImpl< ASanStackVariableDescription > &Vars)
 
SmallVector< uint8_t, 64 > GetShadowBytes (const SmallVectorImpl< ASanStackVariableDescription > &Vars, const ASanStackFrameLayout &Layout)
 
SmallVector< uint8_t, 64 > GetShadowBytesAfterScope (const SmallVectorImpl< ASanStackVariableDescription > &Vars, const ASanStackFrameLayout &Layout)
 
AssumeInstbuildAssumeFromInst (Instruction *I)
 Build a call to llvm.assume to preserve informations that can be derived from the given instruction.
 
bool salvageKnowledge (Instruction *I, AssumptionCache *AC=nullptr, DominatorTree *DT=nullptr)
 Calls BuildAssumeFromInst and if the resulting llvm.assume is valid insert if before I.
 
AssumeInstbuildAssumeFromKnowledge (ArrayRef< RetainedKnowledge > Knowledge, Instruction *CtxI, AssumptionCache *AC=nullptr, DominatorTree *DT=nullptr)
 Build and return a new assume created from the provided knowledge if the knowledge in the assume is fully redundant this will return nullptr.
 
RetainedKnowledge simplifyRetainedKnowledge (AssumeInst *Assume, RetainedKnowledge RK, AssumptionCache *AC, DominatorTree *DT)
 canonicalize the RetainedKnowledge RK.
 
void detachDeadBlocks (ArrayRef< BasicBlock * > BBs, SmallVectorImpl< DominatorTree::UpdateType > *Updates, bool KeepOneInputPHIs=false)
 Replace contents of every block in BBs with single unreachable instruction.
 
void DeleteDeadBlock (BasicBlock *BB, DomTreeUpdater *DTU=nullptr, bool KeepOneInputPHIs=false)
 Delete the specified block, which must have no predecessors.
 
void DeleteDeadBlocks (ArrayRef< BasicBlock * > BBs, DomTreeUpdater *DTU=nullptr, bool KeepOneInputPHIs=false)
 Delete the specified blocks from BB.
 
bool EliminateUnreachableBlocks (Function &F, DomTreeUpdater *DTU=nullptr, bool KeepOneInputPHIs=false)
 Delete all basic blocks from F that are not reachable from its entry node.
 
bool FoldSingleEntryPHINodes (BasicBlock *BB, MemoryDependenceResults *MemDep=nullptr)
 We know that BB has one predecessor.
 
bool DeleteDeadPHIs (BasicBlock *BB, const TargetLibraryInfo *TLI=nullptr, MemorySSAUpdater *MSSAU=nullptr)
 Examine each PHI in the given block and delete it if it is dead.
 
bool MergeBlockIntoPredecessor (BasicBlock *BB, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr, MemorySSAUpdater *MSSAU=nullptr, MemoryDependenceResults *MemDep=nullptr, bool PredecessorWithTwoSuccessors=false, DominatorTree *DT=nullptr)
 Attempts to merge a block into its predecessor, if possible.
 
bool MergeBlockSuccessorsIntoGivenBlocks (SmallPtrSetImpl< BasicBlock * > &MergeBlocks, Loop *L=nullptr, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr)
 Merge block(s) sucessors, if possible.
 
bool RemoveRedundantDbgInstrs (BasicBlock *BB)
 Try to remove redundant dbg.value instructions from given basic block.
 
void ReplaceInstWithValue (BasicBlock::iterator &BI, Value *V)
 Replace all uses of an instruction (specified by BI) with a value, then remove and delete the original instruction.
 
void ReplaceInstWithInst (BasicBlock *BB, BasicBlock::iterator &BI, Instruction *I)
 Replace the instruction specified by BI with the instruction specified by I.
 
void ReplaceInstWithInst (Instruction *From, Instruction *To)
 Replace the instruction specified by From with the instruction specified by To.
 
bool IsBlockFollowedByDeoptOrUnreachable (const BasicBlock *BB)
 Check if we can prove that all paths starting from this block converge to a block that either has a @llvm.experimental.deoptimize call prior to its terminating return instruction or is terminated by unreachable.
 
void createPHIsForSplitLoopExit (ArrayRef< BasicBlock * > Preds, BasicBlock *SplitBB, BasicBlock *DestBB)
 When a loop exit edge is split, LCSSA form may require new PHIs in the new exit block.
 
BasicBlockSplitCriticalEdge (Instruction *TI, unsigned SuccNum, const CriticalEdgeSplittingOptions &Options=CriticalEdgeSplittingOptions(), const Twine &BBName="")
 If this edge is a critical edge, insert a new node to split the critical edge.
 
BasicBlockSplitKnownCriticalEdge (Instruction *TI, unsigned SuccNum, const CriticalEdgeSplittingOptions &Options=CriticalEdgeSplittingOptions(), const Twine &BBName="")
 If it is known that an edge is critical, SplitKnownCriticalEdge can be called directly, rather than calling SplitCriticalEdge first.
 
BasicBlockSplitCriticalEdge (BasicBlock *Src, BasicBlock *Dst, const CriticalEdgeSplittingOptions &Options=CriticalEdgeSplittingOptions())
 If an edge from Src to Dst is critical, split the edge and return true, otherwise return false.
 
unsigned SplitAllCriticalEdges (Function &F, const CriticalEdgeSplittingOptions &Options=CriticalEdgeSplittingOptions())
 Loop over all of the edges in the CFG, breaking critical edges as they are found.
 
BasicBlockSplitEdge (BasicBlock *From, BasicBlock *To, DominatorTree *DT=nullptr, LoopInfo *LI=nullptr, MemorySSAUpdater *MSSAU=nullptr, const Twine &BBName="")
 Split the edge connecting the specified blocks, and return the newly created basic block between From and To.
 
void setUnwindEdgeTo (Instruction *TI, BasicBlock *Succ)
 Sets the unwind edge of an instruction to a particular successor.
 
void updatePhiNodes (BasicBlock *DestBB, BasicBlock *OldPred, BasicBlock *NewPred, PHINode *Until=nullptr)
 Replaces all uses of OldPred with the NewPred block in all PHINodes in a block.
 
BasicBlockehAwareSplitEdge (BasicBlock *BB, BasicBlock *Succ, LandingPadInst *OriginalPad=nullptr, PHINode *LandingPadReplacement=nullptr, const CriticalEdgeSplittingOptions &Options=CriticalEdgeSplittingOptions(), const Twine &BBName="")
 Split the edge connect the specficed blocks in the case that Succ is an Exception Handling Block.
 
BasicBlockSplitBlock (BasicBlock *Old, BasicBlock::iterator SplitPt, DominatorTree *DT, LoopInfo *LI=nullptr, MemorySSAUpdater *MSSAU=nullptr, const Twine &BBName="", bool Before=false)
 Split the specified block at the specified instruction.
 
BasicBlockSplitBlock (BasicBlock *Old, Instruction *SplitPt, DominatorTree *DT, LoopInfo *LI=nullptr, MemorySSAUpdater *MSSAU=nullptr, const Twine &BBName="", bool Before=false)
 
BasicBlockSplitBlock (BasicBlock *Old, BasicBlock::iterator SplitPt, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr, MemorySSAUpdater *MSSAU=nullptr, const Twine &BBName="", bool Before=false)
 Split the specified block at the specified instruction.
 
BasicBlockSplitBlock (BasicBlock *Old, Instruction *SplitPt, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr, MemorySSAUpdater *MSSAU=nullptr, const Twine &BBName="", bool Before=false)
 
BasicBlocksplitBlockBefore (BasicBlock *Old, BasicBlock::iterator SplitPt, DomTreeUpdater *DTU, LoopInfo *LI, MemorySSAUpdater *MSSAU, const Twine &BBName="")
 Split the specified block at the specified instruction SplitPt.
 
BasicBlocksplitBlockBefore (BasicBlock *Old, Instruction *SplitPt, DomTreeUpdater *DTU, LoopInfo *LI, MemorySSAUpdater *MSSAU, const Twine &BBName="")
 
BasicBlockSplitBlockPredecessors (BasicBlock *BB, ArrayRef< BasicBlock * > Preds, const char *Suffix, DominatorTree *DT, LoopInfo *LI=nullptr, MemorySSAUpdater *MSSAU=nullptr, bool PreserveLCSSA=false)
 This method introduces at least one new basic block into the function and moves some of the predecessors of BB to be predecessors of the new block.
 
BasicBlockSplitBlockPredecessors (BasicBlock *BB, ArrayRef< BasicBlock * > Preds, const char *Suffix, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr, MemorySSAUpdater *MSSAU=nullptr, bool PreserveLCSSA=false)
 This method introduces at least one new basic block into the function and moves some of the predecessors of BB to be predecessors of the new block.
 
void SplitLandingPadPredecessors (BasicBlock *OrigBB, ArrayRef< BasicBlock * > Preds, const char *Suffix, const char *Suffix2, SmallVectorImpl< BasicBlock * > &NewBBs, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr, MemorySSAUpdater *MSSAU=nullptr, bool PreserveLCSSA=false)
 This method transforms the landing pad, OrigBB, by introducing two new basic blocks into the function.
 
ReturnInstFoldReturnIntoUncondBranch (ReturnInst *RI, BasicBlock *BB, BasicBlock *Pred, DomTreeUpdater *DTU=nullptr)
 This method duplicates the specified return instruction into a predecessor which ends in an unconditional branch.
 
InstructionSplitBlockAndInsertIfThen (Value *Cond, BasicBlock::iterator SplitBefore, bool Unreachable, MDNode *BranchWeights=nullptr, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr, BasicBlock *ThenBlock=nullptr)
 Split the containing block at the specified instruction - everything before SplitBefore stays in the old basic block, and the rest of the instructions in the BB are moved to a new block.
 
InstructionSplitBlockAndInsertIfThen (Value *Cond, Instruction *SplitBefore, bool Unreachable, MDNode *BranchWeights=nullptr, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr, BasicBlock *ThenBlock=nullptr)
 
InstructionSplitBlockAndInsertIfElse (Value *Cond, BasicBlock::iterator SplitBefore, bool Unreachable, MDNode *BranchWeights=nullptr, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr, BasicBlock *ElseBlock=nullptr)
 Similar to SplitBlockAndInsertIfThen, but the inserted block is on the false path of the branch.
 
InstructionSplitBlockAndInsertIfElse (Value *Cond, Instruction *SplitBefore, bool Unreachable, MDNode *BranchWeights=nullptr, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr, BasicBlock *ElseBlock=nullptr)
 
void SplitBlockAndInsertIfThenElse (Value *Cond, BasicBlock::iterator SplitBefore, Instruction **ThenTerm, Instruction **ElseTerm, MDNode *BranchWeights=nullptr, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr)
 SplitBlockAndInsertIfThenElse is similar to SplitBlockAndInsertIfThen, but also creates the ElseBlock.
 
void SplitBlockAndInsertIfThenElse (Value *Cond, Instruction *SplitBefore, Instruction **ThenTerm, Instruction **ElseTerm, MDNode *BranchWeights=nullptr, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr)
 
void SplitBlockAndInsertIfThenElse (Value *Cond, BasicBlock::iterator SplitBefore, BasicBlock **ThenBlock, BasicBlock **ElseBlock, bool UnreachableThen=false, bool UnreachableElse=false, MDNode *BranchWeights=nullptr, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr)
 Split the containing block at the specified instruction - everything before SplitBefore stays in the old basic block, and the rest of the instructions in the BB are moved to a new block.
 
void SplitBlockAndInsertIfThenElse (Value *Cond, Instruction *SplitBefore, BasicBlock **ThenBlock, BasicBlock **ElseBlock, bool UnreachableThen=false, bool UnreachableElse=false, MDNode *BranchWeights=nullptr, DomTreeUpdater *DTU=nullptr, LoopInfo *LI=nullptr)
 
std::pair< Instruction *, Value * > SplitBlockAndInsertSimpleForLoop (Value *End, Instruction *SplitBefore)
 Insert a for (int i = 0; i < End; i++) loop structure (with the exception that End is assumed > 0, and thus not checked on entry) at SplitBefore.
 
void SplitBlockAndInsertForEachLane (ElementCount EC, Type *IndexTy, Instruction *InsertBefore, std::function< void(IRBuilderBase &, Value *)> Func)
 Utility function for performing a given action on each lane of a vector with EC elements.
 
void SplitBlockAndInsertForEachLane (Value *End, Instruction *InsertBefore, std::function< void(IRBuilderBase &, Value *)> Func)
 Utility function for performing a given action on each lane of a vector with EVL effective length.
 
BranchInstGetIfCondition (BasicBlock *BB, BasicBlock *&IfTrue, BasicBlock *&IfFalse)
 Check whether BB is the merge point of a if-region.
 
bool SplitIndirectBrCriticalEdges (Function &F, bool IgnoreBlocksWithoutPHI, BranchProbabilityInfo *BPI=nullptr, BlockFrequencyInfo *BFI=nullptr)
 
void InvertBranch (BranchInst *PBI, IRBuilderBase &Builder)
 
bool hasOnlySimpleTerminator (const Function &F)
 
bool isPresplitCoroSuspendExitEdge (const BasicBlock &Src, const BasicBlock &Dest)
 
bool inferNonMandatoryLibFuncAttrs (Module *M, StringRef Name, const TargetLibraryInfo &TLI)
 Analyze the name and prototype of the given function and set any applicable attributes.
 
bool inferNonMandatoryLibFuncAttrs (Function &F, const TargetLibraryInfo &TLI)
 
FunctionCallee getOrInsertLibFunc (Module *M, const TargetLibraryInfo &TLI, LibFunc TheLibFunc, FunctionType *T, AttributeList AttributeList)
 Calls getOrInsertFunction() and then makes sure to add mandatory argument attributes.
 
FunctionCallee getOrInsertLibFunc (Module *M, const TargetLibraryInfo &TLI, LibFunc TheLibFunc, FunctionType *T)
 
template<typename... ArgsTy>
FunctionCallee getOrInsertLibFunc (Module *M, const TargetLibraryInfo &TLI, LibFunc TheLibFunc, AttributeList AttributeList, Type *RetTy, ArgsTy... Args)
 
template<typename... ArgsTy>
FunctionCallee getOrInsertLibFunc (Module *M, const TargetLibraryInfo &TLI, LibFunc TheLibFunc, Type *RetTy, ArgsTy... Args)
 Same as above, but without the attributes.
 
template<typename... ArgsTy>
FunctionCallee getOrInsertLibFunc (Module *M, const TargetLibraryInfo &TLI, LibFunc TheLibFunc, AttributeList AttributeList, FunctionType *Invalid, ArgsTy... Args)=delete
 
void markRegisterParameterAttributes (Function *F)
 
bool isLibFuncEmittable (const Module *M, const TargetLibraryInfo *TLI, LibFunc TheLibFunc)
 Check whether the library function is available on target and also that it in the current Module is a Function with the right type.
 
bool isLibFuncEmittable (const Module *M, const TargetLibraryInfo *TLI, StringRef Name)
 
bool hasFloatFn (const Module *M, const TargetLibraryInfo *TLI, Type *Ty, LibFunc DoubleFn, LibFunc FloatFn, LibFunc LongDoubleFn)
 Check whether the overloaded floating point function corresponding to Ty is available.
 
StringRef getFloatFn (const Module *M, const TargetLibraryInfo *TLI, Type *Ty, LibFunc DoubleFn, LibFunc FloatFn, LibFunc LongDoubleFn, LibFunc &TheLibFunc)
 Get the name of the overloaded floating point function corresponding to Ty.
 
ValueemitStrLen (Value *Ptr, IRBuilderBase &B, const DataLayout &DL, const TargetLibraryInfo *TLI)
 Emit a call to the strlen function to the builder, for the specified pointer.
 
ValueemitStrDup (Value *Ptr, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the strdup function to the builder, for the specified pointer.
 
ValueemitStrChr (Value *Ptr, char C, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the strchr function to the builder, for the specified pointer and character.
 
ValueemitStrNCmp (Value *Ptr1, Value *Ptr2, Value *Len, IRBuilderBase &B, const DataLayout &DL, const TargetLibraryInfo *TLI)
 Emit a call to the strncmp function to the builder.
 
ValueemitStrCpy (Value *Dst, Value *Src, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the strcpy function to the builder, for the specified pointer arguments.
 
ValueemitStpCpy (Value *Dst, Value *Src, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the stpcpy function to the builder, for the specified pointer arguments.
 
ValueemitStrNCpy (Value *Dst, Value *Src, Value *Len, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the strncpy function to the builder, for the specified pointer arguments and length.
 
ValueemitStpNCpy (Value *Dst, Value *Src, Value *Len, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the stpncpy function to the builder, for the specified pointer arguments and length.
 
ValueemitMemCpyChk (Value *Dst, Value *Src, Value *Len, Value *ObjSize, IRBuilderBase &B, const DataLayout &DL, const TargetLibraryInfo *TLI)
 Emit a call to the __memcpy_chk function to the builder.
 
ValueemitMemPCpy (Value *Dst, Value *Src, Value *Len, IRBuilderBase &B, const DataLayout &DL, const TargetLibraryInfo *TLI)
 Emit a call to the mempcpy function.
 
ValueemitMemChr (Value *Ptr, Value *Val, Value *Len, IRBuilderBase &B, const DataLayout &DL, const TargetLibraryInfo *TLI)
 Emit a call to the memchr function.
 
ValueemitMemRChr (Value *Ptr, Value *Val, Value *Len, IRBuilderBase &B, const DataLayout &DL, const TargetLibraryInfo *TLI)
 Emit a call to the memrchr function, analogously to emitMemChr.
 
ValueemitMemCmp (Value *Ptr1, Value *Ptr2, Value *Len, IRBuilderBase &B, const DataLayout &DL, const TargetLibraryInfo *TLI)
 Emit a call to the memcmp function.
 
ValueemitBCmp (Value *Ptr1, Value *Ptr2, Value *Len, IRBuilderBase &B, const DataLayout &DL, const TargetLibraryInfo *TLI)
 Emit a call to the bcmp function.
 
ValueemitMemCCpy (Value *Ptr1, Value *Ptr2, Value *Val, Value *Len, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the memccpy function.
 
ValueemitSNPrintf (Value *Dest, Value *Size, Value *Fmt, ArrayRef< Value * > Args, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the snprintf function.
 
ValueemitSPrintf (Value *Dest, Value *Fmt, ArrayRef< Value * > VariadicArgs, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the sprintf function.
 
ValueemitStrCat (Value *Dest, Value *Src, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the strcat function.
 
ValueemitStrLCpy (Value *Dest, Value *Src, Value *Size, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the strlcpy function.
 
ValueemitStrLCat (Value *Dest, Value *Src, Value *Size, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the strlcat function.
 
ValueemitStrNCat (Value *Dest, Value *Src, Value *Size, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the strncat function.
 
ValueemitVSNPrintf (Value *Dest, Value *Size, Value *Fmt, Value *VAList, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the vsnprintf function.
 
ValueemitVSPrintf (Value *Dest, Value *Fmt, Value *VAList, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the vsprintf function.
 
ValueemitUnaryFloatFnCall (Value *Op, const TargetLibraryInfo *TLI, StringRef Name, IRBuilderBase &B, const AttributeList &Attrs)
 Emit a call to the unary function named 'Name' (e.g.
 
ValueemitUnaryFloatFnCall (Value *Op, const TargetLibraryInfo *TLI, LibFunc DoubleFn, LibFunc FloatFn, LibFunc LongDoubleFn, IRBuilderBase &B, const AttributeList &Attrs)
 Emit a call to the unary function DoubleFn, FloatFn or LongDoubleFn, depending of the type of Op.
 
ValueemitBinaryFloatFnCall (Value *Op1, Value *Op2, const TargetLibraryInfo *TLI, StringRef Name, IRBuilderBase &B, const AttributeList &Attrs)
 Emit a call to the binary function named 'Name' (e.g.
 
ValueemitBinaryFloatFnCall (Value *Op1, Value *Op2, const TargetLibraryInfo *TLI, LibFunc DoubleFn, LibFunc FloatFn, LibFunc LongDoubleFn, IRBuilderBase &B, const AttributeList &Attrs)
 Emit a call to the binary function DoubleFn, FloatFn or LongDoubleFn, depending of the type of Op1.
 
ValueemitPutChar (Value *Char, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the putchar function. This assumes that Char is an 'int'.
 
ValueemitPutS (Value *Str, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the puts function. This assumes that Str is some pointer.
 
ValueemitFPutC (Value *Char, Value *File, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the fputc function.
 
ValueemitFPutS (Value *Str, Value *File, IRBuilderBase &B, const TargetLibraryInfo *TLI)
 Emit a call to the fputs function.
 
ValueemitFWrite (Value *Ptr, Value *Size, Value *File, IRBuilderBase &B, const DataLayout &DL, const TargetLibraryInfo *TLI)
 Emit a call to the fwrite function.
 
ValueemitMalloc (Value *Num, IRBuilderBase &B, const DataLayout &DL, const TargetLibraryInfo *TLI)
 Emit a call to the malloc function.
 
ValueemitCalloc (Value *Num, Value *Size, IRBuilderBase &B, const TargetLibraryInfo &TLI, unsigned AddrSpace)
 Emit a call to the calloc function.
 
ValueemitHotColdNew (Value *Num, IRBuilderBase &B, const TargetLibraryInfo *TLI, LibFunc NewFunc, uint8_t HotCold)
 Emit a call to the hot/cold operator new function.
 
ValueemitHotColdNewNoThrow (Value *Num, Value *NoThrow, IRBuilderBase &B, const TargetLibraryInfo *TLI, LibFunc NewFunc, uint8_t HotCold)
 
ValueemitHotColdNewAligned (Value *Num, Value *Align, IRBuilderBase &B, const TargetLibraryInfo *TLI, LibFunc NewFunc, uint8_t HotCold)
 
ValueemitHotColdNewAlignedNoThrow (Value *Num, Value *Align, Value *NoThrow, IRBuilderBase &B, const TargetLibraryInfo *TLI, LibFunc NewFunc, uint8_t HotCold)
 
ValueemitHotColdSizeReturningNew (Value *Num, IRBuilderBase &B, const TargetLibraryInfo *TLI, LibFunc NewFunc, uint8_t HotCold)
 
ValueemitHotColdSizeReturningNewAligned (Value *Num, Value *Align, IRBuilderBase &B, const TargetLibraryInfo *TLI, LibFunc NewFunc, uint8_t HotCold)
 
bool bypassSlowDivision (BasicBlock *BB, const DenseMap< unsigned int, unsigned int > &BypassWidth)
 This optimization identifies DIV instructions in a BB that can be profitably bypassed and carried out with a shorter, faster divide.
 
bool isLegalToPromote (const CallBase &CB, Function *Callee, const char **FailureReason=nullptr)
 Return true if the given indirect call site can be made to call Callee.
 
CallBasepromoteCall (CallBase &CB, Function *Callee, CastInst **RetBitCast=nullptr)
 Promote the given indirect call site to unconditionally call Callee.
 
CallBasepromoteCallWithIfThenElse (CallBase &CB, Function *Callee, MDNode *BranchWeights=nullptr)
 Promote the given indirect call site to conditionally call Callee.
 
CallBasepromoteCallWithIfThenElse (CallBase &CB, Function &Callee, PGOContextualProfile &CtxProf)
 
CallBasepromoteCallWithVTableCmp (CallBase &CB, Instruction *VPtr, Function *Callee, ArrayRef< Constant * > AddressPoints, MDNode *BranchWeights)
 This is similar to promoteCallWithIfThenElse except that the condition to promote a virtual call is that VPtr is the same as any of AddressPoints.
 
bool tryPromoteCall (CallBase &CB)
 Try to promote (devirtualize) a virtual call on an Alloca.
 
CallBaseversionCallSite (CallBase &CB, Value *Callee, MDNode *BranchWeights)
 Predicate and clone the given call site.
 
std::unique_ptr< ModuleCloneModule (const Module &M)
 Return an exact copy of the specified module.
 
std::unique_ptr< ModuleCloneModule (const Module &M, ValueToValueMapTy &VMap)
 
std::unique_ptr< ModuleCloneModule (const Module &M, ValueToValueMapTy &VMap, function_ref< bool(const GlobalValue *)> ShouldCloneDefinition)
 Return a copy of the specified module.
 
BasicBlockCloneBasicBlock (const BasicBlock *BB, ValueToValueMapTy &VMap, const Twine &NameSuffix="", Function *F=nullptr, ClonedCodeInfo *CodeInfo=nullptr)
 Return a copy of the specified basic block, but without embedding the block into a particular function.
 
FunctionCloneFunction (Function *F, ValueToValueMapTy &VMap, ClonedCodeInfo *CodeInfo=nullptr)
 Return a copy of the specified function and add it to that function's module.
 
void CloneFunctionInto (Function *NewFunc, const Function *OldFunc, ValueToValueMapTy &VMap, CloneFunctionChangeType Changes, SmallVectorImpl< ReturnInst * > &Returns, const char *NameSuffix="", ClonedCodeInfo *CodeInfo=nullptr, ValueMapTypeRemapper *TypeMapper=nullptr, ValueMaterializer *Materializer=nullptr)
 Clone OldFunc into NewFunc, transforming the old arguments into references to VMap values.
 
void CloneFunctionAttributesInto (Function *NewFunc, const Function *OldFunc, ValueToValueMapTy &VMap, bool ModuleLevelChanges, ValueMapTypeRemapper *TypeMapper=nullptr, ValueMaterializer *Materializer=nullptr)
 Clone OldFunc's attributes into NewFunc, transforming values based on the mappings in VMap.
 
void CloneFunctionMetadataInto (Function &NewFunc, const Function &OldFunc, ValueToValueMapTy &VMap, RemapFlags RemapFlag, ValueMapTypeRemapper *TypeMapper=nullptr, ValueMaterializer *Materializer=nullptr)
 Clone OldFunc's metadata into NewFunc.
 
void CloneFunctionBodyInto (Function &NewFunc, const Function &OldFunc, ValueToValueMapTy &VMap, RemapFlags RemapFlag, SmallVectorImpl< ReturnInst * > &Returns, const char *NameSuffix="", ClonedCodeInfo *CodeInfo=nullptr, ValueMapTypeRemapper *TypeMapper=nullptr, ValueMaterializer *Materializer=nullptr)
 Clone OldFunc's body into NewFunc.
 
void CloneAndPruneIntoFromInst (Function *NewFunc, const Function *OldFunc, const Instruction *StartingInst, ValueToValueMapTy &VMap, bool ModuleLevelChanges, SmallVectorImpl< ReturnInst * > &Returns, const char *NameSuffix="", ClonedCodeInfo *CodeInfo=nullptr)
 This works like CloneAndPruneFunctionInto, except that it does not clone the entire function.
 
void CloneAndPruneFunctionInto (Function *NewFunc, const Function *OldFunc, ValueToValueMapTy &VMap, bool ModuleLevelChanges, SmallVectorImpl< ReturnInst * > &Returns, const char *NameSuffix="", ClonedCodeInfo *CodeInfo=nullptr)
 This works exactly like CloneFunctionInto, except that it does some simple constant prop and DCE on the fly.
 
DISubprogramCollectDebugInfoForCloning (const Function &F, CloneFunctionChangeType Changes, DebugInfoFinder &DIFinder)
 Collect debug information such as types, compile units, and other subprograms that are reachable from F and can be considered global for the purposes of cloning (and hence not needing to be cloned).
 
bool BuildDebugInfoMDMap (DenseMap< const Metadata *, TrackingMDRef > &MD, CloneFunctionChangeType Changes, DebugInfoFinder &DIFinder, DISubprogram *SPClonedWithinModule)
 Build a map of debug info to use during Metadata cloning.
 
InlineResult InlineFunction (CallBase &CB, InlineFunctionInfo &IFI, bool MergeAttributes=false, AAResults *CalleeAAR=nullptr, bool InsertLifetime=true, Function *ForwardVarArgsTo=nullptr)
 This function inlines the called function into the basic block of the caller.
 
InlineResult InlineFunction (CallBase &CB, InlineFunctionInfo &IFI, PGOContextualProfile &CtxProf, bool MergeAttributes=false, AAResults *CalleeAAR=nullptr, bool InsertLifetime=true, Function *ForwardVarArgsTo=nullptr)
 Same as above, but it will update the contextual profile.
 
LoopcloneLoopWithPreheader (BasicBlock *Before, BasicBlock *LoopDomBB, Loop *OrigLoop, ValueToValueMapTy &VMap, const Twine &NameSuffix, LoopInfo *LI, DominatorTree *DT, SmallVectorImpl< BasicBlock * > &Blocks)
 Clones a loop OrigLoop.
 
void remapInstructionsInBlocks (ArrayRef< BasicBlock * > Blocks, ValueToValueMapTy &VMap)
 Remaps instructions in Blocks using the mapping in VMap.
 
BasicBlockDuplicateInstructionsInSplitBetween (BasicBlock *BB, BasicBlock *PredBB, Instruction *StopAt, ValueToValueMapTy &ValueMapping, DomTreeUpdater &DTU)
 Split edge between BB and PredBB and duplicate all non-Phi instructions from BB between its beginning and the StopAt instruction into the split block.
 
void updateProfileCallee (Function *Callee, int64_t EntryDelta, const ValueMap< const Value *, WeakTrackingVH > *VMap=nullptr)
 Updates profile information by adjusting the entry count by adding EntryDelta then scaling callsite information by the new count divided by the old count.
 
void identifyNoAliasScopesToClone (ArrayRef< BasicBlock * > BBs, SmallVectorImpl< MDNode * > &NoAliasDeclScopes)
 Find the 'llvm.experimental.noalias.scope.decl' intrinsics in the specified basic blocks and extract their scope.
 
void identifyNoAliasScopesToClone (BasicBlock::iterator Start, BasicBlock::iterator End, SmallVectorImpl< MDNode * > &NoAliasDeclScopes)
 Find the 'llvm.experimental.noalias.scope.decl' intrinsics in the specified instruction range and extract their scope.
 
void cloneNoAliasScopes (ArrayRef< MDNode * > NoAliasDeclScopes, DenseMap< MDNode *, MDNode * > &ClonedScopes, StringRef Ext, LLVMContext &Context)
 Duplicate the specified list of noalias decl scopes.
 
void adaptNoAliasScopes (llvm::Instruction *I, const DenseMap< MDNode *, MDNode * > &ClonedScopes, LLVMContext &Context)
 Adapt the metadata for the specified instruction according to the provided mapping.
 
void cloneAndAdaptNoAliasScopes (ArrayRef< MDNode * > NoAliasDeclScopes, ArrayRef< BasicBlock * > NewBlocks, LLVMContext &Context, StringRef Ext)
 Clone the specified noalias decl scopes.
 
void cloneAndAdaptNoAliasScopes (ArrayRef< MDNode * > NoAliasDeclScopes, Instruction *IStart, Instruction *IEnd, LLVMContext &Context, StringRef Ext)
 Clone the specified noalias decl scopes.
 
bool isControlFlowEquivalent (const Instruction &I0, const Instruction &I1, const DominatorTree &DT, const PostDominatorTree &PDT)
 Return true if I0 and I1 are control flow equivalent.
 
bool isControlFlowEquivalent (const BasicBlock &BB0, const BasicBlock &BB1, const DominatorTree &DT, const PostDominatorTree &PDT)
 Return true if BB0 and BB1 are control flow equivalent.
 
bool isSafeToMoveBefore (Instruction &I, Instruction &InsertPoint, DominatorTree &DT, const PostDominatorTree *PDT=nullptr, DependenceInfo *DI=nullptr, bool CheckForEntireBlock=false)
 Return true if I can be safely moved before InsertPoint.
 
bool isSafeToMoveBefore (BasicBlock &BB, Instruction &InsertPoint, DominatorTree &DT, const PostDominatorTree *PDT=nullptr, DependenceInfo *DI=nullptr)
 Return true if all instructions (except the terminator) in BB can be safely moved before InsertPoint.
 
void moveInstructionsToTheBeginning (BasicBlock &FromBB, BasicBlock &ToBB, DominatorTree &DT, const PostDominatorTree &PDT, DependenceInfo &DI)
 Move instructions, in an order-preserving manner, from FromBB to the beginning of ToBB when proven safe.
 
void moveInstructionsToTheEnd (BasicBlock &FromBB, BasicBlock &ToBB, DominatorTree &DT, const PostDominatorTree &PDT, DependenceInfo &DI)
 Move instructions, in an order-preserving manner, from FromBB to the end of ToBB when proven safe.
 
bool nonStrictlyPostDominate (const BasicBlock *ThisBlock, const BasicBlock *OtherBlock, const DominatorTree *DT, const PostDominatorTree *PDT)
 In case that two BBs ThisBlock and OtherBlock are control flow equivalent but they do not strictly dominate and post-dominate each other, we determine if ThisBlock is reached after OtherBlock in the control flow.
 
bool isReachedBefore (const Instruction *I0, const Instruction *I1, const DominatorTree *DT, const PostDominatorTree *PDT)
 
bool optimizeGlobalCtorsList (Module &M, function_ref< bool(uint32_t, Function *)> ShouldRemove)
 Call "ShouldRemove" for every entry in M's global_ctor list and remove the entries for which it returns true.
 
bool applyDebugifyMetadata (Module &M, iterator_range< Module::iterator > Functions, StringRef Banner, std::function< bool(DIBuilder &, Function &)> ApplyToMF)
 Add synthesized debug information to a module.
 
bool stripDebugifyMetadata (Module &M)
 Strip out all of the metadata and debug info inserted by debugify.
 
bool collectDebugInfoMetadata (Module &M, iterator_range< Module::iterator > Functions, DebugInfoPerPass &DebugInfoBeforePass, StringRef Banner, StringRef NameOfWrappedPass)
 Collect original debug information before a pass.
 
bool checkDebugInfoMetadata (Module &M, iterator_range< Module::iterator > Functions, DebugInfoPerPass &DebugInfoBeforePass, StringRef Banner, StringRef NameOfWrappedPass, StringRef OrigDIVerifyBugsReportFilePath)
 Check original debug information after a pass.
 
void exportDebugifyStats (StringRef Path, const DebugifyStatsMap &Map)
 
void renameModuleForThinLTO (Module &M, const ModuleSummaryIndex &Index, bool ClearDSOLocalOnDeclarations, SetVector< GlobalValue * > *GlobalsToImport=nullptr)
 Perform in-place global value handling on the given Module for exported local functions renamed and promoted for ThinLTO.
 
bool isSafeToDestroyConstant (const Constant *C)
 It is safe to destroy a constant iff it is only used by constants itself.
 
void makeGuardControlFlowExplicit (Function *DeoptIntrinsic, CallInst *Guard, bool UseWC)
 Splits control flow at point of Guard, replacing it with explicit branch by the condition of guard's first argument.
 
void widenWidenableBranch (BranchInst *WidenableBR, Value *NewCond)
 Given a branch we know is widenable (defined per Analysis/GuardUtils.h), widen it such that condition 'NewCond' is also known to hold on the taken path.
 
void setWidenableBranchCond (BranchInst *WidenableBR, Value *Cond)
 Given a branch we know is widenable (defined per Analysis/GuardUtils.h), set it's condition such that (only) 'Cond' is known to hold on the taken path and that the branch remains widenable after transform.
 
bool checkIfAlreadyInstrumented (Module &M, StringRef Flag)
 Check if module has flag attached, if not add the flag.
 
BasicBlock::iterator PrepareToSplitEntryBlock (BasicBlock &BB, BasicBlock::iterator IP)
 Instrumentation passes often insert conditional checks into entry blocks.
 
GlobalVariablecreatePrivateGlobalForString (Module &M, StringRef Str, bool AllowMerging, Twine NamePrefix="")
 
ComdatgetOrCreateFunctionComdat (Function &F, Triple &T)
 
void setGlobalVariableLargeSection (const Triple &TargetTriple, GlobalVariable &GV)
 
void createProfileSamplingVar (Module &M)
 
static uint64_t calculateCountScale (uint64_t MaxCount)
 Calculate what to divide by to scale counts.
 
static uint32_t scaleBranchCount (uint64_t Count, uint64_t Scale)
 Scale an individual branch count.
 
bool expandRemainder (BinaryOperator *Rem)
 Generate code to calculate the remainder of two integers, replacing Rem with the generated code.
 
bool expandDivision (BinaryOperator *Div)
 Generate code to divide two integers, replacing Div with the generated code.
 
bool expandRemainderUpTo32Bits (BinaryOperator *Rem)
 Generate code to calculate the remainder of two integers, replacing Rem with the generated code.
 
bool expandRemainderUpTo64Bits (BinaryOperator *Rem)
 Generate code to calculate the remainder of two integers, replacing Rem with the generated code.
 
bool expandDivisionUpTo32Bits (BinaryOperator *Div)
 Generate code to divide two integers, replacing Div with the generated code.
 
bool expandDivisionUpTo64Bits (BinaryOperator *Div)
 Generate code to divide two integers, replacing Div with the generated code.
 
bool ConstantFoldTerminator (BasicBlock *BB, bool DeleteDeadConditions=false, const TargetLibraryInfo *TLI=nullptr, DomTreeUpdater *DTU=nullptr)
 If a terminator instruction is predicated on a constant value, convert it into an unconditional branch to the constant destination.
 
bool isInstructionTriviallyDead (Instruction *I, const TargetLibraryInfo *TLI=nullptr)
 Return true if the result produced by the instruction is not used, and the instruction will return.
 
bool wouldInstructionBeTriviallyDead (const Instruction *I, const TargetLibraryInfo *TLI=nullptr)
 Return true if the result produced by the instruction would have no side effects if it was not used.
 
bool wouldInstructionBeTriviallyDeadOnUnusedPaths (Instruction *I, const TargetLibraryInfo *TLI=nullptr)
 Return true if the result produced by the instruction has no side effects on any paths other than where it is used.
 
bool RecursivelyDeleteTriviallyDeadInstructions (Value *V, const TargetLibraryInfo *TLI=nullptr, MemorySSAUpdater *MSSAU=nullptr, std::function< void(Value *)> AboutToDeleteCallback=std::function< void(Value *)>())
 If the specified value is a trivially dead instruction, delete it.
 
void RecursivelyDeleteTriviallyDeadInstructions (SmallVectorImpl< WeakTrackingVH > &DeadInsts, const TargetLibraryInfo *TLI=nullptr, MemorySSAUpdater *MSSAU=nullptr, std::function< void(Value *)> AboutToDeleteCallback=std::function< void(Value *)>())
 Delete all of the instructions in DeadInsts, and all other instructions that deleting these in turn causes to be trivially dead.
 
bool RecursivelyDeleteTriviallyDeadInstructionsPermissive (SmallVectorImpl< WeakTrackingVH > &DeadInsts, const TargetLibraryInfo *TLI=nullptr, MemorySSAUpdater *MSSAU=nullptr, std::function< void(Value *)> AboutToDeleteCallback=std::function< void(Value *)>())
 Same functionality as RecursivelyDeleteTriviallyDeadInstructions, but allow instructions that are not trivially dead.
 
bool RecursivelyDeleteDeadPHINode (PHINode *PN, const TargetLibraryInfo *TLI=nullptr, MemorySSAUpdater *MSSAU=nullptr)
 If the specified value is an effectively dead PHI node, due to being a def-use chain of single-use nodes that either forms a cycle or is terminated by a trivially dead instruction, delete it.
 
bool SimplifyInstructionsInBlock (BasicBlock *BB, const TargetLibraryInfo *TLI=nullptr)
 Scan the specified basic block and try to simplify any instructions in it and recursively delete dead instructions.
 
bool replaceDbgUsesWithUndef (Instruction *I)
 Replace all the uses of an SSA value in @llvm.dbg intrinsics with undef.
 
void MergeBasicBlockIntoOnlyPred (BasicBlock *BB, DomTreeUpdater *DTU=nullptr)
 BB is a block with one predecessor and its predecessor is known to have one successor (BB!).
 
bool TryToSimplifyUncondBranchFromEmptyBlock (BasicBlock *BB, DomTreeUpdater *DTU=nullptr)
 BB is known to contain an unconditional branch, and contains no instructions other than PHI nodes, potential debug intrinsics and the branch.
 
bool EliminateDuplicatePHINodes (BasicBlock *BB)
 Check for and eliminate duplicate PHI nodes in this block.
 
bool EliminateDuplicatePHINodes (BasicBlock *BB, SmallPtrSetImpl< PHINode * > &ToRemove)
 Check for and eliminate duplicate PHI nodes in this block.
 
bool simplifyCFG (BasicBlock *BB, const TargetTransformInfo &TTI, DomTreeUpdater *DTU=nullptr, const SimplifyCFGOptions &Options={}, ArrayRef< WeakVH > LoopHeaders={})
 
bool FlattenCFG (BasicBlock *BB, AAResults *AA=nullptr)
 This function is used to flatten a CFG.
 
bool foldBranchToCommonDest (BranchInst *BI, llvm::DomTreeUpdater *DTU=nullptr, MemorySSAUpdater *MSSAU=nullptr, const TargetTransformInfo *TTI=nullptr, unsigned BonusInstThreshold=1)
 If this basic block is ONLY a setcc and a branch, and if a predecessor branches to us and one of our successors, fold the setcc into the predecessor and use logical operations to pick the right destination.
 
AllocaInstDemoteRegToStack (Instruction &X, bool VolatileLoads=false, std::optional< BasicBlock::iterator > AllocaPoint=std::nullopt)
 This function takes a virtual register computed by an Instruction and replaces it with a slot in the stack frame, allocated via alloca.
 
AllocaInstDemotePHIToStack (PHINode *P, std::optional< BasicBlock::iterator > AllocaPoint=std::nullopt)
 This function takes a virtual register computed by a phi node and replaces it with a slot in the stack frame, allocated via alloca.
 
Align tryEnforceAlignment (Value *V, Align PrefAlign, const DataLayout &DL)
 If the specified pointer points to an object that we control, try to modify the object's alignment to PrefAlign.
 
Align getOrEnforceKnownAlignment (Value *V, MaybeAlign PrefAlign, const DataLayout &DL, const Instruction *CxtI=nullptr, AssumptionCache *AC=nullptr, const DominatorTree *DT=nullptr)
 Try to ensure that the alignment of V is at least PrefAlign bytes.
 
Align getKnownAlignment (Value *V, const DataLayout &DL, const Instruction *CxtI=nullptr, AssumptionCache *AC=nullptr, const DominatorTree *DT=nullptr)
 Try to infer an alignment for the specified pointer.
 
CallInstcreateCallMatchingInvoke (InvokeInst *II)
 Create a call that matches the invoke II in terms of arguments, attributes, debug information, etc.
 
CallInstchangeToCall (InvokeInst *II, DomTreeUpdater *DTU=nullptr)
 This function converts the specified invoke into a normal call.
 
void InsertDebugValueAtStoreLoc (DbgVariableRecord *DVR, StoreInst *SI, DIBuilder &Builder)
 ===------------------------------------------------------------------—===// Dbg Intrinsic utilities
 
void InsertDebugValueAtStoreLoc (DbgVariableIntrinsic *DII, StoreInst *SI, DIBuilder &Builder)
 Creates and inserts an llvm.dbg.value intrinsic before a store that has an associated llvm.dbg.value intrinsic.
 
void ConvertDebugDeclareToDebugValue (DbgVariableIntrinsic *DII, StoreInst *SI, DIBuilder &Builder)
 Inserts a llvm.dbg.value intrinsic before a store to an alloca'd value that has an associated llvm.dbg.declare intrinsic.
 
void ConvertDebugDeclareToDebugValue (DbgVariableRecord *DVR, StoreInst *SI, DIBuilder &Builder)
 
void ConvertDebugDeclareToDebugValue (DbgVariableIntrinsic *DII, LoadInst *LI, DIBuilder &Builder)
 Inserts a llvm.dbg.value intrinsic before a load of an alloca'd value that has an associated llvm.dbg.declare intrinsic.
 
void ConvertDebugDeclareToDebugValue (DbgVariableRecord *DVR, LoadInst *LI, DIBuilder &Builder)
 
void ConvertDebugDeclareToDebugValue (DbgVariableIntrinsic *DII, PHINode *LI, DIBuilder &Builder)
 Inserts a llvm.dbg.value intrinsic after a phi that has an associated llvm.dbg.declare intrinsic.
 
void ConvertDebugDeclareToDebugValue (DbgVariableRecord *DVR, PHINode *LI, DIBuilder &Builder)
 
bool LowerDbgDeclare (Function &F)
 Lowers llvm.dbg.declare intrinsics into appropriate set of llvm.dbg.value intrinsics.
 
void insertDebugValuesForPHIs (BasicBlock *BB, SmallVectorImpl< PHINode * > &InsertedPHIs)
 Propagate dbg.value intrinsics through the newly inserted PHIs.
 
bool replaceDbgDeclare (Value *Address, Value *NewAddress, DIBuilder &Builder, uint8_t DIExprFlags, int Offset)
 Replaces llvm.dbg.declare instruction when the address it describes is replaced with a new value.
 
void replaceDbgValueForAlloca (AllocaInst *AI, Value *NewAllocaAddress, DIBuilder &Builder, int Offset=0)
 Replaces multiple llvm.dbg.value instructions when the alloca it describes is replaced with a new value.
 
void salvageDebugInfo (Instruction &I)
 Assuming the instruction I is going to be deleted, attempt to salvage debug users of I by writing the effect of I in a DIExpression.
 
void salvageDebugInfoForDbgValues (Instruction &I, ArrayRef< DbgVariableIntrinsic * > Insns, ArrayRef< DbgVariableRecord * > DPInsns)
 Implementation of salvageDebugInfo, applying only to instructions in Insns, rather than all debug users from findDbgUsers( I).
 
ValuesalvageDebugInfoImpl (Instruction &I, uint64_t CurrentLocOps, SmallVectorImpl< uint64_t > &Ops, SmallVectorImpl< Value * > &AdditionalValues)
 
bool replaceAllDbgUsesWith (Instruction &From, Value &To, Instruction &DomPoint, DominatorTree &DT)
 Point debug users of From to To or salvage them.
 
bool handleUnreachableTerminator (Instruction *I, SmallVectorImpl< Value * > &PoisonedValues)
 If a terminator in an unreachable basic block has an operand of type Instruction, transform it into poison.
 
std::pair< unsigned, unsignedremoveAllNonTerminatorAndEHPadInstructions (BasicBlock *BB)
 Remove all instructions from a basic block other than its terminator and any present EH pad instructions.
 
unsigned changeToUnreachable (Instruction *I, bool PreserveLCSSA=false, DomTreeUpdater *DTU=nullptr, MemorySSAUpdater *MSSAU=nullptr)
 Insert an unreachable instruction before the specified instruction, making it and the rest of the code in the block dead.
 
BasicBlockchangeToInvokeAndSplitBasicBlock (CallInst *CI, BasicBlock *UnwindEdge, DomTreeUpdater *DTU=nullptr)
 Convert the CallInst to InvokeInst with the specified unwind edge basic block.
 
InstructionremoveUnwindEdge (BasicBlock *BB, DomTreeUpdater *DTU=nullptr)
 Replace 'BB's terminator with one that does not have an unwind successor block.
 
bool removeUnreachableBlocks (Function &F, DomTreeUpdater *DTU=nullptr, MemorySSAUpdater *MSSAU=nullptr)
 Remove all blocks that can not be reached from the function's entry.
 
void combineMetadataForCSE (Instruction *K, const Instruction *J, bool DoesKMove)
 Combine the metadata of two instructions so that K can replace J.
 
void combineAAMetadata (Instruction *K, const Instruction *J)
 Combine metadata of two instructions, where instruction J is a memory access that has been merged into K.
 
void copyMetadataForLoad (LoadInst &Dest, const LoadInst &Source)
 Copy the metadata from the source instruction to the destination (the replacement for the source instruction).
 
void patchReplacementInstruction (Instruction *I, Value *Repl)
 Patch the replacement so that it is not more restrictive than the value being replaced.
 
unsigned replaceNonLocalUsesWith (Instruction *From, Value *To)
 
unsigned replaceDominatedUsesWith (Value *From, Value *To, DominatorTree &DT, const BasicBlockEdge &Edge)
 Replace each use of 'From' with 'To' if that use is dominated by the given edge.
 
unsigned replaceDominatedUsesWith (Value *From, Value *To, DominatorTree &DT, const BasicBlock *BB)
 Replace each use of 'From' with 'To' if that use is dominated by the end of the given BasicBlock.
 
unsigned replaceDominatedUsesWithIf (Value *From, Value *To, DominatorTree &DT, const BasicBlockEdge &Edge, function_ref< bool(const Use &U, const Value *To)> ShouldReplace)
 Replace each use of 'From' with 'To' if that use is dominated by the given edge and the callback ShouldReplace returns true.
 
unsigned replaceDominatedUsesWithIf (Value *From, Value *To, DominatorTree &DT, const BasicBlock *BB, function_ref< bool(const Use &U, const Value *To)> ShouldReplace)
 Replace each use of 'From' with 'To' if that use is dominated by the end of the given BasicBlock and the callback ShouldReplace returns true.
 
bool callsGCLeafFunction (const CallBase *Call, const TargetLibraryInfo &TLI)
 Return true if this call calls a gc leaf function.
 
void copyNonnullMetadata (const LoadInst &OldLI, MDNode *N, LoadInst &NewLI)
 Copy a nonnull metadata node to a new load instruction.
 
void copyRangeMetadata (const DataLayout &DL, const LoadInst &OldLI, MDNode *N, LoadInst &NewLI)
 Copy a range metadata node to a new load instruction.
 
void dropDebugUsers (Instruction &I)
 Remove the debug intrinsic instructions for the given instruction.
 
void hoistAllInstructionsInto (BasicBlock *DomBlock, Instruction *InsertPt, BasicBlock *BB)
 Hoist all of the instructions in the IfBlock to the dominant block DomBlock, by moving its instructions to the insertion point InsertPt.
 
DIExpressiongetExpressionForConstant (DIBuilder &DIB, const Constant &C, Type &Ty)
 Given a constant, create a debug information expression.
 
void remapDebugVariable (ValueToValueMapTy &Mapping, Instruction *Inst)
 Remap the operands of the debug records attached to Inst, and the operands of Inst itself if it's a debug intrinsic.
 
bool recognizeBSwapOrBitReverseIdiom (Instruction *I, bool MatchBSwaps, bool MatchBitReversals, SmallVectorImpl< Instruction * > &InsertedInsts)
 Try to match a bswap or bitreverse idiom.
 
void maybeMarkSanitizerLibraryCallNoBuiltin (CallInst *CI, const TargetLibraryInfo *TLI)
 Given a CallInst, check if it calls a string function known to CodeGen, and mark it with NoBuiltin if so.
 
bool canReplaceOperandWithVariable (const Instruction *I, unsigned OpIdx)
 Given an instruction, is it legal to set operand OpIdx to a non-constant value?
 
ValueinvertCondition (Value *Condition)
 Invert the given true/false value, possibly reusing an existing copy.
 
bool inferAttributesFromOthers (Function &F)
 If we can infer one attribute from another on the declaration of a function, explicitly materialize the maximal set in the IR.
 
template<typename Loc , typename Function , typename AnchorList = ArrayRef<std::pair<Loc, Function>>>
void longestCommonSequence (AnchorList AnchorList1, AnchorList AnchorList2, llvm::function_ref< bool(const Function &, const Function &)> FunctionMatchesProfile, llvm::function_ref< void(Loc, Loc)> InsertMatching)
 
bool canPeel (const Loop *L)
 
bool peelLoop (Loop *L, unsigned PeelCount, LoopInfo *LI, ScalarEvolution *SE, DominatorTree &DT, AssumptionCache *AC, bool PreserveLCSSA, ValueToValueMapTy &VMap)
 VMap is the value-map that maps instructions from the original loop to instructions in the last peeled-off iteration.
 
TargetTransformInfo::PeelingPreferences gatherPeelingPreferences (Loop *L, ScalarEvolution &SE, const TargetTransformInfo &TTI, std::optional< bool > UserAllowPeeling, std::optional< bool > UserAllowProfileBasedPeeling, bool UnrollingSpecficValues=false)
 
void computePeelCount (Loop *L, unsigned LoopSize, TargetTransformInfo::PeelingPreferences &PP, unsigned TripCount, DominatorTree &DT, ScalarEvolution &SE, AssumptionCache *AC=nullptr, unsigned Threshold=UINT_MAX)
 
bool LoopRotation (Loop *L, LoopInfo *LI, const TargetTransformInfo *TTI, AssumptionCache *AC, DominatorTree *DT, ScalarEvolution *SE, MemorySSAUpdater *MSSAU, const SimplifyQuery &SQ, bool RotationOnly, unsigned Threshold, bool IsUtilMode, bool PrepareForLTO=false)
 Convert a loop into a loop with bottom test.
 
bool simplifyLoop (Loop *L, DominatorTree *DT, LoopInfo *LI, ScalarEvolution *SE, AssumptionCache *AC, MemorySSAUpdater *MSSAU, bool PreserveLCSSA)
 Simplify each loop in a loop nest recursively.
 
BasicBlockInsertPreheaderForLoop (Loop *L, DominatorTree *DT, LoopInfo *LI, MemorySSAUpdater *MSSAU, bool PreserveLCSSA)
 InsertPreheaderForLoop - Once we discover that a loop doesn't have a preheader, this method is called to insert one.
 
bool formDedicatedExitBlocks (Loop *L, DominatorTree *DT, LoopInfo *LI, MemorySSAUpdater *MSSAU, bool PreserveLCSSA)
 Ensure that all exit blocks of the loop are dedicated exits.
 
bool formLCSSAForInstructions (SmallVectorImpl< Instruction * > &Worklist, const DominatorTree &DT, const LoopInfo &LI, ScalarEvolution *SE, SmallVectorImpl< PHINode * > *PHIsToRemove=nullptr, SmallVectorImpl< PHINode * > *InsertedPHIs=nullptr)
 Ensures LCSSA form for every instruction from the Worklist in the scope of innermost containing loop.
 
bool formLCSSA (Loop &L, const DominatorTree &DT, const LoopInfo *LI, ScalarEvolution *SE)
 Put loop into LCSSA form.
 
bool formLCSSARecursively (Loop &L, const DominatorTree &DT, const LoopInfo *LI, ScalarEvolution *SE)
 Put a loop nest into LCSSA form.
 
bool sinkRegion (DomTreeNode *, AAResults *, LoopInfo *, DominatorTree *, TargetLibraryInfo *, TargetTransformInfo *, Loop *CurLoop, MemorySSAUpdater &, ICFLoopSafetyInfo *, SinkAndHoistLICMFlags &, OptimizationRemarkEmitter *, Loop *OutermostLoop=nullptr)
 Walk the specified region of the CFG (defined by all blocks dominated by the specified block, and that are in the current loop) in reverse depth first order w.r.t the DominatorTree.
 
bool sinkRegionForLoopNest (DomTreeNode *, AAResults *, LoopInfo *, DominatorTree *, TargetLibraryInfo *, TargetTransformInfo *, Loop *, MemorySSAUpdater &, ICFLoopSafetyInfo *, SinkAndHoistLICMFlags &, OptimizationRemarkEmitter *)
 Call sinkRegion on loops contained within the specified loop in order from innermost to outermost.
 
bool hoistRegion (DomTreeNode *, AAResults *, LoopInfo *, DominatorTree *, AssumptionCache *, TargetLibraryInfo *, Loop *, MemorySSAUpdater &, ScalarEvolution *, ICFLoopSafetyInfo *, SinkAndHoistLICMFlags &, OptimizationRemarkEmitter *, bool, bool AllowSpeculation)
 Walk the specified region of the CFG (defined by all blocks dominated by the specified block, and that are in the current loop) in depth first order w.r.t the DominatorTree.
 
bool isAlmostDeadIV (PHINode *IV, BasicBlock *LatchBlock, Value *Cond)
 Return true if the induction variable IV in a Loop whose latch is LatchBlock would become dead if the exit test Cond were removed.
 
void deleteDeadLoop (Loop *L, DominatorTree *DT, ScalarEvolution *SE, LoopInfo *LI, MemorySSA *MSSA=nullptr)
 This function deletes dead loops.
 
void breakLoopBackedge (Loop *L, DominatorTree &DT, ScalarEvolution &SE, LoopInfo &LI, MemorySSA *MSSA)
 Remove the backedge of the specified loop.
 
bool promoteLoopAccessesToScalars (const SmallSetVector< Value *, 8 > &, SmallVectorImpl< BasicBlock * > &, SmallVectorImpl< BasicBlock::iterator > &, SmallVectorImpl< MemoryAccess * > &, PredIteratorCache &, LoopInfo *, DominatorTree *, AssumptionCache *AC, const TargetLibraryInfo *, TargetTransformInfo *, Loop *, MemorySSAUpdater &, ICFLoopSafetyInfo *, OptimizationRemarkEmitter *, bool AllowSpeculation, bool HasReadsOutsideSet)
 Try to promote memory values to scalars by sinking stores out of the loop and moving loads to before the loop.
 
SmallVector< BasicBlock *, 16 > collectChildrenInLoop (DominatorTree *DT, DomTreeNode *N, const Loop *CurLoop)
 Does a BFS from a given node to all of its children inside a given loop.
 
SmallVector< Instruction *, 8 > findDefsUsedOutsideOfLoop (Loop *L)
 Returns the instructions that use values defined in the loop.
 
std::optional< ElementCountgetOptionalElementCountLoopAttribute (const Loop *TheLoop)
 Find a combination of metadata ("llvm.loop.vectorize.width" and "llvm.loop.vectorize.scalable.enable") for a loop and use it to construct a ElementCount.
 
std::optional< MDNode * > makeFollowupLoopID (MDNode *OrigLoopID, ArrayRef< StringRef > FollowupAttrs, const char *InheritOptionsAttrsPrefix="", bool AlwaysNew=false)
 Create a new loop identifier for a loop created from a loop transformation.
 
bool hasDisableAllTransformsHint (const Loop *L)
 Look for the loop attribute that disables all transformation heuristic.
 
bool hasDisableLICMTransformsHint (const Loop *L)
 Look for the loop attribute that disables the LICM transformation heuristics.
 
void addStringMetadataToLoop (Loop *TheLoop, const char *MDString, unsigned V=0)
 Set input string into loop metadata by keeping other values intact.
 
std::optional< unsignedgetLoopEstimatedTripCount (Loop *L, unsigned *EstimatedLoopInvocationWeight=nullptr)
 Returns a loop's estimated trip count based on branch weight metadata.
 
bool setLoopEstimatedTripCount (Loop *L, unsigned EstimatedTripCount, unsigned EstimatedLoopInvocationWeight)
 Set a loop's branch weight metadata to reflect that loop has EstimatedTripCount iterations and EstimatedLoopInvocationWeight exits through latch.
 
bool hasIterationCountInvariantInParent (Loop *L, ScalarEvolution &SE)
 Check inner loop (L) backedge count is known to be invariant on all iterations of its outer loop.
 
void getLoopAnalysisUsage (AnalysisUsage &AU)
 Helper to consistently add the set of standard passes to a loop pass's AnalysisUsage.
 
bool canSinkOrHoistInst (Instruction &I, AAResults *AA, DominatorTree *DT, Loop *CurLoop, MemorySSAUpdater &MSSAU, bool TargetExecutesOncePerLoop, SinkAndHoistLICMFlags &LICMFlags, OptimizationRemarkEmitter *ORE=nullptr)
 Returns true if is legal to hoist or sink this instruction disregarding the possible introduction of faults.
 
constexpr Intrinsic::ID getReductionIntrinsicID (RecurKind RK)
 Returns the llvm.vector.reduce intrinsic that corresponds to the recurrence kind.
 
unsigned getArithmeticReductionInstruction (Intrinsic::ID RdxID)
 Returns the arithmetic instruction opcode used when expanding a reduction.
 
Intrinsic::ID getMinMaxReductionIntrinsicOp (Intrinsic::ID RdxID)
 Returns the min/max intrinsic used when expanding a min/max reduction.
 
Intrinsic::ID getMinMaxReductionIntrinsicOp (RecurKind RK)
 Returns the min/max intrinsic used when expanding a min/max reduction.
 
RecurKind getMinMaxReductionRecurKind (Intrinsic::ID RdxID)
 Returns the recurence kind used when expanding a min/max reduction.
 
CmpInst::Predicate getMinMaxReductionPredicate (RecurKind RK)
 Returns the comparison predicate used when expanding a min/max reduction.
 
ValuegetReductionIdentity (Intrinsic::ID RdxID, Type *Ty, FastMathFlags FMF)
 Given information about an @llvm.vector.reduce.
 
ValuegetRecurrenceIdentity (RecurKind K, Type *Tp, FastMathFlags FMF)
 Given information about an recurrence kind, return the identity for the @llvm.vector.reduce.
 
ValuecreateMinMaxOp (IRBuilderBase &Builder, RecurKind RK, Value *Left, Value *Right)
 Returns a Min/Max operation corresponding to MinMaxRecurrenceKind.
 
ValuegetOrderedReduction (IRBuilderBase &Builder, Value *Acc, Value *Src, unsigned Op, RecurKind MinMaxKind=RecurKind::None)
 Generates an ordered vector reduction using extracts to reduce the value.
 
ValuegetShuffleReduction (IRBuilderBase &Builder, Value *Src, unsigned Op, TargetTransformInfo::ReductionShuffle RS, RecurKind MinMaxKind=RecurKind::None)
 Generates a vector reduction using shufflevectors to reduce the value.
 
ValuecreateSimpleReduction (IRBuilderBase &B, Value *Src, RecurKind RdxKind)
 Create a reduction of the given vector.
 
ValuecreateSimpleReduction (VectorBuilder &VB, Value *Src, const RecurrenceDescriptor &Desc)
 Overloaded function to generate vector-predication intrinsics for reduction.
 
ValuecreateAnyOfReduction (IRBuilderBase &B, Value *Src, const RecurrenceDescriptor &Desc, PHINode *OrigPhi)
 Create a reduction of the given vector Src for a reduction of the kind RecurKind::IAnyOf or RecurKind::FAnyOf.
 
ValuecreateFindLastIVReduction (IRBuilderBase &B, Value *Src, const RecurrenceDescriptor &Desc)
 Create a reduction of the given vector Src for a reduction of the kind RecurKind::IFindLastIV or RecurKind::FFindLastIV.
 
ValuecreateReduction (IRBuilderBase &B, const RecurrenceDescriptor &Desc, Value *Src, PHINode *OrigPhi=nullptr)
 Create a generic reduction using a recurrence descriptor Desc Fast-math-flags are propagated using the RecurrenceDescriptor.
 
ValuecreateOrderedReduction (IRBuilderBase &B, const RecurrenceDescriptor &Desc, Value *Src, Value *Start)
 Create an ordered reduction intrinsic using the given recurrence descriptor Desc.
 
ValuecreateOrderedReduction (VectorBuilder &VB, const RecurrenceDescriptor &Desc, Value *Src, Value *Start)
 Overloaded function to generate vector-predication intrinsics for ordered reduction.
 
void propagateIRFlags (Value *I, ArrayRef< Value * > VL, Value *OpValue=nullptr, bool IncludeWrapFlags=true)
 Get the intersection (logical and) of all of the potential IR flags of each scalar operation (VL) that will be converted into a vector (I).
 
bool isKnownNegativeInLoop (const SCEV *S, const Loop *L, ScalarEvolution &SE)
 Returns true if we can prove that S is defined and always negative in loop L.
 
bool isKnownNonNegativeInLoop (const SCEV *S, const Loop *L, ScalarEvolution &SE)
 Returns true if we can prove that S is defined and always non-negative in loop L.
 
bool isKnownPositiveInLoop (const SCEV *S, const Loop *L, ScalarEvolution &SE)
 Returns true if we can prove that S is defined and always positive in loop L.
 
bool isKnownNonPositiveInLoop (const SCEV *S, const Loop *L, ScalarEvolution &SE)
 Returns true if we can prove that S is defined and always non-positive in loop L.
 
bool cannotBeMaxInLoop (const SCEV *S, const Loop *L, ScalarEvolution &SE, bool Signed)
 Returns true if S is defined and never is equal to signed/unsigned max.
 
bool cannotBeMinInLoop (const SCEV *S, const Loop *L, ScalarEvolution &SE, bool Signed)
 Returns true if S is defined and never is equal to signed/unsigned min.
 
int rewriteLoopExitValues (Loop *L, LoopInfo *LI, TargetLibraryInfo *TLI, ScalarEvolution *SE, const TargetTransformInfo *TTI, SCEVExpander &Rewriter, DominatorTree *DT, ReplaceExitVal ReplaceExitValue, SmallVector< WeakTrackingVH, 16 > &DeadInsts)
 If the final value of any expressions that are recurrent in the loop can be computed, substitute the exit values from the loop into any instructions outside of the loop that use the final values of the current expressions.
 
void setProfileInfoAfterUnrolling (Loop *OrigLoop, Loop *UnrolledLoop, Loop *RemainderLoop, uint64_t UF)
 Set weights for UnrolledLoop and RemainderLoop based on weights for OrigLoop and the following distribution of OrigLoop iteration among UnrolledLoop and RemainderLoop.
 
template<typename RangeT >
void appendLoopsToWorklist (RangeT &&, SmallPriorityWorklist< Loop *, 4 > &)
 Utility that implements appending of loops onto a worklist given a range.
 
template<typename RangeT >
void appendReversedLoopsToWorklist (RangeT &&, SmallPriorityWorklist< Loop *, 4 > &)
 Utility that implements appending of loops onto a worklist given a range.
 
void appendLoopsToWorklist (LoopInfo &, SmallPriorityWorklist< Loop *, 4 > &)
 Utility that implements appending of loops onto a worklist given LoopInfo.
 
LoopcloneLoop (Loop *L, Loop *PL, ValueToValueMapTy &VM, LoopInfo *LI, LPPassManager *LPM)
 Recursively clone the specified loop and all of its children, mapping the blocks with the specified map.
 
ValueaddRuntimeChecks (Instruction *Loc, Loop *TheLoop, const SmallVectorImpl< RuntimePointerCheck > &PointerChecks, SCEVExpander &Expander, bool HoistRuntimeChecks=false)
 Add code that checks at runtime if the accessed arrays in PointerChecks overlap.
 
ValueaddDiffRuntimeChecks (Instruction *Loc, ArrayRef< PointerDiffInfo > Checks, SCEVExpander &Expander, function_ref< Value *(IRBuilderBase &, unsigned)> GetVF, unsigned IC)
 
std::optional< IVConditionInfohasPartialIVCondition (const Loop &L, unsigned MSSAThreshold, const MemorySSA &MSSA, AAResults &AA)
 Check if the loop header has a conditional branch that is not loop-invariant, because it involves load instructions.
 
bool lowerAtomicCmpXchgInst (AtomicCmpXchgInst *CXI)
 Convert the given Cmpxchg into primitive load and compare.
 
std::pair< Value *, Value * > buildCmpXchgValue (IRBuilderBase &Builder, Value *Ptr, Value *Cmp, Value *Val, Align Alignment)
 Emit IR to implement the given cmpxchg operation on values in registers, returning the new value.
 
bool lowerAtomicRMWInst (AtomicRMWInst *RMWI)
 Convert the given RMWI into primitive load and stores, assuming that doing so is legal.
 
ValuebuildAtomicRMWValue (AtomicRMWInst::BinOp Op, IRBuilderBase &Builder, Value *Loaded, Value *Val)
 Emit IR to implement the given atomicrmw operation on values in registers, returning the new value.
 
void createMemCpyLoopUnknownSize (Instruction *InsertBefore, Value *SrcAddr, Value *DstAddr, Value *CopyLen, Align SrcAlign, Align DestAlign, bool SrcIsVolatile, bool DstIsVolatile, bool CanOverlap, const TargetTransformInfo &TTI, std::optional< unsigned > AtomicSize=std::nullopt)
 Emit a loop implementing the semantics of llvm.memcpy where the size is not a compile-time constant.
 
void createMemCpyLoopKnownSize (Instruction *InsertBefore, Value *SrcAddr, Value *DstAddr, ConstantInt *CopyLen, Align SrcAlign, Align DestAlign, bool SrcIsVolatile, bool DstIsVolatile, bool CanOverlap, const TargetTransformInfo &TTI, std::optional< uint32_t > AtomicCpySize=std::nullopt)
 Emit a loop implementing the semantics of an llvm.memcpy whose size is a compile time constant.
 
void expandMemCpyAsLoop (MemCpyInst *MemCpy, const TargetTransformInfo &TTI, ScalarEvolution *SE=nullptr)
 Expand MemCpy as a loop. MemCpy is not deleted.
 
bool expandMemMoveAsLoop (MemMoveInst *MemMove, const TargetTransformInfo &TTI)
 Expand MemMove as a loop.
 
void expandMemSetAsLoop (MemSetInst *MemSet)
 Expand MemSet as a loop. MemSet is not deleted.
 
void expandMemSetPatternAsLoop (MemSetPatternInst *MemSet)
 Expand MemSetPattern as a loop. MemSet is not deleted.
 
void expandAtomicMemCpyAsLoop (AtomicMemCpyInst *AtomicMemCpy, const TargetTransformInfo &TTI, ScalarEvolution *SE)
 Expand AtomicMemCpy as a loop. AtomicMemCpy is not deleted.
 
void appendToGlobalCtors (Module &M, Function *F, int Priority, Constant *Data=nullptr)
 Append F to the list of global ctors of module M with the given Priority.
 
void appendToGlobalDtors (Module &M, Function *F, int Priority, Constant *Data=nullptr)
 Same as appendToGlobalCtors(), but for global dtors.
 
void transformGlobalCtors (Module &M, const GlobalCtorTransformFn &Fn)
 
void transformGlobalDtors (Module &M, const GlobalCtorTransformFn &Fn)
 
void setKCFIType (Module &M, Function &F, StringRef MangledType)
 Sets the KCFI type for the function.
 
FunctionCallee declareSanitizerInitFunction (Module &M, StringRef InitName, ArrayRef< Type * > InitArgTypes, bool Weak=false)
 
FunctioncreateSanitizerCtor (Module &M, StringRef CtorName)
 Creates sanitizer constructor function.
 
std::pair< Function *, FunctionCalleecreateSanitizerCtorAndInitFunctions (Module &M, StringRef CtorName, StringRef InitName, ArrayRef< Type * > InitArgTypes, ArrayRef< Value * > InitArgs, StringRef VersionCheckName=StringRef(), bool Weak=false)
 Creates sanitizer constructor function, and calls sanitizer's init function from it.
 
std::pair< Function *, FunctionCalleegetOrCreateSanitizerCtorAndInitFunctions (Module &M, StringRef CtorName, StringRef InitName, ArrayRef< Type * > InitArgTypes, ArrayRef< Value * > InitArgs, function_ref< void(Function *, FunctionCallee)> FunctionsCreatedCallback, StringRef VersionCheckName=StringRef(), bool Weak=false)
 Creates sanitizer constructor function lazily.
 
bool nameUnamedGlobals (Module &M)
 Rename all the anon globals in the module using a hash computed from the list of public globals in the module.
 
void appendToUsed (Module &M, ArrayRef< GlobalValue * > Values)
 Adds global values to the llvm.used list.
 
void appendToCompilerUsed (Module &M, ArrayRef< GlobalValue * > Values)
 Adds global values to the llvm.compiler.used list.
 
void removeFromUsedLists (Module &M, function_ref< bool(Constant *)> ShouldRemove)
 Removes global values from the llvm.used and llvm.compiler.used arrays.
 
void filterDeadComdatFunctions (