LLVM 19.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  AArch64PRCTX
 
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  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  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  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  MISchedPostRASched
 
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  NVPTXCC
 
namespace  NVPTXII
 
namespace  NVPTXISD
 
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  RISCVISD
 
namespace  RISCVLoadFPImm
 
namespace  RISCVMatInt
 
namespace  RISCVOp
 
namespace  RISCVRI
 
namespace  RISCVRVC
 
namespace  RISCVSysReg
 
namespace  RISCVTuneInfoTable
 
namespace  RISCVVIntrinsicsTable
 
namespace  RISCVVPseudosTable
 
namespace  RISCVVType
 
namespace  RISCVZC
 
namespace  RTLIB
 
namespace  safestack
 
namespace  sampleprof
 
namespace  sampleprofutil
 
namespace  ScaledNumbers
 
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  SPCC
 
namespace  SPII
 SPII - This namespace holds all of the target specific flags that instruction info tracks.
 
namespace  SPIRV
 Lowers a builtin funtion call using the provided DemangledCall skeleton and external instruction Set.
 
namespace  SPISD
 
namespace  support
 
namespace  SwitchCG
 
namespace  symbolize
 
namespace  SymbolRewriter
 
namespace  SyncScope
 
namespace  sys
 
namespace  SystemZ
 
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  tgtok
 
namespace  ThreadModel
 
namespace  tlshoist
 A private "module" namespace for types and utilities used by TLSVariableHoist.
 
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  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  AArch64LoopIdiomTransformPass
 
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  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  AMDGPUArgumentUsageInfo
 
class  AMDGPUAsmPrinter
 
struct  AMDGPUAtomicOptimizerPass
 
class  AMDGPUAttributorPass
 
class  AMDGPUCallLowering
 
class  AMDGPUCodeGenPreparePass
 
class  AMDGPUCtorDtorLoweringPass
 Lower llvm.global_ctors and llvm.global_dtors to special kernels. More...
 
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  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  AMDGPUMIRFormatter
 
class  AMDGPUPALMetadata
 
class  AMDGPUPassConfig
 
struct  AMDGPUPerfHintAnalysis
 
struct  AMDGPUPrintfRuntimeBindingPass
 
struct  AMDGPUPromoteAllocaPass
 
struct  AMDGPUPromoteAllocaToVectorPass
 
struct  AMDGPUPromoteKernelArgumentsPass
 
class  AMDGPUPseudoSourceValue
 
class  AMDGPURegBankSelect
 
class  AMDGPURegisterBankInfo
 
struct  AMDGPUResourceUsageAnalysis
 
class  AMDGPURewriteUndefForPHIPass
 
struct  AMDGPUSimplifyLibCallsPass
 
class  AMDGPUSubtarget
 
class  AMDGPUSymbolizer
 
class  AMDGPUTargetAsmStreamer
 
class  AMDGPUTargetELFStreamer
 
class  AMDGPUTargetLowering
 
class  AMDGPUTargetMachine
 
class  AMDGPUTargetObjectFile
 
class  AMDGPUTargetStreamer
 
class  AMDGPUTTIImpl
 
class  AMDGPUUnifyDivergentExitNodesPass
 
struct  AMDGPUUnifyMetadataPass
 
class  AMDGPUUnmangledLibFunc
 
struct  AMDGPUUseNativeCallsPass
 
class  AMDGPUVariadicMCExpr
 AMDGPU target specific variadic MCExpr operations. More...
 
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  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  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  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  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  BlotMapVector
 An associative container with fast insertion-order (deterministic) iteration over its elements. More...
 
struct  Bonus
 
struct  BooleanState
 Simple wrapper for a single bit (boolean) state. More...
 
struct  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  CaptureInfo
 Virtual base class for providers of capture information. 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
 
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  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  CodeGenPassBuilder
 This class provides access to building LLVM's passes. More...
 
class  CodeGenPreparePass
 
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
 
class  CompareConstantExpr
 
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
 
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  ConstantFPSDNode
 
class  ConstantHoistingPass
 
struct  ConstantInfo
 
struct  ConstantInfo< ConstantArray >
 
struct  ConstantInfo< ConstantExpr >
 
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  ConstantRange
 This class represents a range of values. More...
 
class  ConstantRangeAttributeImpl
 
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...
 
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...
 
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...
 
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 instruction. More...
 
class  CoroBeginInst
 This class represents the llvm.coro.begin instruction. 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
 
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
 Printer pass for the DominatorTree. More...
 
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...
 
struct  DataRegionData
 
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...
 
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  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
 
struct  DelimitedScope
 
struct  DelinearizationPrinterPass
 
class  DeltaAlgorithm
 DeltaAlgorithm - Implements the delta debugging algorithm (A. 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< CIEKey >
 
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< 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< 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< 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< ScalarEvolution::FoldID >
 
struct  DenseMapInfo< SDValue >
 
struct  DenseMapInfo< short >
 
struct  DenseMapInfo< SimpleValue >
 
struct  DenseMapInfo< SlotWithTag >
 
struct  DenseMapInfo< SmallBitVector >
 
struct  DenseMapInfo< SpecSig >
 
struct  DenseMapInfo< SPIRV::SpecialTypeDescriptor >
 
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  DiagnosticInfoIgnoringInvalidDebugMetadata
 Diagnostic information for stripping invalid debug metadata. More...
 
class  DiagnosticInfoInlineAsm
 Diagnostic information for inline asm 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  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 * >
 
class  DOTGraphTraitsModulePrinterWrapperPass
 
class  DOTGraphTraitsModuleViewerWrapperPass
 
struct  DOTGraphTraitsPrinter
 
class  DOTGraphTraitsPrinterWrapperPass
 
struct  DOTGraphTraitsViewer
 
class  DOTGraphTraitsViewerWrapperPass
 
class  DOTMachineFuncInfo
 
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  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
 
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  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  DXILIntrinsicExpansion
 A pass that transforms DXIL Intrinsics that don't have DXIL opCodes. More...
 
class  DXILIntrinsicExpansionLegacy
 
class  DXILResourceAnalysis
 Analysis pass that exposes the DXILResource for a module. More...
 
class  DXILResourcePrinterPass
 Printer pass for the DXILResourceAnalysis results. More...
 
class  DXILResourceWrapper
 The legacy pass manager's analysis pass to compute DXIL resource information. More...
 
class  DXILUpgradePass
 Upgrade DXIL-style metadata into their LLVM representations. More...
 
class  EarliestEscapeInfo
 Context-sensitive CaptureInfo 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  ECError
 This class wraps a std::error_code in a Error. More...
 
class  EdgeBundles
 
class  EHStreamer
 Emits exception handling directives. More...
 
class  ElementCount
 
struct  ElementCountComparator
 ElementCountComparator creates a total ordering for ElementCount for the purposes of using it in a set structure. More...
 
class  ELFAttributeParser
 
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...
 
class  EmptyData
 
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  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  ExpandVectorPredicationPass
 
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...
 
struct  ExtraSimpleLoopUnswitchPassManager
 
struct  ExtraVectorPassManager
 A pass manager to run a set of extra function simplification passes after vectorization, if requested. 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...
 
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...
 
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
 
struct  FmtAlign
 
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  FreeMachineFunctionPass
 
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...
 
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  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  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  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  GCNHazardRecognizer
 
class  GCNIterativeScheduler
 
class  GCNMaxILPSchedStrategy
 The goal of this scheduling strategy is to maximize ILP for a single wave (i.e. 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  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  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  GExtractVectorElement
 Represents an extract vector element. More...
 
class  GFBinOp
 Represents a floating point binary operation. More...
 
class  GFCmp
 Represent a G_FCMP. More...
 
class  GFreeze
 Represents a freeze. More...
 
class  GICmp
 Represent a G_ICMP. 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  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
 
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, 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  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< 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< 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  GSExtLoad
 Represents a G_SEXTLOAD. More...
 
class  GStore
 Represents a G_STORE. More...
 
struct  GuardWideningPass
 
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  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
 
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
 
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  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
 
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< IndexListEntry >
 
struct  ilist_alloc_traits< Instruction >
 
struct  ilist_alloc_traits< MachineBasicBlock >
 
struct  ilist_alloc_traits< MCFragment >
 
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_base< false >
 
class  ilist_node_base< true >
 
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...
 
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...
 
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  IndexedInstrProfReader
 Reader for the indexed binary instrprof format. More...
 
struct  IndexedLoadStoreMatchInfo
 
class  IndexedMap
 
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...
 
struct  IndirectSymbolData
 
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...
 
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  InnerLoopUnroller
 
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  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  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  InstrProfMCDCCondBitmapUpdate
 This represents the llvm.instrprof.mcdc.condbitmap.update 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...
 
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 >
 
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...
 
struct  LayoutAlignElem
 Layout alignment element. 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  LiveInterval
 LiveInterval - This class represents the liveness of a register, or stack slot. More...
 
class  LiveIntervalCalc
 
class  LiveIntervals
 
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  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  LiveVariables
 
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...
 
class  LLVMTargetMachine
 This class describes a target machine that is implemented with the LLVM target-independent code generator. 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  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...
 
class  LoongArchAsmBackend
 
class  LoongArchAsmPrinter
 
class  LoongArchDAGToDAGISel
 
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  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  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  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
 
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  MachineBlockFrequencyInfo
 MachineBlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation to estimate machine basic block frequencies. More...
 
class  MachineBranchProbabilityInfo
 
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  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...
 
struct  MachineDomTreeGraphTraitsBase
 DominatorTree GraphTraits specialization so the DominatorTree can be iterable by generic graph iterators. More...
 
class  MachineFrameInfo
 The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted. More...
 
class  MachineFunction
 
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  MachineLocation
 
class  MachineLoop
 
class  MachineLoopInfo
 
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  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  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  MachineUniformityAnalysisPass
 Legacy analysis pass which computes a MachineUniformityInfo. More...
 
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  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
 
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  MCAsmLayout
 Encapsulates the layout of an assembly file at a particular point in time. More...
 
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  MCCompactEncodedInstFragment
 This is a compact (memory-size-wise) fragment for holding an encoded instruction (non-relaxable) that has no fixups registered. 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  MCEncodedFragmentWithContents
 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...
 
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
 
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  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  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
 
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  Mips16FrameLowering
 
class  Mips16InstrInfo
 
class  Mips16RegisterInfo
 
class  Mips16TargetLowering
 
struct  MipsABIFlagsSection
 
class  MipsABIInfo
 
class  MipsAnalyzeImmediate
 
class  MipsAsmBackend
 
class  MipsAsmPrinter
 
class  MipsCallLowering
 
class  MipsCCState
 
class  MipsDAGToDAGISel
 
class  MipsebTargetMachine
 Mips32/64 big endian target machine. More...
 
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  MipsMCAsmInfo
 
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  MipsSEFrameLowering
 
class  MipsSEInstrInfo
 
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  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  ModuleToMachineFunctionPassAdaptor
 
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  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...
 
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
 
class  NVPTXCtorDtorLoweringPass
 Lower llvm.global_ctors and llvm.global_dtors to special kernels. More...
 
class  NVPTXDAGToDAGISel
 
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
 
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  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< CompareConstantExpr >
 
struct  OperandTraits< ConstantAggregate >
 
struct  OperandTraits< ConstantExpr >
 
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...
 
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  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  ParseStatus
 Ternary parse status returned by various parse* methods. More...
 
class  PartialInlinerPass
 Pass to remove unused function declarations. More...
 
class  PartiallyInlineLibCallsPass
 
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...
 
class  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...
 
struct  PerFunctionMIParsingState
 
struct  PerTargetMIParsingState
 
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  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  PhysicalRegisterUsageInfo
 
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  PointerAlignElem
 Layout pointer alignment element. More...
 
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  PoisonCheckingPass
 
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  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  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...
 
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...
 
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  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...
 
struct  RegionTraits
 
struct  RegionTraits< Function >
 
struct  RegionTraits< MachineFunction >
 
class  Register
 Wrapper class representing virtual and physical registers. More...
 
class  RegisterAGBase
 RegisterAnalysisGroup - Register a Pass as a member of an analysis group. More...
 
struct  RegisterAnalysisGroup
 
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
 
struct  RegTraits
 
class  ReleaseModeModelRunner
 ReleaseModeModelRunner - production mode implementation of the MLModelRunner. More...
 
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  RepeatedPass
 A utility pass template that simply runs another pass multiple times. More...
 
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
 
struct  RewriteStatepointsForGC
 
class  RewriteSymbolPass
 
class  RGPassManager
 The pass manager to schedule RegionPasses. More...
 
class  RISCVAsmBackend
 
class  RISCVAttributeParser
 
class  RISCVCallLowering
 
class  RISCVDAGToDAGISel
 
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  RISCVSubtarget
 
class  RISCVTargetAsmStreamer
 
class  RISCVTargetELFStreamer
 
class  RISCVTargetLowering
 
class  RISCVTargetMachine
 
class  RISCVTargetStreamer
 
class  RISCVTTIImpl
 
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...
 
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  RVVArgDispatcher
 As per the spec, the rules for passing vector arguments are as follows: 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
 
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  SelectionDAGTargetInfo
 Targets can subclass this to parameterize the SelectionDAG lowering and instruction selection process. More...
 
class  SelectOptimizePass
 
struct  SelectPatternResult
 
class  SeparateConstOffsetFromGEPPass
 
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  ShouldRunExtraSimpleLoopUnswitch
 
struct  ShouldRunExtraVectorPasses
 A marker to determine if extra passes after loop vectorization should be run. 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  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  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 SimpleCaptureInfo. More...
 
class  SimpleBitstreamCursor
 This represents a position within a bitstream. More...
 
class  SimpleCaptureInfo
 Context-free CaptureInfo 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...
 
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  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...
 
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  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  SPIRVCallLowering
 
class  SPIRVConvergenceRegionAnalysis
 
class  SPIRVConvergenceRegionAnalysisWrapperPass
 
class  SPIRVDuplicatesTracker
 
class  SPIRVDuplicatesTracker< SPIRV::SpecialTypeDescriptor >
 
class  SPIRVDuplicatesTrackerBase
 
struct  SPIRVExtensionsParser
 Command line parser for toggling SPIR-V extensions. More...
 
class  SPIRVFrameLowering
 
class  SPIRVGeneralDuplicatesTracker
 
class  SPIRVGenRegisterBankInfo
 
class  SPIRVGlobalRegistry
 
class  SPIRVInstPrinter
 
class  SPIRVInstrInfo
 
class  SPIRVLegalizerInfo
 
class  SPIRVMachineModuleInfo
 
class  SPIRVMCAsmInfo
 
class  SPIRVMCInstLower
 
struct  SPIRVModuleAnalysis
 
class  SPIRVRegisterBankInfo
 
struct  SPIRVRegisterInfo
 
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
 
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  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  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  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  SyntheticCountsPropagation
 
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  SystemZHazardRecognizer
 SystemZHazardRecognizer maintains the state for one MBB during scheduling. More...
 
class  SystemZInstPrinter
 
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  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...
 
struct  TargetMachineBuilder
 Helper to gather options relevant to the target machine creation. 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  TextInstrProfReader
 Reader for the simple text based instrprof format. More...
 
class  TFModelEvaluator
 
class  TGLexer
 TGLexer - TableGen Lexer class. More...
 
class  TGParser
 
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...
 
struct  ThreadSanitizerPass
 A function pass for tsan instrumentation. More...
 
class  Thumb1FrameLowering
 
class  Thumb1InstrInfo
 
class  Thumb2InstrInfo
 
struct  ThumbRegisterInfo
 
class  ThunkInserter
 
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  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  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...
 
class  TLSVariableHoistPass
 
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...
 
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...
 
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  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  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  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
 
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  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  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...
 
struct  VPIteration
 VPIteration represents a single point in the iteration space of the output (vectorized and/or unrolled) IR loop. 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  VPLiveOut
 A value that is used outside the VPlan. More...
 
class  VPLoadSDNode
 This class is used to represent a VP_LOAD node. 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  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  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  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  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 for all parts. More...
 
class  VPWidenCallRecipe
 A recipe for widening Call instructions. 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  VPWidenGEPRecipe
 A recipe for handling GEP instructions. More...
 
class  VPWidenIntOrFpInductionRecipe
 A recipe for handling phi nodes of integer and floating-point inductions, producing their vector values. 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 copy of vector type its ingredient. More...
 
struct  VPWidenSelectRecipe
 A recipe for widening select instructions. 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  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  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
 
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  XtensaFrameLowering
 
class  XtensaInstPrinter
 
class  XtensaInstrInfo
 
class  XtensaMCAsmBackend
 
class  XtensaMCAsmInfo
 
class  XtensaMCExpr
 
struct  XtensaRegisterInfo
 
class  XtensaSubtarget
 
class  XtensaTargetLowering
 
class  XtensaTargetMachine
 
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 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 = int64_t
 
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 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 *&)>
 Parameters (see the expansion example below): (the builder, addr, loaded, new_val, ordering, /* OUT ‍/ success, / OUT *‍/ new_loaded)
 
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 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 MachineConvergenceVerifier = GenericConvergenceVerifier< MachineSSAContext >
 
using MachineCycleInfo = GenericCycleInfo< MachineSSAContext >
 
using MachineCycle = MachineCycleInfo::CycleT
 
using MachineDomTree = DomTreeBase< MachineBasicBlock >
 
using MachineFunctionAnalysisManager = AnalysisManager< MachineFunction >
 
using MachineFunctionAnalysisManagerModuleProxy = InnerAnalysisManagerProxy< MachineFunctionAnalysisManager, Module >
 
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 UniquingStringPool = StrongType< NonRelocatableStringpool, UniqueTag >
 
using OffsetsStringPool = StrongType< NonRelocatableStringpool, OffsetsTag >
 
using PBQPRAGraph = PBQP::RegAlloc::PBQPRAGraph
 
typedef std::function< bool(const TargetRegisterInfo &TRI, const TargetRegisterClass &RC)> RegClassFilterFunc
 
using RegUnit2SUnitsMap = SparseMultiSet< PhysRegSUOper, identity< unsigned >, uint16_t >
 Use a SparseMultiSet to track physical registers.
 
using VReg2SUnitMap = SparseSet< VReg2SUnit, VirtReg2IndexFunctor >
 Use SparseSet as a SparseMap by relying on the fact that it never compares ValueT's, only unsigned keys.
 
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 TypeIdSummaryMapTy = std::multimap< GlobalValue::GUID, std::pair< std::string, 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 ModuleAnalysisManager = AnalysisManager< Module >
 Convenience typedef for the Module analysis manager.
 
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 IRHash = uint64_t
 
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 GUIDProbeFunctionMap = std::unordered_map< uint64_t, MCPseudoProbeFuncDesc >
 
using AddressProbesMap = std::unordered_map< uint64_t, std::list< MCDecodedPseudoProbe > >
 
using MCPseduoProbeFrameLocation = 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 *, const MCExpr * >
 
using AnalysisID = const void *
 
using RawInstrProfReader32 = RawInstrProfReader< uint32_t >
 
using RawInstrProfReader64 = RawInstrProfReader< uint64_t >
 
using OnDiskHashTableImplV3 = OnDiskIterableChainedHashTable< InstrProfLookupTrait >
 
using MemProfRecordHashTable = OnDiskIterableChainedHashTable< memprof::RecordLookupTrait >
 
using MemProfFrameHashTable = OnDiskIterableChainedHashTable< memprof::FrameLookupTrait >
 
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 FileCache = std::function< Expected< AddStreamFn >(unsigned Task, StringRef Key, const Twine &ModuleName)>
 This is the type of a file cache.
 
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 >
 
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, RecordKeeper &Records)
 Perform the action using Records, and write output to OS.
 
using ArgAuxType = std::variant< unsigned, 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 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 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 >
 
using CapabilityList = SmallVector< SPIRV::Capability::Capability, 8 >
 
using ExtensionList = SmallVector< SPIRV::Extension::Extension, 8 >
 
using SPIRVType = const MachineInstr
 
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 ElementCountSet = SmallSet< ElementCount, 16, ElementCountComparator >
 
using InstructionVFPair = std::pair< Instruction *, ElementCount >
 
using VPlanPtr = std::unique_ptr< VPlan >
 
using VPDominatorTree = DomTreeBase< VPBlockBase >
 Template specialization of the standard LLVM dominator tree utility for VPBlockBases.
 
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 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
}
 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  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 class  VariableID : unsigned { Reserved = 0 }
 Type wrapper for integer ID for Variables. 0 is reserved. More...
 
enum class  ComplexDeinterleavingOperation {
  CAdd , CMulPartial , Deinterleave , Splat ,
  Symmetric , ReductionPHI , ReductionOperation , ReductionSelect
}
 
enum class  ComplexDeinterleavingRotation { Rotation_0 = 0 , Rotation_90 = 1 , Rotation_180 = 2 , Rotation_270 = 3 }
 
enum  CombineLevel { BeforeLegalizeTypes , AfterLegalizeTypes , AfterLegalizeVectorOps , AfterLegalizeDAG }
 
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_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_CheckType ,
  GIM_CheckPointerToAny , GIM_CheckRegBankForClass , GIM_CheckComplexPattern , GIM_CheckConstantInt ,
  GIM_CheckConstantInt8 , GIM_CheckLiteralInt , GIM_CheckIntrinsicID , GIM_CheckCmpPredicate ,
  GIM_CheckIsMBB , GIM_CheckIsImm , GIM_CheckIsSafeToFold , GIM_CheckIsSameOperand ,
  GIM_CheckIsSameOperandIgnoreCopies , GIM_CheckCanReplaceReg , GIM_MIFlags , GIM_MIFlagsNot ,
  GIM_RecordNamedOperand , GIM_RecordRegType , GIM_Reject , GIR_MutateOpcode ,
  GIR_BuildMI , GIR_BuildConstant , GIR_Copy , 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_CustomAction ,
  GIR_CustomOperandRenderer , GIR_CopyConstantAsSImm , GIR_CopyFConstantAsFPImm , GIR_ConstrainOperandRC ,
  GIR_ConstrainSelectedInstOperands , GIR_MergeMemOperands , GIR_EraseFromParent , 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 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  AlignTypeEnum { INTEGER_ALIGN = 'i' , VECTOR_ALIGN = 'v' , FLOAT_ALIGN = 'f' , AGGREGATE_ALIGN = 'a' }
 Enum used to categorize the alignment types stored by LayoutAlignElem. More...
 
enum  DiagnosticSeverity : char { DS_Error , DS_Warning , DS_Remark , DS_Note }
 Defines the different supported severity of a diagnostic. More...
 
enum  DiagnosticKind {
  DK_InlineAsm , DK_ResourceLimit , DK_StackSize , DK_Linker ,
  DK_Lowering , DK_DebugMetadataVersion , DK_DebugMetadataInvalid , 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
}
 
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 , 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
}
 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 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 }
 
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) , 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 { Empty , 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  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  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 , Labels , 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  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  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  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 }
 
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
}
 
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  AddressSpace {
  ADDRESS_SPACE_GENERIC = 0 , ADDRESS_SPACE_GLOBAL = 1 , ADDRESS_SPACE_SHARED = 3 , ADDRESS_SPACE_CONST = 4 ,
  ADDRESS_SPACE_LOCAL = 5 , ADDRESS_SPACE_PARAM = 101
}
 
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  SystemZAsmDialect { AD_ATT = 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 , 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
}
 
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 maximum (const APFloat &A, const APFloat &B)
 Implements IEEE 754-2019 maximum semantics.
 
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)
 
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.
 
void set_fixed_execution_hash_seed (uint64_t fixed_value)
 Override the execution seed with a fixed value.
 
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 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)
 
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 (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)
 
template<typename InputIteratorT >
stable_hash stable_hash_combine_range (InputIteratorT First, InputIteratorT Last)
 Compute a stable_hash for a sequence of values.
 
stable_hash stable_hash_combine_array (const stable_hash *P, size_t C)
 
stable_hash stable_hash_combine_string (const StringRef &S)
 
stable_hash stable_hash_combine_string (const char *C)
 
void EnableStatistics (bool DoPrintOnExit=true)
 Enable the collection and printing of statistics.
 
bool AreStatisticsEnabled ()
 Check if statistics are enabled.
 
std::unique_ptr< raw_fd_ostreamCreateInfoOutputFile ()
 Return a file 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)
 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 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)
 
template<typename R , typename Compare >
auto min_element (R &&Range, Compare C)
 
template<typename R >
auto max_element (R &&Range)
 
template<typename R , typename Compare >
auto max_element (R &&Range, Compare C)
 
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 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 ValueType >
void erase_value (Container &C, ValueType V)
 
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 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 (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 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.
 
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.
 
bool decomposeBitTestICmp (Value *LHS, Value *RHS, CmpInst::Predicate &Pred, Value *&X, APInt &Mask, bool LookThroughTrunc=true)
 Decompose an icmp into the form ((X & Mask) pred 0) 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)
 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)
 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)
 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)
 
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, 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, 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, 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 (unsigned Predicate, Value *LHS, Value *RHS, const SimplifyQuery &Q)
 Given operands for an ICmpInst, fold the result or return null.
 
ValuesimplifyFCmpInst (unsigned 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, bool InBounds, 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 (unsigned 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, APInt &Size, const DataLayout &DL, Instruction *ScanFrom=nullptr, 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)
 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 isSafeToLoadUnconditionally (Value *V, Type *Ty, Align Alignment, const DataLayout &DL, Instruction *ScanFrom=nullptr, 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.
 
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 (Value *A, Value *B, const DataLayout &DL, Instruction *CtxI)
 Returns true if a pointer value A can be replace with another pointer value \B if they are deemed equal through some means (e.g.
 
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.
 
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).
 
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 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)
 Return true if the two given values are negation.
 
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 &DL, 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 &DL, 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, FastMathFlags FMF, FPClassTest InterestedClasses, unsigned Depth, const SimplifyQuery &SQ)
 Wrapper to account for known fast math flags at the use instruction.
 
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 and pointer casts from the specified value, returning the original object being addressed.
 
ValuegetUnderlyingObject (Value *V, unsigned MaxLookup=6)
 
void getUnderlyingObjects (const Value *V, SmallVectorImpl< const Value * > &Objects, 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 mustSuppressSpeculation (const LoadInst &LI)
 Return true if speculation of the given load must be suppressed to avoid ordering or interfering with an active sanitizer.
 
bool isSafeToSpeculativelyExecute (const Instruction *I, const Instruction *CtxI=nullptr, AssumptionCache *AC=nullptr, const DominatorTree *DT=nullptr, const TargetLibraryInfo *TLI=nullptr)
 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 isSafeToSpeculativelyExecuteWithOpcode (unsigned Opcode, const Instruction *Inst, const Instruction *CtxI=nullptr, AssumptionCache *AC=nullptr, const DominatorTree *DT=nullptr, const TargetLibraryInfo *TLI=nullptr)
 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)
 
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.
 
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.
 
CmpInst::Predicate getMinMaxPred (SelectPatternFlavor SPF, bool Ordered=false)
 Return the canonical comparison predicate for the specified minimum/maximum flavor.
 
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, CmpInst::Predicate 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 (CmpInst::Predicate 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.
 
TypeToVectorTy (Type *Scalar, ElementCount EC)
 A helper function for converting Scalar types to vector types.
 
TypeToVectorTy (Type *Scalar, unsigned VF)
 
bool isTriviallyVectorizable (Intrinsic::ID ID)
 Identify if the intrinsic is trivially vectorizable.
 
bool isVectorIntrinsicWithScalarOpAtArg (Intrinsic::ID ID, unsigned ScalarOpdIdx)
 Identifies if the vector form of the intrinsic has a scalar operand.
 
bool isVectorIntrinsicWithOverloadTypeAtArg (Intrinsic::ID ID, int OpdIdx)
 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.
 
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.
 
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.
 
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].
 
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.
 
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 std::map< std::string, GVSummaryMapTy > *ModuleToSummariesForIndex=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.
 
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)
 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)
 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.
 
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)
 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.
 
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)
 
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.
 
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.
 
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.
 
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.
 
bool shouldOptForSize (const MachineBasicBlock &MBB, ProfileSummaryInfo *PSI, BlockFrequencyInfo *BFI)
 Returns true if the given block should be optimized for size.
 
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.
 
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, const DataLayout &DL, 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)
 
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, 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 MachineFunctionPassT >
ModuleToMachineFunctionPassAdaptor createModuleToMachineFunctionPassAdaptor (MachineFunctionPassT &&Pass)
 
 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.
 
unsigned succ_size (const MachineBasicBlock *BB)
 
unsigned pred_size (const MachineBasicBlock *BB)
 
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 MachineDomTree &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 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.
 
void splitCodeGen (Module &M, ArrayRef< raw_pwrite_stream * > OSs, ArrayRef< llvm::raw_pwrite_stream * > BCOSs, const std::function< std::unique_ptr< TargetMachine >()> &TMFactory, CodeGenFileType FileType=CodeGenFileType::ObjectFile, bool PreserveLocals=false)
 Split M into OSs.size() partitions, and generate code for each.
 
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 (RegClassFilterFunc F, bool ClearVirtRegs)
 
FunctionPasscreateBasicRegisterAllocator ()
 BasicRegisterAllocation Pass - This pass implements a degenerate global register allocator using the basic regalloc framework.
 
FunctionPasscreateBasicRegisterAllocator (RegClassFilterFunc F)
 
FunctionPasscreateGreedyRegisterAllocator ()
 Greedy register allocation pass - This pass implements a global register allocator for optimized builds.
 
FunctionPasscreateGreedyRegisterAllocator (RegClassFilterFunc 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)
 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.
 
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 ()
 
FunctionPasscreateExpandVectorPredicationPass ()
 This pass expands the vector predication intrinsics into unpredicated instructions with selects or just the explicit vector length into the predicate mask.
 
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)
 
static bool allocateAllRegClasses (const TargetRegisterInfo &, const TargetRegisterClass &)
 Default register class filter function for register allocation.
 
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)
 
bool isNullConstant (SDValue V)
 Returns true if V is a constant integer zero.
 
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 (MachineFunctionPass &Pass, 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, LLVMTargetMachine &)
 
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)
 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.
 
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 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 initializeEarlyIfConverterPass (PassRegistry &)
 
void initializeEarlyIfPredicatorPass (PassRegistry &)
 
void initializeEarlyMachineLICMPass (PassRegistry &)
 
void initializeEarlyTailDuplicatePass (PassRegistry &)
 
void initializeEdgeBundlesPass (PassRegistry &)
 
void initializeEHContGuardCatchretPass (PassRegistry &)
 
void initializeExpandLargeFpConvertLegacyPassPass (PassRegistry &)
 
void initializeExpandLargeDivRemLegacyPassPass (PassRegistry &)
 
void initializeExpandMemCmpLegacyPassPass (PassRegistry &)
 
void initializeExpandPostRAPass (PassRegistry &)
 
void initializeExpandReductionsPass (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 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 initializeLiveDebugVariablesPass (PassRegistry &)
 
void initializeLiveIntervalsPass (PassRegistry &)
 
void initializeLiveRangeShrinkPass (PassRegistry &)
 
void initializeLiveRegMatrixPass (PassRegistry &)
 
void initializeLiveStacksPass (PassRegistry &)
 
void initializeLiveVariablesPass (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 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 initializeMachineBlockFrequencyInfoPass (PassRegistry &)
 
void initializeMachineBlockPlacementPass (PassRegistry &)
 
void initializeMachineBlockPlacementStatsPass (PassRegistry &)
 
void initializeMachineBranchProbabilityInfoPass (PassRegistry &)
 
void initializeMachineCFGPrinterPass (PassRegistry &)
 
void initializeMachineCSEPass (PassRegistry &)
 
void initializeMachineCombinerPass (PassRegistry &)
 
void initializeMachineCopyPropagationPass (PassRegistry &)
 
void initializeMachineCycleInfoPrinterPassPass (PassRegistry &)
 
void initializeMachineCycleInfoWrapperPassPass (PassRegistry &)
 
void initializeMachineDominanceFrontierPass (PassRegistry &)
 
void initializeMachineDominatorTreePass (PassRegistry &)
 
void initializeMachineFunctionPrinterPassPass (PassRegistry &)
 
void initializeMachineFunctionSplitterPass (PassRegistry &)
 
void initializeMachineLateInstrsCleanupPass (PassRegistry &)
 
void initializeMachineLICMPass (PassRegistry &)
 
void initializeMachineLoopInfoPass (PassRegistry &)
 
void initializeMachineModuleInfoWrapperPassPass (PassRegistry &)
 
void initializeMachineOptimizationRemarkEmitterPassPass (PassRegistry &)
 
void initializeMachineOutlinerPass (PassRegistry &)
 
void initializeMachinePipelinerPass (PassRegistry &)
 
void initializeMachinePostDominatorTreePass (PassRegistry &)
 
void initializeMachineRegionInfoPassPass (PassRegistry &)
 
void initializeMachineSanitizerBinaryMetadataPass (PassRegistry &)
 
void initializeMachineSchedulerPass (PassRegistry &)
 
void initializeMachineSinkingPass (PassRegistry &)
 
void initializeMachineTraceMetricsPass (PassRegistry &)
 
void initializeMachineUniformityInfoPrinterPassPass (PassRegistry &)
 
void initializeMachineUniformityAnalysisPassPass (PassRegistry &)
 
void initializeMachineVerifierPassPass (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 initializeOptimizePHIsPass (PassRegistry &)
 
void initializePEIPass (PassRegistry &)
 
void initializePHIEliminationPass (PassRegistry &)
 
void initializePartiallyInlineLibCallsLegacyPassPass (PassRegistry &)
 
void initializePatchableFunctionPass (PassRegistry &)
 
void initializePeepholeOptimizerPass (PassRegistry &)
 
void initializePhiValuesWrapperPassPass (PassRegistry &)
 
void initializePhysicalRegisterUsageInfoPass (PassRegistry &)
 
void initializePlaceBackedgeSafepointsLegacyPassPass (PassRegistry &)
 
void initializePostDomOnlyPrinterWrapperPassPass (PassRegistry &)
 
void initializePostDomOnlyViewerWrapperPassPass (PassRegistry &)
 
void initializePostDomPrinterWrapperPassPass (PassRegistry &)
 
void initializePostDomViewerWrapperPassPass (PassRegistry &)
 
void initializePostDominatorTreeWrapperPassPass (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 initializeRegUsageInfoCollectorPass (PassRegistry &)
 
void initializeRegUsageInfoPropagationPass (PassRegistry &)
 
void initializeRegionInfoPassPass (PassRegistry &)
 
void initializeRegionOnlyPrinterPass (PassRegistry &)
 
void initializeRegionOnlyViewerPass (PassRegistry &)
 
void initializeRegionPrinterPass (PassRegistry &)
 
void initializeRegionViewerPass (PassRegistry &)
 
void initializeRegisterCoalescerPass (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 initializeScavengerTestPass (PassRegistry &)
 
void initializeScopedNoAliasAAWrapperPassPass (PassRegistry &)
 
void initializeSeparateConstOffsetFromGEPLegacyPassPass (PassRegistry &)
 
void initializeShadowStackGCLoweringPass (PassRegistry &)
 
void initializeShrinkWrapPass (PassRegistry &)
 
void initializeSingleLoopExtractorPass (PassRegistry &)
 
void initializeSinkingLegacyPassPass (PassRegistry &)
 
void initializeSjLjEHPreparePass (PassRegistry &)
 
void initializeSlotIndexesPass (PassRegistry &)
 
void initializeSpeculativeExecutionLegacyPassPass (PassRegistry &)
 
void initializeSpillPlacementPass (PassRegistry &)
 
void initializeStackColoringPass (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 initializeTailDuplicatePass (PassRegistry &)
 
void initializeTargetLibraryInfoWrapperPassPass (PassRegistry &)
 
void initializeTargetPassConfigPass (PassRegistry &)
 
void initializeTargetTransformInfoWrapperPassPass (PassRegistry &)
 
void initializeTLSVariableHoistLegacyPassPass (PassRegistry &)
 
void initializeTwoAddressInstructionPassPass (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 initializeVirtRegMapPass (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, bool InBounds, std::optional< ConstantRange > InRange, ArrayRef< Value * > Idxs)
 
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.
 
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 (Value *I)
 A helper function that returns the alignment of load or store instruction.
 
unsigned getLoadStoreAddressSpace (Value *I)
 A helper function that returns the address space of the pointer operand of load or store instruction.
 
TypegetLoadStoreType (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.
 
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)
 
std::optional< std::string > getArm64ECDemangledFunctionName (StringRef Name)
 
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 FunctionPassT >
ModuleToFunctionPassAdaptor createModuleToFunctionPassAdaptor (FunctionPassT &&Pass, bool EagerlyInvalidate=false)
 A function to deduce a function pass type and wrap it in the templated adaptor.
 
template<typename PassT >
RepeatedPass< PassTcreateRepeatedPass (int Count, PassT &&P)
 
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 extractBranchWeights (const MDNode *ProfileData, SmallVectorImpl< uint32_t > &Weights)
 Extract branch weights from MD_prof metadata.
 
void extractFromBranchWeightMD (const MDNode *ProfileData, SmallVectorImpl< uint32_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)
 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)
 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.
 
IRHash StructuralHash (const Function &F, bool DetailedHash=false)
 Returns a hash of the function F.
 
IRHash StructuralHash (const Module &M, bool DetailedHash=false)
 Returns a hash of the module M by hashing all functions and global variables contained within.
 
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)
 
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.
 
void computeLTOCacheKey (SmallString< 40 > &Key, 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 std::set< GlobalValue::GUID > &CfiFunctionDefs={}, const std::set< GlobalValue::GUID > &CfiFunctionDecls={})
 Computes a unique hash for the Module considering the current list of export/import and other global analysis results.
 
void computeSyntheticCounts (ModuleSummaryIndex &Index)
 Compute synthetic function entry counts.
 
Printable PrintLaneMask (LaneBitmask LaneMask)
 Create Printable object to print LaneBitmasks on a raw_ostream.
 
bool operator!= (const MachineLocation &LHS, const MachineLocation &RHS)
 
uint64_t computeBundlePadding (const MCAssembler &Assembler, const MCEncodedFragment *F, uint64_t FOffset, uint64_t FSize)
 Compute the amount of padding required before the fragment F to obey bundling restrictions, where FOffset is the fragment's offset in its section and FSize is the fragment's size.
 
std::unique_ptr< MCObjectWritercreateDXContainerObjectWriter (std::unique_ptr< MCDXContainerTargetWriter > MOTW, raw_pwrite_stream &OS)
 Construct a new DXContainer writer instance.
 
std::unique_ptr< MCObjectWritercreateELFObjectWriter (std::unique_ptr< MCELFObjectTargetWriter > MOTW, raw_pwrite_stream &OS, bool IsLittleEndian)
 Construct a new ELF writer instance.
 
std::unique_ptr< MCObjectWritercreateELFDwoObjectWriter (std::unique_ptr< MCELFObjectTargetWriter > MOTW, raw_pwrite_stream &OS, raw_pwrite_stream &DwoOS, bool IsLittleEndian)
 
MCELFStreamercreateARMELFStreamer (MCContext &Context, std::unique_ptr< MCAsmBackend > TAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter, bool RelaxAll, 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)
 
std::unique_ptr< MCObjectWritercreateMachObjectWriter (std::unique_ptr< MCMachObjectTargetWriter > MOTW, raw_pwrite_stream &OS, bool IsLittleEndian)
 Construct a new Mach-O writer instance.
 
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, bool isVerboseAsm, bool useDwarfDirectory, MCInstPrinter *InstPrint, std::unique_ptr< MCCodeEmitter > &&CE, std::unique_ptr< MCAsmBackend > &&TAB, bool ShowInst)
 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, bool RelaxAll)
 
MCStreamercreateGOFFStreamer (MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE, bool RelaxAll)
 
MCStreamercreateMachOStreamer (MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE, bool RelaxAll, bool DWARFMustBeAtTheEnd, bool LabelSections=false)
 
MCStreamercreateWasmStreamer (MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE, bool RelaxAll)
 
MCStreamercreateXCOFFStreamer (MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE, bool RelaxAll)
 
MCStreamercreateSPIRVStreamer (MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE, bool RelaxAll)
 
MCStreamercreateDXContainerStreamer (MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE, bool RelaxAll)
 
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)
 
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)
 
Expected< std::unique_ptr< MemoryBuffer > > writeArchiveToBuffer (ArrayRef< NewArchiveMember > NewMembers, SymtabWritingMode WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin)
 
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 getInstrProfNameSeparator ()
 Return the marker used to separate PGO names during serialization.
 
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.
 
bool getValueProfDataFromInst (const Instruction &Inst, InstrProfValueKind ValueKind, uint32_t MaxNumValueData, InstrProfValueData ValueData[], uint32_t &ActualNumValueData, uint64_t &TotalC, bool GetNoICPValue=false)
 Extract the value profile data from Inst which is annotated with value profile meta data.
 
std::unique_ptr< InstrProfValueData[]> getValueProfDataFromInst (const Instruction &Inst, InstrProfValueKind ValueKind, uint32_t MaxNumValueData, uint32_t &ActualNumValueData, 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 ()
 
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.
 
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)
 
const std::error_category & sampleprof_category ()
 
std::error_code make_error_code (sampleprof_error E)
 
sampleprof_error MergeResult (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 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.
 
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::error_code EC, char const *Msg)
 
Error createStringError (std::error_code EC, const Twine &S)
 
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 (const char *Fmt, Ts &&...Vals) -> formatv_object< decltype(std::make_tuple(support::detail::build_format_adapter(std::forward< 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)
 
int64_t decodeSLEB128AndInc (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.
 
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.
 
constexpr uint64_t MinAlign (uint64_t A, uint64_t B)
 A and B are either alignments or offsets.
 
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.
 
uint64_t alignTo (uint64_t Value, uint64_t Align)
 Returns the next integer (mod 2**64) that is greater than or equal to Value and is a multiple of Align.
 
uint64_t alignToPowerOf2 (uint64_t Value, uint64_t Align)
 
uint64_t alignTo (uint64_t Value, uint64_t Align, 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.
 
template<uint64_t Align>
constexpr uint64_t alignTo (uint64_t Value)
 Returns the next integer (mod 2**64) that is greater than or equal to Value and is a multiple of Align.
 
uint64_t divideCeil (uint64_t Numerator, uint64_t Denominator)
 Returns the integer ceil(Numerator / Denominator).
 
uint64_t divideNearest (uint64_t Numerator, uint64_t Denominator)
 Returns the integer nearest(Numerator / Denominator).
 
uint64_t alignDown (uint64_t Value, uint64_t Align, uint64_t Skew=0)
 Returns the largest uint64_t 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 T >
std::enable_if_t< std::is_unsigned_v< T >, TAbsoluteDifference (T X, T 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.
 
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.
 
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.
 
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 ()
 
void riscvExtensionsHelp (StringMap< StringRef > DescMap)
 
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)
 
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 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 ()
 
void timeTraceProfilerInitialize (unsigned TimeTraceGranularity, StringRef ProcName)
 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)
 
TimeTraceProfilerEntrytimeTraceAsyncProfilerBegin (StringRef Name, StringRef Detail)
 Manually begin a time section, with the given Name and 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 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)
 
void PrintNote (const Twine &Msg)
 
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 (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 CheckAssert (SMLoc Loc, Init *Condition, Init *Message)
 
void dumpMessage (SMLoc Loc, 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)
 
RecTyresolveTypes (RecTy *T1, 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 (RecordKeeper &RK, raw_ostream &OS)
 
void EmitJSON (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)
 
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<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 ()
 
BasicBlock::iterator PrepareToSplitEntryBlock (BasicBlock &BB, BasicBlock::iterator IP)
 Instrumentation passes often insert conditional checks into entry blocks.
 
GlobalVariablecreatePrivateGlobalForString (Module &M, StringRef Str, bool AllowMerging, const char *NamePrefix="")
 
ComdatgetOrCreateFunctionComdat (Function &F, Triple &T)
 
void setGlobalVariableLargeSection (const Triple &TargetTriple, GlobalVariable &GV)
 
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.
 
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 &)
 
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, DenseMap< StringRef, FunctionImporter::ImportMapTy > &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, std::map< std::string, GVSummaryMapTy > &ModuleToSummariesForIndex)
 Compute the set of summaries needed for a ThinLTO backend compilation of ModulePath.
 
std::error_code EmitImportsFiles (StringRef ModulePath, StringRef OutputFilename, const std::map< std::string, GVSummaryMapTy > &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 ()
 
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)
 
FunctionPasscreateTLSVariableHoistPass ()
 
FunctionPasscreateLowerConstantIntrinsicsPass ()
 
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.
 
FunctionPasscreateLowerInvokePass ()
 
FunctionPasscreateLowerSwitchPass ()
 
FunctionPasscreateBreakCriticalEdgesPass ()
 
PasscreateLCSSAPass ()
 
FunctionPasscreatePromoteMemoryToRegisterPass ()
 
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)
 
BasicBlockCreateControlFlowHub (DomTreeUpdater *DTU, SmallVectorImpl< BasicBlock * > &GuardBlocks, const SetVector< BasicBlock * > &Predecessors, const SetVector< BasicBlock * > &Successors, const StringRef Prefix, std::optional< unsigned > MaxControlFlowBooleans=std::nullopt)
 Given a set of incoming and outgoing blocks, create a "hub" such that every edge from an incoming block InBB to an outgoing block OutBB is now split into two edges, one from InBB to the hub and another from the hub to OutBB.
 
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
 
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)
 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)
 
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.
 
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, DebugInfoFinder *DIFinder=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 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.
 
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.
 
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)
 
bool 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 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 ConvertDebugDeclareToDebugValue (DbgVariableIntrinsic *DII, StoreInst *SI, DIBuilder &Builder)
 ===------------------------------------------------------------------—===// Dbg Intrinsic utilities
 
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 combineMetadata (Instruction *K, const Instruction *J, ArrayRef< unsigned > KnownIDs, bool DoesKMove)
 Combine the metadata of two instructions so that K can replace J.
 
void combineMetadataForCSE (Instruction *K, const Instruction *J, bool DoesKMove)
 Combine the metadata of two instructions so that K can replace J.
 
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.
 
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.
 
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.
 
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< DomTreeNode *, 16 > collectChildrenInLoop (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.
 
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.
 
ValuecreateAnyOfOp (IRBuilderBase &Builder, Value *StartVal, RecurKind RK, Value *Left, Value *Right)
 See RecurrenceDescriptor::isAnyOfPattern for a description of the pattern we are trying to match.
 
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, RecurKind MinMaxKind=RecurKind::None)
 Generates a vector reduction using shufflevectors to reduce the value.
 
ValuecreateSimpleTargetReduction (IRBuilderBase &B, Value *Src, RecurKind RdxKind)
 Create a target reduction of the given vector.
 
ValuecreateAnyOfTargetReduction (IRBuilderBase &B, Value *Src, const RecurrenceDescriptor &Desc, PHINode *OrigPhi)
 Create a target reduction of the given vector Src for a reduction of the kind RecurKind::IAnyOf or RecurKind::FAnyOf.
 
ValuecreateTargetReduction (IRBuilderBase &B, const RecurrenceDescriptor &Desc, Value *Src, PHINode *OrigPhi=nullptr)
 Create a generic target reduction using a recurrence descriptor Desc The target is queried to determine if intrinsics or shuffle sequences are required to implement the reduction.
 
ValuecreateOrderedReduction (IRBuilderBase &B, const RecurrenceDescriptor &Desc, Value *Src, Value *Start)
 Create an ordered reduction intrinsic using the given recurrence descriptor Desc.
 
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.
 
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 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 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 (SmallVectorImpl< Function * > &DeadComdatFunctions)
 Filter out potentially dead comdat functions where other entries keep the entire comdat group alive.
 
std::string getUniqueModuleId (Module *M)
 Produce a unique identifier for this module by taking the MD5 sum of the names of the module's strong external symbols that are not comdat members.
 
void embedBufferInModule (Module &M, MemoryBufferRef Buf, StringRef SectionName, Align Alignment=Align(1))
 Embed the memory buffer Buf into the module M as a global using the specified section name.
 
bool lowerGlobalIFuncUsersAsGlobalCtor (Module &M, ArrayRef< GlobalIFunc * > IFuncsToLower={})
 Lower all calls to ifuncs by replacing uses with indirect calls loaded out of a global table initialized in a global constructor.
 
bool isAllocaPromotable (const AllocaInst *AI)
 Return true if this alloca is legal for promotion.
 
void PromoteMemToReg (ArrayRef< AllocaInst * > Allocas, DominatorTree &DT, AssumptionCache *AC=nullptr)
 Promote the specified list of alloca instructions into scalar registers, inserting PHI nodes as appropriate.
 
void applyFlowInference (const ProfiParams &Params, FlowFunction &Func)
 Apply the profile inference algorithm for a given function and provided profi options.
 
void applyFlowInference (FlowFunction &Func)
 Apply the profile inference algorithm for a given flow function.
 
static bool skipProfileForFunction (const Function &F)
 
std::pair< bool, boolsimplifyUsersOfIV (PHINode *CurrIV, ScalarEvolution *SE, DominatorTree *DT, LoopInfo *LI, const TargetTransformInfo *TTI, SmallVectorImpl< WeakTrackingVH > &Dead, SCEVExpander &Rewriter, IVVisitor *V=nullptr)
 simplifyUsersOfIV - Simplify instructions that use this induction variable by using ScalarEvolution to analyze the IV's recurrence.
 
bool simplifyLoopIVs (Loop *L, ScalarEvolution *SE, DominatorTree *DT, LoopInfo *LI, const TargetTransformInfo *TTI, SmallVectorImpl< WeakTrackingVH > &Dead)
 SimplifyLoopIVs - Simplify users of induction variables within this loop.
 
PHINodecreateWideIV (const WideIVInfo &WI, LoopInfo *LI, ScalarEvolution *SE, SCEVExpander &Rewriter, DominatorTree *DT, SmallVectorImpl< WeakTrackingVH > &DeadInsts, unsigned &NumElimExt, unsigned &NumWidened, bool HasGuards, bool UsePostIncrementRanges)
 Widen Induction Variables - Extend the width of an IV to cover its widest uses.
 
static bool isPGSOColdCodeOnly (ProfileSummaryInfo *PSI)
 
template<typename FuncT , typename BFIT >
bool shouldFuncOptimizeForSizeImpl (const FuncT *F, ProfileSummaryInfo *PSI, BFIT *BFI, PGSOQueryType QueryType)
 
template<typename BlockTOrBlockFreq , typename BFIT >
bool shouldOptimizeForSizeImpl (BlockTOrBlockFreq BBOrBlockFreq, ProfileSummaryInfo *PSI, BFIT *BFI, PGSOQueryType QueryType)
 
bool shouldOptimizeForSize (const Function *F, ProfileSummaryInfo *PSI, BlockFrequencyInfo *BFI, PGSOQueryType QueryType=PGSOQueryType::Other)
 Returns true if function F is suggested to be size-optimized based on the profile.
 
bool shouldOptimizeForSize (const BasicBlock *BB, ProfileSummaryInfo *PSI, BlockFrequencyInfo *BFI, PGSOQueryType QueryType=PGSOQueryType::Other)
 Returns true if basic block BB is suggested to be size-optimized based on the profile.
 
void SplitModule (Module &M, unsigned N, function_ref< void(std::unique_ptr< Module > MPart)> ModuleCallback, bool PreserveLocals=false)
 Splits the module M into N linkable partitions.
 
const LoopaddClonedBlockToLoopInfo (BasicBlock *OriginalBB, BasicBlock *ClonedBB, LoopInfo *LI, NewLoopsMap &NewLoops)
 Adds ClonedBB to LoopInfo, creates a new loop for ClonedBB if necessary and adds a mapping from the original loop to the new loop to NewLoops.
 
LoopUnrollResult UnrollLoop (Loop *L, UnrollLoopOptions ULO, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC, const llvm::TargetTransformInfo *TTI, OptimizationRemarkEmitter *ORE, bool PreserveLCSSA, Loop **RemainderLoop=nullptr)
 Unroll the given loop by Count.
 
bool UnrollRuntimeLoopRemainder (Loop *L, unsigned Count, bool AllowExpensiveTripCount, bool UseEpilogRemainder, bool UnrollRemainder, bool ForgetAllSCEV, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC, const TargetTransformInfo *TTI, bool PreserveLCSSA, Loop **ResultLoop=nullptr)
 Insert code in the prolog/epilog code when unrolling a loop with a run-time trip-count.
 
LoopUnrollResult UnrollAndJamLoop (Loop *L, unsigned Count, unsigned TripCount, unsigned TripMultiple, bool UnrollRemainder, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC, const TargetTransformInfo *TTI, OptimizationRemarkEmitter *ORE, Loop **EpilogueLoop=nullptr)
 
bool isSafeToUnrollAndJam (Loop *L, ScalarEvolution &SE, DominatorTree &DT, DependenceInfo &DI, LoopInfo &LI)
 
void simplifyLoopAfterUnroll (Loop *L, bool SimplifyIVs, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, AssumptionCache *AC, const TargetTransformInfo *TTI)
 Perform some cleanup and simplifications on loops after unrolling.
 
MDNodeGetUnrollMetadata (MDNode *LoopID, StringRef Name)
 Given an llvm.loop loop id metadata node, returns the loop hint metadata node with the given name (for example, "llvm.loop.unroll.count").
 
TargetTransformInfo::UnrollingPreferences gatherUnrollingPreferences (Loop *L, ScalarEvolution &SE, const TargetTransformInfo &TTI, BlockFrequencyInfo *BFI, ProfileSummaryInfo *PSI, llvm::OptimizationRemarkEmitter &ORE, int OptLevel, std::optional< unsigned > UserThreshold, std::optional< unsigned > UserCount, std::optional< bool > UserAllowPartial, std::optional< bool > UserRuntime, std::optional< bool > UserUpperBound, std::optional< unsigned > UserFullUnrollMaxCount)
 Gather the various unrolling parameters based on the defaults, compiler flags, TTI overrides and user specified parameters.
 
bool computeUnrollCount (Loop *L, const TargetTransformInfo &TTI, DominatorTree &DT, LoopInfo *LI, AssumptionCache *AC, ScalarEvolution &SE, const SmallPtrSetImpl< const Value * > &EphValues, OptimizationRemarkEmitter *ORE, unsigned TripCount, unsigned MaxTripCount, bool MaxOrZero, unsigned TripMultiple, const UnrollCostEstimator &UCE, TargetTransformInfo::UnrollingPreferences &UP, TargetTransformInfo::PeelingPreferences &PP, bool &UseUpperBound)
 
RemapFlags operator| (RemapFlags LHS, RemapFlags RHS)
 
ValueMapValue (const Value *V, ValueToValueMapTy &VM, RemapFlags Flags=RF_None, ValueMapTypeRemapper *TypeMapper=nullptr, ValueMaterializer *Materializer=nullptr)
 Look up or compute a value in the value map.
 
MetadataMapMetadata (const Metadata *MD, ValueToValueMapTy &VM, RemapFlags Flags=RF_None, ValueMapTypeRemapper *TypeMapper=nullptr, ValueMaterializer *Materializer=nullptr)
 Lookup or compute a mapping for a piece of metadata.
 
MDNodeMapMetadata (const MDNode *MD, ValueToValueMapTy &VM, RemapFlags Flags=RF_None, ValueMapTypeRemapper *TypeMapper=nullptr, ValueMaterializer *Materializer=nullptr)
 Version of MapMetadata with type safety for MDNode.
 
void RemapInstruction (Instruction *I, ValueToValueMapTy &VM, RemapFlags Flags=RF_None, ValueMapTypeRemapper *TypeMapper=nullptr, ValueMaterializer *Materializer=nullptr)
 Convert the instruction operands from referencing the current values into those specified by VM.
 
void RemapDbgVariableRecord (Module *M, DbgVariableRecord *V, ValueToValueMapTy &VM, RemapFlags Flags=RF_None, ValueMapTypeRemapper *TypeMapper=nullptr, ValueMaterializer *Materializer=nullptr)
 Remap the Values used in the DbgVariableRecord V using the value map VM.
 
void RemapDbgVariableRecordRange (Module *M, iterator_range< DbgRecordIterator > Range, ValueToValueMapTy &VM, RemapFlags Flags=RF_None, ValueMapTypeRemapper *TypeMapper=nullptr, ValueMaterializer *Materializer=nullptr)
 Remap the Values used in the DbgVariableRecord V using the value map VM.
 
void RemapFunction (Function &F, ValueToValueMapTy &VM, RemapFlags Flags=RF_None, ValueMapTypeRemapper *TypeMapper=nullptr, ValueMaterializer *Materializer=nullptr)
 Remap the operands, metadata, arguments, and instructions of a function.
 
ConstantMapValue (const Constant *V, ValueToValueMapTy &VM, RemapFlags Flags=RF_None, ValueMapTypeRemapper *TypeMapper=nullptr, ValueMaterializer *Materializer=nullptr)
 Version of MapValue with type safety for Constant.
 
PasscreateLoadStoreVectorizerPass ()
 Create a legacy pass manager instance of the LoadStoreVectorizer pass.
 
void reportVectorizationFailure (const StringRef DebugMsg, const StringRef OREMsg, const StringRef ORETag, OptimizationRemarkEmitter *ORE, Loop *TheLoop, Instruction *I=nullptr)
 Reports a vectorization failure: print DebugMsg for debugging purposes along with the corresponding optimization remark RemarkName.
 
void reportVectorizationInfo (const StringRef OREMsg, const StringRef ORETag, OptimizationRemarkEmitter *ORE, Loop *TheLoop, Instruction *I=nullptr)
 Reports an informative message: print Msg for debugging purposes as well as an optimization remark.
 
const chararchToWindowsSDKArch (llvm::Triple::ArchType Arch)
 
const chararchToLegacyVCArch (llvm::Triple::ArchType Arch)
 
const chararchToDevDivInternalArch (llvm::Triple::ArchType Arch)
 
bool appendArchToWindowsSDKLibPath (int SDKMajor, llvm::SmallString< 128 > LibPath, llvm::Triple::ArchType Arch, std::string &path)
 
std::string getSubDirectoryPath (SubDirectoryType Type, ToolsetLayout VSLayout, const std::string &VCToolChainPath, llvm::Triple::ArchType TargetArch, llvm::StringRef SubdirParent="")
 
bool useUniversalCRT (ToolsetLayout VSLayout, const std::string &VCToolChainPath, llvm::Triple::ArchType TargetArch, llvm::vfs::FileSystem &VFS)
 
bool getWindowsSDKDir (vfs::FileSystem &VFS, std::optional< llvm::StringRef > WinSdkDir, std::optional< llvm::StringRef > WinSdkVersion, std::optional< llvm::StringRef > WinSysRoot, std::string &Path, int &Major, std::string &WindowsSDKIncludeVersion, std::string &WindowsSDKLibVersion)
 Get Windows SDK installation directory.
 
bool getUniversalCRTSdkDir (vfs::FileSystem &VFS, std::optional< llvm::StringRef > WinSdkDir, std::optional< llvm::StringRef > WinSdkVersion, std::optional< llvm::StringRef > WinSysRoot, std::string &Path, std::string &UCRTVersion)
 
bool findVCToolChainViaCommandLine (vfs::FileSystem &VFS, std::optional< llvm::StringRef > VCToolsDir, std::optional< llvm::StringRef > VCToolsVersion, std::optional< llvm::StringRef > WinSysRoot, std::string &Path, ToolsetLayout &VSLayout)
 
bool findVCToolChainViaEnvironment (vfs::FileSystem &VFS, std::string &Path, ToolsetLayout &VSLayout)
 
bool findVCToolChainViaSetupConfig (vfs::FileSystem &VFS, std::optional< llvm::StringRef > VCToolsVersion, std::string &Path, ToolsetLayout &VSLayout)
 
bool findVCToolChainViaRegistry (std::string &Path, ToolsetLayout &VSLayout)
 
static GVDAGType getGVDT ()
 
cl::opt< boolCheckBFIUnknownBlockQueries ("check-bfi-unknown-block-queries", cl::init(false), cl::Hidden, cl::desc("Check if block frequency is queried for an unknown block " "for debugging missed BFI updates"))
 
cl::opt< boolUseIterativeBFIInference ("use-iterative-bfi-inference", cl::Hidden, cl::desc("Apply an iterative post-processing to infer correct BFI counts"))
 
cl::opt< unsignedIterativeBFIMaxIterationsPerBlock ("iterative-bfi-max-iterations-per-block", cl::init(1000), cl::Hidden, cl::desc("Iterative inference: maximum number of update iterations " "per block"))
 
cl::opt< double > IterativeBFIPrecision ("iterative-bfi-precision", cl::init(1e-12), cl::Hidden, cl::desc("Iterative inference: delta convergence precision; smaller values " "typically lead to better results at the cost of worsen runtime"))
 
static raw_ostreamoperator<< (raw_ostream &R, const ore::NV &Arg)
 
template<class RemarkT >
RemarkT & operator<< (RemarkT &&R, const InlineCost &IC)
 
std::optional< int > getStringFnAttrAsInt (const Attribute &Attr)
 
std::optional< int > getStringFnAttrAsInt (Function *F, StringRef AttrKind)
 
template const SimplifyQuery getBestSimplifyQuery (AnalysisManager< Function > &, Function &)
 
raw_ostreamoperator<< (raw_ostream &OS, ScalarEvolution::LoopDisposition LD)
 
raw_ostreamoperator<< (raw_ostream &OS, ScalarEvolution::BlockDisposition BD)
 
StringRef toString (TensorType TT)
 
bool operator== (const DbgValueLocEntry &A, const DbgValueLocEntry &B)
 Compare two DbgValueLocEntries for equality.
 
bool operator== (const DbgValueLoc &A, const DbgValueLoc &B)
 Compare two DbgValueLocs for equality.
 
bool operator< (const DbgValueLoc &A, const DbgValueLoc &B)
 Compare two fragments based on their offset.
 
bool operator< (const struct FrameIndexExpr &LHS, const struct FrameIndexExpr &RHS)
 
bool operator< (const struct EntryValueInfo &LHS, const struct EntryValueInfo &RHS)
 
template<>
raw_ostreamWriteGraph (raw_ostream &O, const EdgeBundles &G, bool ShortNames, const Twine &Title)
 Specialize WriteGraph, the standard implementation won't work.
 
LDVImplmakeVarLocBasedLiveDebugValues ()
 
LDVImplmakeInstrRefBasedLiveDebugValues ()
 
bool debuginfoShouldUseDebugInstrRef (const Triple &T)
 
cl::opt< boolUseSegmentSetForPhysRegs ("use-segment-set-for-physregs", cl::Hidden, cl::init(true), cl::desc("Use segment set for the computation of the live ranges of physregs."))
 
template<typename LiveRangeT , typename EqClassesT >
static void DistributeRange (LiveRangeT &LR, LiveRangeT *SplitLRs[], EqClassesT VNIClasses)
 Helper function that distributes live range value numbers and the corresponding segments of a primary live range LR to a list of newly created live ranges SplitLRs.
 
cl::opt< unsignedStaticLikelyProb ("static-likely-prob", cl::desc("branch probability threshold in percentage" "to be considered very likely"), cl::init(80), cl::Hidden)
 
cl::opt< unsignedProfileLikelyProb ("profile-likely-prob", cl::desc("branch probability threshold in percentage to be considered" " very likely when profile is available"), cl::init(51), cl::Hidden)
 
cl::opt< boolSwpEnableCopyToPhi ("pipeliner-enable-copytophi", cl::ReallyHidden, cl::init(true), cl::desc("Enable CopyToPhi DAG Mutation"))
 
cl::opt< int > SwpForceIssueWidth ("pipeliner-force-issue-width", cl::desc("Force pipeliner to use specified issue width."), cl::Hidden, cl::init(-1))
 A command line argument to force pipeliner to use specified issue width.
 
FunctionPasscreateMachineRegionInfoPass ()
 
cl::opt< boolForceTopDown ("misched-topdown", cl::Hidden, cl::desc("Force top-down list scheduling"))
 
cl::opt< boolForceBottomUp ("misched-bottomup", cl::Hidden, cl::desc("Force bottom-up list scheduling"))
 
cl::opt< boolVerifyScheduling ("verify-misched", cl::Hidden, cl::desc("Verify machine instrs before and after machine scheduling"))
 
cl::opt< boolViewMISchedDAGs ("view-misched-dags", cl::Hidden, cl::desc("Pop up a window to show MISched dags after they are processed"))
 
cl::opt< boolPrintDAGs ("misched-print-dags", cl::Hidden, cl::desc("Print schedule DAGs"))
 
StringRef lexMIToken (StringRef Source, MIToken &Token, function_ref< void(StringRef::iterator, const Twine &)> ErrorCallback)
 Consume a single machine instruction token in the given source and return the remaining source string.
 
std::optional< PseudoProbeextractProbe (const MachineInstr &MI)
 
MachineBasicBlock::iterator findPHICopyInsertPoint (MachineBasicBlock *MBB, MachineBasicBlock *SuccMBB, unsigned SrcReg)
 findPHICopyInsertPoint - Find a safe place in MBB to insert a copy from SrcReg when following the CFG edge to SuccMBB.
 
cl::opt< unsignedEvictInterferenceCutoff ("regalloc-eviction-max-interference-cutoff", cl::Hidden, cl::desc("Number of interferences after which we declare " "an interference unevictable and bail out. This " "is a compilation cost-saving consideration. To " "disable, pass a very large number."), cl::init(10))
 
template<>
PasscallDefaultCtor< RegAllocEvictionAdvisorAnalysis > ()
 Specialization for the API used by the analysis infrastructure to create an instance of the eviction advisor.
 
RegAllocEvictionAdvisorAnalysiscreateReleaseModeAdvisor ()
 
RegAllocEvictionAdvisorAnalysiscreateDevelopmentModeAdvisor ()
 
template<>
PasscallDefaultCtor< RegAllocPriorityAdvisorAnalysis > ()
 Specialization for the API used by the analysis infrastructure to create an instance of the priority advisor.
 
RegAllocPriorityAdvisorAnalysiscreateReleaseModePriorityAdvisor ()
 
RegAllocPriorityAdvisorAnalysiscreateDevelopmentModePriorityAdvisor ()
 
RegAllocScore calculateRegAllocScore (const MachineFunction &MF, const MachineBlockFrequencyInfo &MBFI)
 Calculate a score.
 
RegAllocScore calculateRegAllocScore (const MachineFunction &MF, llvm::function_ref< double(const MachineBasicBlock &)> GetBBFreq, llvm::function_ref< bool(const MachineInstr &)> IsTriviallyRematerializable)
 Implementation of the above, which is also more easily unittestable.
 
 STATISTIC (NumFunctions, "Total number of functions")
 
 STATISTIC (NumUnsafeStackFunctions, "Number of functions with unsafe stack")
 
 STATISTIC (NumUnsafeStackRestorePointsFunctions, "Number of functions that use setjmp or exceptions")
 
 STATISTIC (NumAllocas, "Total number of allocas")
 
 STATISTIC (NumUnsafeStaticAllocas, "Number of unsafe static allocas")
 
 STATISTIC (NumUnsafeDynamicAllocas, "Number of unsafe dynamic allocas")
 
 STATISTIC (NumUnsafeByValArguments, "Number of unsafe byval arguments")
 
 STATISTIC (NumUnsafeStackRestorePoints, "Number of setjmps and landingpads")
 
static std::vector< DescgetOpDescriptions ()
 
static Desc getDescImpl (ArrayRef< Desc > Descriptions, unsigned Opcode)
 
static Desc getOpDesc (unsigned Opcode)
 
static std::vector< DescgetSubOpDescriptions ()
 
static Desc getSubOpDesc (unsigned Opcode, unsigned SubOpcode)
 
static void prettyPrintBaseTypeRef (DWARFUnit *U, raw_ostream &OS, DIDumpOptions DumpOpts, ArrayRef< uint64_t > Operands, unsigned Operand)
 
static bool printCompactDWARFExpr (raw_ostream &OS, DWARFExpression::iterator I, const DWARFExpression::iterator E, std::function< StringRef(uint64_t RegNum, bool IsEH)> GetNameForDWARFReg=nullptr)
 
static DWARFDie resolveReferencedType (DWARFDie D, dwarf::Attribute Attr=DW_AT_type)
 
static DWARFDie resolveReferencedType (DWARFDie D, DWARFFormValue F)
 
static bool scopedTAGs (dwarf::Tag Tag)
 Returns True if the DIE TAG is one of the ones that is scopped.
 
llvm::raw_ostreamoperator<< (llvm::raw_ostream &OS, const GUID &G)
 
static std::string buildIDToString (BuildIDRef ID)
 
std::string getDebuginfodSourceUrlPath (BuildIDRef ID, StringRef SourceFilePath)
 The following functions fetch a debuginfod artifact to a file in a local cache and return the cached file path.
 
Expected< std::string > getCachedOrDownloadSource (BuildIDRef ID, StringRef SourceFilePath)
 
std::string getDebuginfodExecutableUrlPath (BuildIDRef ID)
 
Expected< std::string > getCachedOrDownloadExecutable (BuildIDRef ID)
 
std::string getDebuginfodDebuginfoUrlPath (BuildIDRef ID)
 
Expected< std::string > getCachedOrDownloadDebuginfo (BuildIDRef ID)
 
static bool isHeader (StringRef S)
 
static SmallVector< std::string, 0 > getHeaders ()
 
static bool hasELFMagic (StringRef FilePath)
 
static uint64_t getDebugInfoSize (DWARFContext &Dwarf)
 Compute the total size of the debug info.
 
static CompileUnitgetUnitForOffset (const UnitListTy &Units, uint64_t Offset)
 Similar to DWARFUnitSection::getUnitForOffset(), but returning our CompileUnit object instead.
 
static bool isODRAttribute (uint16_t Attr)
 
static bool isTypeTag (uint16_t Tag)
 
static void resolveRelativeObjectPath (SmallVectorImpl< char > &Buf, DWARFDie CU)
 Resolve the relative path to a build artifact referenced by DWARF by applying DW_AT_comp_dir.
 
static void analyzeImportedModule (const DWARFDie &DIE, CompileUnit &CU, DWARFLinkerBase::SwiftInterfacesMapTy *ParseableSwiftInterfaces, std::function< void(const Twine &, const DWARFDie &)> ReportWarning)
 Collect references to parseable Swift interfaces in imported DW_TAG_module blocks.
 
static bool updatePruning (const DWARFDie &Die, CompileUnit &CU, uint64_t ModulesEndOffset)
 
static void updateChildPruning (const DWARFDie &Die, CompileUnit &CU, CompileUnit::DIEInfo &ChildInfo)
 
static void analyzeContextInfo (const DWARFDie &DIE, unsigned ParentIdx, CompileUnit &CU, DeclContext *CurrentDeclContext, DeclContextTree &Contexts, uint64_t ModulesEndOffset, DWARFLinkerBase::SwiftInterfacesMapTy *ParseableSwiftInterfaces, std::function< void(const Twine &, const DWARFDie &)> ReportWarning)
 Recursive helper to build the global DeclContext information and gather the child->parent relationships in the original compile unit.
 
static bool dieNeedsChildrenToBeMeaningful (uint32_t Tag)
 
static bool isTlsAddressCode (uint8_t DW_OP_Code)
 
static void updateChildIncompleteness (const DWARFDie &Die, CompileUnit &CU, CompileUnit::DIEInfo &ChildInfo)
 Helper that updates the completeness of the current DIE based on the completeness of one of its children.
 
static void updateRefIncompleteness (const DWARFDie &Die, CompileUnit &CU, CompileUnit::DIEInfo &RefInfo)
 Helper that updates the completeness of the current DIE based on the completeness of the DIEs it references.
 
static bool isODRCanonicalCandidate (const DWARFDie &Die, CompileUnit &CU)
 
static void verifyKeepChain (CompileUnit &CU)
 Verify the keep chain by looking for DIEs that are kept but who's parent isn't.
 
static bool shouldSkipAttribute (bool Update, DWARFAbbreviationDeclaration::AttributeSpec AttrSpec, bool SkipPC)
 
static void patchAddrBase (DIE &Die, DIEInteger Offset)
 
static void insertLineSequence (std::vector< DWARFDebugLine::Row > &Seq, std::vector< DWARFDebugLine::Row > &Rows)
 Insert the new line info sequence Seq into the current set of already linked line info Rows.
 
static void patchStmtList (DIE &Die, DIEInteger Offset)
 
static uint64_t getDwoId (const DWARFDie &CUDie)
 
static std::string remapPath (StringRef Path, const DWARFLinkerBase::ObjectPrefixMapTy &ObjectPrefixMap)
 
static std::string getPCMFile (const DWARFDie &CUDie, const DWARFLinkerBase::ObjectPrefixMapTy *ObjectPrefixMap)
 
static bool inFunctionScope (CompileUnit &U, unsigned Idx)
 Check if the DIE at Idx is in the scope of a function.
 
void writeIndexTable (MCStreamer &Out, ArrayRef< unsigned > ContributionOffsets, const MapVector< uint64_t, UnitIndexEntry > &IndexEntries, const AccessField &Field)
 
void __register_frame (void *)
 
void __deregister_frame (void *)
 
static int jit_noop ()
 
static void dumpSectionMemory (const SectionEntry &S, StringRef State)
 
static Error getOffset (const SymbolRef &Sym, SectionRef Sec, uint64_t &Result)
 
static uint64_t computeAllocationSizeForSections (std::vector< uint64_t > &SectionSizes, Align Alignment)
 
static bool isRequiredForExecution (const SectionRef Section)
 
static bool isReadOnlyData (const SectionRef Section)
 
static bool isZeroInit (const SectionRef Section)
 
static bool isTLS (const SectionRef Section)
 
static std::unique_ptr< RuntimeDyldCOFFcreateRuntimeDyldCOFF (Triple::ArchType Arch, RuntimeDyld::MemoryManager &MM, JITSymbolResolver &Resolver, bool ProcessAllSections, RuntimeDyld::NotifyStubEmittedFunction NotifyStubEmitted)
 
static std::unique_ptr< RuntimeDyldELFcreateRuntimeDyldELF (Triple::ArchType Arch, RuntimeDyld::MemoryManager &MM, JITSymbolResolver &Resolver, bool ProcessAllSections, RuntimeDyld::NotifyStubEmittedFunction NotifyStubEmitted)
 
static std::unique_ptr< RuntimeDyldMachOcreateRuntimeDyldMachO (Triple::ArchType Arch, RuntimeDyld::MemoryManager &MM, JITSymbolResolver &Resolver, bool ProcessAllSections, RuntimeDyld::NotifyStubEmittedFunction NotifyStubEmitted)
 
void jitLinkForORC (object::OwningBinary< object::ObjectFile > O, RuntimeDyld::MemoryManager &MemMgr, JITSymbolResolver &Resolver, bool ProcessAllSections, unique_function< Error(const object::ObjectFile &Obj, RuntimeDyld::LoadedObjectInfo &LoadedObj, std::map< StringRef, JITEvaluatedSymbol >)> OnLoaded, unique_function< void(object::OwningBinary< object::ObjectFile >, std::unique_ptr< RuntimeDyld::LoadedObjectInfo >, Error)> OnEmitted)
 
static uint16_t applyPPClo (uint64_t value)
 
static uint16_t applyPPChi (uint64_t value)
 
static uint16_t applyPPCha (uint64_t value)
 
static uint16_t applyPPChigher (uint64_t value)
 
static uint16_t applyPPChighera (uint64_t value)
 
static uint16_t applyPPChighest (uint64_t value)
 
static uint16_t applyPPChighesta (uint64_t value)
 
static int64_t computeDelta (SectionEntry *A, SectionEntry *B)
 
static void add16 (uint8_t *p, int16_t v)
 
static void or32le (void *P, int32_t V)
 
static void write32AArch64Imm (uint8_t *T, uint64_t imm, uint32_t rangeLimit)
 
static void write32AArch64Ldr (uint8_t *T, uint64_t imm)
 
static void write32AArch64Addr (void *T, uint64_t s, uint64_t p, int shift)
 
static bool isThumbFunc (object::symbol_iterator Symbol, const object::ObjectFile &Obj, object::section_iterator Section)
 
static sys::MemoryBlock trimBlockToPageSize (sys::MemoryBlock M)
 
Expected< APIntexprAdd (const APInt &Lhs, const APInt &Rhs, bool &Overflow)
 Performs operation and.
 
Expected< APIntexprSub (const APInt &Lhs, const APInt &Rhs, bool &Overflow)
 
Expected< APIntexprMul (const APInt &Lhs, const APInt &Rhs, bool &Overflow)
 
Expected< APIntexprDiv (const APInt &Lhs, const APInt &Rhs, bool &Overflow)
 
Expected< APIntexprMax (const APInt &Lhs, const APInt &Rhs, bool &Overflow)
 
Expected< APIntexprMin (const APInt &Lhs, const APInt &Rhs, bool &Overflow)
 
void deleteConstant (Constant *C)
 
cl::opt< boolEnableFSDiscriminator ("enable-fs-discriminator", cl::Hidden, cl::desc("Enable adding flow sensitive discriminators"))
 
static ValueAsMetadatagetAsMetadata (Value *V)
 
static const Metadataget_hashable_data (const MDOperand &X)
 Make MDOperand transparent for hashing.
 
template<class T , class InfoT >
static TgetUniqued (DenseSet< T *, InfoT > &Store, const typename InfoT::KeyTy &Key)
 
static bool shouldIgnorePass (StringRef PassID)
 
std::optional< PseudoProbeextractProbeFromDiscriminator (const DILocation *DIL)
 
std::optional< PseudoProbeextractProbeFromDiscriminator (const Instruction &Inst)
 
static bool isExpandableUser (User *U)
 
static SmallVector< Instruction *, 4 > expandUser (BasicBlock::iterator InsertPt, Constant *C)
 
template<typename ParentClass >
void invalidateParentIListOrdering (ParentClass *Parent)
 Notify basic blocks when an instruction is inserted.
 
template<>
void invalidateParentIListOrdering (BasicBlock *BB)
 
cl::opt< boolEnableLTOInternalization ("enable-lto-internalization", cl::init(true), cl::Hidden, cl::desc("Enable global value internalization in LTO"))
 Enable global value internalization in LTO.
 
raw_ostreamoperator<< (raw_ostream &OS, const MCFixup &AF)
 
MCAsmParserExtensioncreateDarwinAsmParser ()
 
MCAsmParserExtensioncreateELFAsmParser ()
 
MCAsmParserExtensioncreateCOFFAsmParser ()
 
MCAsmParserExtensioncreateGOFFAsmParser ()
 
MCAsmParserExtensioncreateXCOFFAsmParser ()
 
MCAsmParserExtensioncreateWasmAsmParser ()
 
MCAsmParserExtensioncreateCOFFMasmParser ()
 
cl::opt< unsignedAsmMacroMaxNestingDepth ("asm-macro-max-nesting-depth", cl::init(20), cl::Hidden, cl::desc("The maximum nesting depth allowed for assembly macros."))
 
static ErrorOr< SmallString< 128 > > canonicalizePath (StringRef P)
 
static Error writeArchiveToStream (raw_ostream &Out, ArrayRef< NewArchiveMember > NewMembers, SymtabWritingMode WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin, std::optional< bool > IsEC)
 
cl::opt< boolDoInstrProfNameCompression ("enable-name-compression", cl::desc("Enable name/filename string compression"), cl::init(true))
 
static StringRef stripDirPrefix (StringRef PathNameStr, uint32_t NumPrefix)
 
static StringRef getStrippedSourceFileName (const GlobalObject &GO)
 
static std::string getIRPGONameForGlobalObject (const GlobalObject &GO, GlobalValue::LinkageTypes Linkage, StringRef FileName)
 
static std::optional< std::string > lookupPGONameFromMetadata (MDNode *MD)
 
static std::string getIRPGOObjectName (const GlobalObject &GO, bool InLTO, MDNode *PGONameMetadata)
 
static Error readAndDecodeStrings (StringRef NameStrings, std::function< Error(StringRef)> NameCallback)
 NameStrings is a string composed of one of more possibly encoded sub-strings.
 
uint32_t getNumValueKindsInstrProf (const void *Record)
 ValueProfRecordClosure Interface implementation for InstrProfRecord class.
 
uint32_t getNumValueSitesInstrProf (const void *Record, uint32_t VKind)
 
uint32_t getNumValueDataInstrProf (const void *Record, uint32_t VKind)
 
uint32_t getNumValueDataForSiteInstrProf (const void *R, uint32_t VK, uint32_t S)
 
void getValueForSiteInstrProf (const void *R, InstrProfValueData *Dst, uint32_t K, uint32_t S)
 
ValueProfData * allocValueProfDataInstrProf (size_t TotalSizeInBytes)
 
template<class T >
static T swapToHostOrder (const unsigned char *&D, llvm::endianness Orig)
 
static std::unique_ptr< ValueProfData > allocValueProfData (uint32_t TotalSize)
 
MDNodemayHaveValueProfileOfKind (const Instruction &Inst, InstrProfValueKind ValueKind)
 
static bool getValueProfDataFromInstImpl (const MDNode *const MD, const uint32_t MaxNumDataWant, InstrProfValueData ValueData[], uint32_t &ActualNumValueData, uint64_t &TotalC, bool GetNoICPValue)
 
cl::opt< boolUseContextLessSummary ("profile-summary-contextless", cl::Hidden, cl::desc("Merge context profiles before calculating thresholds."))
 
cl::opt< int > ProfileSummaryCutoffHot ("profile-summary-cutoff-hot", cl::Hidden, cl::init(990000), cl::desc("A count is hot if it exceeds the minimum count to" " reach this percentile of total counts."))
 
cl::opt< int > ProfileSummaryCutoffCold ("profile-summary-cutoff-cold", cl::Hidden, cl::init(999999), cl::desc("A count is cold if it is below the minimum count" " to reach this percentile of total counts."))
 
cl::opt< unsignedProfileSummaryHugeWorkingSetSizeThreshold ("profile-summary-huge-working-set-size-threshold", cl::Hidden, cl::init(15000), cl::desc("The code working set size is considered huge if the number of" " blocks required to reach the -profile-summary-cutoff-hot" " percentile exceeds this count."))
 
cl::opt< unsignedProfileSummaryLargeWorkingSetSizeThreshold ("profile-summary-large-working-set-size-threshold", cl::Hidden, cl::init(12500), cl::desc("The code working set size is considered large if the number of" " blocks required to reach the -profile-summary-cutoff-hot" " percentile exceeds this count."))
 
cl::opt< uint64_tProfileSummaryHotCount ("profile-summary-hot-count", cl::ReallyHidden, cl::desc("A fixed hot count that overrides the count derived from" " profile-summary-cutoff-hot"))
 
cl::opt< uint64_tProfileSummaryColdCount ("profile-summary-cold-count", cl::ReallyHidden, cl::desc("A fixed cold count that overrides the count derived from" " profile-summary-cutoff-cold"))
 
static constexpr APFloatBase::ExponentType exponentZero (const fltSemantics &semantics)
 
static constexpr APFloatBase::ExponentType exponentInf (const fltSemantics &semantics)
 
static constexpr APFloatBase::ExponentType exponentNaN (const fltSemantics &semantics)
 
static Error createError (const Twine &Err)
 
static constexpr unsigned int partCountForBits (unsigned int bits)
 
static unsigned int decDigitValue (unsigned int c)
 
static Expected< int > readExponent (StringRef::iterator begin, StringRef::iterator end)
 
static Expected< int > totalExponent (StringRef::iterator p, StringRef::iterator end, int exponentAdjustment)
 
static Expected< StringRef::iteratorskipLeadingZeroesAndAnyDot (StringRef::iterator begin, StringRef::iterator end, StringRef::iterator *dot)
 
static Error interpretDecimal (StringRef::iterator begin, StringRef::iterator end, decimalInfo *D)
 
static Expected< lostFractiontrailingHexadecimalFraction (StringRef::iterator p, StringRef::iterator end, unsigned int digitValue)
 
static lostFraction lostFractionThroughTruncation (const APFloatBase::integerPart *parts, unsigned int partCount, unsigned int bits)
 
static lostFraction shiftRight (APFloatBase::integerPart *dst, unsigned int parts, unsigned int bits)
 
static lostFraction combineLostFractions (lostFraction moreSignificant, lostFraction lessSignificant)
 
static unsigned int HUerrBound (bool inexactMultiply, unsigned int HUerr1, unsigned int HUerr2)
 
static APFloatBase::integerPart ulpsFromBoundary (const APFloatBase::integerPart *parts, unsigned int bits, bool isNearest)
 
static unsigned int powerOf5 (APFloatBase::integerPart *dst, unsigned int power)
 
static unsigned int partAsHex (char *dst, APFloatBase::integerPart part, unsigned int count, const char *hexDigitChars)
 
static charwriteUnsignedDecimal (char *dst, unsigned int n)
 
static charwriteSignedDecimal (char *dst, int value)
 
static struct tm getStructTM (TimePoint<> TP)
 
static struct tm getStructTMUtc (UtcTime<> TP)
 
template<class T >
static void format (const T &Fractional, struct tm &LT, raw_ostream &OS, StringRef Style)
 
static Boolean isLegalUTF8 (const UTF8 *source, int length)
 
static unsigned findMaximalSubpartOfIllFormedUTF8Sequence (const UTF8 *source, const UTF8 *sourceEnd)
 
static ConversionResult ConvertUTF8toUTF32Impl (const UTF8 **sourceStart, const UTF8 *sourceEnd, UTF32 **targetStart, UTF32 *targetEnd, ConversionFlags flags, Boolean InputIsPartial)
 
template<typename TResult >
static bool ConvertUTF8toWideInternal (llvm::StringRef Source, TResult &Result)
 
void initDebugCounterOptions ()
 
void initGraphWriterOptions ()
 
void initSignalsOptions ()
 
void initStatisticOptions ()
 
void initTimerOptions ()
 
void initTypeSizeOptions ()
 
void initWithColorOptions ()
 
void initDebugOptions ()
 
void initRandomSeedOptions ()
 
void * SearchForAddressOfSpecialSymbol (const char *SymbolName)
 
static void PrintMessage (ArrayRef< SMLoc > Loc, SourceMgr::DiagKind Kind, const Twine &Msg)
 
FunctionPasscreateAArch64DeadRegisterDefinitions ()
 
FunctionPasscreateAArch64RedundantCopyEliminationPass ()
 
FunctionPasscreateAArch64CondBrTuning ()
 
FunctionPasscreateAArch64CompressJumpTablesPass ()
 
FunctionPasscreateAArch64ConditionalCompares ()
 
FunctionPasscreateAArch64AdvSIMDScalar ()
 
FunctionPasscreateAArch64ISelDag (AArch64TargetMachine &TM, CodeGenOptLevel OptLevel)
 createAArch64ISelDag - This pass converts a legalized DAG into a AArch64-specific DAG, ready for instruction scheduling.
 
FunctionPasscreateAArch64StorePairSuppressPass ()
 
FunctionPasscreateAArch64ExpandPseudoPass ()
 Returns an instance of the pseudo instruction expansion pass.
 
FunctionPasscreateAArch64SLSHardeningPass ()
 
FunctionPasscreateAArch64IndirectThunks ()
 
FunctionPasscreateAArch64SpeculationHardeningPass ()
 Returns an instance of the pseudo instruction expansion pass.
 
FunctionPasscreateAArch64LoadStoreOptimizationPass ()
 createAArch64LoadStoreOptimizationPass - returns an instance of the load / store optimization pass.
 
ModulePasscreateAArch64LowerHomogeneousPrologEpilogPass ()
 
FunctionPasscreateAArch64SIMDInstrOptPass ()
 Returns an instance of the high cost ASIMD instruction replacement optimization pass.
 
ModulePasscreateAArch64PromoteConstantPass ()
 
FunctionPasscreateAArch64ConditionOptimizerPass ()
 
FunctionPasscreateAArch64A57FPLoadBalancing ()
 
FunctionPasscreateAArch64A53Fix835769 ()
 
FunctionPasscreateFalkorHWPFFixPass ()
 
FunctionPasscreateFalkorMarkStridedAccessesPass ()
 
FunctionPasscreateAArch64PointerAuthPass ()
 
FunctionPasscreateAArch64BranchTargetsPass ()
 
FunctionPasscreateAArch64MIPeepholeOptPass ()
 
FunctionPasscreateAArch64PostCoalescerPass ()
 
FunctionPasscreateAArch64CleanupLocalDynamicTLSPass ()
 
FunctionPasscreateAArch64CollectLOHPass ()
 
FunctionPasscreateSMEABIPass ()
 
ModulePasscreateSVEIntrinsicOptsPass ()
 
InstructionSelectorcreateAArch64InstructionSelector (const AArch64TargetMachine &, AArch64Subtarget &, AArch64RegisterBankInfo &)
 
FunctionPasscreateAArch64O0PreLegalizerCombiner ()
 
FunctionPasscreateAArch64PreLegalizerCombiner ()
 
FunctionPasscreateAArch64PostLegalizerCombiner (bool IsOptNone)
 
FunctionPasscreateAArch64PostLegalizerLowering ()
 
FunctionPasscreateAArch64PostSelectOptimize ()
 
FunctionPasscreateAArch64StackTaggingPass (bool IsOptNone)
 
FunctionPasscreateAArch64StackTaggingPreRAPass ()
 
ModulePasscreateAArch64GlobalsTaggingPass ()
 
ModulePasscreateAArch64Arm64ECCallLoweringPass ()
 
void initializeAArch64A53Fix835769Pass (PassRegistry &)
 
void initializeAArch64A57FPLoadBalancingPass (PassRegistry &)
 
void initializeAArch64AdvSIMDScalarPass (PassRegistry &)
 
void initializeAArch64PointerAuthPass (PassRegistry &)
 
void initializeAArch64BranchTargetsPass (PassRegistry &)
 
void initializeAArch64CFIFixupPass (PassRegistry &)
 
void initializeAArch64CollectLOHPass (PassRegistry &)
 
void initializeAArch64CompressJumpTablesPass (PassRegistry &)
 
void initializeAArch64CondBrTuningPass (PassRegistry &)
 
void initializeAArch64ConditionOptimizerPass (PassRegistry &)
 
void initializeAArch64ConditionalComparesPass (PassRegistry &)
 
void initializeAArch64DAGToDAGISelPass (PassRegistry &)
 
void initializeAArch64DeadRegisterDefinitionsPass (PassRegistry &)
 
void initializeAArch64ExpandPseudoPass (PassRegistry &)
 
void initializeAArch64GlobalsTaggingPass (PassRegistry &)
 
void initializeAArch64LoadStoreOptPass (PassRegistry &)
 
void initializeAArch64LoopIdiomTransformLegacyPassPass (PassRegistry &)
 
void initializeAArch64LowerHomogeneousPrologEpilogPass (PassRegistry &)
 
void initializeAArch64MIPeepholeOptPass (PassRegistry &)
 
void initializeAArch64O0PreLegalizerCombinerPass (PassRegistry &)
 
void initializeAArch64PostCoalescerPass (PassRegistry &)
 
void initializeAArch64PostLegalizerCombinerPass (PassRegistry &)
 
void initializeAArch64PostLegalizerLoweringPass (PassRegistry &)
 
void initializeAArch64PostSelectOptimizePass (PassRegistry &)
 
void initializeAArch64PreLegalizerCombinerPass (PassRegistry &)
 
void initializeAArch64PromoteConstantPass (PassRegistry &)
 
void initializeAArch64RedundantCopyEliminationPass (PassRegistry &)
 
void initializeAArch64SIMDInstrOptPass (PassRegistry &)
 
void initializeAArch64SLSHardeningPass (PassRegistry &)
 
void initializeAArch64SpeculationHardeningPass (PassRegistry &)
 
void initializeAArch64StackTaggingPass (PassRegistry &)
 
void initializeAArch64StackTaggingPreRAPass (PassRegistry &)
 
void initializeAArch64StorePairSuppressPass (PassRegistry &)
 
void initializeFalkorHWPFFixPass (PassRegistry &)
 
void initializeFalkorMarkStridedAccessesLegacyPass (PassRegistry &)
 
void initializeLDTLSCleanupPass (PassRegistry &)
 
void initializeSMEABIPass (PassRegistry &)
 
void initializeSVEIntrinsicOptsPass (PassRegistry &)
 
void initializeAArch64Arm64ECCallLoweringPass (PassRegistry &)
 
bool CC_AArch64_AAPCS (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_AArch64_Arm64EC_VarArg (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_AArch64_Arm64EC_Thunk (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_AArch64_Arm64EC_Thunk_Native (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_AArch64_DarwinPCS_VarArg (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_AArch64_DarwinPCS (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_AArch64_DarwinPCS_ILP32_VarArg (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_AArch64_Win64PCS (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_AArch64_Win64_VarArg (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_AArch64_Win64_CFGuard_Check (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_AArch64_Arm64EC_CFGuard_Check (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_AArch64_GHC (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool RetCC_AArch64_AAPCS (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool RetCC_AArch64_Arm64EC_Thunk (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool RetCC_AArch64_Arm64EC_CFGuard_Check (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
std::optional< UsedNZCVexamineCFlagsUse (MachineInstr &MI, MachineInstr &CmpInstr, const TargetRegisterInfo &TRI, SmallVectorImpl< MachineInstr * > *CCUseInstrs=nullptr)
 
bool isNZCVTouchedInInstructionRange (const MachineInstr &DefMI, const MachineInstr &UseMI, const TargetRegisterInfo *TRI)
 Return true if there is an instruction /after/ DefMI and before UseMI which either reads or clobbers NZCV.
 
MCCFIInstruction createDefCFA (const TargetRegisterInfo &TRI, unsigned FrameReg, unsigned Reg, const StackOffset &Offset, bool LastAdjustmentWasScalable=true)
 
MCCFIInstruction createCFAOffset (const TargetRegisterInfo &MRI, unsigned Reg, const StackOffset &OffsetFromDefCFA)
 
void emitFrameOffset (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, const DebugLoc &DL, unsigned DestReg, unsigned SrcReg, StackOffset Offset, const TargetInstrInfo *TII, MachineInstr::MIFlag=MachineInstr::NoFlags, bool SetNZCV=false, bool NeedsWinCFI=false, bool *HasWinCFI=nullptr, bool EmitCFAOffset=false, StackOffset InitialOffset={}, unsigned FrameReg=AArch64::SP)
 emitFrameOffset - Emit instructions as needed to set DestReg to SrcReg plus Offset.
 
bool rewriteAArch64FrameIndex (MachineInstr &MI, unsigned FrameRegIdx, unsigned FrameReg, StackOffset &Offset, const AArch64InstrInfo *TII)
 rewriteAArch64FrameIndex - Rewrite MI to access 'Offset' bytes from the FP.
 
int isAArch64FrameOffsetLegal (const MachineInstr &MI, StackOffset &Offset, bool *OutUseUnscaledOp=nullptr, unsigned *OutUnscaledOp=nullptr, int64_t *EmittableOffset=nullptr)
 Check if the Offset is a valid frame offset for MI.
 
static bool isUncondBranchOpcode (int Opc)
 
static bool isCondBranchOpcode (int Opc)
 
static bool isIndirectBranchOpcode (int Opc)
 
static bool isPTrueOpcode (unsigned Opc)
 
unsigned getBLRCallOpcode (const MachineFunction &MF)
 Return opcode to be used for indirect calls.
 
static unsigned getXPACOpcodeForKey (AArch64PACKey::ID K)
 Return XPAC opcode to be used for a ptrauth strip using the given key.
 
static unsigned getAUTOpcodeForKey (AArch64PACKey::ID K, bool Zero)
 Return AUT opcode to be used for a ptrauth auth using the given key, or its AUT*Z variant that doesn't take a discriminator operand, using zero instead.
 
static unsigned getPACOpcodeForKey (AArch64PACKey::ID K, bool Zero)
 Return PAC opcode to be used for a ptrauth sign using the given key, or its PAC*Z variant that doesn't take a discriminator operand, using zero instead.
 
PasscreateAArch64LoopIdiomTransformPass ()
 
std::unique_ptr< ScheduleDAGMutationcreateAArch64MacroFusionDAGMutation ()
 Note that you have to add: DAG.addMutation(createAArch64MacroFusionDAGMutation()); to AArch64PassConfig::createMachineScheduler() to have an effect.
 
static unsigned getPerfectShuffleCost (llvm::ArrayRef< int > M)
 
bool isZIPMask (ArrayRef< int > M, EVT VT, unsigned &WhichResult)
 
bool isUZPMask (ArrayRef< int > M, EVT VT, unsigned &WhichResult)
 
MCELFStreamercreateAArch64ELFStreamer (MCContext &Context, std::unique_ptr< MCAsmBackend > TAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter, bool RelaxAll)
 
MCCodeEmittercreateAArch64MCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateAArch64leAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
MCAsmBackendcreateAArch64beAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateAArch64ELFObjectWriter (uint8_t OSABI, bool IsILP32)
 
std::unique_ptr< MCObjectTargetWritercreateAArch64MachObjectWriter (uint32_t CPUType, uint32_t CPUSubtype, bool IsILP32)
 
std::unique_ptr< MCObjectTargetWritercreateAArch64WinCOFFObjectWriter (const Triple &TheTriple)
 
MCTargetStreamercreateAArch64AsmTargetStreamer (MCStreamer &S, formatted_raw_ostream &OS, MCInstPrinter *InstPrint, bool isVerboseAsm)
 
MCTargetStreamercreateAArch64ObjectTargetStreamer (MCStreamer &S, const MCSubtargetInfo &STI)
 
MCTargetStreamercreateAArch64NullTargetStreamer (MCStreamer &S)
 
MCWinCOFFStreamercreateAArch64WinCOFFStreamer (MCContext &Context, std::unique_ptr< MCAsmBackend > TAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter, bool RelaxAll, bool IncrementalLinkerCompatible)
 
TargetgetTheAArch64leTarget ()
 
TargetgetTheAArch64beTarget ()
 
TargetgetTheAArch64_32Target ()
 
TargetgetTheARM64Target ()
 
TargetgetTheARM64_32Target ()
 
static unsigned getWRegFromXReg (unsigned Reg)
 
static unsigned getXRegFromWReg (unsigned Reg)
 
static unsigned getXRegFromXRegTuple (unsigned RegTuple)
 
static unsigned getBRegFromDReg (unsigned Reg)
 
static unsigned getDRegFromBReg (unsigned Reg)
 
static bool atomicBarrierDroppedOnZero (unsigned Opcode)
 
unsigned getNumElementsFromSVEPredPattern (unsigned Pattern)
 Return the number of active elements for VL1 to VL256 predicate pattern, zero for all other patterns.
 
std::optional< unsignedgetSVEPredPatternFromNumElements (unsigned MinNumElts)
 Return specific VL predicate pattern based on the number of elements.
 
 LLVM_DECLARE_ENUM_AS_BITMASK (TailFoldingOpts,(long) TailFoldingOpts::Reverse)
 
static const charAArch64VectorLayoutToString (AArch64Layout::VectorLayout Layout)
 
static AArch64Layout::VectorLayout AArch64StringToVectorLayout (StringRef LayoutStr)
 
static StringRef AArch64PACKeyIDToString (AArch64PACKey::ID KeyID)
 Return 2-letter identifier string for numeric key ID.
 
static std::optional< AArch64PACKey::IDAArch64StringToPACKeyID (StringRef Name)
 Return numeric key ID for 2-letter identifier string.
 
void initializeAMDGPUPreLegalizerCombinerPass (PassRegistry &)
 
FunctionPasscreateAMDGPUPreLegalizeCombiner (bool IsOptNone)
 
void initializeAMDGPUPostLegalizerCombinerPass (PassRegistry &)
 
FunctionPasscreateAMDGPUPostLegalizeCombiner (bool IsOptNone)
 
FunctionPasscreateAMDGPURegBankCombiner (bool IsOptNone)
 
void initializeAMDGPURegBankCombinerPass (PassRegistry &)
 
void initializeAMDGPURegBankSelectPass (PassRegistry &)
 
FunctionPasscreateGCNDPPCombinePass ()
 
FunctionPasscreateSIAnnotateControlFlowPass ()
 Create the annotation pass.
 
FunctionPasscreateSIFoldOperandsPass ()
 
FunctionPasscreateSIPeepholeSDWAPass ()
 
FunctionPasscreateSILowerI1CopiesPass ()
 
FunctionPasscreateAMDGPUGlobalISelDivergenceLoweringPass ()
 
FunctionPasscreateSIShrinkInstructionsPass ()
 
FunctionPasscreateSILoadStoreOptimizerPass ()
 
FunctionPasscreateSIWholeQuadModePass ()
 
FunctionPasscreateSIFixControlFlowLiveIntervalsPass ()
 
FunctionPasscreateSIOptimizeExecMaskingPreRAPass ()
 
FunctionPasscreateSIOptimizeVGPRLiveRangePass ()
 
FunctionPasscreateSIFixSGPRCopiesPass ()
 
FunctionPasscreateLowerWWMCopiesPass ()
 
FunctionPasscreateSIMemoryLegalizerPass ()
 
FunctionPasscreateSIInsertWaitcntsPass ()
 
FunctionPasscreateSIPreAllocateWWMRegsPass ()
 
FunctionPasscreateSIFormMemoryClausesPass ()
 
FunctionPasscreateSIPostRABundlerPass ()
 
FunctionPasscreateAMDGPUImageIntrinsicOptimizerPass (const TargetMachine *)
 
ModulePasscreateAMDGPURemoveIncompatibleFunctionsPass (const TargetMachine *)
 
FunctionPasscreateAMDGPUCodeGenPreparePass ()
 
FunctionPasscreateAMDGPULateCodeGenPreparePass ()
 
FunctionPasscreateAMDGPUMachineCFGStructurizerPass ()
 
FunctionPasscreateAMDGPURewriteOutArgumentsPass ()
 
ModulePasscreateAMDGPULowerModuleLDSLegacyPass (const AMDGPUTargetMachine *TM=nullptr)
 
ModulePasscreateAMDGPULowerBufferFatPointersPass ()
 
FunctionPasscreateSIModeRegisterPass ()
 
FunctionPasscreateGCNPreRAOptimizationsPass ()
 
void initializeAMDGPUDAGToDAGISelPass (PassRegistry &)
 
void initializeAMDGPUMachineCFGStructurizerPass (PassRegistry &)
 
void initializeAMDGPUAlwaysInlinePass (PassRegistry &)
 
PasscreateAMDGPUAnnotateKernelFeaturesPass ()
 
PasscreateAMDGPUAttributorLegacyPass ()
 
void initializeAMDGPUAttributorLegacyPass (PassRegistry &)
 
void initializeAMDGPUAnnotateKernelFeaturesPass (PassRegistry &)
 
FunctionPasscreateAMDGPUAtomicOptimizerPass (ScanOptions ScanStrategy)
 
void initializeAMDGPUAtomicOptimizerPass (PassRegistry &)
 
ModulePasscreateAMDGPUCtorDtorLoweringLegacyPass ()
 
void initializeAMDGPUCtorDtorLoweringLegacyPass (PassRegistry &)
 
FunctionPasscreateAMDGPULowerKernelArgumentsPass ()
 
void initializeAMDGPULowerKernelArgumentsPass (PassRegistry &)
 
FunctionPasscreateAMDGPUPromoteKernelArgumentsPass ()
 
void initializeAMDGPUPromoteKernelArgumentsPass (PassRegistry &)
 
ModulePasscreateAMDGPULowerKernelAttributesPass ()
 
void initializeAMDGPULowerKernelAttributesPass (PassRegistry &)
 
void initializeAMDGPULowerModuleLDSLegacyPass (PassRegistry &)
 
void initializeAMDGPULowerBufferFatPointersPass (PassRegistry &)
 
void initializeAMDGPURewriteOutArgumentsPass (PassRegistry &)
 
void initializeGCNDPPCombinePass (PassRegistry &)
 
void initializeSIFoldOperandsPass (PassRegistry &)
 
void initializeSIPeepholeSDWAPass (PassRegistry &)
 
void initializeSIShrinkInstructionsPass (PassRegistry &)
 
void initializeSIFixSGPRCopiesPass (PassRegistry &)
 
void initializeSIFixVGPRCopiesPass (PassRegistry &)
 
void initializeSILowerWWMCopiesPass (PassRegistry &)
 
void initializeSILowerI1CopiesPass (PassRegistry &)
 
void initializeAMDGPUGlobalISelDivergenceLoweringPass (PassRegistry &)
 
void initializeAMDGPUMarkLastScratchLoadPass (PassRegistry &)
 
void initializeSILowerSGPRSpillsPass (PassRegistry &)
 
void initializeSILoadStoreOptimizerPass (PassRegistry &)
 
void initializeSIWholeQuadModePass (PassRegistry &)
 
void initializeSILowerControlFlowPass (PassRegistry &)
 
void initializeSIPreEmitPeepholePass (PassRegistry &)
 
void initializeSILateBranchLoweringPass (PassRegistry &)
 
void initializeSIOptimizeExecMaskingPass (PassRegistry &)
 
void initializeSIPreAllocateWWMRegsPass (PassRegistry &)
 
void initializeAMDGPUImageIntrinsicOptimizerPass (PassRegistry &)
 
void initializeAMDGPUPerfHintAnalysisPass (PassRegistry &)
 
void initializeGCNRegPressurePrinterPass (PassRegistry &)
 
FunctionPasscreateAMDGPUPromoteAlloca ()
 
void initializeAMDGPUPromoteAllocaPass (PassRegistry &)
 
FunctionPasscreateAMDGPUPromoteAllocaToVector ()
 
void initializeAMDGPUPromoteAllocaToVectorPass (PassRegistry &)
 
PasscreateAMDGPUStructurizeCFGPass ()
 
FunctionPasscreateAMDGPUISelDag (TargetMachine &TM, CodeGenOptLevel OptLevel)
 This pass converts a legalized DAG into a AMDGPU-specific.
 
ModulePasscreateAMDGPUAlwaysInlinePass (bool GlobalOpt=true)
 
FunctionPasscreateAMDGPUAnnotateUniformValues ()
 
ModulePasscreateAMDGPUPrintfRuntimeBinding ()
 
void initializeAMDGPUPrintfRuntimeBindingPass (PassRegistry &)
 
void initializeAMDGPUResourceUsageAnalysisPass (PassRegistry &)
 
ModulePasscreateAMDGPUUnifyMetadataPass ()
 
void initializeAMDGPUUnifyMetadataPass (PassRegistry &)
 
void initializeSIOptimizeExecMaskingPreRAPass (PassRegistry &)
 
void initializeSIOptimizeVGPRLiveRangePass (PassRegistry &)
 
void initializeAMDGPUAnnotateUniformValuesPass (PassRegistry &)
 
void initializeAMDGPUCodeGenPreparePass (PassRegistry &)
 
void initializeAMDGPURemoveIncompatibleFunctionsPass (PassRegistry &)
 
void initializeAMDGPULateCodeGenPreparePass (PassRegistry &)
 
FunctionPasscreateAMDGPURewriteUndefForPHILegacyPass ()
 
void initializeAMDGPURewriteUndefForPHILegacyPass (PassRegistry &)
 
void initializeSIAnnotateControlFlowPass (PassRegistry &)
 
void initializeSIMemoryLegalizerPass (PassRegistry &)
 
void initializeSIModeRegisterPass (PassRegistry &)
 
void initializeAMDGPUInsertDelayAluPass (PassRegistry &)
 
void initializeAMDGPUInsertSingleUseVDSTPass (PassRegistry &)
 
void initializeSIInsertHardClausesPass (PassRegistry &)
 
void initializeSIInsertWaitcntsPass (PassRegistry &)
 
void initializeSIFormMemoryClausesPass (PassRegistry &)
 
void initializeSIPostRABundlerPass (PassRegistry &)
 
void initializeGCNCreateVOPDPass (PassRegistry &)
 
void initializeAMDGPUUnifyDivergentExitNodesPass (PassRegistry &)
 
ImmutablePasscreateAMDGPUAAWrapperPass ()
 
void initializeAMDGPUAAWrapperPassPass (PassRegistry &)
 
ImmutablePasscreateAMDGPUExternalAAWrapperPass ()
 
void initializeAMDGPUExternalAAWrapperPass (PassRegistry &)
 
void initializeAMDGPUArgumentUsageInfoPass (PassRegistry &)
 
ModulePasscreateAMDGPUOpenCLEnqueuedBlockLoweringPass ()
 
void initializeAMDGPUOpenCLEnqueuedBlockLoweringPass (PassRegistry &)
 
void initializeGCNNSAReassignPass (PassRegistry &)
 
void initializeGCNPreRALongBranchRegPass (PassRegistry &)
 
void initializeGCNPreRAOptimizationsPass (PassRegistry &)
 
FunctionPasscreateAMDGPUSetWavePriorityPass ()
 
void initializeAMDGPUSetWavePriorityPass (PassRegistry &)
 
void initializeGCNRewritePartialRegUsesPass (llvm::PassRegistry &)
 
raw_ostreamoperator<< (raw_ostream &OS, const ArgDescriptor &Arg)
 
std::unique_ptr< ScheduleDAGMutationcreateAMDGPUExportClusteringDAGMutation ()
 
std::unique_ptr< ScheduleDAGMutationcreateIGroupLPDAGMutation (AMDGPU::SchedulingPhase Phase)
 Phase specifes whether or not this is a reentry into the IGroupLPDAGMutation.
 
static double log2 (double V)
 
std::unique_ptr< ScheduleDAGMutationcreateAMDGPUMacroFusionDAGMutation ()
 Note that you have to add: DAG.addMutation(createAMDGPUMacroFusionDAGMutation()); to AMDGPUPassConfig::createMachineScheduler() to have an effect.
 
std::vector< const SUnit * > makeGCNILPScheduler (ArrayRef< const SUnit * > BotRoots, const ScheduleDAG &DAG)
 
std::vector< const SUnit * > makeMinRegSchedule (ArrayRef< const SUnit * > TopRoots, const ScheduleDAG &DAG)
 
GCNRegPressure max (const GCNRegPressure &P1, const GCNRegPressure &P2)
 
GCNRegPressure operator+ (const GCNRegPressure &P1, const GCNRegPressure &P2)
 
GCNRegPressure operator- (const GCNRegPressure &P1, const GCNRegPressure &P2)
 
GCNRPTracker::LiveRegSet getLiveRegs (SlotIndex SI, const LiveIntervals &LIS, const MachineRegisterInfo &MRI)
 
LaneBitmask getLiveLaneMask (unsigned Reg, SlotIndex SI, const LiveIntervals &LIS, const MachineRegisterInfo &MRI)
 
LaneBitmask getLiveLaneMask (const LiveInterval &LI, SlotIndex SI, const MachineRegisterInfo &MRI)
 
template<typename Range >
DenseMap< MachineInstr *, GCNRPTracker::LiveRegSetgetLiveRegMap (Range &&R, bool After, LiveIntervals &LIS)
 creates a map MachineInstr -> LiveRegSet R - range of iterators on instructions After - upon entry or exit of every instruction Note: there is no entry in the map for instructions with empty live reg set Complexity = O(NumVirtRegs * averageLiveRangeSegmentsPerReg * lg(R))
 
GCNRPTracker::LiveRegSet getLiveRegsAfter (const MachineInstr &MI, const LiveIntervals &LIS)
 
GCNRPTracker::LiveRegSet getLiveRegsBefore (const MachineInstr &MI, const LiveIntervals &LIS)
 
template<typename Range >
GCNRegPressure getRegPressure (const MachineRegisterInfo &MRI, Range &&LiveRegs)
 
bool isEqual (const GCNRPTracker::LiveRegSet &S1, const GCNRPTracker::LiveRegSet &S2)
 
Printable print (const GCNRegPressure &RP, const GCNSubtarget *ST=nullptr)
 
Printable print (const GCNRPTracker::LiveRegSet &LiveRegs, const MachineRegisterInfo &MRI)
 
Printable reportMismatch (const GCNRPTracker::LiveRegSet &LISLR, const GCNRPTracker::LiveRegSet &TrackedL, const TargetRegisterInfo *TRI, StringRef Pfx=" ")
 
raw_ostreamoperator<< (raw_ostream &OS, const GCNSchedStageID &StageID)
 
raw_ostreamoperator<< (raw_ostream &OS, const ScheduleMetrics &Sm)
 
bool checkVOPDRegConstraints (const SIInstrInfo &TII, const MachineInstr &FirstMI, const MachineInstr &SecondMI)
 
std::unique_ptr< ScheduleDAGMutationcreateVOPDPairingMutation ()
 
MCELFStreamercreateAMDGPUELFStreamer (const Triple &T, MCContext &Context, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter, bool RelaxAll)
 
MCRegisterInfocreateGCNMCRegisterInfo (AMDGPUDwarfFlavour DwarfFlavour)
 
MCCodeEmittercreateAMDGPUMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateAMDGPUAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateAMDGPUELFObjectWriter (bool Is64Bit, uint8_t OSABI, bool HasRelocationAddend)
 
MCCodeEmittercreateR600MCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCInstrInfocreateR600MCInstrInfo ()
 
FunctionPasscreateR600VectorRegMerger ()
 
FunctionPasscreateR600ExpandSpecialInstrsPass ()
 
FunctionPasscreateR600EmitClauseMarkers ()
 
FunctionPasscreateR600ClauseMergePass ()
 
FunctionPasscreateR600Packetizer ()
 
FunctionPasscreateR600ControlFlowFinalizer ()
 
FunctionPasscreateR600MachineCFGStructurizerPass ()
 
FunctionPasscreateR600ISelDag (TargetMachine &TM, CodeGenOptLevel OptLevel)
 This pass converts a legalized DAG into a R600-specific.
 
ModulePasscreateR600OpenCLImageTypeLoweringPass ()
 
void initializeR600ClauseMergePassPass (PassRegistry &)
 
void initializeR600ControlFlowFinalizerPass (PassRegistry &)
 
void initializeR600ExpandSpecialInstrsPassPass (PassRegistry &)
 
void initializeR600VectorRegMergerPass (PassRegistry &)
 
void initializeR600PacketizerPass (PassRegistry &)
 
AsmPrintercreateR600AsmPrinterPass (TargetMachine &TM, std::unique_ptr< MCStreamer > &&Streamer)
 
void initializeR600EmitClauseMarkersPass (PassRegistry &)
 
void initializeR600MachineCFGStructurizerPass (PassRegistry &)
 
bool isOfRegClass (const TargetInstrInfo::RegSubRegPair &P, const TargetRegisterClass &TRC, MachineRegisterInfo &MRI)
 Returns true if a reg:subreg pair P has a TRC class.
 
TargetInstrInfo::RegSubRegPair getRegSubRegPair (const MachineOperand &O)
 Create RegSubRegPair from a register MachineOperand.
 
TargetInstrInfo::RegSubRegPair getRegSequenceSubReg (MachineInstr &MI, unsigned SubReg)
 Return the SubReg component from REG_SEQUENCE.
 
MachineInstrgetVRegSubRegDef (const TargetInstrInfo::RegSubRegPair &P, MachineRegisterInfo &MRI)
 Return the defining instruction for a given reg:subreg pair skipping copy like instructions and subreg-manipulation pseudos.
 
bool execMayBeModifiedBeforeUse (const MachineRegisterInfo &MRI, Register VReg, const MachineInstr &DefMI, const MachineInstr &UseMI)
 Return false if EXEC is not changed between the def of VReg at DefMI and the use at UseMI.
 
bool execMayBeModifiedBeforeAnyUse (const MachineRegisterInfo &MRI, Register VReg, const MachineInstr &DefMI)
 Return false if EXEC is not changed between the def of VReg at DefMI and all its uses.
 
bool isBoolSGPR (SDValue V)
 
Register createLaneMaskReg (MachineRegisterInfo *MRI, MachineRegisterInfo::VRegAttrs LaneMaskRegAttrs)
 
TargetgetTheR600Target ()
 The target for R600 GPUs.
 
TargetgetTheGCNTarget ()
 The target for GCN GPUs.
 
raw_ostreamoperator<< (raw_ostream &OS, const AMDGPU::IsaInfo::TargetIDSetting S)
 
void printAmdKernelCodeField (const amd_kernel_code_t &C, int FldIndex, raw_ostream &OS)
 
void dumpAmdKernelCode (const amd_kernel_code_t *C, raw_ostream &OS, const char *tab)
 
bool parseAmdKernelCodeField (StringRef ID, MCAsmParser &Parser, amd_kernel_code_t &C, raw_ostream &Err)
 
FunctionPasscreateARCISelDag (ARCTargetMachine &TM, CodeGenOptLevel OptLevel)
 This pass converts a legalized DAG into a ARC-specific DAG, ready for instruction scheduling.
 
FunctionPasscreateARCExpandPseudosPass ()
 
FunctionPasscreateARCOptAddrMode ()
 
FunctionPasscreateARCBranchFinalizePass ()
 
void initializeARCDAGToDAGISelPass (PassRegistry &)
 
void initializeARCBranchFinalizePass (PassRegistry &Registry)
 
void initializeARCOptAddrModePass (PassRegistry &)
 
TargetgetTheARCTarget ()
 
PasscreateMVETailPredicationPass ()
 
FunctionPasscreateARMLowOverheadLoopsPass ()
 
FunctionPasscreateARMBlockPlacementPass ()
 
PasscreateARMParallelDSPPass ()
 
FunctionPasscreateARMISelDag (ARMBaseTargetMachine &TM, CodeGenOptLevel OptLevel)
 createARMISelDag - This pass converts a legalized DAG into a ARM-specific DAG, ready for instruction scheduling.
 
FunctionPasscreateA15SDOptimizerPass ()
 
FunctionPasscreateARMLoadStoreOptimizationPass (bool PreAlloc=false)
 Returns an instance of the load / store optimization pass.
 
FunctionPasscreateARMExpandPseudoPass ()
 createARMExpandPseudoPass - returns an instance of the pseudo instruction expansion pass.
 
FunctionPasscreateARMBranchTargetsPass ()
 
FunctionPasscreateARMConstantIslandPass ()
 createARMConstantIslandPass - returns an instance of the constpool island pass.
 
FunctionPasscreateMLxExpansionPass ()
 
FunctionPasscreateThumb2ITBlockPass ()
 createThumb2ITBlockPass - Returns an instance of the Thumb2 IT blocks insertion pass.
 
FunctionPasscreateMVEVPTBlockPass ()
 createMVEVPTBlock - Returns an instance of the MVE VPT block insertion pass.
 
FunctionPasscreateMVETPAndVPTOptimisationsPass ()
 createMVETPAndVPTOptimisationsPass
 
FunctionPasscreateARMOptimizeBarriersPass ()
 createARMOptimizeBarriersPass - Returns an instance of the remove double barriers pass.
 
FunctionPasscreateThumb2SizeReductionPass (std::function< bool(const Function &)> Ftor=nullptr)
 createThumb2SizeReductionPass - Returns an instance of the Thumb2 size reduction pass.
 
InstructionSelectorcreateARMInstructionSelector (const ARMBaseTargetMachine &TM, const ARMSubtarget &STI, const ARMRegisterBankInfo &RBI)
 
PasscreateMVEGatherScatterLoweringPass ()
 
FunctionPasscreateARMSLSHardeningPass ()
 
FunctionPasscreateARMIndirectThunks ()
 
PasscreateMVELaneInterleavingPass ()
 
FunctionPasscreateARMFixCortexA57AES1742098Pass ()
 
void LowerARMMachineInstrToMCInst (const MachineInstr *MI, MCInst &OutMI, ARMAsmPrinter &AP)
 
void initializeARMBlockPlacementPass (PassRegistry &)
 
void initializeARMBranchTargetsPass (PassRegistry &)
 
void initializeARMConstantIslandsPass (PassRegistry &)
 
void initializeARMDAGToDAGISelPass (PassRegistry &)
 
void initializeARMExpandPseudoPass (PassRegistry &)
 
void initializeARMFixCortexA57AES1742098Pass (PassRegistry &)
 
void initializeARMLoadStoreOptPass (PassRegistry &)
 
void initializeARMLowOverheadLoopsPass (PassRegistry &)
 
void initializeARMParallelDSPPass (PassRegistry &)
 
void initializeARMPreAllocLoadStoreOptPass (PassRegistry &)
 
void initializeARMSLSHardeningPass (PassRegistry &)
 
void initializeMVEGatherScatterLoweringPass (PassRegistry &)
 
void initializeMVELaneInterleavingPass (PassRegistry &)
 
void initializeMVETPAndVPTOptimisationsPass (PassRegistry &)
 
void initializeMVETailPredicationPass (PassRegistry &)
 
void initializeMVEVPTBlockPass (PassRegistry &)
 
void initializeThumb2ITBlockPass (PassRegistry &)
 
void initializeThumb2SizeReducePass (PassRegistry &)
 
template<>
bool IsCPSRDead< MachineInstr > (const MachineInstr *MI)
 
static std::array< MachineOperand, 2 > predOps (ARMCC::CondCodes Pred, unsigned PredReg=0)
 Get the operands corresponding to the given Pred value.
 
static MachineOperand condCodeOp (unsigned CCReg=0)
 Get the operand corresponding to the conditional code result.
 
static MachineOperand t1CondCodeOp (bool isDead=false)
 Get the operand corresponding to the conditional code result for Thumb1.
 
static bool isUncondBranchOpcode (int Opc)
 
static bool isVPTOpcode (int Opc)
 
static unsigned VCMPOpcodeToVPT (unsigned Opcode)
 
static bool isCondBranchOpcode (int Opc)
 
static bool isJumpTableBranchOpcode (int Opc)
 
static bool isIndirectBranchOpcode (int Opc)
 
static bool isIndirectCall (const MachineInstr &MI)
 
static bool isIndirectControlFlowNotComingBack (const MachineInstr &MI)
 
static bool isSpeculationBarrierEndBBOpcode (int Opc)
 
static bool isPopOpcode (int Opc)
 
static bool isPushOpcode (int Opc)
 
static bool isSubImmOpcode (int Opc)
 
static bool isMovRegOpcode (int Opc)
 
static bool isValidCoprocessorNumber (unsigned Num, const FeatureBitset &featureBits)
 isValidCoprocessorNumber - decide whether an explicit coprocessor number is legal in generic instructions like CDP.
 
static bool isSEHInstruction (const MachineInstr &MI)
 
ARMCC::CondCodes getInstrPredicate (const MachineInstr &MI, Register &PredReg)
 getInstrPredicate - If instruction is predicated, returns its predicate condition, otherwise returns AL.
 
unsigned getMatchingCondBranchOpcode (unsigned Opc)
 
unsigned convertAddSubFlagsOpcode (unsigned OldOpc)
 Map pseudo instructions that imply an 'S' bit onto real opcodes.
 
void emitARMRegPlusImmediate (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, const DebugLoc &dl, Register DestReg, Register BaseReg, int NumBytes, ARMCC::CondCodes Pred, Register PredReg, const ARMBaseInstrInfo &TII, unsigned MIFlags=0)
 emitARMRegPlusImmediate / emitT2RegPlusImmediate - Emits a series of instructions to materializea destreg = basereg + immediate in ARM / Thumb2 code.
 
void emitT2RegPlusImmediate (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, const DebugLoc &dl, Register DestReg, Register BaseReg, int NumBytes, ARMCC::CondCodes Pred, Register PredReg, const ARMBaseInstrInfo &TII, unsigned MIFlags=0)
 
void emitThumbRegPlusImmediate (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, const DebugLoc &dl, Register DestReg, Register BaseReg, int NumBytes, const TargetInstrInfo &TII, const ARMBaseRegisterInfo &MRI, unsigned MIFlags=0)
 emitThumbRegPlusImmediate - Emits a series of instructions to materialize a destreg = basereg + immediate in Thumb code.
 
bool tryFoldSPUpdateIntoPushPop (const ARMSubtarget &Subtarget, MachineFunction &MF, MachineInstr *MI, unsigned NumBytes)
 Tries to add registers to the reglist of a given base-updating push/pop instruction to adjust the stack by an additional NumBytes.
 
bool rewriteARMFrameIndex (MachineInstr &MI, unsigned FrameRegIdx, Register FrameReg, int &Offset, const ARMBaseInstrInfo &TII)
 rewriteARMFrameIndex / rewriteT2FrameIndex - Rewrite MI to access 'Offset' bytes from the FP.
 
bool rewriteT2FrameIndex (MachineInstr &MI, unsigned FrameRegIdx, Register FrameReg, int &Offset, const ARMBaseInstrInfo &TII, const TargetRegisterInfo *TRI)
 
bool registerDefinedBetween (unsigned Reg, MachineBasicBlock::iterator From, MachineBasicBlock::iterator To, const TargetRegisterInfo *TRI)
 Return true if Reg is defd between From and To.
 
MachineInstrfindCMPToFoldIntoCBZ (MachineInstr *Br, const TargetRegisterInfo *TRI)
 Search backwards from a tBcc to find a tCMPi8 against 0, meaning we can convert them to a tCBZ or tCBNZ.
 
void addUnpredicatedMveVpredNOp (MachineInstrBuilder &MIB)
 
void addUnpredicatedMveVpredROp (MachineInstrBuilder &MIB, Register DestReg)
 
void addPredicatedMveVpredNOp (MachineInstrBuilder &MIB, unsigned Cond)
 
void addPredicatedMveVpredROp (MachineInstrBuilder &MIB, unsigned Cond, unsigned Inactive)
 
unsigned ConstantMaterializationCost (unsigned Val, const ARMSubtarget *Subtarget, bool ForCodesize=false)
 Returns the number of instructions required to materialize the given constant in a register, or 3 if a literal pool load is needed.
 
bool HasLowerConstantMaterializationCost (unsigned Val1, unsigned Val2, const ARMSubtarget *Subtarget, bool ForCodesize=false)
 Returns true if Val1 has a lower Constant Materialization Cost than Val2.
 
int getAddSubImmediate (MachineInstr &MI)
 
bool isLegalAddressImm (unsigned Opcode, int Imm, const TargetInstrInfo *TII)
 
bool isGather (IntrinsicInst *IntInst)
 
bool isScatter (IntrinsicInst *IntInst)
 
bool isGatherScatter (IntrinsicInst *IntInst)
 
unsigned getBLXOpcode (const MachineFunction &MF)
 
unsigned gettBLXrOpcode (const MachineFunction &MF)
 
unsigned getBLXpredOpcode (const MachineFunction &MF)
 
static bool isARMArea1Register (unsigned Reg, bool SplitFramePushPop)
 isARMArea1Register - Returns true if the register is a low register (r0-r7) or a stack/pc register that we should push/pop.
 
static bool isARMArea2Register (unsigned Reg, bool SplitFramePushPop)
 
static bool isSplitFPArea1Register (unsigned Reg, bool SplitFramePushPop)
 
static bool isSplitFPArea2Register (unsigned Reg, bool SplitFramePushPop)
 
static bool isARMArea3Register (unsigned Reg, bool SplitFramePushPop)
 
static bool isCalleeSavedRegister (unsigned Reg, const MCPhysReg *CSRegs)
 
static bool mayOptimizeThumb2Instruction (const MachineInstr *MI)
 
unsigned UnknownPadding (Align Alignment, unsigned KnownBits)
 UnknownPadding - Return the worst case padding that could result from unknown offset bits.
 
bool CC_ARM_AAPCS (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_ARM_AAPCS_VFP (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_ARM_APCS (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_ARM_APCS_GHC (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool FastCC_ARM_APCS (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_ARM_Win32_CFGuard_Check (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool RetCC_ARM_AAPCS (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool RetCC_ARM_AAPCS_VFP (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool RetCC_ARM_APCS (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool RetFastCC_ARM_APCS (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
raw_ostreamoperator<< (raw_ostream &O, const ARMConstantPoolValue &V)
 
template<typename InstrType >
bool IsCPSRDead (const InstrType *Instr)
 
template<typename InstrType >
bool isV8EligibleForIT (const InstrType *Instr)
 
static bool isAESPair (const MachineInstr *FirstMI, const MachineInstr &SecondMI)
 
static bool isLiteralsPair (const MachineInstr *FirstMI, const MachineInstr &SecondMI)
 
static bool shouldScheduleAdjacent (const TargetInstrInfo &TII, const TargetSubtargetInfo &TSI, const MachineInstr *FirstMI, const MachineInstr &SecondMI)
 Check if the instr pair, FirstMI and SecondMI, should be fused together.
 
std::unique_ptr< ScheduleDAGMutationcreateARMMacroFusionDAGMutation ()
 Note that you have to add: DAG.addMutation(createARMMacroFusionDAGMutation()); to ARMPassConfig::createMachineScheduler() to have an effect.
 
void initializeARMExecutionDomainFixPass (PassRegistry &)
 
bool isVREVMask (ArrayRef< int > M, EVT VT, unsigned BlockSize)
 isVREVMask - Check if a vector shuffle corresponds to a VREV instruction with the specified blocksize.
 
template<>
bool IsCPSRDead< MCInst > (const MCInst *Instr)
 
static bool isARMLowRegister (unsigned Reg)
 isARMLowRegister - Returns true if the register is a low register (r0-r7).
 
MCTargetStreamercreateARMTargetAsmStreamer (MCStreamer &S, formatted_raw_ostream &OS, MCInstPrinter *InstPrint, bool isVerboseAsm)
 
MCTargetStreamercreateARMNullTargetStreamer (MCStreamer &S)
 
MCTargetStreamercreateARMObjectTargetELFStreamer (MCStreamer &S)
 
MCTargetStreamercreateARMObjectTargetStreamer (MCStreamer &S, const MCSubtargetInfo &STI)
 
MCTargetStreamercreateARMObjectTargetWinCOFFStreamer (MCStreamer &S)
 
MCCodeEmittercreateARMLEMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCCodeEmittercreateARMBEMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateARMLEAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
MCAsmBackendcreateARMBEAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
MCStreamercreateARMWinCOFFStreamer (MCContext &Context, std::unique_ptr< MCAsmBackend > &&MAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter, bool RelaxAll, bool IncrementalLinkerCompatible)
 
std::unique_ptr< MCObjectTargetWritercreateARMELFObjectWriter (uint8_t OSABI)
 Construct an ELF Mach-O object writer.
 
std::unique_ptr< MCObjectTargetWritercreateARMMachObjectWriter (bool Is64Bit, uint32_t CPUType, uint32_t CPUSubtype)
 Construct an ARM Mach-O object writer.
 
std::unique_ptr< MCObjectTargetWritercreateARMWinCOFFObjectWriter ()
 Construct an ARM PE/COFF object writer.
 
MCRelocationInfocreateARMMachORelocationInfo (MCContext &Ctx)
 Construct ARM Mach-O relocation info.
 
static unsigned VCTPOpcodeToLSTP (unsigned Opcode, bool IsDoLoop)
 
static unsigned getTailPredVectorWidth (unsigned Opcode)
 
static bool isVCTP (const MachineInstr *MI)
 
static bool isDoLoopStart (const MachineInstr &MI)
 
static bool isWhileLoopStart (const MachineInstr &MI)
 
static bool isLoopStart (const MachineInstr &MI)
 
MachineBasicBlockgetWhileLoopStartTargetBB (const MachineInstr &MI)
 
void RevertWhileLoopStartLR (MachineInstr *MI, const TargetInstrInfo *TII, unsigned BrOpc=ARM::t2Bcc, bool UseCmp=false)
 
void RevertDoLoopStart (MachineInstr *MI, const TargetInstrInfo *TII)
 
void RevertLoopDec (MachineInstr *MI, const TargetInstrInfo *TII, bool SetFlags=false)
 
void RevertLoopEnd (MachineInstr *MI, const TargetInstrInfo *TII, unsigned BrOpc=ARM::t2Bcc, bool SkipCmp=false)
 
TargetgetTheARMLETarget ()
 
TargetgetTheARMBETarget ()
 
TargetgetTheThumbLETarget ()
 
TargetgetTheThumbBETarget ()
 
ARMCC::CondCodes getITInstrPredicate (const MachineInstr &MI, Register &PredReg)
 getITInstrPredicate - Valid only in Thumb2 mode.
 
int findFirstVPTPredOperandIdx (const MachineInstr &MI)
 
ARMVCC::VPTCodes getVPTInstrPredicate (const MachineInstr &MI, Register &PredReg)
 
ARMVCC::VPTCodes getVPTInstrPredicate (const MachineInstr &MI)
 
void recomputeVPTBlockMask (MachineInstr &Instr)
 
ARM::PredBlockMask expandPredBlockMask (ARM::PredBlockMask BlockMask, ARMVCC::VPTCodes Kind)
 
static const charARMVPTPredToString (ARMVCC::VPTCodes CC)
 
static unsigned ARMVectorCondCodeFromString (StringRef CC)
 
static const charARMCondCodeToString (ARMCC::CondCodes CC)
 
static unsigned ARMCondCodeFromString (StringRef CC)
 
PasscreateAVRShiftExpandPass ()
 
FunctionPasscreateAVRISelDag (AVRTargetMachine &TM, CodeGenOptLevel OptLevel)
 
FunctionPasscreateAVRExpandPseudoPass ()
 
FunctionPasscreateAVRFrameAnalyzerPass ()
 Creates instance of the frame analyzer pass.
 
FunctionPasscreateAVRBranchSelectionPass ()
 
void initializeAVRDAGToDAGISelPass (PassRegistry &)
 
void initializeAVRExpandPseudoPass (PassRegistry &)
 
void initializeAVRShiftExpandPass (PassRegistry &)
 
static void restoreStatusRegister (MachineFunction &MF, MachineBasicBlock &MBB)
 
static void fixStackStores (MachineBasicBlock &MBB, MachineBasicBlock::iterator StartMI, const TargetInstrInfo &TII)
 Replace pseudo store instructions that pass arguments through the stack with real instructions.
 
static AVRCC::CondCodes intCCToAVRCC (ISD::CondCode CC)
 IntCCToAVRCC - Convert a DAG integer condition code to an AVR CC.
 
template<typename ArgT >
static void analyzeArguments (TargetLowering::CallLoweringInfo *CLI, const Function *F, const DataLayout *TD, const SmallVectorImpl< ArgT > &Args, SmallVectorImpl< CCValAssign > &ArgLocs, CCState &CCInfo, bool Tiny)
 Analyze incoming and outgoing function arguments.
 
template<typename ArgT >
static unsigned getTotalArgumentsSizeInBytes (const SmallVectorImpl< ArgT > &Args)
 Count the total number of bytes needed to pass or return these arguments.
 
template<typename ArgT >
static void analyzeReturnValues (const SmallVectorImpl< ArgT > &Args, CCState &CCInfo, bool Tiny)
 Analyze incoming and outgoing value of returning from a function.
 
static void insertMultibyteShift (MachineInstr &MI, MachineBasicBlock *BB, MutableArrayRef< std::pair< Register, int > > Regs, ISD::NodeType Opc, int64_t ShiftAmt)
 
static bool isCopyMulResult (MachineBasicBlock::iterator const &I)
 
static void foldFrameOffset (MachineBasicBlock::iterator &II, int &Offset, Register DstReg)
 Fold a frame offset shared between two add instructions into a single one.
 
static StringRef getCPU (StringRef CPU)
 Processes a CPU name.
 
static Reloc::Model getEffectiveRelocModel (std::optional< Reloc::Model > RM)
 
LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAVRTarget ()
 
MCAsmBackendcreateAVRAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const llvm::MCTargetOptions &TO)
 Creates an assembly backend for AVR.
 
std::unique_ptr< MCObjectTargetWritercreateAVRELFObjectWriter (uint8_t OSABI)
 Creates an ELF object writer for AVR.
 
static unsigned getEFlagsForFeatureSet (const FeatureBitset &Features)
 
MCStreamercreateAVRELFStreamer (Triple const &TT, MCContext &Context, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > CE)
 
MCInstrInfocreateAVRMCInstrInfo ()
 
MCCodeEmittercreateAVRMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 Creates a machine code emitter for AVR.
 
TargetgetTheAVRTarget ()
 
ModulePasscreateBPFCheckAndAdjustIR ()
 
FunctionPasscreateBPFISelDag (BPFTargetMachine &TM)
 
FunctionPasscreateBPFMISimplifyPatchablePass ()
 
FunctionPasscreateBPFMIPeepholePass ()
 
FunctionPasscreateBPFMIPreEmitPeepholePass ()
 
FunctionPasscreateBPFMIPreEmitCheckingPass ()
 
InstructionSelectorcreateBPFInstructionSelector (const BPFTargetMachine &, const BPFSubtarget &, const BPFRegisterBankInfo &)
 
void initializeBPFCheckAndAdjustIRPass (PassRegistry &)
 
void initializeBPFDAGToDAGISelPass (PassRegistry &)
 
void initializeBPFMIPeepholePass (PassRegistry &)
 
void initializeBPFMIPreEmitCheckingPass (PassRegistry &)
 
void initializeBPFMIPreEmitPeepholePass (PassRegistry &)
 
void initializeBPFMISimplifyPatchablePass (PassRegistry &)
 
MCCodeEmittercreateBPFMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCCodeEmittercreateBPFbeMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateBPFAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
MCAsmBackendcreateBPFbeAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateBPFELFObjectWriter (uint8_t OSABI)
 
TargetgetTheBPFleTarget ()
 
TargetgetTheBPFbeTarget ()
 
TargetgetTheBPFTarget ()
 
FunctionPasscreateCSKYISelDag (CSKYTargetMachine &TM, CodeGenOptLevel OptLevel)
 
FunctionPasscreateCSKYConstantIslandPass ()
 Returns a pass that converts branches to long branches.
 
void initializeCSKYConstantIslandsPass (PassRegistry &)
 
void initializeCSKYDAGToDAGISelPass (PassRegistry &)
 
static bool CC_CSKY_ABIV2_SOFT_64 (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
 
static bool Ret_CSKY_ABIV2_SOFT_64 (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
 
std::unique_ptr< MCObjectTargetWritercreateCSKYELFObjectWriter ()
 
MCAsmBackendcreateCSKYAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
MCCodeEmittercreateCSKYMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
TargetgetTheCSKYTarget ()
 
void initializeWriteDXILPassPass (PassRegistry &)
 Initializer for dxil writer pass.
 
void initializeEmbedDXILPassPass (PassRegistry &)
 Initializer for dxil embedder pass.
 
void initializeDXILPrepareModulePass (PassRegistry &)
 Initializer for DXIL-prepare.
 
ModulePasscreateDXILPrepareModulePass ()
 Pass to convert modules into DXIL-compatable modules.
 
void initializeDXILIntrinsicExpansionLegacyPass (PassRegistry &)
 Initializer for DXIL Intrinsic Expansion.
 
ModulePasscreateDXILIntrinsicExpansionLegacyPass ()
 Pass to expand intrinsic operations that lack DXIL opCodes.
 
void initializeDXILOpLoweringLegacyPass (PassRegistry &)
 Initializer for DXILOpLowering.
 
ModulePasscreateDXILOpLoweringLegacyPass ()
 Pass to lowering LLVM intrinsic call to DXIL op function call.
 
void initializeDXILTranslateMetadataPass (PassRegistry &)
 Initializer for DXILTranslateMetadata.
 
ModulePasscreateDXILTranslateMetadataPass ()
 Pass to emit metadata for DXIL.
 
void initializeDXILResourceWrapperPass (PassRegistry &)
 Initializer for DXILTranslateMetadata.
 
ModulePasscreateDXILPrettyPrinterPass (raw_ostream &OS)
 Pass to pretty print DXIL metadata.
 
void initializeDXILPrettyPrinterPass (PassRegistry &)
 Initializer for DXILPrettyPrinter.
 
void initializeShaderFlagsAnalysisWrapperPass (PassRegistry &)
 Initializer for dxil::ShaderFlagsAnalysisWrapper pass.
 
void initializeDXContainerGlobalsPass (PassRegistry &)
 Initializer for DXContainerGlobals pass.
 
ModulePasscreateDXContainerGlobalsPass ()
 Pass for generating DXContainer part globals.
 
ModulePasscreateDXILWriterPass (raw_ostream &Str)
 Create and return a pass that writes the module to the specified ostream.
 
ModulePasscreateDXILEmbedderPass ()
 Create and return a pass that writes the module to a global variable in the module for later emission in the MCStreamer.
 
std::unique_ptr< MCObjectTargetWritercreateDXContainerTargetObjectWriter ()
 
TargetgetTheDirectXTarget ()
 
raw_ostreamoperator<< (raw_ostream &OS, const BT::BitValue &BV)
 
raw_ostreamoperator<< (raw_ostream &OS, const BT::RegisterCell &RC)
 
ImmutablePasscreateHexagonTargetTransformInfoPass (const HexagonTargetMachine *TM)
 Creates a Hexagon-specific Target Transformation Info pass.
 
void initializeHexagonDAGToDAGISelPass (PassRegistry &)
 
void HexagonLowerToMC (const MCInstrInfo &MCII, const MachineInstr *MI, MCInst &MCB, HexagonAsmPrinter &AP)
 
void initializeHexagonBitSimplifyPass (PassRegistry &Registry)
 
FunctionPasscreateHexagonBitSimplify ()
 
FunctionPasscreateHexagonLoopRescheduling ()
 
void initializeHexagonLoopReschedulingPass (PassRegistry &)
 
raw_ostreamoperator<< (raw_ostream &OS, HexagonBlockRanges::IndexType Idx)
 
raw_ostreamoperator<< (raw_ostream &OS, const HexagonBlockRanges::IndexRange &IR)
 
raw_ostreamoperator<< (raw_ostream &OS, const HexagonBlockRanges::RangeList &RL)
 
raw_ostreamoperator<< (raw_ostream &OS, const HexagonBlockRanges::InstrIndexMap &M)
 
raw_ostreamoperator<< (raw_ostream &OS, const HexagonBlockRanges::PrintRangeMap &P)
 
FunctionPasscreateHexagonBranchRelaxation ()
 
void initializeHexagonBranchRelaxationPass (PassRegistry &)
 
FunctionPasscreateHexagonCFGOptimizer ()
 
void initializeHexagonCFGOptimizerPass (PassRegistry &)
 
void initializeHexagonCommonGEPPass (PassRegistry &)
 
FunctionPasscreateHexagonCommonGEP ()
 
void initializeHexagonConstExtendersPass (PassRegistry &)
 
FunctionPasscreateHexagonConstExtenders ()
 
FunctionPasscreateHexagonConstPropagationPass ()
 
void initializeHexagonConstPropagationPass (PassRegistry &Registry)
 
FunctionPasscreateHexagonCopyToCombine ()
 
void initializeHexagonCopyToCombinePass (PassRegistry &)
 
bool is_TC1 (unsigned SchedClass)
 
bool is_TC2 (unsigned SchedClass)
 
bool is_TC2early (unsigned SchedClass)
 
bool is_TC3x (unsigned SchedClass)
 
bool is_TC4x (unsigned SchedClass)
 
FunctionPasscreateHexagonEarlyIfConversion ()
 
void initializeHexagonEarlyIfConversionPass (PassRegistry &Registry)
 
void initializeHexagonExpandCondsetsPass (PassRegistry &)
 
FunctionPasscreateHexagonExpandCondsets ()
 
FunctionPasscreateHexagonFixupHwLoops ()
 
void initializeHexagonFixupHwLoopsPass (PassRegistry &)
 
void initializeHexagonCallFrameInformationPass (PassRegistry &)
 
FunctionPasscreateHexagonCallFrameInformation ()
 
void initializeHexagonGenExtractPass (PassRegistry &)
 
FunctionPasscreateHexagonGenExtract ()
 
void initializeHexagonGenInsertPass (PassRegistry &)
 
FunctionPasscreateHexagonGenInsert ()
 
FunctionPasscreateHexagonGenMemAbsolute ()
 
void initializeHexagonGenMemAbsolutePass (PassRegistry &Registry)
 
FunctionPasscreateHexagonGenMux ()
 
void initializeHexagonGenMuxPass (PassRegistry &Registry)
 
void initializeHexagonGenPredicatePass (PassRegistry &Registry)
 
FunctionPasscreateHexagonGenPredicate ()
 
FunctionPasscreateHexagonHardwareLoops ()
 
void initializeHexagonHardwareLoopsPass (PassRegistry &)
 
FunctionPasscreateHexagonISelDag (HexagonTargetMachine &TM, CodeGenOptLevel OptLevel)
 createHexagonISelDag - This pass converts a legalized DAG into a Hexagon-specific DAG, ready for instruction scheduling.
 
FunctionPasscreateHexagonLoopAlign ()
 
void initializeHexagonLoopAlignPass (PassRegistry &)
 
void initializeHexagonLoopIdiomRecognizeLegacyPassPass (PassRegistry &)
 
PasscreateHexagonLoopIdiomPass ()
 
FunctionPasscreateHexagonNewValueJump ()
 
void initializeHexagonNewValueJumpPass (PassRegistry &)
 
FunctionPasscreateHexagonOptAddrMode ()
 
void initializeHexagonOptAddrModePass (PassRegistry &)
 
FunctionPasscreateHexagonOptimizeSZextends ()
 
void initializeHexagonOptimizeSZextendsPass (PassRegistry &)
 
FunctionPasscreateHexagonPeephole ()
 
void initializeHexagonPeepholePass (PassRegistry &)
 
void initializeHexagonRDFOptPass (PassRegistry &)
 
FunctionPasscreateHexagonRDFOpt ()
 
FunctionPasscreateHexagonSplitConst32AndConst64 ()
 
void initializeHexagonSplitConst32AndConst64Pass (PassRegistry &)
 
FunctionPasscreateHexagonSplitDoubleRegs ()
 
void initializeHexagonSplitDoubleRegsPass (PassRegistry &)
 
FunctionPasscreateHexagonStoreWidening ()
 
void initializeHexagonStoreWideningPass (PassRegistry &)
 
void initializeHexagonPacketizerPass (PassRegistry &)
 
void initializeHexagonTfrCleanupPass (PassRegistry &)
 
void initializeHexagonVExtractPass (PassRegistry &)
 
void initializeHexagonVectorCombineLegacyPass (PassRegistry &)
 
void initializeHexagonVectorLoopCarriedReuseLegacyPassPass (PassRegistry &)
 
PasscreateHexagonVectorLoopCarriedReuseLegacyPass ()
 
FunctionPasscreateHexagonPacketizer (bool Minimal)
 
FunctionPasscreateHexagonTfrCleanup ()
 
FunctionPasscreateHexagonVectorCombineLegacyPass ()
 
FunctionPasscreateHexagonVectorPrint ()
 
FunctionPasscreateHexagonVExtract ()
 
void initializeHexagonVectorPrintPass (PassRegistry &)
 
MCStreamercreateHexagonELFStreamer (Triple const &TT, MCContext &Context, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > CE)
 
bool HexagonMCShuffle (MCContext &Context, bool ReportErrors, MCInstrInfo const &MCII, MCSubtargetInfo const &STI, MCInst &MCB)
 
bool HexagonMCShuffle (MCContext &Context, MCInstrInfo const &MCII, MCSubtargetInfo const &STI, MCInst &MCB, MCInst const &AddMI, int fixupCount)
 
bool HexagonMCShuffle (MCContext &Context, MCInstrInfo const &MCII, MCSubtargetInfo const &STI, MCInst &MCB, SmallVector< DuplexCandidate, 8 > possibleDuplexes)
 
MCInstrInfocreateHexagonMCInstrInfo ()
 
MCRegisterInfocreateHexagonMCRegisterInfo (StringRef TT)
 
MCCodeEmittercreateHexagonMCCodeEmitter (const MCInstrInfo &MCII, MCContext &MCT)
 
MCAsmBackendcreateHexagonAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateHexagonELFObjectWriter (uint8_t OSABI, StringRef CPU)
 
unsigned HexagonGetLastSlot ()
 
unsigned HexagonConvertUnits (unsigned ItinUnits, unsigned *Lanes)
 
TargetgetTheHexagonTarget ()
 
FunctionPasscreateLanaiISelDag (LanaiTargetMachine &TM)
 
FunctionPasscreateLanaiDelaySlotFillerPass (const LanaiTargetMachine &TM)
 
FunctionPasscreateLanaiMemAluCombinerPass ()
 
FunctionPasscreateLanaiSetflagAluCombinerPass ()
 
void initializeLanaiDAGToDAGISelPass (PassRegistry &)
 
static bool isSPLSOpcode (unsigned Opcode)
 
static bool isRMOpcode (unsigned Opcode)
 
static bool isRRMOpcode (unsigned Opcode)
 
void initializeLanaiMemAluCombinerPass (PassRegistry &)
 
static unsigned getLanaiRegisterNumbering (unsigned Reg)
 
static Lanai::Fixups FixupKind (const MCExpr *Expr)
 
static unsigned adjustPqBits (const MCInst &Inst, unsigned Value, unsigned PBitShift, unsigned QBitShift)
 
MCCodeEmittercreateLanaiMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateLanaiAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateLanaiELFObjectWriter (uint8_t OSABI)
 
TargetgetTheLanaiTarget ()
 
bool lowerLoongArchMachineInstrToMCInst (const MachineInstr *MI, MCInst &OutMI, AsmPrinter &AP)
 
bool lowerLoongArchMachineOperandToMCOperand (const MachineOperand &MO, MCOperand &MCOp, const AsmPrinter &AP)
 
FunctionPasscreateLoongArchExpandAtomicPseudoPass ()
 
FunctionPasscreateLoongArchISelDag (LoongArchTargetMachine &TM)
 
FunctionPasscreateLoongArchPreRAExpandPseudoPass ()
 
FunctionPasscreateLoongArchExpandPseudoPass ()
 
void initializeLoongArchDAGToDAGISelPass (PassRegistry &)
 
void initializeLoongArchExpandAtomicPseudoPass (PassRegistry &)
 
void initializeLoongArchPreRAExpandPseudoPass (PassRegistry &)
 
void initializeLoongArchExpandPseudoPass (PassRegistry &)
 
MCELFStreamercreateLoongArchELFStreamer (MCContext &C, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > MOW, std::unique_ptr< MCCodeEmitter > MCE, bool RelaxAll)
 
MCCodeEmittercreateLoongArchMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateLoongArchAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateLoongArchELFObjectWriter (uint8_t OSABI, bool Is64Bit, bool Relax)
 
TargetgetTheLoongArch32Target ()
 
TargetgetTheLoongArch64Target ()
 
InstructionSelectorcreateM68kInstructionSelector (const M68kTargetMachine &TM, const M68kSubtarget &Subtarget, const M68kRegisterBankInfo &RBI)
 
FunctionPasscreateM68kISelDag (M68kTargetMachine &TM)
 This pass converts a legalized DAG into a M68k-specific DAG, ready for instruction scheduling.
 
FunctionPasscreateM68kExpandPseudoPass ()
 Return a Machine IR pass that expands M68k-specific pseudo instructions into a sequence of actual instructions.
 
FunctionPasscreateM68kGlobalBaseRegPass ()
 This pass initializes a global base register for PIC on M68k.
 
FunctionPasscreateM68kCollapseMOVEMPass ()
 Finds sequential MOVEM instruction and collapse them into a single one.
 
void initializeM68kDAGToDAGISelPass (PassRegistry &)
 
void initializeM68kExpandPseudoPass (PassRegistry &)
 
void initializeM68kGlobalBaseRegPass (PassRegistry &)
 
void initializeM68kCollapseMOVEMPass (PassRegistry &)
 
bool CC_M68k_Any_AssignToReg (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
 NOTE this function is used to select registers for formal arguments and call FIXME: Handling on pointer arguments is not complete.
 
static unsigned getFixupKindLog2Size (unsigned Kind)
 
static MCFixupKind getFixupForSize (unsigned Size, bool isPCRel)
 
MCAsmBackendcreateM68kAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
MCCodeEmittercreateM68kMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
std::unique_ptr< MCObjectTargetWritercreateM68kELFObjectWriter (uint8_t OSABI)
 Construct an M68k ELF object writer.
 
TargetgetTheM68kTarget ()
 
MCStreameroperator<< (MCStreamer &OS, MipsABIFlagsSection &ABIFlagsSection)
 
MCELFStreamercreateMipsELFStreamer (MCContext &Context, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter, bool RelaxAll)
 
MCCodeEmittercreateMipsMCCodeEmitterEB (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCCodeEmittercreateMipsMCCodeEmitterEL (const MCInstrInfo &MCII, MCContext &Ctx)
 
bool isBasePlusOffsetMemoryAccess (unsigned Opcode, unsigned *AddrIdx, bool *IsStore=nullptr)
 
bool baseRegNeedsLoadStoreMask (unsigned Reg)
 
MCELFStreamercreateMipsNaClELFStreamer (MCContext &Context, std::unique_ptr< MCAsmBackend > TAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter, bool RelaxAll)
 
MCAsmBackendcreateMipsAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateMipsELFObjectWriter (const Triple &TT, bool IsN32)
 
ModulePasscreateMipsOs16Pass ()
 
ModulePasscreateMips16HardFloatPass ()
 
FunctionPasscreateMipsModuleISelDagPass ()
 
FunctionPasscreateMipsOptimizePICCallPass ()
 Return an OptimizeCall object.
 
FunctionPasscreateMipsDelaySlotFillerPass ()
 createMipsDelaySlotFillerPass - Returns a pass that fills in delay slots in Mips MachineFunctions
 
FunctionPasscreateMipsBranchExpansion ()
 
FunctionPasscreateMipsConstantIslandPass ()
 Returns a pass that converts branches to long branches.
 
FunctionPasscreateMicroMipsSizeReducePass ()
 Returns an instance of the MicroMips size reduction pass.
 
FunctionPasscreateMipsExpandPseudoPass ()
 createMipsExpandPseudoPass - returns an instance of the pseudo instruction expansion pass.
 
FunctionPasscreateMipsPreLegalizeCombiner ()
 
FunctionPasscreateMipsPostLegalizeCombiner (bool IsOptNone)
 
FunctionPasscreateMipsMulMulBugPass ()
 
InstructionSelectorcreateMipsInstructionSelector (const MipsTargetMachine &, MipsSubtarget &, MipsRegisterBankInfo &)
 
void initializeMicroMipsSizeReducePass (PassRegistry &)
 
void initializeMipsBranchExpansionPass (PassRegistry &)
 
void initializeMipsDAGToDAGISelPass (PassRegistry &)
 
void initializeMipsDelaySlotFillerPass (PassRegistry &)
 
void initializeMipsMulMulBugFixPass (PassRegistry &)
 
void initializeMipsPostLegalizerCombinerPass (PassRegistry &)
 
void initializeMipsPreLegalizerCombinerPass (PassRegistry &)
 
FunctionPasscreateMips16ISelDag (MipsTargetMachine &TM, CodeGenOptLevel OptLevel)
 
const MipsFrameLoweringcreateMips16FrameLowering (const MipsSubtarget &ST)
 Create MipsFrameLowering objects.
 
const MipsFrameLoweringcreateMipsSEFrameLowering (const MipsSubtarget &ST)
 
const MipsInstrInfocreateMips16InstrInfo (const MipsSubtarget &STI)
 Create MipsInstrInfo objects.
 
const MipsInstrInfocreateMipsSEInstrInfo (const MipsSubtarget &STI)
 
const MipsTargetLoweringcreateMips16TargetLowering (const MipsTargetMachine &TM, const MipsSubtarget &STI)
 Create MipsTargetLowering objects.
 
const MipsTargetLoweringcreateMipsSETargetLowering (const MipsTargetMachine &TM, const MipsSubtarget &STI)
 
FunctionPasscreateMipsSEISelDag (MipsTargetMachine &TM, CodeGenOptLevel OptLevel)
 
TargetgetTheMipsTarget ()
 
TargetgetTheMipselTarget ()
 
TargetgetTheMips64Target ()
 
TargetgetTheMips64elTarget ()
 
MCTargetStreamercreateMSP430ObjectTargetStreamer (MCStreamer &S, const MCSubtargetInfo &STI)
 
MCCodeEmittercreateMSP430MCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 Creates a machine code emitter for MSP430.
 
MCAsmBackendcreateMSP430MCAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateMSP430ELFObjectWriter (uint8_t OSABI)
 
FunctionPasscreateMSP430ISelDag (MSP430TargetMachine &TM, CodeGenOptLevel OptLevel)
 createMSP430ISelDag - This pass converts a legalized DAG into a MSP430-specific DAG, ready for instruction scheduling.
 
FunctionPasscreateMSP430BranchSelectionPass ()
 Returns an instance of the Branch Selection Pass.
 
void initializeMSP430DAGToDAGISelPass (PassRegistry &)
 
TargetgetTheMSP430Target ()
 
FunctionPasscreateNVPTXISelDag (NVPTXTargetMachine &TM, llvm::CodeGenOptLevel OptLevel)
 createNVPTXISelDag - This pass converts a legalized DAG into a NVPTX-specific DAG, ready for instruction scheduling.
 
ModulePasscreateNVPTXAssignValidGlobalNamesPass ()
 
ModulePasscreateGenericToNVVMLegacyPass ()
 
ModulePasscreateNVPTXCtorDtorLoweringLegacyPass ()
 
FunctionPasscreateNVVMIntrRangePass (unsigned int SmVersion)
 
FunctionPasscreateNVVMReflectPass (unsigned int SmVersion)
 
MachineFunctionPasscreateNVPTXPrologEpilogPass ()
 
MachineFunctionPasscreateNVPTXReplaceImageHandlesPass ()
 
FunctionPasscreateNVPTXImageOptimizerPass ()
 
FunctionPasscreateNVPTXLowerArgsPass ()
 
FunctionPasscreateNVPTXLowerAllocaPass ()
 
FunctionPasscreateNVPTXLowerUnreachablePass (bool TrapUnreachable, bool NoTrapAfterNoreturn)
 
MachineFunctionPasscreateNVPTXPeephole ()
 
MachineFunctionPasscreateNVPTXProxyRegErasurePass ()
 
void initializeNVPTXDAGToDAGISelPass (PassRegistry &)
 
ImmutablePasscreateNVPTXAAWrapperPass ()
 
void initializeNVPTXAAWrapperPassPass (PassRegistry &)
 
ImmutablePasscreateNVPTXExternalAAWrapperPass ()
 
void initializeNVPTXExternalAAWrapperPass (PassRegistry &)
 
void initializeNVPTXAllocaHoistingPass (PassRegistry &)
 
FunctionPasscreateAllocaHoisting ()
 
void initializeNVPTXAssignValidGlobalNamesPass (PassRegistry &)
 
void initializeNVPTXAtomicLowerPass (PassRegistry &)
 
FunctionPasscreateNVPTXAtomicLowerPass ()
 
void initializeNVPTXCtorDtorLoweringLegacyPass (PassRegistry &)
 
void initializeGenericToNVVMLegacyPassPass (PassRegistry &)
 
void initializeNVPTXLowerAggrCopiesPass (PassRegistry &)
 
FunctionPasscreateLowerAggrCopies ()
 
void initializeNVPTXLowerAllocaPass (PassRegistry &)
 
void initializeNVPTXLowerArgsPass (PassRegistry &)
 
void initializeNVPTXLowerUnreachablePass (PassRegistry &)
 
void initializeNVPTXPeepholePass (PassRegistry &)
 
void initializeNVPTXProxyRegErasurePass (PassRegistry &)
 
std::string getNVPTXRegClassName (TargetRegisterClass const *RC)
 
std::string getNVPTXRegClassStr (TargetRegisterClass const *RC)
 
void initializeNVVMIntrRangePass (PassRegistry &)
 
void initializeNVVMReflectPass (PassRegistry &)
 
void clearAnnotationCache (const Module *Mod)
 
static void cacheAnnotationFromMD (const MDNode *md, key_val_pair_t &retval)
 
static void cacheAnnotationFromMD (const Module *m, const GlobalValue *gv)
 
bool findOneNVVMAnnotation (const GlobalValue *gv, const std::string &prop, unsigned &retval)
 
bool findAllNVVMAnnotation (const GlobalValue *gv, const std::string &prop, std::vector< unsigned > &retval)
 
bool isTexture (const Value &val)
 
bool isSurface (const Value &val)
 
bool isSampler (const Value &val)
 
bool isImageReadOnly (const Value &val)
 
bool isImageWriteOnly (const Value &val)
 
bool isImageReadWrite (const Value &val)
 
bool isImage (const Value &val)
 
bool isManaged (const Value &val)
 
std::string getTextureName (const Value &val)
 
std::string getSurfaceName (const Value &val)
 
std::string getSamplerName (const Value &val)
 
bool getMaxNTIDx (const Function &F, unsigned &x)
 
bool getMaxNTIDy (const Function &F, unsigned &y)
 
bool getMaxNTIDz (const Function &F, unsigned &z)
 
bool getMaxClusterRank (const Function &F, unsigned &x)
 
bool getReqNTIDx (const Function &F, unsigned &x)
 
bool getReqNTIDy (const Function &F, unsigned &y)
 
bool getReqNTIDz (const Function &F, unsigned &z)
 
bool getMinCTASm (const Function &F, unsigned &x)
 
bool getMaxNReg (const Function &F, unsigned &x)
 
bool isKernelFunction (const Function &F)
 
bool getAlign (const Function &F, unsigned index, unsigned &align)
 
bool getAlign (const CallInst &I, unsigned index, unsigned &align)
 
FunctiongetMaybeBitcastedCallee (const CallBase *CB)
 
bool shouldEmitPTXNoReturn (const Value *V, const TargetMachine &TM)
 
bool Isv2x16VT (EVT VT)
 
unsigned promoteScalarArgumentSize (unsigned size)
 
TargetgetTheNVPTXTarget32 ()
 
TargetgetTheNVPTXTarget64 ()
 
InstructionSelectorcreatePPCInstructionSelector (const PPCTargetMachine &TM, const PPCSubtarget &Subtarget, const PPCRegisterBankInfo &RBI)
 
std::optional< boolisPartOfGOTToPCRelPair (const MCInst &Inst, const MCSubtargetInfo &STI)
 
MCELFStreamercreatePPCELFStreamer (MCContext &Context, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter)
 
MCCodeEmittercreatePPCMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreatePPCAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreatePPCELFObjectWriter (bool Is64Bit, uint8_t OSABI)
 Construct an PPC ELF object writer.
 
std::unique_ptr< MCObjectTargetWritercreatePPCMachObjectWriter (bool Is64Bit, uint32_t CPUType, uint32_t CPUSubtype)
 Construct a PPC Mach-O object writer.
 
std::unique_ptr< MCObjectTargetWritercreatePPCXCOFFObjectWriter (bool Is64Bit)
 Construct a PPC XCOFF object writer.
 
static bool isRunOfOnes (unsigned Val, unsigned &MB, unsigned &ME)
 Returns true iff Val consists of one contiguous run of 1s with any number of 0s on either side.
 
static bool isRunOfOnes64 (uint64_t Val, unsigned &MB, unsigned &ME)
 
MCXCOFFStreamercreatePPCXCOFFStreamer (MCContext &Context, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter)
 
FunctionPasscreatePPCCTRLoopsVerify ()
 
FunctionPasscreatePPCLoopInstrFormPrepPass (PPCTargetMachine &TM)
 
FunctionPasscreatePPCTOCRegDepsPass ()
 
FunctionPasscreatePPCEarlyReturnPass ()
 
FunctionPasscreatePPCVSXCopyPass ()
 
FunctionPasscreatePPCVSXFMAMutatePass ()
 
FunctionPasscreatePPCVSXSwapRemovalPass ()
 
FunctionPasscreatePPCReduceCRLogicalsPass ()
 
FunctionPasscreatePPCMIPeepholePass ()
 
FunctionPasscreatePPCBranchSelectionPass ()
 
FunctionPasscreatePPCBranchCoalescingPass ()
 createPPCBranchCoalescingPass - returns an instance of the Branch Coalescing Pass
 
FunctionPasscreatePPCISelDag (PPCTargetMachine &TM, CodeGenOptLevel OL)
 createPPCISelDag - This pass converts a legalized DAG into a PowerPC-specific DAG, ready for instruction scheduling.
 
FunctionPasscreatePPCTLSDynamicCallPass ()
 
FunctionPasscreatePPCBoolRetToIntPass ()
 
FunctionPasscreatePPCExpandISELPass ()
 
FunctionPasscreatePPCPreEmitPeepholePass ()
 
FunctionPasscreatePPCExpandAtomicPseudoPass ()
 
FunctionPasscreatePPCCTRLoopsPass ()
 
ModulePasscreatePPCMergeStringPoolPass ()
 
void LowerPPCMachineInstrToMCInst (const MachineInstr *MI, MCInst &OutMI, AsmPrinter &AP)
 
bool LowerPPCMachineOperandToMCOperand (const MachineOperand &MO, MCOperand &OutMO, AsmPrinter &AP)
 
void initializePPCCTRLoopsVerifyPass (PassRegistry &)
 
void initializePPCLoopInstrFormPrepPass (PassRegistry &)
 
void initializePPCTOCRegDepsPass (PassRegistry &)
 
void initializePPCEarlyReturnPass (PassRegistry &)
 
void initializePPCVSXCopyPass (PassRegistry &)
 
void initializePPCVSXFMAMutatePass (PassRegistry &)
 
void initializePPCVSXSwapRemovalPass (PassRegistry &)
 
void initializePPCReduceCRLogicalsPass (PassRegistry &)
 
void initializePPCBSelPass (PassRegistry &)
 
void initializePPCBranchCoalescingPass (PassRegistry &)
 
void initializePPCBoolRetToIntPass (PassRegistry &)
 
void initializePPCExpandISELPass (PassRegistry &)
 
void initializePPCPreEmitPeepholePass (PassRegistry &)
 
void initializePPCTLSDynamicCallPass (PassRegistry &)
 
void initializePPCMIPeepholePass (PassRegistry &)
 
void initializePPCExpandAtomicPseudoPass (PassRegistry &)
 
void initializePPCCTRLoopsPass (PassRegistry &)
 
void initializePPCDAGToDAGISelPass (PassRegistry &)
 
void initializePPCMergeStringPoolPass (PassRegistry &)
 
ModulePasscreatePPCLowerMASSVEntriesPass ()
 
void initializePPCLowerMASSVEntriesPass (PassRegistry &)
 
ModulePasscreatePPCGenScalarMASSEntriesPass ()
 
void initializePPCGenScalarMASSEntriesPass (PassRegistry &)
 
bool RetCC_PPC (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool RetCC_PPC64_ELF_FIS (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool RetCC_PPC_Cold (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_PPC32_SVR4 (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_PPC64_ELF (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_PPC64_ELF_FIS (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_PPC32_SVR4_ByVal (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_PPC32_SVR4_VarArg (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
static const MachineInstrBuilderaddFrameReference (const MachineInstrBuilder &MIB, int FI, int Offset=0, bool mem=true)
 addFrameReference - This function is used to add a reference to the base of an abstract object on the stack frame of the current function.
 
bool isIntS16Immediate (SDNode *N, int16_t &Imm)
 isIntS16Immediate - This method tests to see if the node is either a 32-bit or 64-bit immediate, and if the value can be accurately represented as a sign extension from a 16-bit value.
 
bool isIntS16Immediate (SDValue Op, int16_t &Imm)
 
bool isIntS34Immediate (SDNode *N, int64_t &Imm)
 isIntS34Immediate - This method tests if value of node given can be accurately represented as a sign extension from a 34-bit value.
 
bool isIntS34Immediate (SDValue Op, int64_t &Imm)
 
bool convertToNonDenormSingle (APInt &ArgAPInt)
 
bool convertToNonDenormSingle (APFloat &ArgAPFloat)
 
bool checkConvertToNonDenormSingle (APFloat &ArgAPFloat)
 
std::unique_ptr< ScheduleDAGMutationcreatePowerPCMacroFusionDAGMutation ()
 Note that you have to add: DAG.addMutation(createPowerPCMacroFusionDAGMutation()); to PPCPassConfig::createMachineScheduler() to have an effect.
 
static unsigned getCRFromCRBit (unsigned SrcReg)
 
TargetgetThePPC32Target ()
 
TargetgetThePPC32LETarget ()
 
TargetgetThePPC64Target ()
 
TargetgetThePPC64LETarget ()
 
InstructionSelectorcreateRISCVInstructionSelector (const RISCVTargetMachine &TM, RISCVSubtarget &Subtarget, RISCVRegisterBankInfo &RBI)
 
FunctionPasscreateRISCVO0PreLegalizerCombiner ()
 
FunctionPasscreateRISCVPostLegalizerCombiner ()
 
FunctionPasscreateRISCVPreLegalizerCombiner ()
 
MCELFStreamercreateRISCVELFStreamer (MCContext &C, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > MOW, std::unique_ptr< MCCodeEmitter > MCE, bool RelaxAll)
 
MCCodeEmittercreateRISCVMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateRISCVAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateRISCVELFObjectWriter (uint8_t OSABI, bool Is64Bit)
 
FunctionPasscreateRISCVCodeGenPreparePass ()
 
void initializeRISCVCodeGenPreparePass (PassRegistry &)
 
FunctionPasscreateRISCVDeadRegisterDefinitionsPass ()
 
void initializeRISCVDeadRegisterDefinitionsPass (PassRegistry &)
 
FunctionPasscreateRISCVISelDag (RISCVTargetMachine &TM, CodeGenOptLevel OptLevel)
 
FunctionPasscreateRISCVMakeCompressibleOptPass ()
 Returns an instance of the Make Compressible Optimization pass.
 
void initializeRISCVMakeCompressibleOptPass (PassRegistry &)
 
FunctionPasscreateRISCVGatherScatterLoweringPass ()
 
void initializeRISCVGatherScatterLoweringPass (PassRegistry &)
 
FunctionPasscreateRISCVFoldMasksPass ()
 
void initializeRISCVFoldMasksPass (PassRegistry &)
 
FunctionPasscreateRISCVOptWInstrsPass ()
 
void initializeRISCVOptWInstrsPass (PassRegistry &)
 
FunctionPasscreateRISCVMergeBaseOffsetOptPass ()
 Returns an instance of the Merge Base Offset Optimization pass.
 
void initializeRISCVMergeBaseOffsetOptPass (PassRegistry &)
 
FunctionPasscreateRISCVExpandPseudoPass ()
 
void initializeRISCVExpandPseudoPass (PassRegistry &)
 
FunctionPasscreateRISCVPreRAExpandPseudoPass ()
 
void initializeRISCVPreRAExpandPseudoPass (PassRegistry &)
 
FunctionPasscreateRISCVExpandAtomicPseudoPass ()
 
void initializeRISCVExpandAtomicPseudoPass (PassRegistry &)
 
FunctionPasscreateRISCVInsertVSETVLIPass ()
 Returns an instance of the Insert VSETVLI pass.
 
void initializeRISCVInsertVSETVLIPass (PassRegistry &)
 
FunctionPasscreateRISCVPostRAExpandPseudoPass ()
 
void initializeRISCVPostRAExpandPseudoPass (PassRegistry &)
 
FunctionPasscreateRISCVInsertReadWriteCSRPass ()
 
void initializeRISCVInsertReadWriteCSRPass (PassRegistry &)
 
FunctionPasscreateRISCVInsertWriteVXRMPass ()
 
void initializeRISCVInsertWriteVXRMPass (PassRegistry &)
 
FunctionPasscreateRISCVRedundantCopyEliminationPass ()
 
void initializeRISCVRedundantCopyEliminationPass (PassRegistry &)
 
FunctionPasscreateRISCVMoveMergePass ()
 createRISCVMoveMergePass - returns an instance of the move merge pass.
 
void initializeRISCVMoveMergePass (PassRegistry &)
 
FunctionPasscreateRISCVPushPopOptimizationPass ()
 createRISCVPushPopOptimizationPass - returns an instance of the Push/Pop optimization pass.
 
void initializeRISCVPushPopOptPass (PassRegistry &)
 
void initializeRISCVDAGToDAGISelPass (PassRegistry &)
 
void initializeRISCVPostLegalizerCombinerPass (PassRegistry &)
 
void initializeRISCVO0PreLegalizerCombinerPass (PassRegistry &)
 
void initializeRISCVPreLegalizerCombinerPass (PassRegistry &)
 
TargetgetTheRISCV32Target ()
 
TargetgetTheRISCV64Target ()
 
MCCodeEmittercreateSparcMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateSparcAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateSparcELFObjectWriter (bool Is64Bit, uint8_t OSABI)
 
FunctionPasscreateSparcISelDag (SparcTargetMachine &TM)
 createSparcISelDag - This pass converts a legalized DAG into a SPARC-specific DAG, ready for instruction scheduling.
 
FunctionPasscreateSparcDelaySlotFillerPass ()
 createSparcDelaySlotFillerPass - Returns a pass that fills in delay slots in Sparc MachineFunctions
 
void LowerSparcMachineInstrToMCInst (const MachineInstr *MI, MCInst &OutMI, AsmPrinter &AP)
 
void initializeSparcDAGToDAGISelPass (PassRegistry &)
 
static const charSPARCCondCodeToString (SPCC::CondCodes CC)
 
static unsigned HI22 (int64_t imm)
 
static unsigned LO10 (int64_t imm)
 
static unsigned HIX22 (int64_t imm)
 
static unsigned LOX10 (int64_t imm)
 
TargetgetTheSparcTarget ()
 
TargetgetTheSparcV9Target ()
 
TargetgetTheSparcelTarget ()
 
void initializeSPIRVConvergenceRegionAnalysisWrapperPassPass (PassRegistry &)
 
std::string getSymbolicOperandMnemonic (SPIRV::OperandCategory::OperandCategory Category, int32_t Value)
 
uint32_t getSymbolicOperandMinVersion (SPIRV::OperandCategory::OperandCategory Category, uint32_t Value)
 
uint32_t getSymbolicOperandMaxVersion (SPIRV::OperandCategory::OperandCategory Category, uint32_t Value)
 
CapabilityList getSymbolicOperandCapabilities (SPIRV::OperandCategory::OperandCategory Category, uint32_t Value)
 
CapabilityList getCapabilitiesEnabledByExtension (SPIRV::Extension::Extension Extension)
 
ExtensionList getSymbolicOperandExtensions (SPIRV::OperandCategory::OperandCategory Category, uint32_t Value)
 
std::string getLinkStringForBuiltIn (SPIRV::BuiltIn::BuiltIn BuiltInValue)
 
bool getSpirvBuiltInIdByName (llvm::StringRef Name, SPIRV::BuiltIn::BuiltIn &BI)
 
std::string getExtInstSetName (SPIRV::InstructionSet::InstructionSet Set)
 
SPIRV::InstructionSet::InstructionSet getExtInstSetFromString (std::string SetName)
 
std::string getExtInstName (SPIRV::InstructionSet::InstructionSet Set, uint32_t InstructionNumber)
 
template<class InstType >
std::string getSPIRVStringOperand (const InstType &MI, unsigned StartIndex)
 
MCCodeEmittercreateSPIRVMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateSPIRVAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateSPIRVObjectTargetWriter ()
 
ModulePasscreateSPIRVPrepareFunctionsPass (const SPIRVTargetMachine &TM)
 
FunctionPasscreateSPIRVStripConvergenceIntrinsicsPass ()
 
FunctionPasscreateSPIRVRegularizerPass ()
 
FunctionPasscreateSPIRVPreLegalizerPass ()
 
FunctionPasscreateSPIRVPostLegalizerPass ()
 
ModulePasscreateSPIRVEmitIntrinsicsPass (SPIRVTargetMachine *TM)
 
InstructionSelectorcreateSPIRVInstructionSelector (const SPIRVTargetMachine &TM, const SPIRVSubtarget &Subtarget, const RegisterBankInfo &RBI)
 
void initializeSPIRVModuleAnalysisPass (PassRegistry &)
 
void initializeSPIRVPreLegalizerPass (PassRegistry &)
 
void initializeSPIRVPostLegalizerPass (PassRegistry &)
 
void initializeSPIRVEmitIntrinsicsPass (PassRegistry &)
 
static std::unique_ptr< const SPIRV::IncomingCalllookupBuiltin (StringRef DemangledCall, SPIRV::InstructionSet::InstructionSet Set, Register ReturnRegister, const SPIRVType *ReturnType, const SmallVectorImpl< Register > &Arguments)
 Looks up the demangled builtin call in the SPIRVBuiltins.td records using the provided DemangledCall and specified Set.
 
static std::tuple< Register, SPIRVType * > buildBoolRegister (MachineIRBuilder &MIRBuilder, const SPIRVType *ResultType, SPIRVGlobalRegistry *GR)
 Helper function building either a resulting scalar or vector bool register depending on the expected ResultType.
 
static bool buildSelectInst (MachineIRBuilder &MIRBuilder, Register ReturnRegister, Register SourceRegister, const SPIRVType *ReturnType, SPIRVGlobalRegistry *GR)
 Helper function for building either a vector or scalar select instruction depending on the expected ResultType.
 
static Register buildLoadInst (SPIRVType *BaseType, Register PtrRegister, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR, LLT LowLevelType, Register DestinationReg=Register(0))
 Helper function for building a load instruction loading into the DestinationReg.
 
static Register buildBuiltinVariableLoad (MachineIRBuilder &MIRBuilder, SPIRVType *VariableType, SPIRVGlobalRegistry *GR, SPIRV::BuiltIn::BuiltIn BuiltinValue, LLT LLType, Register Reg=Register(0), bool isConst=true, bool hasLinkageTy=true)
 Helper function for building a load instruction for loading a builtin global variable of BuiltinValue value.
 
Register insertAssignInstr (Register Reg, Type *Ty, SPIRVType *SpirvTy, SPIRVGlobalRegistry *GR, MachineIRBuilder &MIB, MachineRegisterInfo &MRI)
 Helper external function for inserting ASSIGN_TYPE instuction between Reg and its definition, set the new register as a destination of the definition, assign SPIRVType to both registers.
 
static SPIRV::MemorySemantics::MemorySemantics getSPIRVMemSemantics (std::memory_order MemOrder)
 
static SPIRV::Scope::Scope getSPIRVScope (SPIRV::CLMemoryScope ClScope)
 
static Register buildConstantIntReg (uint64_t Val, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR, unsigned BitWidth=32)
 
static Register buildScopeReg (Register CLScopeRegister, SPIRV::Scope::Scope Scope, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR, MachineRegisterInfo *MRI)
 
static Register buildMemSemanticsReg (Register SemanticsRegister, Register PtrRegister, unsigned &Semantics, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool buildOpFromWrapper (MachineIRBuilder &MIRBuilder, unsigned Opcode, const SPIRV::IncomingCall *Call, Register TypeReg=Register(0))
 
static bool buildAtomicInitInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder)
 Helper function for translating atomic init to OpStore.
 
static bool buildAtomicLoadInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 Helper function for building an atomic load instruction.
 
static bool buildAtomicStoreInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 Helper function for building an atomic store instruction.
 
static bool buildAtomicCompareExchangeInst (const SPIRV::IncomingCall *Call, const SPIRV::DemangledBuiltin *Builtin, unsigned Opcode, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 Helper function for building an atomic compare-exchange instruction.
 
static bool buildAtomicRMWInst (const SPIRV::IncomingCall *Call, unsigned Opcode, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 Helper function for building an atomic load instruction.
 
static bool buildAtomicFloatingRMWInst (const SPIRV::IncomingCall *Call, unsigned Opcode, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 Helper function for building an atomic floating-type instruction.
 
static bool buildAtomicFlagInst (const SPIRV::IncomingCall *Call, unsigned Opcode, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 Helper function for building atomic flag instructions (e.g.
 
static bool buildBarrierInst (const SPIRV::IncomingCall *Call, unsigned Opcode, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 Helper function for building barriers, i.e., memory/control ordering operations.
 
static unsigned getNumComponentsForDim (SPIRV::Dim::Dim dim)
 
static unsigned getNumSizeComponents (SPIRVType *imgType)
 Helper function for obtaining the number of size components.
 
static bool generateExtInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateRelationalInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateGroupInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateIntelSubgroupsInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateGroupUniformInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool genWorkgroupQuery (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR, SPIRV::BuiltIn::BuiltIn BuiltinValue, uint64_t DefaultValue)
 
static bool generateBuiltinVar (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateAtomicInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateAtomicFloatingInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateBarrierInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateDotOrFMulInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateWaveInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateGetQueryInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateImageSizeQueryInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateImageMiscQueryInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static SPIRV::SamplerAddressingMode::SamplerAddressingMode getSamplerAddressingModeFromBitmask (unsigned Bitmask)
 
static unsigned getSamplerParamFromBitmask (unsigned Bitmask)
 
static SPIRV::SamplerFilterMode::SamplerFilterMode getSamplerFilterModeFromBitmask (unsigned Bitmask)
 
static bool generateReadImageInst (const StringRef DemangledCall, const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateWriteImageInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateSampleImageInst (const StringRef DemangledCall, const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateSelectInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder)
 
static bool generateSpecConstantInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool buildNDRange (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static MachineInstrgetBlockStructInstr (Register ParamReg, MachineRegisterInfo *MRI)
 
static unsigned getConstFromIntrinsic (Register Reg, MachineRegisterInfo *MRI)
 
static const TypegetMachineInstrType (MachineInstr *MI)
 
static const TypegetBlockStructType (Register ParamReg, MachineRegisterInfo *MRI)
 
static SPIRVTypegetOrCreateSPIRVDeviceEventPointer (MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool buildEnqueueKernel (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateEnqueueInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateAsyncCopy (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateConvertInst (const StringRef DemangledCall, const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateVectorLoadStoreInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static bool generateLoadStoreInst (const SPIRV::IncomingCall *Call, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static TypeparseTypeString (const StringRef Name, LLVMContext &Context)
 
static SPIRVTypegetNonParameterizedType (const TargetExtType *ExtensionType, const SPIRV::BuiltinType *TypeRecord, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static SPIRVTypegetSamplerType (MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static SPIRVTypegetPipeType (const TargetExtType *ExtensionType, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static SPIRVTypegetImageType (const TargetExtType *ExtensionType, const SPIRV::AccessQualifier::AccessQualifier Qualifier, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
static SPIRVTypegetSampledImageType (const TargetExtType *OpaqueType, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR)
 
MDStringgetOCLKernelArgAccessQual (const Function &F, unsigned ArgIdx)
 
MDStringgetOCLKernelArgTypeQual (const Function &F, unsigned ArgIdx)
 
void processInstr (MachineInstr &MI, MachineIRBuilder &MIB, MachineRegisterInfo &MRI, SPIRVGlobalRegistry *GR)
 
void initializeSPIRVPrepareFunctionsPass (PassRegistry &)
 
void initializeSPIRVRegularizerPass (PassRegistry &)
 
void initializeSPIRVStripConvergentIntrinsicsPass (PassRegistry &)
 
static uint32_t convertCharsToWord (const StringRef &Str, unsigned i)
 
static size_t getPaddedLen (const StringRef &Str)
 
void addStringImm (const StringRef &Str, MCInst &Inst)
 
void addStringImm (const StringRef &Str, MachineInstrBuilder &MIB)
 
void addStringImm (const StringRef &Str, IRBuilder<> &B, std::vector< Value * > &Args)
 
std::string getStringImm (const MachineInstr &MI, unsigned StartIndex)
 
void addNumImm (const APInt &Imm, MachineInstrBuilder &MIB)
 
void buildOpName (Register Target, const StringRef &Name, MachineIRBuilder &MIRBuilder)
 
static void finishBuildOpDecorate (MachineInstrBuilder &MIB, const std::vector< uint32_t > &DecArgs, StringRef StrImm)
 
void buildOpDecorate (Register Reg, MachineIRBuilder &MIRBuilder, SPIRV::Decoration::Decoration Dec, const std::vector< uint32_t > &DecArgs, StringRef StrImm)
 
void buildOpDecorate (Register Reg, MachineInstr &I, const SPIRVInstrInfo &TII, SPIRV::Decoration::Decoration Dec, const std::vector< uint32_t > &DecArgs, StringRef StrImm)
 
unsigned storageClassToAddressSpace (SPIRV::StorageClass::StorageClass SC)
 
SPIRV::StorageClass::StorageClass addressSpaceToStorageClass (unsigned AddrSpace, const SPIRVSubtarget &STI)
 
SPIRV::MemorySemantics::MemorySemantics getMemSemanticsForStorageClass (SPIRV::StorageClass::StorageClass SC)
 
SPIRV::MemorySemantics::MemorySemantics getMemSemantics (AtomicOrdering Ord)
 
MachineInstrgetDefInstrMaybeConstant (Register &ConstReg, const MachineRegisterInfo *MRI)
 
uint64_t getIConstVal (Register ConstReg, const MachineRegisterInfo *MRI)
 
bool isSpvIntrinsic (const MachineInstr &MI, Intrinsic::ID IntrinsicID)
 
TypegetMDOperandAsType (const MDNode *N, unsigned I)
 
static bool isPipeOrAddressSpaceCastBI (const StringRef MangledName)
 
static bool isEnqueueKernelBI (const StringRef MangledName)
 
static bool isKernelQueryBI (const StringRef MangledName)
 
static bool isNonMangledOCLBuiltin (StringRef Name)
 
std::string getOclOrSpirvBuiltinDemangledName (StringRef Name)
 
bool hasBuiltinTypePrefix (StringRef Name)
 
bool isSpecialOpaqueType (const Type *Ty)
 
bool isEntryPoint (const Function &F)
 
TypeparseBasicTypeName (StringRef TypeName, LLVMContext &Ctx)
 
bool isTypedPointerTy (const Type *T)
 
bool isUntypedPointerTy (const Type *T)
 
bool isPointerTy (const Type *T)
 
unsigned getPointerAddressSpace (const Type *T)
 
bool hasPointeeTypeAttr (Argument *Arg)
 
TypegetPointeeTypeByAttr (Argument *Arg)
 
TypereconstructFunctionType (Function *F)
 
TypetoTypedPointer (Type *Ty, LLVMContext &Ctx)
 
TargetgetTheSPIRV32Target ()
 
TargetgetTheSPIRV64Target ()
 
TargetgetTheSPIRVLogicalTarget ()
 
MCCodeEmittercreateSystemZMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateSystemZMCAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateSystemZELFObjectWriter (uint8_t OSABI)
 
std::unique_ptr< MCObjectTargetWritercreateSystemZGOFFObjectWriter ()
 
FunctionPasscreateSystemZISelDag (SystemZTargetMachine &TM, CodeGenOptLevel OptLevel)
 
FunctionPasscreateSystemZElimComparePass (SystemZTargetMachine &TM)
 
FunctionPasscreateSystemZShortenInstPass (SystemZTargetMachine &TM)
 
FunctionPasscreateSystemZLongBranchPass (SystemZTargetMachine &TM)
 
FunctionPasscreateSystemZLDCleanupPass (SystemZTargetMachine &TM)
 
FunctionPasscreateSystemZCopyPhysRegsPass (SystemZTargetMachine &TM)
 
FunctionPasscreateSystemZPostRewritePass (SystemZTargetMachine &TM)
 
FunctionPasscreateSystemZTDCPass ()
 
void initializeSystemZCopyPhysRegsPass (PassRegistry &)
 
void initializeSystemZDAGToDAGISelPass (PassRegistry &)
 
void initializeSystemZElimComparePass (PassRegistry &)
 
void initializeSystemZLDCleanupPass (PassRegistry &)
 
void initializeSystemZLongBranchPass (PassRegistry &)
 
void initializeSystemZPostRewritePass (PassRegistry &)
 
void initializeSystemZShortenInstPass (PassRegistry &)
 
void initializeSystemZTDCPassPass (PassRegistry &)
 
bool CC_SystemZ_I128Indirect (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
 
bool CC_XPLINK64_Shadow_Reg (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
 
bool CC_XPLINK64_Allocate128BitVararg (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
 
bool RetCC_SystemZ_Error (unsigned &, MVT &, MVT &, CCValAssign::LocInfo &, ISD::ArgFlagsTy &, CCState &)
 
bool CC_SystemZ_Error (unsigned &, MVT &, MVT &, CCValAssign::LocInfo &, ISD::ArgFlagsTy &, CCState &)
 
bool CC_SystemZ_GHC_Error (unsigned &, MVT &, MVT &, CCValAssign::LocInfo &, ISD::ArgFlagsTy &, CCState &)
 
static const MachineInstrBuilderaddFrameReference (const MachineInstrBuilder &MIB, int FI)
 Add a BDX memory reference for frame object FI to MIB.
 
TargetgetTheSystemZTarget ()
 
MCCodeEmittercreateVEMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateVEAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateVEELFObjectWriter (uint8_t OSABI)
 
TargetgetTheVETarget ()
 
FunctionPasscreateVEISelDag (VETargetMachine &TM)
 createVEISelDag - This pass converts a legalized DAG into a VE-specific DAG, ready for instruction scheduling.
 
FunctionPasscreateLVLGenPass ()
 
void initializeVEDAGToDAGISelPass (PassRegistry &)
 
void LowerVEMachineInstrToMCInst (const MachineInstr *MI, MCInst &OutMI, AsmPrinter &AP)
 
static const charVECondCodeToString (VECC::CondCode CC)
 
static VECC::CondCode stringToVEICondCode (StringRef S)
 
static VECC::CondCode stringToVEFCondCode (StringRef S)
 
static bool isIntVECondCode (VECC::CondCode CC)
 
static unsigned VECondCodeToVal (VECC::CondCode CC)
 
static VECC::CondCode VEValToCondCode (unsigned Val, bool IsInteger)
 
static const charVERDToString (VERD::RoundingMode R)
 
static VERD::RoundingMode stringToVERD (StringRef S)
 
static unsigned VERDToVal (VERD::RoundingMode R)
 
static VERD::RoundingMode VEValToRD (unsigned Val)
 
static bool isMImmVal (uint64_t Val)
 
static bool isMImm32Val (uint32_t Val)
 
static uint64_t val2MImm (uint64_t Val)
 val2MImm - Convert an integer immediate value to target MImm immediate.
 
static uint64_t mimm2Val (uint64_t Val)
 mimm2Val - Convert a target MImm immediate to an integer immediate value.
 
unsigned M0 (unsigned Val)
 
unsigned M1 (unsigned Val)
 
bool isPackedVectorType (EVT SomeVT)
 
MVT splitVectorType (MVT VT)
 
MVT getLegalVectorType (Packing P, MVT ElemVT)
 
Packing getTypePacking (EVT VT)
 
bool isMaskType (EVT SomeVT)
 
bool isMaskArithmetic (SDValue Op)
 
std::optional< unsignedgetVVPOpcode (unsigned Opcode)
 
bool maySafelyIgnoreMask (SDValue Op)
 
bool supportsPackedMode (unsigned Opcode, EVT IdiomVT)
 
bool isPackingSupportOpcode (unsigned Opc)
 
bool isVVPOrVEC (unsigned Opcode)
 
bool isVVPUnaryOp (unsigned VVPOpcode)
 
bool isVVPBinaryOp (unsigned VVPOpcode)
 
bool isVVPReductionOp (unsigned Opcode)
 
std::optional< int > getAVLPos (unsigned)
 The VE backend uses a two-staged process to lower and legalize vector instructions:
 
std::optional< int > getMaskPos (unsigned Opc)
 
bool isLegalAVL (SDValue AVL)
 
SDValue getNodeChain (SDValue Op)
 Node Properties {.
 
SDValue getMemoryPtr (SDValue Op)
 
std::optional< EVTgetIdiomaticVectorType (SDNode *Op)
 } AVL Functions
 
SDValue getLoadStoreStride (SDValue Op, VECustomDAG &CDAG)
 
SDValue getGatherScatterIndex (SDValue Op)
 
SDValue getGatherScatterScale (SDValue Op)
 
SDValue getStoredValue (SDValue Op)
 
SDValue getNodePassthru (SDValue Op)
 
bool hasReductionStartParam (unsigned OPC)
 
unsigned getScalarReductionOpcode (unsigned VVPOC, bool IsMask)
 
SDValue getNodeAVL (SDValue Op)
 } Node Properties
 
SDValue getNodeMask (SDValue Op)
 
std::pair< SDValue, boolgetAnnotatedNodeAVL (SDValue Op)
 
static const MachineInstrBuilderaddFrameReference (const MachineInstrBuilder &MIB, int FI, int Offset=0, bool ThreeOp=true)
 addFrameReference - This function is used to add a reference to the base of an abstract object on the stack frame of the current function.
 
static VECC::CondCode intCondCode2Icc (ISD::CondCode CC)
 Convert a DAG integer condition code to a VE ICC condition.
 
static VECC::CondCode fpCondCode2Fcc (ISD::CondCode CC)
 Convert a DAG floating point condition code to a VE FCC condition.
 
static uint64_t getImmVal (const ConstantSDNode *N)
 getImmVal - get immediate representation of integer value
 
static uint64_t getFpImmVal (const ConstantFPSDNode *N)
 getFpImmVal - get immediate representation of floating point value
 
static std::optional< std::string > checkStackTop (const SmallVectorImpl< wasm::ValType > &ExpectedStackTop, const SmallVectorImpl< wasm::ValType > &Got)
 
MCCodeEmittercreateWebAssemblyMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateWebAssemblyAsmBackend (const Triple &TT)
 
std::unique_ptr< MCObjectTargetWritercreateWebAssemblyWasmObjectWriter (bool Is64Bit, bool IsEmscripten)
 
TargetgetTheWebAssemblyTarget32 ()
 
TargetgetTheWebAssemblyTarget64 ()
 
ModulePasscreateWebAssemblyLowerEmscriptenEHSjLj ()
 
ModulePasscreateWebAssemblyAddMissingPrototypes ()
 
ModulePasscreateWebAssemblyFixFunctionBitcasts ()
 
FunctionPasscreateWebAssemblyOptimizeReturned ()
 
FunctionPasscreateWebAssemblyLowerRefTypesIntPtrConv ()
 
FunctionPasscreateWebAssemblyRefTypeMem2Local ()
 
FunctionPasscreateWebAssemblyISelDag (WebAssemblyTargetMachine &TM, CodeGenOptLevel OptLevel)
 This pass converts a legalized DAG into a WebAssembly-specific DAG, ready for instruction scheduling.
 
FunctionPasscreateWebAssemblyArgumentMove ()
 
FunctionPasscreateWebAssemblySetP2AlignOperands ()
 
FunctionPasscreateWebAssemblyReplacePhysRegs ()
 
FunctionPasscreateWebAssemblyNullifyDebugValueLists ()
 
FunctionPasscreateWebAssemblyOptimizeLiveIntervals ()
 
FunctionPasscreateWebAssemblyMemIntrinsicResults ()
 
FunctionPasscreateWebAssemblyRegStackify ()
 
FunctionPasscreateWebAssemblyRegColoring ()
 
FunctionPasscreateWebAssemblyFixBrTableDefaults ()
 
FunctionPasscreateWebAssemblyFixIrreducibleControlFlow ()
 
FunctionPasscreateWebAssemblyLateEHPrepare ()
 
FunctionPasscreateWebAssemblyCFGSort ()
 
FunctionPasscreateWebAssemblyCFGStackify ()
 
FunctionPasscreateWebAssemblyExplicitLocals ()
 
FunctionPasscreateWebAssemblyLowerBrUnless ()
 
FunctionPasscreateWebAssemblyRegNumbering ()
 
FunctionPasscreateWebAssemblyDebugFixup ()
 
FunctionPasscreateWebAssemblyPeephole ()
 
ModulePasscreateWebAssemblyMCLowerPrePass ()
 
void initializeFixFunctionBitcastsPass (PassRegistry &)
 
void initializeOptimizeReturnedPass (PassRegistry &)
 
void initializeWebAssemblyRefTypeMem2LocalPass (PassRegistry &)
 
void initializeWebAssemblyAddMissingPrototypesPass (PassRegistry &)
 
void initializeWebAssemblyArgumentMovePass (PassRegistry &)
 
void initializeWebAssemblyCFGSortPass (PassRegistry &)
 
void initializeWebAssemblyCFGStackifyPass (PassRegistry &)
 
void initializeWebAssemblyDAGToDAGISelPass (PassRegistry &)
 
void initializeWebAssemblyDebugFixupPass (PassRegistry &)
 
void initializeWebAssemblyExceptionInfoPass (PassRegistry &)
 
void initializeWebAssemblyExplicitLocalsPass (PassRegistry &)
 
void initializeWebAssemblyFixBrTableDefaultsPass (PassRegistry &)
 
void initializeWebAssemblyFixIrreducibleControlFlowPass (PassRegistry &)
 
void initializeWebAssemblyLateEHPreparePass (PassRegistry &)
 
void initializeWebAssemblyLowerBrUnlessPass (PassRegistry &)
 
void initializeWebAssemblyLowerEmscriptenEHSjLjPass (PassRegistry &)
 
void initializeWebAssemblyLowerRefTypesIntPtrConvPass (PassRegistry &)
 
void initializeWebAssemblyMCLowerPrePassPass (PassRegistry &)
 
void initializeWebAssemblyMemIntrinsicResultsPass (PassRegistry &)
 
void initializeWebAssemblyNullifyDebugValueListsPass (PassRegistry &)
 
void initializeWebAssemblyOptimizeLiveIntervalsPass (PassRegistry &)
 
void initializeWebAssemblyPeepholePass (PassRegistry &)
 
void initializeWebAssemblyRegColoringPass (PassRegistry &)
 
void initializeWebAssemblyRegNumberingPass (PassRegistry &)
 
void initializeWebAssemblyRegStackifyPass (PassRegistry &)
 
void initializeWebAssemblyReplacePhysRegsPass (PassRegistry &)
 
void initializeWebAssemblySetP2AlignOperandsPass (PassRegistry &)
 
raw_ostreamoperator<< (raw_ostream &OS, const WebAssemblyException &WE)
 
void computeLegalValueVTs (const WebAssemblyTargetLowering &TLI, LLVMContext &Ctx, const DataLayout &DL, Type *Ty, SmallVectorImpl< MVT > &ValueVTs)
 
void computeLegalValueVTs (const Function &F, const TargetMachine &TM, Type *Ty, SmallVectorImpl< MVT > &ValueVTs)
 
void computeSignatureVTs (const FunctionType *Ty, const Function *TargetFunc, const Function &ContextFunc, const TargetMachine &TM, SmallVectorImpl< MVT > &Params, SmallVectorImpl< MVT > &Results)
 
void valTypesFromMVTs (ArrayRef< MVT > In, SmallVectorImpl< wasm::ValType > &Out)
 
wasm::WasmSignaturesignatureFromMVTs (MCContext &Ctx, const SmallVectorImpl< MVT > &Results, const SmallVectorImpl< MVT > &Params)
 
bool isImmSExti16i8Value (uint64_t Value)
 
bool isImmSExti32i8Value (uint64_t Value)
 
bool isImmSExti64i8Value (uint64_t Value)
 
bool isImmSExti64i32Value (uint64_t Value)
 
bool isImmUnsignedi8Value (uint64_t Value)
 
bool isImmUnsignedi4Value (uint64_t Value)
 
bool EmitAnyX86InstComments (const MCInst *MI, raw_ostream &OS, const MCInstrInfo &MCII)
 EmitAnyX86InstComments - This function decodes x86 instructions and prints newline terminated strings to the specified string if desired.
 
MCCodeEmittercreateX86MCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateX86_32AsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
MCAsmBackendcreateX86_64AsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
MCTargetStreamercreateX86AsmTargetStreamer (MCStreamer &S, formatted_raw_ostream &OS, MCInstPrinter *InstPrinter, bool IsVerboseAsm)
 Implements X86-only directives for assembly emission.
 
MCTargetStreamercreateX86ObjectTargetStreamer (MCStreamer &S, const MCSubtargetInfo &STI)
 Implements X86-only directives for object files.
 
MCStreamercreateX86WinCOFFStreamer (MCContext &C, std::unique_ptr< MCAsmBackend > &&AB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE, bool RelaxAll, bool IncrementalLinkerCompatible)
 Construct an X86 Windows COFF machine code streamer which will generate PE/COFF format object files.
 
std::unique_ptr< MCObjectTargetWritercreateX86MachObjectWriter (bool Is64Bit, uint32_t CPUType, uint32_t CPUSubtype)
 Construct an X86 Mach-O object writer.
 
std::unique_ptr< MCObjectTargetWritercreateX86ELFObjectWriter (bool IsELF64, uint8_t OSABI, uint16_t EMachine)
 Construct an X86 ELF object writer.
 
std::unique_ptr< MCObjectTargetWritercreateX86WinCOFFObjectWriter (bool Is64Bit)
 Construct an X86 Win COFF object writer.
 
MCRegister getX86SubSuperRegister (MCRegister Reg, unsigned Size, bool High=false)
 
void DecodeINSERTPSMask (unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
 Decode a 128-bit INSERTPS instruction as a v4f32 shuffle mask.
 
void DecodeInsertElementMask (unsigned NumElts, unsigned Idx, unsigned Len, SmallVectorImpl< int > &ShuffleMask)
 
void DecodeMOVHLPSMask (unsigned NElts, SmallVectorImpl< int > &ShuffleMask)
 Decode a MOVHLPS instruction as a v2f64/v4f32 shuffle mask.
 
void DecodeMOVLHPSMask (unsigned NElts, SmallVectorImpl< int > &ShuffleMask)
 Decode a MOVLHPS instruction as a v2f64/v4f32 shuffle mask.
 
void DecodeMOVSLDUPMask (unsigned NumElts, SmallVectorImpl< int > &ShuffleMask)
 
void DecodeMOVSHDUPMask (unsigned NumElts, SmallVectorImpl< int > &ShuffleMask)
 
void DecodeMOVDDUPMask (unsigned NumElts, SmallVectorImpl< int > &ShuffleMask)
 
void DecodePSLLDQMask (unsigned NumElts, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
 
void DecodePSRLDQMask (unsigned NumElts, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
 
void DecodePALIGNRMask (unsigned NumElts, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
 
void DecodeVALIGNMask (unsigned NumElts, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
 
void DecodePSHUFMask (unsigned NumElts, unsigned ScalarBits, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
 Decodes the shuffle masks for pshufd/pshufw/vpermilpd/vpermilps.
 
void DecodePSHUFHWMask (unsigned NumElts, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
 Decodes the shuffle masks for pshufhw.
 
void DecodePSHUFLWMask (unsigned NumElts, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
 Decodes the shuffle masks for pshuflw.
 
void DecodePSWAPMask (unsigned NumElts, SmallVectorImpl< int > &ShuffleMask)
 Decodes a PSWAPD 3DNow! instruction.
 
void DecodeSHUFPMask (unsigned NumElts, unsigned ScalarBits, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
 Decodes the shuffle masks for shufp*.
 
void DecodeUNPCKHMask (unsigned NumElts, unsigned ScalarBits, SmallVectorImpl< int > &ShuffleMask)
 Decodes the shuffle masks for unpckhps/unpckhpd and punpckh*.
 
void DecodeUNPCKLMask (unsigned NumElts, unsigned ScalarBits, SmallVectorImpl< int > &ShuffleMask)
 Decodes the shuffle masks for unpcklps/unpcklpd and punpckl*.
 
void DecodeVectorBroadcast (unsigned NumElts, SmallVectorImpl< int > &ShuffleMask)
 Decodes a broadcast of the first element of a vector.
 
void DecodeSubVectorBroadcast (unsigned DstNumElts, unsigned SrcNumElts, SmallVectorImpl< int > &ShuffleMask)
 Decodes a broadcast of a subvector to a larger vector type.
 
void decodeVSHUF64x2FamilyMask (unsigned NumElts, unsigned ScalarSize, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
 Decode a shuffle packed values at 128-bit granularity (SHUFF32x4/SHUFF64x2/SHUFI32x4/SHUFI64x2) immediate mask into a shuffle mask.
 
void DecodeVPERM2X128Mask (unsigned NumElts, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
 
void DecodePSHUFBMask (ArrayRef< uint64_t > RawMask, const APInt &UndefElts, SmallVectorImpl< int > &ShuffleMask)
 Decode a PSHUFB mask from a raw array of constants such as from BUILD_VECTOR.
 
void DecodeBLENDMask (unsigned NumElts, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
 Decode a BLEND immediate mask into a shuffle mask.
 
void DecodeVPPERMMask (ArrayRef< uint64_t > RawMask, const APInt &UndefElts, SmallVectorImpl< int > &ShuffleMask)
 Decode a VPPERM mask from a raw array of constants such as from BUILD_VECTOR.
 
void DecodeVPERMMask (unsigned NumElts, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
 Decodes the shuffle masks for VPERMQ/VPERMPD.
 
void DecodeZeroExtendMask (unsigned SrcScalarBits, unsigned DstScalarBits, unsigned NumDstElts, bool IsAnyExtend, SmallVectorImpl< int > &ShuffleMask)
 Decode a zero extension instruction as a shuffle mask.
 
void DecodeZeroMoveLowMask (unsigned NumElts, SmallVectorImpl< int > &ShuffleMask)
 Decode a move lower and zero upper instruction as a shuffle mask.
 
void DecodeScalarMoveMask (unsigned NumElts, bool IsLoad, SmallVectorImpl< int > &ShuffleMask)
 Decode a scalar float move instruction as a shuffle mask.
 
void DecodeEXTRQIMask (unsigned NumElts, unsigned EltSize, int Len, int Idx, SmallVectorImpl< int > &ShuffleMask)
 Decode a SSE4A EXTRQ instruction as a shuffle mask.
 
void DecodeINSERTQIMask (unsigned NumElts, unsigned EltSize, int Len, int Idx, SmallVectorImpl< int > &ShuffleMask)
 Decode a SSE4A INSERTQ instruction as a shuffle mask.
 
void DecodeVPERMILPMask (unsigned NumElts, unsigned ScalarBits, ArrayRef< uint64_t > RawMask, const APInt &UndefElts, SmallVectorImpl< int > &ShuffleMask)
 Decode a VPERMILPD/VPERMILPS variable mask from a raw array of constants.
 
void DecodeVPERMIL2PMask (unsigned NumElts, unsigned ScalarBits, unsigned M2Z, ArrayRef< uint64_t > RawMask, const APInt &UndefElts, SmallVectorImpl< int > &ShuffleMask)
 Decode a VPERMIL2PD/VPERMIL2PS variable mask from a raw array of constants.
 
void DecodeVPERMVMask (ArrayRef< uint64_t > RawMask, const APInt &UndefElts, SmallVectorImpl< int > &ShuffleMask)
 Decode a VPERM W/D/Q/PS/PD mask from a raw array of constants.
 
void DecodeVPERMV3Mask (ArrayRef< uint64_t > RawMask, const APInt &UndefElts, SmallVectorImpl< int > &ShuffleMask)
 Decode a VPERMT2 W/D/Q/PS/PD mask from a raw array of constants.
 
MCTargetStreamercreateX86NullTargetStreamer (MCStreamer &S)
 Implements X86-only null emission.
 
TargetgetTheX86_32Target ()
 
TargetgetTheX86_64Target ()
 
FunctionPasscreateX86ISelDag (X86TargetMachine &TM, CodeGenOptLevel OptLevel)
 This pass converts a legalized DAG into a X86-specific DAG, ready for instruction scheduling.
 
FunctionPasscreateX86GlobalBaseRegPass ()
 This pass initializes a global base register for PIC on x86-32.
 
FunctionPasscreateCleanupLocalDynamicTLSPass ()
 This pass combines multiple accesses to local-dynamic TLS variables so that the TLS base address for the module is only fetched once per execution path through the function.
 
FunctionPasscreateX86FloatingPointStackifierPass ()
 This function returns a pass which converts floating-point register references and pseudo instructions into floating-point stack references and physical instructions.
 
FunctionPasscreateX86IssueVZeroUpperPass ()
 This pass inserts AVX vzeroupper instructions before each call to avoid transition penalty between functions encoded with AVX and SSE.
 
FunctionPasscreateX86IndirectBranchTrackingPass ()
 This pass inserts ENDBR instructions before indirect jump/call destinations as part of CET IBT mechanism.
 
FunctionPasscreateX86PadShortFunctions ()
 Return a pass that pads short functions with NOOPs.
 
FunctionPasscreateX86FixupLEAs ()
 Return a pass that selectively replaces certain instructions (like add, sub, inc, dec, some shifts, and some multiplies) by equivalent LEA instructions, in order to eliminate execution delays in some processors.
 
FunctionPasscreateX86FixupInstTuning ()
 Return a pass that replaces equivalent slower instructions with faster ones.
 
FunctionPasscreateX86FixupVectorConstants ()
 Return a pass that reduces the size of vector constant pool loads.
 
FunctionPasscreateX86OptimizeLEAs ()
 Return a pass that removes redundant LEA instructions and redundant address recalculations.
 
FunctionPasscreateX86FixupSetCC ()
 Return a pass that transforms setcc + movzx pairs into xor + setcc.
 
FunctionPasscreateX86AvoidStoreForwardingBlocks ()
 Return a pass that avoids creating store forward block issues in the hardware.
 
FunctionPasscreateX86FlagsCopyLoweringPass ()
 Return a pass that lowers EFLAGS copy pseudo instructions.
 
FunctionPasscreateX86DynAllocaExpander ()
 Return a pass that expands DynAlloca pseudo-instructions.
 
FunctionPasscreateX86TileConfigPass ()
 Return a pass that config the tile registers.
 
FunctionPasscreateX86FastPreTileConfigPass ()
 Return a pass that preconfig the tile registers before fast reg allocation.
 
FunctionPasscreateX86FastTileConfigPass ()
 Return a pass that config the tile registers after fast reg allocation.
 
FunctionPasscreateX86PreTileConfigPass ()
 Return a pass that insert pseudo tile config instruction.
 
FunctionPasscreateX86LowerTileCopyPass ()
 Return a pass that lower the tile copy instruction.
 
FunctionPasscreateX86AvoidTrailingCallPass ()
 Return a pass that inserts int3 at the end of the function if it ends with a CALL instruction.
 
FunctionPasscreateX86CallFrameOptimization ()
 Return a pass that optimizes the code-size of x86 call sequences.
 
FunctionPasscreateX86WinEHStatePass ()
 Return an IR pass that inserts EH registration stack objects and explicit EH state updates.
 
FunctionPasscreateX86ExpandPseudoPass ()
 Return a Machine IR pass that expands X86-specific pseudo instructions into a sequence of actual instructions.
 
FunctionPasscreateX86CmovConverterPass ()
 This pass converts X86 cmov instructions into branch when profitable.
 
FunctionPasscreateX86FixupBWInsts ()
 Return a Machine IR pass that selectively replaces certain byte and word instructions by equivalent 32 bit instructions, in order to eliminate partial register usage, false dependences on the upper portions of registers, and to save code size.
 
FunctionPasscreateX86DomainReassignmentPass ()
 Return a Machine IR pass that reassigns instruction chains from one domain to another, when profitable.
 
FunctionPasscreateX86CompressEVEXPass ()
 This pass compress instructions from EVEX space to legacy/VEX/EVEX space when possible in order to reduce code size or facilitate HW decoding.
 
FunctionPasscreateX86IndirectThunksPass ()
 This pass creates the thunks for the retpoline feature.
 
FunctionPasscreateX86ReturnThunksPass ()
 This pass replaces ret instructions with jmp's to __x86_return thunk.
 
FunctionPasscreateX86DiscriminateMemOpsPass ()
 This pass ensures instructions featuring a memory operand have distinctive <LineNumber, Discriminator> (with respect to eachother)
 
FunctionPasscreateX86InsertPrefetchPass ()
 This pass applies profiling information to insert cache prefetches.
 
FunctionPasscreateX86InsertX87waitPass ()
 This pass insert wait instruction after X87 instructions which could raise fp exceptions when strict-fp enabled.
 
FunctionPasscreateX86PartialReductionPass ()
 This pass optimizes arithmetic based on knowledge that is only used by a reduction sequence and is therefore safe to reassociate in interesting ways.
 
InstructionSelectorcreateX86InstructionSelector (const X86TargetMachine &TM, X86Subtarget &, X86RegisterBankInfo &)
 
FunctionPasscreateX86LoadValueInjectionLoadHardeningPass ()
 
FunctionPasscreateX86LoadValueInjectionRetHardeningPass ()
 
FunctionPasscreateX86SpeculativeLoadHardeningPass ()
 
FunctionPasscreateX86SpeculativeExecutionSideEffectSuppression ()
 
FunctionPasscreateX86ArgumentStackSlotPass ()
 
void initializeCompressEVEXPassPass (PassRegistry &)
 
void initializeFPSPass (PassRegistry &)
 
void initializeFixupBWInstPassPass (PassRegistry &)
 
void initializeFixupLEAPassPass (PassRegistry &)
 
void initializeX86ArgumentStackSlotPassPass (PassRegistry &)
 
void initializeX86FixupInstTuningPassPass (PassRegistry &)
 
void initializeX86FixupVectorConstantsPassPass (PassRegistry &)
 
void initializeWinEHStatePassPass (PassRegistry &)
 
void initializeX86AvoidSFBPassPass (PassRegistry &)
 
void initializeX86AvoidTrailingCallPassPass (PassRegistry &)
 
void initializeX86CallFrameOptimizationPass (PassRegistry &)
 
void initializeX86CmovConverterPassPass (PassRegistry &)
 
void initializeX86DAGToDAGISelPass (PassRegistry &)
 
void initializeX86DomainReassignmentPass (PassRegistry &)
 
void initializeX86ExecutionDomainFixPass (PassRegistry &)
 
void initializeX86ExpandPseudoPass (PassRegistry &)
 
void initializeX86FastPreTileConfigPass (PassRegistry &)
 
void initializeX86FastTileConfigPass (PassRegistry &)
 
void initializeX86FixupSetCCPassPass (PassRegistry &)
 
void initializeX86FlagsCopyLoweringPassPass (PassRegistry &)
 
void initializeX86LoadValueInjectionLoadHardeningPassPass (PassRegistry &)
 
void initializeX86LoadValueInjectionRetHardeningPassPass (PassRegistry &)
 
void initializeX86LowerAMXIntrinsicsLegacyPassPass (PassRegistry &)
 
void initializeX86LowerAMXTypeLegacyPassPass (PassRegistry &)
 
void initializeX86LowerTileCopyPass (PassRegistry &)
 
void initializeX86OptimizeLEAPassPass (PassRegistry &)
 
void initializeX86PartialReductionPass (PassRegistry &)
 
void initializeX86PreTileConfigPass (PassRegistry &)
 
void initializeX86ReturnThunksPass (PassRegistry &)
 
void initializeX86SpeculativeExecutionSideEffectSuppressionPass (PassRegistry &)
 
void initializeX86SpeculativeLoadHardeningPassPass (PassRegistry &)
 
void initializeX86TileConfigPass (PassRegistry &)
 
bool RetCC_X86 (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
bool CC_X86 (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
static X86AddressMode getAddressFromInstr (const MachineInstr *MI, unsigned Operand)
 Compute the addressing mode from an machine instruction starting with the given operand.
 
static const MachineInstrBuilderaddDirectMem (const MachineInstrBuilder &MIB, unsigned Reg)
 addDirectMem - This function is used to add a direct memory reference to the current instruction – that is, a dereference of an address in a register, with no scale, index or displacement.
 
static void setDirectAddressInInstr (MachineInstr *MI, unsigned Operand, unsigned Reg)
 Replace the address used in the instruction with the direct memory reference.
 
static const MachineInstrBuilderaddOffset (const MachineInstrBuilder &MIB, int Offset)
 
static const MachineInstrBuilderaddOffset (const MachineInstrBuilder &MIB, const MachineOperand &Offset)
 
static const MachineInstrBuilderaddRegOffset (const MachineInstrBuilder &MIB, unsigned Reg, bool isKill, int Offset)
 addRegOffset - This function is used to add a memory reference of the form [Reg + Offset], i.e., one with no scale or index, but with a displacement.
 
static const MachineInstrBuilderaddRegReg (const MachineInstrBuilder &MIB, unsigned Reg1, bool isKill1, unsigned Reg2, bool isKill2)
 addRegReg - This function is used to add a memory reference of the form: [Reg + Reg].
 
static const MachineInstrBuilderaddFullAddress (const MachineInstrBuilder &MIB, const X86AddressMode &AM)
 
static const MachineInstrBuilderaddFrameReference (const MachineInstrBuilder &MIB, int FI, int Offset=0)
 addFrameReference - This function is used to add a reference to the base of an abstract object on the stack frame of the current function.
 
static const MachineInstrBuilderaddConstantPoolReference (const MachineInstrBuilder &MIB, unsigned CPI, unsigned GlobalBaseReg, unsigned char OpFlags)
 addConstantPoolReference - This function is used to add a reference to the base of a constant value spilled to the per-function constant pool.
 
const X86InstrFMA3GroupgetFMA3Group (unsigned Opcode, uint64_t TSFlags)
 Returns a reference to a group of FMA3 opcodes to where the given Opcode is included.
 
const X86FoldTableEntrylookupTwoAddrFoldTable (unsigned RegOp)
 
const X86FoldTableEntrylookupFoldTable (unsigned RegOp, unsigned OpNum)
 
const X86FoldTableEntrylookupBroadcastFoldTable (unsigned RegOp, unsigned OpNum)
 
const X86FoldTableEntrylookupUnfoldTable (unsigned MemOp)
 
const X86FoldTableEntrylookupBroadcastFoldTableBySize (unsigned MemOp, unsigned BroadcastBits)
 
bool matchBroadcastSize (const X86FoldTableEntry &Entry, unsigned BroadcastBits)
 
static bool isGlobalStubReference (unsigned char TargetFlag)
 isGlobalStubReference - Return true if the specified TargetFlag operand is a reference to a stub for a global, not the global itself.
 
static bool isGlobalRelativeToPICBase (unsigned char TargetFlag)
 isGlobalRelativeToPICBase - Return true if the specified global value reference is relative to a 32-bit PIC base (X86ISD::GlobalBaseReg).
 
static bool isScale (const MachineOperand &MO)
 
static bool isLeaMem (const MachineInstr &MI, unsigned Op)
 
static bool isMem (const MachineInstr &MI, unsigned Op)
 
static const IntrinsicDatagetIntrinsicWithChain (unsigned IntNo)
 
static const IntrinsicDatagetIntrinsicWithoutChain (unsigned IntNo)
 
static void verifyIntrinsicTables ()
 
void createUnpackShuffleMask (EVT VT, SmallVectorImpl< int > &Mask, bool Lo, bool Unary)
 Generate unpacklo/unpackhi shuffle mask.
 
void createSplat2ShuffleMask (MVT VT, SmallVectorImpl< int > &Mask, bool Lo)
 Similar to unpacklo/unpackhi, but without the 128-bit lane limitation imposed by AVX and specific to the unary pattern.
 
std::unique_ptr< ScheduleDAGMutationcreateX86MacroFusionDAGMutation ()
 Note that you have to add: DAG.addMutation(createX86MacroFusionDAGMutation()); to X86PassConfig::createMachineScheduler() to have an effect.
 
static bool extractConstantMask (const Constant *C, unsigned MaskEltSizeInBits, APInt &UndefElts, SmallVectorImpl< uint64_t > &RawMask)
 
void DecodePSHUFBMask (const Constant *C, unsigned Width, SmallVectorImpl< int > &ShuffleMask)
 Decode a PSHUFB mask from an IR-level vector constant.
 
void DecodeVPERMILPMask (const Constant *C, unsigned ElSize, unsigned Width, SmallVectorImpl< int > &ShuffleMask)
 Decode a VPERMILP variable mask from an IR-level vector constant.
 
void DecodeVPERMIL2PMask (const Constant *C, unsigned M2Z, unsigned ElSize, unsigned Width, SmallVectorImpl< int > &ShuffleMask)
 Decode a VPERMILP2 variable mask from an IR-level vector constant.
 
void DecodeVPPERMMask (const Constant *C, unsigned Width, SmallVectorImpl< int > &ShuffleMask)
 Decode a VPPERM variable mask from an IR-level vector constant.
 
TargetgetTheXCoreTarget ()
 
void initializeXCoreLowerThreadLocalPass (PassRegistry &p)
 
FunctionPasscreateXCoreFrameToArgsOffsetEliminationPass ()
 createXCoreFrameToArgsOffsetEliminationPass - returns an instance of the Frame to args offset elimination pass
 
FunctionPasscreateXCoreISelDag (XCoreTargetMachine &TM, CodeGenOptLevel OptLevel)
 createXCoreISelDag - This pass converts a legalized DAG into a XCore-specific DAG, ready for instruction scheduling.
 
ModulePasscreateXCoreLowerThreadLocalPass ()
 
void initializeXCoreDAGToDAGISelPass (PassRegistry &)
 
MCCodeEmittercreateXtensaMCCodeEmitter (const MCInstrInfo &MCII, MCContext &Ctx)
 
MCAsmBackendcreateXtensaMCAsmBackend (const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
 
std::unique_ptr< MCObjectTargetWritercreateXtensaObjectWriter (uint8_t OSABI, bool IsLittleEndian)
 
TargetgetTheXtensaTarget ()
 
FunctionPasscreateXtensaISelDag (XtensaTargetMachine &TM, CodeGenOptLevel OptLevel)
 
cl::opt< boolEnableInferAlignmentPass ("enable-infer-alignment-pass", cl::init(true), cl::Hidden, cl::ZeroOrMore, cl::desc("Enable the InferAlignment pass, disabling alignment inference in " "InstCombine"))
 
cl::opt< boolDebugInfoCorrelate ("debug-info-correlate", cl::desc("Use debug info to correlate profiles. (Deprecated, use " "-profile-correlate=debug-info)"), cl::init(false))
 
cl::opt< boolPGOWarnMissing ("pgo-warn-missing-function", cl::init(false), cl::Hidden, cl::desc("Use this option to turn on/off " "warnings about missing profile data for " "functions."))
 
cl::opt< boolNoPGOWarnMismatch ("no-pgo-warn-mismatch", cl::init(false), cl::Hidden, cl::desc("Use this option to turn off/on " "warnings about profile cfg mismatch."))
 
cl::opt< boolNoPGOWarnMismatchComdatWeak ("no-pgo-warn-mismatch-comdat-weak", cl::init(true), cl::Hidden, cl::desc("The option is used to turn on/off " "warnings about hash mismatch for comdat " "or weak functions."))
 
template<>
ChangeStatus clampStateAndIndicateChange< DerefState > (DerefState &S, const DerefState &R)
 
cl::opt< boolEnableMemProfContextDisambiguation ("enable-memprof-context-disambiguation", cl::init(false), cl::Hidden, cl::ZeroOrMore, cl::desc("Enable MemProf context disambiguation"))
 
cl::opt< boolSupportsHotColdNew ("supports-hot-cold-new", cl::init(false), cl::Hidden, cl::desc("Linking with hot/cold operator new interfaces"))
 
cl::opt< boolSortProfiledSCC ("sort-profiled-scc-member", cl::init(true), cl::Hidden, cl::desc("Sort profiled recursion by edge weights."))
 
cl::opt< int > ProfileInlineGrowthLimit ("sample-profile-inline-growth-limit", cl::Hidden, cl::init(12), cl::desc("The size growth ratio limit for proirity-based sample profile " "loader inlining."))
 
cl::opt< int > ProfileInlineLimitMin ("sample-profile-inline-limit-min", cl::Hidden, cl::init(100), cl::desc("The lower bound of size growth limit for " "proirity-based sample profile loader inlining."))
 
cl::opt< int > ProfileInlineLimitMax ("sample-profile-inline-limit-max", cl::Hidden, cl::init(10000), cl::desc("The upper bound of size growth limit for " "proirity-based sample profile loader inlining."))
 
cl::opt< int > SampleHotCallSiteThreshold ("sample-profile-hot-inline-threshold", cl::Hidden, cl::init(3000), cl::desc("Hot callsite threshold for proirity-based sample profile loader " "inlining."))
 
cl::opt< int > SampleColdCallSiteThreshold ("sample-profile-cold-inline-threshold", cl::Hidden, cl::init(45), cl::desc("Threshold for inlining cold callsites"))
 
cl::opt< int > InitialSyntheticCount ("initial-synthetic-count", cl::Hidden, cl::init(10), cl::desc("Initial value of synthetic entry count"))
 
raw_ostreamoperator<< (raw_ostream &OS, BBState &BBState) LLVM_ATTRIBUTE_UNUSED
 
static void combineKnownMetadata (Instruction *ReplInst, Instruction *I)
 
static void analyzeICmp (ScalarEvolution &SE, ICmpInst *ICmp, ConditionInfo &Cond, const Loop &L)
 
static bool calculateUpperBound (const Loop &L, ScalarEvolution &SE, ConditionInfo &Cond, bool IsExitCond)
 
static bool hasProcessableCondition (const Loop &L, ScalarEvolution &SE, ICmpInst *ICmp, ConditionInfo &Cond, bool IsExitCond)
 
static bool isProcessableCondBI (const ScalarEvolution &SE, const BranchInst *BI)
 
static bool canSplitLoopBound (const Loop &L, const DominatorTree &DT, ScalarEvolution &SE, ConditionInfo &Cond)
 
static bool isProfitableToTransform (const Loop &L, const BranchInst *BI)
 
static BranchInstfindSplitCandidate (const Loop &L, ScalarEvolution &SE, ConditionInfo &ExitingCond, ConditionInfo &SplitCandidateCond)
 
static bool splitLoopBound (Loop &L, DominatorTree &DT, LoopInfo &LI, ScalarEvolution &SE, LPMUpdater &U)
 
static InstructionCost ComputeSpeculationCost (const Instruction *I, const TargetTransformInfo &TTI)
 
static bool CompareVars (const ASanStackVariableDescription &a, const ASanStackVariableDescription &b)
 
static uint64_t VarAndRedzoneSize (uint64_t Size, uint64_t Granularity, uint64_t Alignment)
 
cl::opt< boolEnableKnowledgeRetention ("enable-knowledge-retention", cl::init(false), cl::Hidden, cl::desc("enable preservation of attributes throughout code transformation"))
 
cl::opt< boolEnableExtTspBlockPlacement ("enable-ext-tsp-block-placement", cl::Hidden, cl::init(false), cl::desc("Enable machine block placement based on the ext-tsp model, " "optimizing I-cache utilization."))
 
cl::opt< boolApplyExtTspWithoutProfile ("ext-tsp-apply-without-profile", cl::desc("Whether to apply ext-tsp placement for instances w/o profile"), cl::init(true), cl::Hidden)
 
static bool valueComesBefore (const Value *A, const Value *B)
 
bool shouldRename (Value *V)
 
void collectCmpOps (CmpInst *Comparison, SmallVectorImpl< Value * > &CmpOperands)
 
static void replaceCreatedSSACopys (PredicateInfo &PredInfo, Function &F)
 
cl::opt< unsignedSampleProfileMaxPropagateIterations ("sample-profile-max-propagate-iterations", cl::init(100), cl::desc("Maximum number of iterations to go through when propagating " "sample block/edge weights through the CFG."))
 
cl::opt< unsignedSampleProfileRecordCoverage ("sample-profile-check-record-coverage", cl::init(0), cl::value_desc("N"), cl::desc("Emit a warning if less than N% of records in the input profile " "are matched to the IR."))
 
cl::opt< unsignedSampleProfileSampleCoverage ("sample-profile-check-sample-coverage", cl::init(0), cl::value_desc("N"), cl::desc("Emit a warning if less than N% of samples in the input profile " "are matched to the IR."))
 
cl::opt< boolNoWarnSampleUnused ("no-warn-sample-unused", cl::init(false), cl::Hidden, cl::desc("Use this option to turn off/on warnings about function with " "samples but without debug information to use those samples. "))
 
cl::opt< boolSampleProfileUseProfi ("sample-profile-use-profi", cl::Hidden, cl::desc("Use profi to infer block and edge counts."))
 
static bool canRemoveInstruction (Instruction *I)
 
static bool refineInstruction (SCCPSolver &Solver, const SmallPtrSetImpl< Value * > &InsertedValues, Instruction &Inst)
 Try to use Inst's value range from Solver to infer the NUW flag.
 
static bool replaceSignedInst (SCCPSolver &Solver, SmallPtrSetImpl< Value * > &InsertedValues, Instruction &Inst)
 Try to replace signed instructions with their unsigned equivalent.
 
static bool isUniformLoop (Loop *Lp, Loop *OuterLp)
 
static bool isUniformLoopNest (Loop *Lp, Loop *OuterLp)
 
static TypeconvertPointerToIntegerType (const DataLayout &DL, Type *Ty)
 
static TypegetWiderType (const DataLayout &DL, Type *Ty0, Type *Ty1)
 
static bool hasOutsideLoopUser (const Loop *TheLoop, Instruction *Inst, SmallPtrSetImpl< Value * > &AllowedExit)
 Check that the instruction has outside loop users and is not an identified reduction variable.
 
static bool storeToSameAddress (ScalarEvolution *SE, StoreInst *A, StoreInst *B)
 Returns true if A and B have same pointer operands or same SCEVs addresses.
 
static bool isTLIScalarize (const TargetLibraryInfo &TLI, const CallInst &CI)
 Checks if a function is scalarizable according to the TLI, in the sense that it should be vectorized and then expanded in multiple scalar calls.
 
ValuecreateStepForVF (IRBuilderBase &B, Type *Ty, ElementCount VF, int64_t Step)
 Return a value for Step multiplied by VF.
 
ValuegetRuntimeVF (IRBuilderBase &B, Type *Ty, ElementCount VF)
 Return the runtime value for VF.
 
const SCEVcreateTripCountSCEV (Type *IdxTy, PredicatedScalarEvolution &PSE, Loop *OrigLoop)
 
static void reportVectorization (OptimizationRemarkEmitter *ORE, Loop *TheLoop, VectorizationFactor VF, unsigned IC)
 Report successful vectorization of the loop.
 
static void inversePermutation (ArrayRef< unsigned > Indices, SmallVectorImpl< int > &Mask)
 
static void reorderScalars (SmallVectorImpl< Value * > &Scalars, ArrayRef< int > Mask)
 Reorders the list of scalars in accordance with the given Mask.
 
static bool areAllOperandsNonInsts (Value *V)
 Checks if the provided value does not require scheduling.
 
static bool isUsedOutsideBlock (Value *V)
 Checks if the provided value does not require scheduling.
 
static bool doesNotNeedToBeScheduled (Value *V)
 Checks if the specified value does not require scheduling.
 
static bool doesNotNeedToSchedule (ArrayRef< Value * > VL)
 Checks if the specified array of instructions does not require scheduling.
 
raw_ostreamoperator<< (raw_ostream &OS, const VPlanIngredient &I)
 
raw_ostreamoperator<< (raw_ostream &OS, const VPlan &Plan)
 
iterator_range< df_iterator< VPBlockShallowTraversalWrapper< VPBlockBase * > > > vp_depth_first_shallow (VPBlockBase *G)
 Returns an iterator range to traverse the graph starting at G in depth-first order.
 
iterator_range< df_iterator< VPBlockShallowTraversalWrapper< const VPBlockBase * > > > vp_depth_first_shallow (const VPBlockBase *G)
 
iterator_range< df_iterator< VPBlockDeepTraversalWrapper< VPBlockBase * > > > vp_depth_first_deep (VPBlockBase *G)
 Returns an iterator range to traverse the graph starting at G in depth-first order while traversing through region blocks.
 
iterator_range< df_iterator< VPBlockDeepTraversalWrapper< const VPBlockBase * > > > vp_depth_first_deep (const VPBlockBase *G)
 
raw_ostreamoperator<< (raw_ostream &OS, const VPValue &V)
 
bool verifyVPlanIsValid (const VPlan &Plan)
 Verify invariants for general VPlans.
 
bool getWindowsSDKDir (vfs::FileSystem &VFS, std::optional< StringRef > WinSdkDir, std::optional< StringRef > WinSdkVersion, std::optional< StringRef > WinSysRoot, std::string &Path, int &Major, std::string &WindowsSDKIncludeVersion, std::string &WindowsSDKLibVersion)
 Get Windows SDK installation directory.
 
bool getUniversalCRTSdkDir (vfs::FileSystem &VFS, std::optional< StringRef > WinSdkDir, std::optional< StringRef > WinSdkVersion, std::optional< StringRef > WinSysRoot, std::string &Path, std::string &UCRTVersion)
 
bool findVCToolChainViaCommandLine (vfs::FileSystem &VFS, std::optional< StringRef > VCToolsDir, std::optional< StringRef > VCToolsVersion, std::optional< StringRef > WinSysRoot, std::string &Path, ToolsetLayout &VSLayout)
 
bool findVCToolChainViaSetupConfig (vfs::FileSystem &VFS, std::optional< StringRef > VCToolsVersion, std::string &Path, ToolsetLayout &VSLayout)
 
ArrayRef Deduction guides

Deduction guide to construct an ArrayRef from a single element.

template<typename T >
 ArrayRef (const T &OneElt) -> ArrayRef< T >
 
template<typename T >
 ArrayRef (const T *data, size_t length) -> ArrayRef< T >
 Deduction guide to construct an ArrayRef from a pointer and length.
 
template<typename T >
 ArrayRef (const T *data, const T *end) -> ArrayRef< T >
 Deduction guide to construct an ArrayRef from a range.
 
template<typename T >
 ArrayRef (const SmallVectorImpl< T > &Vec) -> ArrayRef< T >
 Deduction guide to construct an ArrayRef from a SmallVector.
 
template<typename T , unsigned N>
 ArrayRef (const SmallVector< T, N > &Vec) -> ArrayRef< T >
 Deduction guide to construct an ArrayRef from a SmallVector.
 
template<typename T >
 ArrayRef (const std::vector< T > &Vec) -> ArrayRef< T >
 Deduction guide to construct an ArrayRef from a std::vector.
 
template<typename T , std::size_t N>
 ArrayRef (const std::array< T, N > &Vec) -> ArrayRef< T >
 Deduction guide to construct an ArrayRef from a std::array.
 
template<typename T >
 ArrayRef (const ArrayRef< T > &Vec) -> ArrayRef< T >
 Deduction guide to construct an ArrayRef from an ArrayRef (const)
 
template<typename T >
 ArrayRef (ArrayRef< T > &Vec) -> ArrayRef< T >
 Deduction guide to construct an ArrayRef from an ArrayRef.
 
template<typename T , size_t N>
 ArrayRef (const T(&Arr)[N]) -> ArrayRef< T >
 Deduction guide to construct an ArrayRef from a C array.
 
MutableArrayRef Deduction guides

Deduction guide to construct a MutableArrayRef from a single element

template<class T >
 MutableArrayRef (T &OneElt) -> MutableArrayRef< T >
 
template<class T >
 MutableArrayRef (T *data, size_t length) -> MutableArrayRef< T >
 Deduction guide to construct a MutableArrayRef from a pointer and length.
 
template<class T >
 MutableArrayRef (SmallVectorImpl< T > &Vec) -> MutableArrayRef< T >
 Deduction guide to construct a MutableArrayRef from a SmallVector.
 
template<class T , unsigned N>
 MutableArrayRef (SmallVector< T, N > &Vec) -> MutableArrayRef< T >
 
template<class T >
 MutableArrayRef (std::vector< T > &Vec) -> MutableArrayRef< T >
 Deduction guide to construct a MutableArrayRef from a std::vector.
 
template<class T , std::size_t N>
 MutableArrayRef (std::array< T, N > &Vec) -> MutableArrayRef< T >
 Deduction guide to construct a MutableArrayRef from a std::array.
 
template<typename T , size_t N>
 MutableArrayRef (T(&Arr)[N]) -> MutableArrayRef< T >
 Deduction guide to construct a MutableArrayRef from a C array.
 
ArrayRef Comparison Operators
template<typename T >
bool operator== (ArrayRef< T > LHS, ArrayRef< T > RHS)
 
template<typename T >
bool operator== (SmallVectorImpl< T > &LHS, ArrayRef< T > RHS)
 
template<typename T >
bool operator!= (ArrayRef< T > LHS, ArrayRef< T > RHS)
 
template<typename T >
bool operator!= (SmallVectorImpl< T > &LHS, ArrayRef< T > RHS)
 
StringRef Comparison Operators
bool operator== (StringRef LHS, StringRef RHS)
 
bool operator!= (StringRef LHS, StringRef RHS)
 
bool operator< (StringRef LHS, StringRef RHS)
 
bool operator<= (StringRef LHS, StringRef RHS)
 
bool operator> (StringRef LHS, StringRef RHS)
 
bool operator>= (StringRef LHS, StringRef RHS)
 
std::string & operator+= (std::string &buffer, StringRef string)
 
Twine Inline Implementations
Twine operator+ (const Twine &LHS, const Twine &RHS)
 
Twine operator+ (const char *LHS, const StringRef &RHS)
 Additional overload to guarantee simplified codegen; this is equivalent to concat().
 
Twine operator+ (const StringRef &LHS, const char *RHS)
 Additional overload to guarantee simplified codegen; this is equivalent to concat().
 
raw_ostreamoperator<< (raw_ostream &OS, const Twine &RHS)
 
void describeFuzzerIntOps (std::vector< fuzzerop::OpDescriptor > &Ops)
 Getters for the default sets of operations, per general category.
 
void describeFuzzerFloatOps (std::vector< fuzzerop::OpDescriptor > &Ops)
 
void describeFuzzerControlFlowOps (std::vector< fuzzerop::OpDescriptor > &Ops)
 
void describeFuzzerPointerOps (std::vector< fuzzerop::OpDescriptor > &Ops)
 
void describeFuzzerAggregateOps (std::vector< fuzzerop::OpDescriptor > &Ops)
 
void describeFuzzerVectorOps (std::vector< fuzzerop::OpDescriptor > &Ops)
 
void describeFuzzerUnaryOperations (std::vector< fuzzerop::OpDescriptor > &Ops)
 
void describeFuzzerOtherOps (std::vector< fuzzerop::OpDescriptor > &Ops)
 
TransformationMode hasUnrollTransformation (const Loop *L)
 
TransformationMode hasUnrollAndJamTransformation (const Loop *L)
 
TransformationMode hasVectorizeTransformation (const Loop *L)
 
TransformationMode hasDistributeTransformation (const Loop *L)
 
TransformationMode hasLICMVersioningTransformation (const Loop *L)
 

Variables

template<typename E , typename = std::enable_if_t<is_bitmask_enum<E>::value>>
constexpr unsigned BitWidth
 
constexpr force_iteration_on_noniterable_enum_t force_iteration_on_noniterable_enum
 
template<typename T , unsigned N>
class LLVM_GSL_OWNER SmallVector
 Forward declaration of SmallVector so that calculateSmallVectorDefaultInlinedElements can reference sizeof(SmallVector<T, 0>).
 
template<typename T >
int(*)(const void *, const void *) get_array_pod_sort_comparator (const T &)
 get_array_pod_sort_comparator - This is an internal helper function used to get type deduction of T right.
 
template<typename T >
constexpr bool is_incomplete_v = !is_detected<detail::has_sizeof, T>::value
 Detects when type T is incomplete.
 
constexpr StringRef IgnoreBundleTag = "ignore"
 Tag in operand bundle indicating that this bundle should be ignored.
 
llvm::cl::opt< boolCheckBFIUnknownBlockQueries
 
llvm::cl::opt< boolUseIterativeBFIInference
 
llvm::cl::opt< unsignedIterativeBFIMaxIterationsPerBlock
 
llvm::cl::opt< double > IterativeBFIPrecision
 
constexpr size_t NumberOfFeatures
 
const std::vector< TensorSpecFeatureMap
 
const char *const DecisionName = "inlining_decision"
 
const TensorSpec InlineDecisionSpec
 
const char *const DefaultDecisionName = "inlining_default"
 
const TensorSpec DefaultDecisionSpec
 
const char *const RewardName = "delta_size"
 
cl::opt< unsignedDefMaxInstsToScan
 The default number of maximum instructions to scan in the block, used by FindAvailableLoadedValue().
 
bool VerifyLoopInfo = false
 Enable verification of loop info.
 
bool VerifyMemorySSA = false
 Enables verification of MemorySSA.
 
bool VerifySCEV = false
 
constexpr unsigned MaxAnalysisRecursionDepth = 6
 
cl::opt< std::string > BBSectionsColdTextPrefix
 
cl::opt< unsignedPartialUnrollingThreshold
 
cl::opt< boolDisableGISelLegalityCheck
 
cl::opt< boolUseSegmentSetForPhysRegs
 
cl::opt< boolSwpEnableCopyToPhi
 
cl::opt< int > SwpForceIssueWidth
 A command line argument to force pipeliner to use specified issue width.
 
static const int DefaultProcResSize = 16
 
cl::opt< boolForceTopDown
 
cl::opt< boolForceBottomUp
 
cl::opt< boolVerifyScheduling
 
cl::opt< boolViewMISchedDAGs
 
cl::opt< boolPrintDAGs
 
charAtomicExpandID = AtomicExpandLegacy::ID
 AtomicExpandID – Lowers atomic operations in terms of either cmpxchg load-linked/store-conditional loops.
 
charMachineLoopInfoID = MachineLoopInfo::ID
 MachineLoopInfo - This pass is a loop analysis pass.
 
charMachineDominatorsID
 MachineDominators - This pass is a machine dominators analysis pass.
 
charMachineDominanceFrontierID = MachineDominanceFrontier::ID
 MachineDominanaceFrontier - This pass is a machine dominators analysis.
 
charMachineRegionInfoPassID
 MachineRegionInfo - This pass computes SESE regions for machine functions.
 
charEdgeBundlesID
 EdgeBundles analysis - Bundle machine CFG edges.
 
charLiveVariablesID = LiveVariables::ID
 LiveVariables pass - This pass computes the set of blocks in which each variable is life and sets machine operand kill flags.
 
charPHIEliminationID = PHIElimination::ID
 PHIElimination - This pass eliminates machine instruction PHI nodes by inserting copy instructions.
 
charLiveIntervalsID = LiveIntervals::ID
 LiveIntervals - This analysis keeps track of the live ranges of virtual and physical registers.
 
charLiveStacksID = LiveStacks::ID
 LiveStacks pass. An analysis keeping track of the liveness of stack slots.
 
charTwoAddressInstructionPassID = TwoAddressInstructionPass::ID
 TwoAddressInstruction - This pass reduces two-address instructions to use two operands.
 
charProcessImplicitDefsID = ProcessImplicitDefs::ID
 ProcessImpicitDefs pass - This pass removes IMPLICIT_DEFs.
 
charRegisterCoalescerID = RegisterCoalescer::ID
 RegisterCoalescer - This pass merges live ranges to eliminate copies.
 
charMachineSchedulerID = MachineScheduler::ID
 MachineScheduler - This pass schedules machine instructions.
 
charPostMachineSchedulerID = PostMachineScheduler::ID
 PostMachineScheduler - This pass schedules machine instructions postRA.
 
charSpillPlacementID = SpillPlacement::ID
 SpillPlacement analysis.
 
charShrinkWrapID = ShrinkWrap::ID
 ShrinkWrap pass. Look for the best place to insert save and restore.
 
charLiveRangeShrinkID = LiveRangeShrink::ID
 LiveRangeShrink pass.
 
charRAGreedyID = RAGreedy::ID
 Greedy register allocator.
 
charRABasicID = RABasic::ID
 Basic register allocator.
 
charVirtRegRewriterID = VirtRegRewriter::ID
 VirtRegRewriter pass.
 
charUnreachableMachineBlockElimID
 UnreachableMachineBlockElimination - This pass removes unreachable machine basic blocks.
 
charDeadMachineInstructionElimID = DeadMachineInstructionElim::ID
 DeadMachineInstructionElim - This pass removes dead machine instructions.
 
charDetectDeadLanesID = DetectDeadLanes::ID
 This pass adds dead/undef flags after analyzing subregister lanes.
 
charPostRAMachineSinkingID = PostRAMachineSinking::ID
 This pass perform post-ra machine sink for COPY instructions.
 
charMIRAddFSDiscriminatorsID
 This pass adds flow sensitive discriminators.
 
charMIRProfileLoaderPassID = MIRProfileLoaderPass::ID
 This pass reads flow sensitive profile.
 
charInitUndefID = InitUndef::ID
 
charPrologEpilogCodeInserterID = PEI::ID
 PrologEpilogCodeInserter - This pass inserts prolog and epilog code, and eliminates abstract frame references.
 
charExpandPostRAPseudosID = ExpandPostRA::ID
 ExpandPostRAPseudos - This pass expands pseudo instructions after register allocation.
 
charPostRAHazardRecognizerID = PostRAHazardRecognizer::ID
 PostRAHazardRecognizer - This pass runs the post-ra hazard recognizer.
 
charPostRASchedulerID = PostRAScheduler::ID
 PostRAScheduler - This pass performs post register allocation scheduling.
 
charBranchFolderPassID = BranchFolderPass::ID
 BranchFolding - This pass performs machine code CFG based optimizations to delete branches to branches, eliminate branches to successor blocks (creating fall throughs), and eliminating branches over branches.
 
charBranchRelaxationPassID = BranchRelaxation::ID
 BranchRelaxation - This pass replaces branches that need to jump further than is supported by a branch instruction.
 
charMachineFunctionPrinterPassID = MachineFunctionPrinterPass::ID
 MachineFunctionPrinterPass - This pass prints out MachineInstr's.
 
charMIRPrintingPassID = MIRPrintingPass::ID
 MIRPrintingPass - this pass prints out the LLVM IR using the MIR serialization format.
 
charTailDuplicateID = TailDuplicate::ID
 TailDuplicate - Duplicate blocks with unconditional branches into tails of their predecessors.
 
charEarlyTailDuplicateID = EarlyTailDuplicate::ID
 Duplicate blocks with unconditional branches into tails of their predecessors.
 
charMachineTraceMetricsID = MachineTraceMetrics::ID
 MachineTraceMetrics - This pass computes critical path and CPU resource usage in an ensemble of traces.
 
charEarlyIfConverterID = EarlyIfConverter::ID
 EarlyIfConverter - This pass performs if-conversion on SSA form by inserting cmov instructions.
 
charEarlyIfPredicatorID = EarlyIfPredicator::ID
 EarlyIfPredicator - This pass performs if-conversion on SSA form by predicating if/else block and insert select at the join point.
 
charMachineCombinerID = MachineCombiner::ID
 This pass performs instruction combining using trace metrics to estimate critical-path and resource depth.
 
charStackColoringID = StackColoring::ID
 StackSlotColoring - This pass performs stack coloring and merging.
 
charStackFrameLayoutAnalysisPassID = StackFrameLayoutAnalysisPass::ID
 StackFramePrinter - This pass prints the stack frame layout and variable mappings.
 
charIfConverterID = IfConverter::ID
 IfConverter - This pass performs machine code if conversion.
 
charMachineBlockPlacementID = MachineBlockPlacement::ID
 MachineBlockPlacement - This pass places basic blocks based on branch probabilities.
 
charMachineBlockPlacementStatsID = MachineBlockPlacementStats::ID
 MachineBlockPlacementStats - This pass collects statistics about the basic block placement using branch probabilities and block frequency information.
 
charGCLoweringID = LowerIntrinsics::ID
 GCLowering Pass - Used by gc.root to perform its default lowering operations.
 
charShadowStackGCLoweringID = ShadowStackGCLowering::ID
 ShadowStackGCLowering - Implements the custom lowering mechanism used by the shadow stack GC.
 
charGCMachineCodeAnalysisID = GCMachineCodeAnalysis::ID
 GCMachineCodeAnalysis - Target-independent pass to mark safe points in machine code.
 
charMachineCSEID = MachineCSE::ID
 MachineCSE - This pass performs global CSE on machine instructions.
 
charMIRCanonicalizerID = MIRCanonicalizer::ID
 MIRCanonicalizer - This pass canonicalizes MIR by renaming vregs according to the semantics of the instruction as well as hoists code.
 
charImplicitNullChecksID = ImplicitNullChecks::ID
 ImplicitNullChecks - This pass folds null pointer checks into nearby memory operations.
 
charMachineLICMID = MachineLICM::ID
 This pass performs loop invariant code motion on machine instructions.
 
charEarlyMachineLICMID = EarlyMachineLICM::ID
 This pass performs loop invariant code motion on machine instructions.
 
charMachineSinkingID = MachineSinking::ID
 MachineSinking - This pass performs sinking on machine instructions.
 
charMachineCopyPropagationID = MachineCopyPropagation::ID
 MachineCopyPropagation - This pass performs copy propagation on machine instructions.
 
charMachineLateInstrsCleanupID = MachineLateInstrsCleanup::ID
 MachineLateInstrsCleanup - This pass removes redundant identical instructions after register allocation and rematerialization.
 
charPeepholeOptimizerID = PeepholeOptimizer::ID
 PeepholeOptimizer - This pass performs peephole optimizations - like extension and comparison eliminations.
 
charOptimizePHIsID = OptimizePHIs::ID
 OptimizePHIs - This pass optimizes machine instruction PHIs to take advantage of opportunities created during DAG legalization.
 
charStackSlotColoringID = StackSlotColoring::ID
 StackSlotColoring - This pass performs stack slot coloring.
 
charFuncletLayoutID = FuncletLayout::ID
 This pass lays out funclets contiguously.
 
charXRayInstrumentationID = XRayInstrumentation::ID
 This pass inserts the XRay instrumentation sleds if they are supported by the target platform.
 
charFEntryInserterID = FEntryInserter::ID
 This pass inserts FEntry calls.
 
charPatchableFunctionID = PatchableFunction::ID
 This pass implements the "patchable-function" attribute.
 
charLocalStackSlotAllocationID = LocalStackSlotPass::ID
 LocalStackSlotAllocation - This pass assigns local frame indices to stack slots relative to one another and allocates base registers to access them when it is estimated by the target to be out of range of normal frame pointer or stack pointer index addressing.
 
charFinalizeISelID = FinalizeISel::ID
 This pass expands pseudo-instructions, reserves registers and adjusts machine frame information.
 
charUnpackMachineBundlesID = UnpackMachineBundles::ID
 UnpackMachineBundles - This pass unpack machine instruction bundles.
 
charFinalizeMachineBundlesID = FinalizeMachineBundles::ID
 FinalizeMachineBundles - This pass finalize machine instruction bundles (created earlier, e.g.
 
charStackMapLivenessID = StackMapLiveness::ID
 StackMapLiveness - This pass analyses the register live-out set of stackmap/patchpoint intrinsics and attaches the calculated information to the intrinsic for later emission to the StackMap.
 
charMachineSanitizerBinaryMetadataID
 
charRemoveRedundantDebugValuesID = RemoveRedundantDebugValues::ID
 RemoveRedundantDebugValues pass.
 
charMachineCFGPrinterID = MachineCFGPrinter::ID
 MachineCFGPrinter pass.
 
charLiveDebugValuesID = LiveDebugValues::ID
 LiveDebugValues pass.
 
charRenameIndependentSubregsID = RenameIndependentSubregs::ID
 This pass detects subregister lanes in a virtual register that are used independently of other lanes and splits them into separate virtual registers.
 
charMachinePipelinerID = MachinePipeliner::ID
 This pass performs software pipelining on machine instructions.
 
charFixupStatepointCallerSavedID = FixupStatepointCallerSaved::ID
 The pass fixups statepoint machine instruction to replace usage of caller saved registers with stack slots.
 
constexpr StringRef AssumptionAttrKey = "llvm.assume"
 The key we use for assumption attributes.
 
StringSet KnownAssumptionStrings
 A set of known assumption strings that are accepted without warning and which can be recommended as typo correction.
 
cl::opt< boolEnableFSDiscriminator
 
bool VerifyDomInfo = false
 Enables verification of dominator trees.
 
constexpr char kGlobalIdentifierDelimiter = ';'
 
constexpr int PoisonMaskElem = -1
 
const uint64_t NOMORE_ICP_MAGICNUM = -1
 Magic number in the value profile metadata showing a target has been promoted for the instruction and shouldn't be promoted again.
 
cl::opt< ChangePrinterPrintChanged
 
constexpr const charPseudoProbeDescMetadataName = "llvm.pseudo_probe_desc"
 
static constexpr uint64_t PseudoProbeFullDistributionFactor
 
cl::opt< boolEnableLTOInternalization
 Enable global value internalization in LTO.
 
const char AsmRewritePrecedence []
 
bool TimePassesIsEnabled = false
 If the user specifies the -time-passes argument on an LLVM tool command line then the value of this boolean will be true, otherwise false.
 
bool TimePassesPerRun = false
 If TimePassesPerRun is true, there would be one line of report for each pass invocation.
 
cl::opt< boolDoInstrProfNameCompression
 
cl::opt< boolUseContextLessSummary
 
cl::opt< int > ProfileSummaryCutoffHot
 
cl::opt< int > ProfileSummaryCutoffCold
 
cl::opt< unsignedProfileSummaryHugeWorkingSetSizeThreshold
 
cl::opt< unsignedProfileSummaryLargeWorkingSetSizeThreshold
 
cl::opt< uint64_tProfileSummaryHotCount
 
cl::opt< uint64_tProfileSummaryColdCount
 
template<typename T >
constexpr bool IsNullable
 
template<typename... Types>
constexpr detail::IsaCheckPredicate< Types... > IsaPred {}
 Function object wrapper for the llvm::isa type check.
 
template<typename... Types>
constexpr detail::IsaAndPresentCheckPredicate< Types... > IsaAndPresentPred {}
 Function object wrapper for the llvm::isa_and_present type check.
 
bool DebugFlag = false
 This boolean is set to true if the '-debug' command line option is specified.
 
bool EnableDebugBuffering = false
 EnableDebugBuffering - This defaults to false.
 
static const unsigned BaseDiscriminatorBitWidth = 8
 
static const unsigned FSDiscriminatorBitWidth = 6
 
static const unsigned char BitReverseTable256 [256]
 Macro compressed bit reversal table for 256 bits.
 
const float huge_valf = HUGE_VALF
 Use this rather than HUGE_VALF; the latter causes warnings on MSVC.
 
SourceMgr SrcMgr
 
unsigned ErrorsPrinted = 0
 
const unsigned MAX_SUBTARGET_WORDS = 5
 
const unsigned MAX_SUBTARGET_FEATURES = MAX_SUBTARGET_WORDS * 64
 
static constexpr unsigned InstCombineDefaultMaxIterations = 1
 
cl::opt< boolDebugInfoCorrelate
 
constexpr int kSanitizerBinaryMetadataAtomicsBit = 0
 
constexpr int kSanitizerBinaryMetadataUARBit = 1
 
constexpr int kSanitizerBinaryMetadataUARHasSizeBit = 2
 
constexpr uint64_t kSanitizerBinaryMetadataAtomics
 
constexpr uint64_t kSanitizerBinaryMetadataUAR
 
constexpr uint64_t kSanitizerBinaryMetadataUARHasSize
 
constexpr char kSanitizerBinaryMetadataCoveredSection []
 
constexpr char kSanitizerBinaryMetadataAtomicsSection []
 
unsigned MaxInitializationChainLength
 The value passed to the line option that defines the maximal initialization chain length.
 
cl::opt< int > SampleHotCallSiteThreshold
 
cl::opt< int > SampleColdCallSiteThreshold
 
cl::opt< int > ProfileInlineGrowthLimit
 
cl::opt< int > ProfileInlineLimitMin
 
cl::opt< int > ProfileInlineLimitMax
 
cl::opt< boolSortProfiledSCC
 
charInferAddressSpacesID
 
cl::opt< unsignedSetLicmMssaOptCap
 
cl::opt< unsignedSetLicmMssaNoAccForPromotionCap
 
cl::opt< boolForgetSCEVInLoopUnroll
 
charLowerInvokePassID = LowerInvokeLegacyPass::ID
 
charLowerSwitchID = LowerSwitchLegacyPass::ID
 
charBreakCriticalEdgesID
 
charLCSSAID = LCSSAWrapperPass::ID
 
charLoopSimplifyID = LoopSimplify::ID
 
static const int kAsanStackLeftRedzoneMagic = 0xf1
 
static const int kAsanStackMidRedzoneMagic = 0xf2
 
static const int kAsanStackRightRedzoneMagic = 0xf3
 
static const int kAsanStackUseAfterReturnMagic = 0xf5
 
static const int kAsanStackUseAfterScopeMagic = 0xf8
 
cl::opt< boolEnableKnowledgeRetention
 
cl::opt< boolRequireAndPreserveDomTree
 This function is used to do simplification of a CFG.
 
cl::opt< boolSampleProfileUseProfi
 
cl::opt< unsignedSampleProfileMaxPropagateIterations
 
cl::opt< unsignedSampleProfileRecordCoverage
 
cl::opt< unsignedSampleProfileSampleCoverage
 
cl::opt< boolNoWarnSampleUnused
 
cl::opt< unsignedSCEVCheapExpansionBudget
 
cl::opt< boolEnablePGSO
 
cl::opt< boolPGSOLargeWorkingSetSizeOnly
 
cl::opt< boolPGSOColdCodeOnly
 
cl::opt< boolPGSOColdCodeOnlyForInstrPGO
 
cl::opt< boolPGSOColdCodeOnlyForSamplePGO
 
cl::opt< boolPGSOColdCodeOnlyForPartialSamplePGO
 
cl::opt< boolForcePGSO
 
cl::opt< int > PgsoCutoffInstrProf
 
cl::opt< int > PgsoCutoffSampleProf
 
cl::opt< boolEnableLoopInterleaving
 
cl::opt< boolEnableLoopVectorization
 
cl::opt< boolDisableBasicAA ("disable-basic-aa", cl::Hidden, cl::init(false))
 Allow disabling BasicAA from the AA results.
 
cl::opt< std::string > ViewBlockFreqFuncName ("view-bfi-func-name", cl::Hidden, cl::desc("The option to specify " "the name of the function " "whose CFG will be displayed."))
 
cl::opt< unsignedViewHotFreqPercent ("view-hot-freq-percent", cl::init(10), cl::Hidden, cl::desc("An integer in percent used to specify " "the hot blocks/edges to be displayed " "in red: a block or edge whose frequency " "is no less than the max frequency of the " "function multiplied by this percent."))
 
cl::opt< PGOViewCountsTypePGOViewCounts ("pgo-view-counts", cl::Hidden, cl::desc("A boolean option to show CFG dag or text with " "block profile counts and branch probabilities " "right after PGO profile annotation step. The " "profile counts are computed using branch " "probabilities from the runtime profile data and " "block frequency propagation algorithm. To view " "the raw counts from the profile, use option " "-pgo-view-raw-counts instead. To limit graph " "display to only one function, use filtering option " "-view-bfi-func-name."), cl::values(clEnumValN(PGOVCT_None, "none", "do not show."), clEnumValN(PGOVCT_Graph, "graph", "show a graph."), clEnumValN(PGOVCT_Text, "text", "show in text.")))
 
static cl::opt< boolPrintBFI ("print-bfi", cl::init(false), cl::Hidden, cl::desc("Print the block frequency info."))
 
cl::opt< std::string > PrintBFIFuncName ("print-bfi-func-name", cl::Hidden, cl::desc("The option to specify the name of the function " "whose block frequency info is printed."))
 
cl::opt< unsignedMaxDevirtIterations ("max-devirt-iterations", cl::ReallyHidden, cl::init(4))
 
static cl::opt< boolAbortOnMaxDevirtIterationsReached ("abort-on-max-devirt-iterations-reached", cl::desc("Abort when the max iterations for devirtualization CGSCC repeat " "pass is reached"))
 
cl::opt< boolEnableDetailedFunctionProperties ("enable-detailed-function-properties", cl::Hidden, cl::init(false), cl::desc("Whether or not to compute detailed function properties."))
 
cl::opt< unsignedBigBasicBlockInstructionThreshold ("big-basic-block-instruction-threshold", cl::Hidden, cl::init(500), cl::desc("The minimum number of instructions a basic block should contain " "before being considered big."))
 
cl::opt< unsignedMediumBasicBlockInstructionThreshold ("medium-basic-block-instruction-threshold", cl::Hidden, cl::init(15), cl::desc("The minimum number of instructions a basic block should contain " "before being considered medium-sized."))
 
static const unsigned heatSize = 100
 
static const char heatPalette [heatSize][8]
 
cl::opt< InlinerFunctionImportStatsOptsInlinerFunctionImportStats ("inliner-function-import-stats", cl::init(InlinerFunctionImportStatsOpts::No), cl::values(clEnumValN(InlinerFunctionImportStatsOpts::Basic, "basic", "basic statistics"), clEnumValN(InlinerFunctionImportStatsOpts::Verbose, "verbose", "printing of statistics for each inlined function")), cl::Hidden, cl::desc("Enable inliner stats for imported functions"))
 
cl::opt< boolDisableBranches ("no-ir-sim-branch-matching", cl::init(false), cl::ReallyHidden, cl::desc("disable similarity matching, and outlining, " "across branches for debugging purposes."))
 
cl::opt< boolDisableIndirectCalls ("no-ir-sim-indirect-calls", cl::init(false), cl::ReallyHidden, cl::desc("disable outlining indirect calls."))
 
cl::opt< boolMatchCallsByName ("ir-sim-calls-by-name", cl::init(false), cl::ReallyHidden, cl::desc("only allow matching call instructions if the " "name and type signature match."))
 
cl::opt< boolDisableIntrinsics ("no-ir-sim-intrinsics", cl::init(false), cl::ReallyHidden, cl::desc("Don't match or outline intrinsics"))
 
FunctionSummary::ForceSummaryHotnessType ForceSummaryEdgesCold
 
static std::array< std::string, static_cast< size_t >(TensorType::Total)> TensorTypeNames
 
cl::OptionCategory GICombinerOptionCategory ("GlobalISel Combiner", "Control the rules which are enabled. These options all take a comma " "separated list of rules to disable and may be specified by number " "or number range (e.g. 1-10)." " They may also be specified by name.")
 
static cl::opt< GVDAGTypeViewMachineBlockFreqPropagationDAG ("view-machine-block-freq-propagation-dags", cl::Hidden, cl::desc("Pop up a window to show a dag displaying how machine block " "frequencies propagate through the CFG."), cl::values(clEnumValN(GVDT_None, "none", "do not display graphs."), clEnumValN(GVDT_Fraction, "fraction", "display a graph using the " "fractional block frequency representation."), clEnumValN(GVDT_Integer, "integer", "display a graph using the raw " "integer fractional block frequency representation."), clEnumValN(GVDT_Count, "count", "display a graph using the real " "profile count if available.")))
 
cl::opt< GVDAGTypeViewBlockLayoutWithBFI ("view-block-layout-with-bfi", cl::Hidden, cl::desc("Pop up a window to show a dag displaying MBP layout and associated " "block frequencies of the CFG."), cl::values(clEnumValN(GVDT_None, "none", "do not display graphs."), clEnumValN(GVDT_Fraction, "fraction", "display a graph using the " "fractional block frequency representation."), clEnumValN(GVDT_Integer, "integer", "display a graph using the raw " "integer fractional block frequency representation."), clEnumValN(GVDT_Count, "count", "display a graph using the real " "profile count if available.")))
 
static cl::opt< boolPrintMachineBlockFreq ("print-machine-bfi", cl::init(false), cl::Hidden, cl::desc("Print the machine block frequency info."))
 
cl::opt< boolEnableExtTspBlockPlacement
 
cl::opt< boolApplyExtTspWithoutProfile
 
cl::opt< unsignedStaticLikelyProb
 
cl::opt< unsignedProfileLikelyProb
 
bool VerifyMachineDomInfo = false
 
cl::opt< MISchedPostRASched::DirectionPostRADirection ("misched-postra-direction", cl::Hidden, cl::desc("Post reg-alloc list scheduling direction"), cl::init(MISchedPostRASched::TopDown), cl::values(clEnumValN(MISchedPostRASched::TopDown, "topdown", "Force top-down post reg-alloc list scheduling"), clEnumValN(MISchedPostRASched::BottomUp, "bottomup", "Force bottom-up post reg-alloc list scheduling"), clEnumValN(MISchedPostRASched::Bidirectional, "bidirectional", "Force bidirectional post reg-alloc list scheduling")))
 
cl::opt< boolDumpCriticalPathLength ("misched-dcpl", cl::Hidden, cl::desc("Print critical path length to stdout"))
 
cl::opt< boolMISchedDumpReservedCycles ("misched-dump-reserved-cycles", cl::Hidden, cl::init(false), cl::desc("Dump resource usage at schedule boundary."))
 
cl::opt< boolMischedDetailResourceBooking ("misched-detail-resource-booking", cl::Hidden, cl::init(false), cl::desc("Show details of invoking getNextResoufceCycle."))
 
cl::opt< boolImprovedFSDiscriminator ("improved-fs-discriminator", cl::Hidden, cl::init(false), cl::desc("New FS discriminators encoding (incompatible with the original " "encoding)"))
 
charMIRNamerID = MIRNamer::ID
 
cl::opt< unsignedEvictInterferenceCutoff
 
static const std::vector< int64_t > PerLiveRangeShape {1}
 
static const TensorSpec DecisionSpec
 
static const std::vector< TensorSpecInputFeatures
 
static cl::opt< bool, trueEnableTiming ("time-passes", cl::location(TimePassesIsEnabled), cl::Hidden, cl::desc("Time each pass, printing elapsed time for each on exit"))
 
static cl::opt< bool, trueEnableTimingPerRun ("time-passes-per-run", cl::location(TimePassesPerRun), cl::Hidden, cl::desc("Time each pass run, printing elapsed time for each run on exit"), cl::callback([](const bool &) { TimePassesIsEnabled=true;}))
 
cl::opt< boolSupportsHotColdNew
 Indicate we are linking with an allocator that supports hot/cold operator new interfaces.
 
cl::opt< boolEnableMemProfContextDisambiguation
 Enable MemProf context disambiguation for thin link.
 
cl::opt< boolNoPGOWarnMismatch
 
cl::opt< boolLTODiscardValueNames ("lto-discard-value-names", cl::desc("Strip names from Value during LTO (other than GlobalValue)."), cl::init(false), cl::Hidden)
 
cl::opt< boolRemarksWithHotness ("lto-pass-remarks-with-hotness", cl::desc("With PGO, include profile count in optimization remarks"), cl::Hidden)
 
cl::opt< std::optional< uint64_t >, false, remarks::HotnessThresholdParserRemarksHotnessThreshold ("lto-pass-remarks-hotness-threshold", cl::desc("Minimum profile count required for an " "optimization remark to be output." " Use 'auto' to apply the threshold from profile summary."), cl::value_desc("uint or 'auto'"), cl::init(0), cl::Hidden)
 
cl::opt< std::string > RemarksFilename ("lto-pass-remarks-output", cl::desc("Output filename for pass remarks"), cl::value_desc("filename"))
 
cl::opt< std::string > RemarksPasses ("lto-pass-remarks-filter", cl::desc("Only record optimization remarks from passes whose " "names match the given regular expression"), cl::value_desc("regex"))
 
cl::opt< std::string > RemarksFormat ("lto-pass-remarks-format", cl::desc("The format used for serializing remarks (default: YAML)"), cl::value_desc("format"), cl::init("yaml"))
 
cl::opt< std::string > LTOStatsFile ("lto-stats-file", cl::desc("Save statistics to the specified file"), cl::Hidden)
 
cl::opt< std::string > AIXSystemAssemblerPath ("lto-aix-system-assembler", cl::desc("Path to a system assembler, picked up on AIX only"), cl::value_desc("path"))
 
cl::opt< boolLTORunCSIRInstr ("cs-profile-generate", cl::desc("Perform context sensitive PGO instrumentation"))
 
cl::opt< std::string > LTOCSIRProfile ("cs-profile-path", cl::desc("Context sensitive profile file path"))
 
cl::opt< int > InitialSyntheticCount
 
cl::opt< cl::boolOrDefaultUseLEB128Directives ("use-leb128-directives", cl::Hidden, cl::desc("Disable the usage of LEB128 directives, and generate .byte instead."), cl::init(cl::BOU_UNSET))
 
cl::opt< unsignedAsmMacroMaxNestingDepth
 
cl::opt< boolPrintPipelinePasses ("print-pipeline-passes", cl::desc("Print a '-passes' compatible string describing the pipeline " "(best-effort only)."))
 
cl::opt< boolEnableInferAlignmentPass
 
cl::opt< boolEnableVTableValueProfiling ("enable-vtable-value-profiling", cl::init(false), cl::desc("If true, the virtual table address will be instrumented to know " "the types of a C++ pointer. The information is used in indirect " "call promotion to do selective vtable-based comparison."))
 
static ValueProfRecordClosure InstrProfRecordClosure
 
int DisableABIBreakingChecks
 
static constexpr fltSemantics semIEEEhalf = {15, -14, 11, 16}
 
static constexpr fltSemantics semBFloat = {127, -126, 8, 16}
 
static constexpr fltSemantics semIEEEsingle = {127, -126, 24, 32}
 
static constexpr fltSemantics semIEEEdouble = {1023, -1022, 53, 64}
 
static constexpr fltSemantics semIEEEquad = {16383, -16382, 113, 128}
 
static constexpr fltSemantics semFloat8E5M2 = {15, -14, 3, 8}
 
static constexpr fltSemantics semFloat8E5M2FNUZ
 
static constexpr fltSemantics semFloat8E4M3FN
 
static constexpr fltSemantics semFloat8E4M3FNUZ
 
static constexpr fltSemantics semFloat8E4M3B11FNUZ
 
static constexpr fltSemantics semFloatTF32 = {127, -126, 11, 19}
 
static constexpr fltSemantics semX87DoubleExtended = {16383, -16382, 64, 80}
 
static constexpr fltSemantics semBogus = {0, 0, 0, 0}
 
static constexpr fltSemantics semPPCDoubleDouble = {-1, 0, 0, 128}
 
static constexpr fltSemantics semPPCDoubleDoubleLegacy
 
const unsigned int maxExponent = 16383
 
const unsigned int maxPrecision = 113
 
const unsigned int maxPowerOfFiveExponent = maxExponent + maxPrecision - 1
 
const unsigned int maxPowerOfFiveParts
 
static const char hexDigitsLower [] = "0123456789abcdef0"
 
static const char hexDigitsUpper [] = "0123456789ABCDEF0"
 
static const char infinityL [] = "infinity"
 
static const char infinityU [] = "INFINITY"
 
static const char NaNL [] = "nan"
 
static const char NaNU [] = "NAN"
 
static const int halfShift = 10
 
static const UTF32 halfBase = 0x0010000UL
 
static const UTF32 halfMask = 0x3FFUL
 
static const char trailingBytesForUTF8 [256]
 
static const UTF32 offsetsFromUTF8 [6]
 
static const UTF8 firstByteMark [7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }
 
static ManagedStatic< std::vector< std::string > > CurrentDebugType
 
static const MachineMemOperand::Flags MOSuppressPair
 
static const MachineMemOperand::Flags MOStridedAccess
 
static const unsigned PerfectShuffleTable [6561+1]
 
charAMDGPUMachineCFGStructurizerID
 
charAMDGPUAnnotateKernelFeaturesID = AMDGPUAnnotateKernelFeatures::ID
 
charAMDGPUAtomicOptimizerID = AMDGPUAtomicOptimizer::ID
 
charAMDGPUCtorDtorLoweringLegacyPassID
 
charAMDGPULowerKernelArgumentsID
 
charAMDGPUPromoteKernelArgumentsID
 
charAMDGPULowerKernelAttributesID
 
charAMDGPULowerModuleLDSLegacyPassID = AMDGPULowerModuleLDSLegacy::ID
 
charAMDGPULowerBufferFatPointersID = AMDGPULowerBufferFatPointers::ID
 
charAMDGPURewriteOutArgumentsID
 
charGCNDPPCombineID = GCNDPPCombine::ID
 
charSIFoldOperandsID
 
charSIPeepholeSDWAID = SIPeepholeSDWA::ID
 
charSIShrinkInstructionsID
 
charSIFixSGPRCopiesID = SIFixSGPRCopies::ID
 
charSIFixVGPRCopiesID = SIFixVGPRCopies::ID
 
charSILowerWWMCopiesID = SILowerWWMCopies::ID
 
charSILowerI1CopiesID = SILowerI1Copies::ID
 
charAMDGPUGlobalISelDivergenceLoweringID
 
charAMDGPUMarkLastScratchLoadID = AMDGPUMarkLastScratchLoad::ID
 
charSILowerSGPRSpillsID = SILowerSGPRSpills::ID
 
charSILoadStoreOptimizerID = SILoadStoreOptimizer::ID
 
charSIWholeQuadModeID = SIWholeQuadMode::ID
 
charSILowerControlFlowID = SILowerControlFlow::ID
 
charSIPreEmitPeepholeID
 
charSILateBranchLoweringPassID = SILateBranchLowering::ID
 
charSIOptimizeExecMaskingID = SIOptimizeExecMasking::ID
 
charSIPreAllocateWWMRegsID = SIPreAllocateWWMRegs::ID
 
charAMDGPUImageIntrinsicOptimizerID
 
charAMDGPUPerfHintAnalysisID = AMDGPUPerfHintAnalysis::ID
 
charGCNRegPressurePrinterID = GCNRegPressurePrinter::ID
 
charAMDGPUPromoteAllocaID = AMDGPUPromoteAlloca::ID
 
charAMDGPUPromoteAllocaToVectorID = AMDGPUPromoteAllocaToVector::ID
 
charAMDGPUPrintfRuntimeBindingID = AMDGPUPrintfRuntimeBinding::ID
 
charAMDGPUResourceUsageAnalysisID = AMDGPUResourceUsageAnalysis::ID
 
charAMDGPUUnifyMetadataID = AMDGPUUnifyMetadata::ID
 
charSIOptimizeExecMaskingPreRAID = SIOptimizeExecMaskingPreRA::ID
 
charSIOptimizeVGPRLiveRangeID = SIOptimizeVGPRLiveRange::ID
 
charAMDGPUAnnotateUniformValuesPassID
 
charAMDGPUCodeGenPrepareID
 
charAMDGPURemoveIncompatibleFunctionsID
 
charAMDGPULateCodeGenPrepareID
 
charAMDGPURewriteUndefForPHILegacyPassID
 
charSIAnnotateControlFlowPassID
 
charSIMemoryLegalizerID = SIMemoryLegalizer::ID
 
charSIModeRegisterID
 
charAMDGPUInsertDelayAluID = AMDGPUInsertDelayAlu::ID
 
charAMDGPUInsertSingleUseVDSTID = AMDGPUInsertSingleUseVDST::ID
 
charSIInsertHardClausesID = SIInsertHardClauses::ID
 
charSIInsertWaitcntsID = SIInsertWaitcnts::ID
 
charSIFormMemoryClausesID = SIFormMemoryClauses::ID
 
charSIPostRABundlerID = SIPostRABundler::ID
 
charGCNCreateVOPDID = GCNCreateVOPD::ID
 
charAMDGPUUnifyDivergentExitNodesID = AMDGPUUnifyDivergentExitNodes::ID
 
charAMDGPUOpenCLEnqueuedBlockLoweringID
 
charGCNNSAReassignID = GCNNSAReassign::ID
 
charGCNPreRALongBranchRegID
 
charGCNPreRAOptimizationsID = GCNPreRAOptimizations::ID
 
charGCNRewritePartialRegUsesID = GCNRewritePartialRegUses::ID
 
static cl::opt< boolDumpHSAMetadata ("amdgpu-dump-hsa-metadata", cl::desc("Dump AMDGPU HSA Metadata"))
 
static cl::opt< boolVerifyHSAMetadata ("amdgpu-verify-hsa-metadata", cl::desc("Verify AMDGPU HSA Metadata"))
 
const SubtargetFeatureKV AMDGPUFeatureKV [AMDGPU::NumSubtargetFeatures - 1]
 
charR600ClauseMergePassID = R600ClauseMergePass::ID
 
charR600ControlFlowFinalizerID = R600ControlFlowFinalizer::ID
 
charR600ExpandSpecialInstrsPassID = R600ExpandSpecialInstrsPass::ID
 
charR600VectorRegMergerID = R600VectorRegMerger::ID
 
charR600PacketizerID = R600Packetizer::ID
 
static const MachineMemOperand::Flags MONoClobber
 Mark the MMO of a uniform load if there are no potentially clobbering stores on any path from the start of an entry function to this load.
 
static const MachineMemOperand::Flags MOLastUse
 Mark the MMO of a load as the last use.
 
static cl::opt< unsignedArcKillAddrMode ("arc-kill-addr-mode", cl::init(0), cl::ReallyHidden)
 
cl::opt< boolReuseFrameIndexVals
 
static const MCPhysReg RegList8AVR []
 Registers for calling conventions, ordered in reverse as required by ABI.
 
static const MCPhysReg RegList8Tiny []
 
static const MCPhysReg RegList16AVR []
 
static const MCPhysReg RegList16Tiny []
 
static const charAVRDataLayout
 
const int SIZE_LONG = 4
 
const int SIZE_WORD = 2
 
charHexagonExpandCondsetsID = HexagonExpandCondsets::ID
 
charHexagonTfrCleanupID = HexagonTfrCleanup::ID
 
cl::opt< boolHexagonDisableCompound
 
cl::opt< boolHexagonDisableDuplex
 
const InstrStage HexagonStages []
 
static const Align MIPS_NACL_BUNDLE_ALIGN = Align(16)
 
charNVPTXCtorDtorLoweringLegacyPassID = NVPTXCtorDtorLoweringLegacy::ID
 
charPPCVSXFMAMutateID = PPCVSXFMAMutate::ID
 
charPPCLowerMASSVEntriesID = PPCLowerMASSVEntries::ID
 
charPPCGenScalarMASSEntriesID = PPCGenScalarMASSEntries::ID
 
const SubtargetFeatureKV RISCVFeatureKV [RISCV::NumSubtargetFeatures]
 
static constexpr std::pair< uint8_t, uint8_t > LoadFP32ImmArr []
 
static const MachineMemOperand::Flags MONontemporalBit0
 
static const MachineMemOperand::Flags MONontemporalBit1
 
static const unsigned StandardVectorWidth = 256
 
static const unsigned PackedVectorWidth = 512
 
const SubtargetFeatureKV WebAssemblyFeatureKV [WebAssembly::NumSubtargetFeatures]
 
static const IntrinsicData IntrinsicsWithChain []
 
static const IntrinsicData IntrinsicsWithoutChain []
 
static const unsigned CodeModelLargeSize = 256
 
Target TheXtensaTarget
 
cl::opt< InstrProfCorrelator::ProfCorrelatorKindProfileCorrelate ("profile-correlate", cl::desc("Use debug info or binary file to correlate profiles."), cl::init(InstrProfCorrelator::NONE), cl::values(clEnumValN(InstrProfCorrelator::NONE, "", "No profile correlation"), clEnumValN(InstrProfCorrelator::DEBUG_INFO, "debug-info", "Use debug info to correlate"), clEnumValN(InstrProfCorrelator::BINARY, "binary", "Use binary to correlate")))
 
cl::opt< boolPGOWarnMissing
 
cl::opt< boolNoPGOWarnMismatchComdatWeak
 
static const uint64_t kMinAlignment = 16
 
cl::opt< boolShouldPreserveAllAttributes ("assume-preserve-all", cl::init(false), cl::Hidden, cl::desc("enable preservation of all attrbitues. even those that are " "unlikely to be usefull"))
 
static cl::opt< boolPGOWarnMisExpect ("pgo-warn-misexpect", cl::init(false), cl::Hidden, cl::desc("Use this option to turn on/off " "warnings about incorrect usage of llvm.expect intrinsics."))
 
static cl::opt< uint32_tMisExpectTolerance ("misexpect-tolerance", cl::init(0), cl::desc("Prevents emiting diagnostics when profile counts are " "within N% of the threshold.."))
 
cl::opt< boolHintsAllowReordering ("hints-allow-reordering", cl::init(true), cl::Hidden, cl::desc("Allow enabling loop hints to reorder " "FP operations during vectorization."))
 
cl::opt< boolEnableVPlanNativePath ("enable-vplan-native-path", cl::Hidden, cl::desc("Enable VPlan-native vectorization path with " "support for outer loop vectorization."))
 
const char *const LLVMLoopUnrollFollowupAll = "llvm.loop.unroll.followup_all"
 
const char *const LLVMLoopUnrollFollowupUnrolled
 
const char *const LLVMLoopUnrollFollowupRemainder
 

Detailed Description

This is an optimization pass for GlobalISel generic memory operations.

Specializations of GraphTraits that allow VPBlockBase graphs to be treated as proper graphs for generic algorithms;.

---------------------— PointerInfo ------------------------------------—

Calculate a measure of the register allocation policy quality.

The score injection pass.

Defines the TAPI Record Visitor.

This file implements support for optimizing divisions by a constant.

 \file
 This is a MessagePack reader.

 See https://github.com/msgpack/msgpack/blob/master/spec.md for the full
 standard.

 Typical usage:
 \code
 StringRef input = GetInput();
 msgpack::Reader MPReader(input);
 msgpack::Object Obj;

 while (true) {
   Expected<bool> ReadObj = MPReader.read(&Obj);
   if (!ReadObj)
     // Handle error...
   if (!ReadObj.get())
     break; // Reached end of input
   switch (Obj.Kind) {
   case msgpack::Type::Int:

// // Use Obj.Int break; // ... } }

Specifically, it focuses on merging stores and loads to consecutive addresses.


The core of the Dwarf linking logic.

The generation of the dwarf information from the object files will be driven by the selection of 'root DIEs', which are DIEs that describe variables or functions that resolves to the corresponding code section(and thus have entries in the Addresses map). All the debug information that will be generated(the DIEs, but also the line tables, ranges, ...) is derived from that set of root DIEs.

The root DIEs are identified because they contain relocations that points to code section(the low_pc for a function, the location for a variable). These relocations are gathered as a very first step when we start processing a object file by AddressesMap.

The overall linking process looks like this:

parrallel_for_each(ObjectFile) { for_each (Compile Unit) {

  1. Load Clang modules. }

parrallel_for_each(Compile Unit) {

  1. Load input DWARF for Compile Unit.
  2. Report warnings for Clang modules.
  3. Analyze live DIEs and type names(if ODR deduplication is requested).
  4. Clone DIEs(Generate output DIEs and resulting DWARF tables). The result is in an OutDebugInfoBytes, which is an ELF file containing DWARF tables corresponding to the current compile unit.
  5. Cleanup Input and Output DIEs. }

Deallocate loaded Object file. }

if (ODR deduplication is requested) Generate an artificial compilation unit ("Type Table": used to partially generate DIEs at the clone stage).

for_each (ObjectFile) { for_each (Compile Unit) {

  1. Set offsets to Compile Units DWARF tables.
  2. Sort offsets/attributes/patches to have a predictable result.
  3. Patch size/offsets fields.
  4. Generate index tables.
  5. Move DWARF tables of compile units into the resulting file. } }

Every compile unit is processed separately, visited only once (except case inter-CU references exist), and used data is freed after the compile unit is processed. The resulting file is glued together from the generated debug tables which correspond to separate compile units.

Handling inter-CU references: inter-CU references are hard to process using only one pass. f.e. if CU1 references CU100 and CU100 references CU1, we could not finish handling of CU1 until we finished CU100. Thus we either need to load all CUs into the memory, either load CUs several times. This implementation loads inter-connected CU into memory at the first pass and processes them at the second pass.

ODR deduplication: Artificial compilation unit will be constructed to keep type dies. All types are moved into that compilation unit. Type's references are patched so that they point to the corresponding types from artificial compilation unit. All partial type definitions would be merged into single type definition.

This pass calculates the score for a function and inserts it in the log, but this happens only in development mode. It's a no-op otherwise.

This is used to construct a reward for the training of the ML-driven allocation policy. Currently, the score is the sum of the machine basic block frequency-weighed number of loads, stores, copies, and remat instructions, each factored with a relative weight.

Typedef Documentation

◆ AAAlignmentStateType

Definition at line 4264 of file Attributor.h.

◆ AddBufferFn

using llvm::AddBufferFn = typedef 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.

in a cache).

Buffer callbacks must be thread safe.

Definition at line 63 of file Caching.h.

◆ AddressProbesMap

using llvm::AddressProbesMap = typedef std::unordered_map<uint64_t, std::list<MCDecodedPseudoProbe> >

Definition at line 105 of file MCPseudoProbe.h.

◆ AddStreamFn

using llvm::AddStreamFn = typedef 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.

Stream callbacks must be thread safe.

Definition at line 41 of file Caching.h.

◆ AliasAnalysis

using llvm::AliasAnalysis = typedef AAResults

Temporary typedef for legacy code that uses a generic AliasAnalysis pointer or reference.

Definition at line 680 of file AliasAnalysis.h.

◆ AnalysisID

using llvm::AnalysisID = typedef const void *

Definition at line 50 of file Pass.h.

◆ are_base_of

template<typename T , typename... Ts>
using llvm::are_base_of = typedef 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.

Definition at line 134 of file STLExtras.h.

◆ ArgAuxType

using llvm::ArgAuxType = typedef std::variant<unsigned, Init *>

Definition at line 486 of file Record.h.

◆ Assume2KnowledgeMap

A mapping from intrinsics (=llvm.assume calls) to a value range (=knowledge) that is encoded in them.

How the value range is interpreted depends on the RetainedKnowledgeKey that was used to get this out of the RetainedKnowledgeMap.

Definition at line 80 of file AssumeBundleQueries.h.

◆ BBInfoVector

Definition at line 25 of file ARMBasicBlockInfo.h.

◆ BBOrMBB

Definition at line 30 of file WasmEHFuncInfo.h.

◆ BBSideEffectsSet

Definition at line 113 of file GVNHoist.cpp.

◆ bf_iterator_default_set

template<typename NodeRef , unsigned SmallSize = 8>
using llvm::bf_iterator_default_set = typedef SmallPtrSet<NodeRef, SmallSize>

Definition at line 40 of file BreadthFirstIterator.h.

◆ BFIDOTGTraitsBase

Definition at line 123 of file BlockFrequencyInfo.cpp.

◆ binop_eval_t

using llvm::binop_eval_t = typedef Expected<APInt> (*)(const APInt &, const APInt &, bool &)

Type of functions evaluating a given binary operation.

Definition at line 299 of file FileCheckImpl.h.

◆ BLAKE3Result

template<size_t NumBytes = LLVM_BLAKE3_OUT_LEN>
using llvm::BLAKE3Result = typedef std::array<uint8_t, NumBytes>

The constant LLVM_BLAKE3_OUT_LEN provides the default output length, 32 bytes, which is recommended for most callers.

Outputs shorter than the default length of 32 bytes (256 bits) provide less security. An N-bit BLAKE3 output is intended to provide N bits of first and second preimage resistance and N/2 bits of collision resistance, for any N up to 256. Longer outputs don't provide any additional security.

Shorter BLAKE3 outputs are prefixes of longer ones. Explicitly requesting a short output is equivalent to truncating the default-length output.

Definition at line 35 of file BLAKE3.h.

◆ BlockIdMap

using llvm::BlockIdMap = typedef std::unordered_map<BasicBlock *, uint32_t>

Definition at line 34 of file SampleProfileProbe.h.

◆ BlockSequence

A sequence of basic blocks.

A 0-sized SmallVector is slightly cheaper to move than a std::vector.

Definition at line 33 of file HotColdSplitting.h.

◆ Boolean

Definition at line 131 of file ConvertUTF.h.

◆ BuildFnTy

using llvm::BuildFnTy = typedef std::function<void(MachineIRBuilder &)>

Definition at line 82 of file CombinerHelper.h.

◆ BumpPtrAllocator

The standard BumpPtrAllocator which just uses the default template parameters.

Definition at line 375 of file Allocator.h.

◆ BumpPtrList

template<class T >
using llvm::BumpPtrList = typedef AllocatorList<T, BumpPtrAllocator>

Definition at line 228 of file AllocatorList.h.

◆ CacheCostTy

using llvm::CacheCostTy = typedef int64_t

Definition at line 34 of file LoopCacheAnalysis.h.

◆ CapabilityList

using llvm::CapabilityList = typedef SmallVector<SPIRV::Capability::Capability, 8>

Definition at line 211 of file SPIRVBaseInfo.h.

◆ CCAssignFn

typedef bool llvm::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.

It returns 'true' if it failed to handle Val.

Definition at line 156 of file CallingConvLower.h.

◆ CCCustomFn

typedef bool llvm::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.

It must set isCustom if it handles the arg and returns true.

Definition at line 163 of file CallingConvLower.h.

◆ CFGUpdate

Definition at line 52 of file MemorySSAUpdater.h.

◆ CGSCCAnalysisManager

The CGSCC analysis manager.

See the documentation for the AnalysisManager template for detail documentation. This type serves as a convenient way to refer to this construct in the adaptors and proxies used to integrate this into the larger pass manager infrastructure.

Definition at line 122 of file CGSCCPassManager.h.

◆ CGSCCAnalysisManagerFunctionProxy

A proxy from a CGSCCAnalysisManager to a Function.

Definition at line 426 of file CGSCCPassManager.h.

◆ CGSCCAnalysisManagerModuleProxy

A proxy from a CGSCCAnalysisManager to a Module.

Definition at line 167 of file CGSCCPassManager.h.

◆ CGSCCPassManager

The CGSCC pass manager.

See the documentation for the PassManager template for details. It runs a sequence of SCC passes over each SCC that the manager is run over. This type serves as a convenient way to refer to this construct.

Definition at line 142 of file CGSCCPassManager.h.

◆ CHIArgs

Definition at line 152 of file GVNHoist.cpp.

◆ CHIIt

using llvm::CHIIt = typedef SmallVectorImpl<CHIArg>::iterator

Definition at line 151 of file GVNHoist.cpp.

◆ ColorVector

Definition at line 108 of file EHPersonalities.h.

◆ const_gvsummary_iterator

using llvm::const_gvsummary_iterator = typedef GlobalValueSummaryMapTy::const_iterator

Type used for iterating through the global value summary map.

Definition at line 1264 of file ModuleSummaryIndex.h.

◆ const_inst_iterator

Definition at line 124 of file InstIterator.h.

◆ const_inst_range

Definition at line 129 of file InstIterator.h.

◆ const_memoryaccess_def_iterator

Definition at line 137 of file MemorySSA.h.

◆ const_pred_iterator

Definition at line 105 of file CFG.h.

◆ const_pred_range

Definition at line 108 of file CFG.h.

◆ const_succ_iterator

Definition at line 243 of file CFG.h.

◆ const_succ_range

Definition at line 245 of file CFG.h.

◆ ConstMap

using llvm::ConstMap = typedef DenseMap<Value *, Constant *>

Definition at line 98 of file FunctionSpecialization.h.

◆ ConstMemoryAccessPair

Definition at line 1112 of file MemorySSA.h.

◆ ConstOperandBundleDef

Definition at line 1474 of file InstrTypes.h.

◆ ConvergenceVerifier

Definition at line 23 of file ConvergenceVerifier.h.

◆ Cost

using llvm::Cost = typedef InstructionCost

Definition at line 95 of file FunctionSpecialization.h.

◆ CostTblEntry

Definition at line 30 of file CostTable.h.

◆ CreateCmpXchgInstFun

Parameters (see the expansion example below): (the builder, addr, loaded, new_val, ordering, /* OUT ‍/ success, / OUT *‍/ new_loaded)

Definition at line 24 of file AtomicExpandUtils.h.

◆ Cycle

using llvm::Cycle = typedef CycleInfo::CycleT

Definition at line 24 of file CycleInfo.h.

◆ CycleInfo

Definition at line 23 of file CycleInfo.h.

◆ DataLayoutCallbackFuncTy

typedef std::function<std::optional<std::string>(StringRef, StringRef)> llvm::DataLayoutCallbackFuncTy

Definition at line 45 of file BitcodeReader.h.

◆ DataLayoutCallbackTy

typedef llvm::function_ref< std::optional< std::string >(StringRef, StringRef)> llvm::DataLayoutCallbackTy

Definition at line 33 of file Parser.h.

◆ DbgInstPtr

Definition at line 43 of file DIBuilder.h.

◆ DbgRecordIterator

using llvm::DbgRecordIterator = typedef simple_ilist<DbgRecord>::iterator

Definition at line 37 of file ValueMapper.h.

◆ DDGBase

Definition at line 30 of file DDG.h.

◆ DDGDotGraphTraits

Definition at line 89 of file DDGPrinter.h.

◆ DDGEdgeBase

Definition at line 29 of file DDG.h.

◆ DDGInfo

Definition at line 303 of file DDG.h.

◆ DDGNodeBase

Definition at line 28 of file DDG.h.

◆ DefaultThreadPool

Definition at line 257 of file ThreadPool.h.

◆ Desc

Definition at line 23 of file DWARFExpression.cpp.

◆ DiagnosticHandlerFunction

using llvm::DiagnosticHandlerFunction = typedef std::function<void(const DiagnosticInfo &)>

Definition at line 134 of file DiagnosticInfo.h.

◆ DILineInfoTable

using llvm::DILineInfoTable = typedef SmallVector<std::pair<uint64_t, DILineInfo>, 16>

Definition at line 89 of file DIContext.h.

◆ DomTreeBase

template<typename T >
using llvm::DomTreeBase = typedef DominatorTreeBase<T, false>

Definition at line 931 of file GenericDomTree.h.

◆ DomTreeNode

Definition at line 92 of file Dominators.h.

◆ DWARFAddressRangesVector

using llvm::DWARFAddressRangesVector = typedef std::vector<DWARFAddressRange>

DWARFAddressRangesVector - represents a set of absolute address ranges.

Definition at line 88 of file DWARFAddressRange.h.

◆ DWARFLocationExpressionsVector

Represents a set of absolute location expressions.

Definition at line 44 of file DWARFLocationExpression.h.

◆ ElementCountSet

Definition at line 269 of file LoopVectorizationPlanner.h.

◆ EnableIfConvertibleToInputIterator

template<class Iterator >
using llvm::EnableIfConvertibleToInputIterator = typedef std::enable_if_t<std::is_convertible< typename std::iterator_traits<Iterator>::iterator_category, std::input_iterator_tag>::value>

Definition at line 40 of file SmallVector.h.

◆ ExceptionSymbolProvider

typedef MCSymbol * llvm::ExceptionSymbolProvider(AsmPrinter *Asm, const MachineBasicBlock *MBB)

Definition at line 28 of file AsmPrinterHandler.h.

◆ ExtensionList

using llvm::ExtensionList = typedef SmallVector<SPIRV::Extension::Extension, 8>

Definition at line 212 of file SPIRVBaseInfo.h.

◆ fatal_error_handler_t

typedef void(* llvm::fatal_error_handler_t) (void *user_data, const char *reason, bool gen_crash_diag)

An error handler callback.

Definition at line 24 of file ErrorHandling.h.

◆ FileCache

using llvm::FileCache = typedef std::function<Expected<AddStreamFn>( unsigned Task, StringRef Key, const Twine &ModuleName)>

This is the type of a file cache.

To request an item from the cache, pass a unique string as the Key. For hits, the cached file will be added to the link and this function will return AddStreamFn(). For misses, the cache will return a stream callback which must be called at most once to produce content for the stream. The file stream produced by the stream callback will add the file to the link after the stream is written to. ModuleName is the unique module identifier for the bitcode module the cache is being checked for.

Clients generally look like this:

if (AddStreamFn AddStream = Cache(Task, Key, ModuleName)) ProduceContent(AddStream);

Definition at line 57 of file Caching.h.

◆ filter_iterator

Defines filter_iterator to a suitable specialization of filter_iterator_impl, based on the underlying iterator's category.

Definition at line 559 of file STLExtras.h.

◆ FoldingSetNode

Definition at line 402 of file FoldingSet.h.

◆ ForwardIDFCalculator

using llvm::ForwardIDFCalculator = typedef IDFCalculator<false>

Definition at line 55 of file IteratedDominanceFrontier.h.

◆ FuncProbeFactorMap

Definition at line 40 of file SampleProfileProbe.h.

◆ FunctionAnalysisManager

Convenience typedef for the Function analysis manager.

Definition at line 610 of file PassManager.h.

◆ FunctionAnalysisManagerLoopProxy

A proxy from a FunctionAnalysisManager to a Loop.

Definition at line 156 of file LoopAnalysisManager.h.

◆ FunctionAnalysisManagerModuleProxy

Provide the FunctionAnalysisManager to Module proxy.

Definition at line 711 of file PassManager.h.

◆ FunctionCreator

using llvm::FunctionCreator = typedef std::function<void *(const std::string &)>

Definition at line 94 of file ExecutionEngine.h.

◆ FunctionModRefBehavior

Definition at line 274 of file ModRef.h.

◆ FunctionPassManager

Convenience typedef for a pass manager over functions.

Definition at line 288 of file PassManager.h.

◆ FuzzerInitFun

using llvm::FuzzerInitFun = typedef int (*)(int *argc, char ***argv)

Definition at line 45 of file FuzzerCLI.h.

◆ FuzzerTestFun

using llvm::FuzzerTestFun = typedef int (*)(const uint8_t *Data, size_t Size)

Definition at line 44 of file FuzzerCLI.h.

◆ GCMetadataPrinterRegistry

GCMetadataPrinterRegistry - The GC assembly printer registry uses all the defaults from Registry.

Definition at line 35 of file GCMetadataPrinter.h.

◆ GCRegistry

Subclasses of GCStrategy are made available for use during compilation by adding them to the global GCRegistry.

This can done either within the LLVM source tree or via a loadable plugin. An example registeration would be: static GCRegistry::Add<CustomGC> X("custom-name", "my custom supper fancy gc strategy");

Note that to use a custom GCMetadataPrinter, you must also register your GCMetadataPrinter subclass with the GCMetadataPrinterRegistery as well.

Definition at line 142 of file GCStrategy.h.

◆ gep_type_iterator

Definition at line 171 of file GetElementPtrTypeIterator.h.

◆ GetContainedTypeIDTy

Definition at line 49 of file BitcodeReader.h.

◆ GetTypeByIDTy

typedef std::function< Type *(unsigned)> llvm::GetTypeByIDTy

Definition at line 47 of file BitcodeReader.h.

◆ GlobalValueSummaryList

using llvm::GlobalValueSummaryList = typedef std::vector<std::unique_ptr<GlobalValueSummary> >

Definition at line 135 of file ModuleSummaryIndex.h.

◆ GlobalValueSummaryMapTy

Map from global value GUID to corresponding summary structures.

Use a std::map rather than a DenseMap so that pointers to the map's value_type (which are used by ValueInfo) are not invalidated by insertion. Also it will likely incur less overhead, as the value type is not very small and the size of the map is unknown, resulting in inefficiencies due to repeated insertions and resizing.

Definition at line 174 of file ModuleSummaryIndex.h.

◆ GUIDProbeFunctionMap

using llvm::GUIDProbeFunctionMap = typedef std::unordered_map<uint64_t, MCPseudoProbeFuncDesc>

Definition at line 102 of file MCPseudoProbe.h.

◆ gvsummary_iterator

using llvm::gvsummary_iterator = typedef GlobalValueSummaryMapTy::iterator

Definition at line 1265 of file ModuleSummaryIndex.h.

◆ GVSummaryMapTy

Map of global value GUID to its summary, used to identify values defined in a particular module, and provide efficient access to their summary.

Definition at line 1273 of file ModuleSummaryIndex.h.

◆ HoistingPointInfo

using llvm::HoistingPointInfo = typedef std::pair<BasicBlock *, SmallVecInsn>

Definition at line 119 of file GVNHoist.cpp.

◆ HoistingPointList

Definition at line 121 of file GVNHoist.cpp.

◆ HTTPContentProvider

typedef std::function<StringRef(size_t , size_t )> llvm::HTTPContentProvider

An HTTPContentProvider is called by the HTTPServer to obtain chunks of the streaming response body.

The returned chunk should be located at Offset bytes and have Length bytes.

Definition at line 80 of file HTTPServer.h.

◆ HTTPRequestHandler

typedef std::function<void(HTTPServerRequest &)> llvm::HTTPRequestHandler

Definition at line 74 of file HTTPServer.h.

◆ IdxMBBPair

using llvm::IdxMBBPair = typedef std::pair<SlotIndex, MachineBasicBlock *>

Definition at line 295 of file SlotIndexes.h.

◆ ilist

template<class T , class... Options>
using llvm::ilist = typedef iplist<T, Options...>

Definition at line 344 of file ilist.h.

◆ InlineCostFeatures

using llvm::InlineCostFeatures = typedef std::array<int, static_cast<size_t>(InlineCostFeatureIndex::NumberOfFeatures)>

Definition at line 78 of file InlineModelFeatureMaps.h.

◆ InlineFeatures

using llvm::InlineFeatures = typedef std::vector<int64_t>

Definition at line 156 of file InlineModelFeatureMaps.h.

◆ InlineSite

using llvm::InlineSite = typedef std::tuple<uint64_t, uint32_t>

Definition at line 99 of file MCPseudoProbe.h.

◆ InsnRange

using llvm::InsnRange = typedef std::pair<const MachineInstr *, const MachineInstr *>

InsnRange - This is used to track range of instructions with identical lexical scope.

Definition at line 39 of file LexicalScopes.h.

◆ inst_iterator

Definition at line 121 of file InstIterator.h.

◆ inst_range

Definition at line 128 of file InstIterator.h.

◆ InstructionIdMap

using llvm::InstructionIdMap = typedef std::unordered_map<Instruction *, uint32_t>

Definition at line 35 of file SampleProfileProbe.h.

◆ InstructionVFPair

using llvm::InstructionVFPair = typedef std::pair<Instruction *, ElementCount>

Definition at line 1072 of file LoopVectorize.cpp.

◆ InValuesType

using llvm::InValuesType = typedef DenseMap<BasicBlock *, SmallVector<std::pair<VNType, Instruction *>, 2> >

Definition at line 154 of file GVNHoist.cpp.

◆ IRHash

using llvm::IRHash = typedef uint64_t

Definition at line 24 of file StructuralHash.h.

◆ is_detected

template<template< class... > class Op, class... Args>
using llvm::is_detected = typedef typename detail::detector<void, Op, Args...>::value_t

Detects if a given trait holds for some set of arguments 'Args'.

For example, the given trait could be used to detect if a given type has a copy assignment operator: template<class T> using has_copy_assign_t = decltype(std::declval<T&>() = std::declval<const T&>()); bool fooHasCopyAssign = is_detected<has_copy_assign_t, FooClass>::value;

Definition at line 79 of file STLExtras.h.

◆ is_one_of

template<typename T , typename... Ts>
using llvm::is_one_of = typedef 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.

Definition at line 129 of file STLExtras.h.

◆ JITTargetAddress

Represents an address in the target process's address space.

Definition at line 42 of file JITSymbol.h.

◆ LargestSDNode

A representation of the largest SDNode, for use in sizeof().

This needs to be a union because the largest node differs on 32 bit systems with 4 and 8 byte pointer alignment, respectively.

Definition at line 3103 of file SelectionDAGNodes.h.

◆ LegalityPredicate

using llvm::LegalityPredicate = typedef std::function<bool (const LegalityQuery &)>

Definition at line 200 of file LegalizerInfo.h.

◆ LegalizeMutation

using llvm::LegalizeMutation = typedef std::function<std::pair<unsigned, LLT>(const LegalityQuery &)>

Definition at line 201 of file LegalizerInfo.h.

◆ LiveVirtRegBitSet

Definition at line 35 of file LiveIntervalUnion.h.

◆ LoopAnalysisManager

The loop analysis manager.

See the documentation for the AnalysisManager template for detail documentation. This typedef serves as a convenient way to refer to this construct in the adaptors and proxies used to integrate this into the larger pass manager infrastructure.

Definition at line 75 of file LoopAnalysisManager.h.

◆ LoopAnalysisManagerFunctionProxy

A proxy from a LoopAnalysisManager to a Function.

Definition at line 79 of file LoopAnalysisManager.h.

◆ LoopPassManager

The Loop pass manager.

See the documentation for the PassManager template for details. It runs a sequence of Loop passes over each Loop that the manager is run over. This typedef serves as a convenient way to refer to this construct.

Definition at line 214 of file LoopPassManager.h.

◆ LoopToScevMapT

Definition at line 924 of file ScalarEvolutionExpressions.h.

◆ LoopVectorTy

Definition at line 35 of file LoopCacheAnalysis.h.

◆ MachineBasicBlockComparator

Definition at line 22 of file BasicBlockSectionUtils.h.

◆ MachineConvergenceVerifier

Definition at line 23 of file MachineConvergenceVerifier.h.

◆ MachineCycle

Definition at line 24 of file MachineCycleAnalysis.h.

◆ MachineCycleInfo

Definition at line 23 of file MachineCycleAnalysis.h.

◆ MachineDomTree

Definition at line 44 of file MachineDominators.h.

◆ MachineDomTreeNode

Definition at line 26 of file LiveIntervalCalc.h.

◆ MachineFunctionAnalysisManager

Definition at line 37 of file MachinePassManager.h.

◆ MachineFunctionAnalysisManagerModuleProxy

Definition at line 102 of file MachinePassManager.h.

◆ MachineFunctionPassManager

Convenience typedef for a pass manager over functions.

Definition at line 245 of file MachinePassManager.h.

◆ MachineSSAContext

Definition at line 44 of file MachineSSAContext.h.

◆ MachineUniformityInfo

Definition at line 25 of file MachineUniformityAnalysis.h.

◆ MacroFusionPredTy

Check if the instr pair, FirstMI and SecondMI, should be fused together.

Given SecondMI, when FirstMI is unspecified, then check if SecondMI may be part of a fused pair at all.

Definition at line 32 of file MacroFusion.h.

◆ MBBOrBasicBlock

Definition at line 38 of file WinEHFuncInfo.h.

◆ MBFIDOTGraphTraitsBase

Definition at line 114 of file MachineBlockFrequencyInfo.cpp.

◆ MCAsmMacroParameters

Definition at line 141 of file MCAsmMacro.h.

◆ MCLOHArgs

Definition at line 183 of file MCLinkerOptimizationHint.h.

◆ MCLOHDirectives

Definition at line 184 of file MCLinkerOptimizationHint.h.

◆ MCPhysReg

using llvm::MCPhysReg = typedef uint16_t

An unsigned integer type large enough to represent all physical registers, but not necessarily virtual registers.

Definition at line 21 of file MCRegister.h.

◆ MCPseduoProbeFrameLocation

Definition at line 177 of file MCPseudoProbe.h.

◆ MCPseudoProbeInlineStack

Definition at line 100 of file MCPseudoProbe.h.

◆ MCRegUnit

using llvm::MCRegUnit = typedef unsigned

Register units are used to compute register aliasing.

Every register has at least one register unit, but it can have more. Two registers overlap if and only if they have a common register unit.

A target with a complicated sub-register structure will typically have many fewer register units than actual registers. MCRI::getNumRegUnits() returns the number of register units in the target.

Definition at line 30 of file MCRegister.h.

◆ MCSectionSubPair

using llvm::MCSectionSubPair = typedef std::pair<MCSection *, const MCExpr *>

Definition at line 66 of file MCStreamer.h.

◆ MDTypeCallbackTy

Definition at line 57 of file BitcodeReader.h.

◆ memoryaccess_def_iterator

Definition at line 136 of file MemorySSA.h.

◆ MemoryAccessPair

using llvm::MemoryAccessPair = typedef std::pair<MemoryAccess *, MemoryLocation>

Definition at line 1111 of file MemorySSA.h.

◆ MemoryEffects

Summary of how a function affects memory in the program.

Loads from constant globals are not considered memory accesses for this interface. Also, functions may freely modify stack space local to their invocation without having to report it through these interfaces.

Definition at line 268 of file ModRef.h.

◆ MemProfFrameHashTable

Definition at line 561 of file InstrProfReader.h.

◆ MemProfRecordHashTable

Definition at line 559 of file InstrProfReader.h.

◆ ModuleAnalysisManager

Convenience typedef for the Module analysis manager.

Definition at line 605 of file PassManager.h.

◆ ModuleAnalysisManagerCGSCCProxy

A proxy from a ModuleAnalysisManager to an SCC.

Definition at line 213 of file CGSCCPassManager.h.

◆ ModuleAnalysisManagerFunctionProxy

Provide the ModuleAnalysisManager to Function proxy.

Definition at line 865 of file PassManager.h.

◆ ModuleAnalysisManagerMachineFunctionProxy

Provide the ModuleAnalysisManager to Function proxy.

Definition at line 115 of file MachinePassManager.h.

◆ ModuleHash

using llvm::ModuleHash = typedef std::array<uint32_t, 5>

160 bits SHA1

Definition at line 1261 of file ModuleSummaryIndex.h.

◆ ModulePassManager

Convenience typedef for a pass manager over modules.

Definition at line 283 of file PassManager.h.

◆ ModulePathStringTableTy

String table to hold/own module path strings, as well as a hash of the module.

The StringMap makes a copy of and owns inserted strings.

Definition at line 1269 of file ModuleSummaryIndex.h.

◆ MostAlignedSDNode

The SDNode class with the greatest alignment requirement.

Definition at line 3109 of file SelectionDAGNodes.h.

◆ Name2RegBankMap

Definition at line 53 of file MIParser.h.

◆ Name2RegClassMap

Definition at line 52 of file MIParser.h.

◆ NewLoopsMap

using llvm::NewLoopsMap = typedef SmallDenseMap<const Loop *, Loop *, 4>

Definition at line 38 of file UnrollLoop.h.

◆ NfaPath

using llvm::NfaPath = typedef SmallVector<uint64_t, 4>

Definition at line 39 of file Automaton.h.

◆ NormalizePredTy

Definition at line 50 of file ScalarEvolutionNormalization.h.

◆ OffsetsStringPool

Definition at line 74 of file NonRelocatableStringpool.h.

◆ OnDiskHashTableImplV3

Definition at line 556 of file InstrProfReader.h.

◆ Op

Definition at line 22 of file DWARFExpression.cpp.

◆ OperandBuildSteps

using llvm::OperandBuildSteps = typedef SmallVector<std::function<void(MachineInstrBuilder &)>, 4>

Definition at line 84 of file CombinerHelper.h.

◆ OperandBundleDef

Definition at line 33 of file AutoUpgrade.h.

◆ OperandVector

using llvm::OperandVector = typedef SmallVectorImpl<std::unique_ptr<MCParsedAsmOperand> >

Definition at line 33 of file MCTargetAsmParser.h.

◆ OutValuesType

Definition at line 153 of file GVNHoist.cpp.

◆ ParamLoadedValue

using llvm::ParamLoadedValue = typedef std::pair<MachineOperand, DIExpression*>

Definition at line 69 of file TargetInstrInfo.h.

◆ ParamSet

Collection used for storing debug call site parameters.

Definition at line 332 of file DwarfDebug.h.

◆ PBQPRAGraph

Definition at line 33 of file PBQPRAConstraint.h.

◆ PhiToDefMap

Definition at line 51 of file MemorySSAUpdater.h.

◆ PointerTy

using llvm::PointerTy = typedef void *

Definition at line 21 of file GenericValue.h.

◆ PointTypeIsValid

template<typename T >
using llvm::PointTypeIsValid = typedef std::bool_constant<std::is_fundamental<T>::value>

Definition at line 240 of file IntervalTree.h.

◆ PostDomTreeBase

template<typename T >
using llvm::PostDomTreeBase = typedef DominatorTreeBase<T, true>

Definition at line 934 of file GenericDomTree.h.

◆ PostIncLoopSet

Definition at line 48 of file ScalarEvolutionNormalization.h.

◆ PotentialConstantIntValuesState

Definition at line 5225 of file Attributor.h.

◆ PotentialLLVMValuesState

Definition at line 5226 of file Attributor.h.

◆ pred_iterator

Definition at line 104 of file CFG.h.

◆ pred_range

Definition at line 107 of file CFG.h.

◆ ProbeFactorMap

using llvm::ProbeFactorMap = typedef std::unordered_map<std::pair<uint64_t, uint64_t>, float, pair_hash<uint64_t, uint64_t> >

Definition at line 38 of file SampleProfileProbe.h.

◆ ProfileCount

Definition at line 49 of file SampleProfileLoaderBaseImpl.h.

◆ RandomEngine

using llvm::RandomEngine = typedef std::mt19937

Definition at line 35 of file RandomIRBuilder.h.

◆ raw_pointer_iterator

template<typename WrappedIteratorT , typename T1 = std::remove_reference_t<decltype( **std::declval<WrappedIteratorT>())>, typename T2 = std::add_pointer_t<T1>>
using llvm::raw_pointer_iterator = typedef pointer_iterator<pointee_iterator<WrappedIteratorT, T1>, T2>

Definition at line 373 of file iterator.h.

◆ RawInstrProfReader32

Definition at line 469 of file InstrProfReader.h.

◆ RawInstrProfReader64

Definition at line 470 of file InstrProfReader.h.

◆ ReferenceGroupsTy

Definition at line 172 of file LoopCacheAnalysis.h.

◆ ReferenceGroupTy

using llvm::ReferenceGroupTy = typedef SmallVector<std::unique_ptr<IndexedReference>, 8>

A reference group represents a set of memory references that exhibit temporal or spacial reuse.

Two references belong to the same reference group with respect to a inner loop L iff:

  1. they have a loop independent dependency, or
  2. they have a loop carried dependence with a small dependence distance (e.g. less than 2) carried by the inner loop, or
  3. they refer to the same array, and the subscript in their innermost dimension is less than or equal to 'd' (where 'd' is less than the cache line size)

Intuitively a reference group represents memory references that access the same cache line. Conditions 1,2 above account for temporal reuse, while contition 3 accounts for spacial reuse.

Definition at line 171 of file LoopCacheAnalysis.h.

◆ RegClassFilterFunc

Definition at line 20 of file RegAllocCommon.h.

◆ RegClassOrRegBank

Convenient type to represent either a register class or a register bank.

Definition at line 45 of file MachineRegisterInfo.h.

◆ RegUnit2SUnitsMap

Use a SparseMultiSet to track physical registers.

Storage is only allocated once for the pass. It can be cleared in constant time and reused without any frees.

Definition at line 91 of file ScheduleDAGInstrs.h.

◆ RelocAddrMap

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.

This adds a bit of complexity to the dwarf parsing/extraction at the benefit of not allocating memory for the entire size of the debug info sections.

Definition at line 35 of file DWARFRelocMap.h.

◆ remove_cvref_t

template<typename T >
using llvm::remove_cvref_t = typedef typename llvm::remove_cvref<T>::type

Definition at line 36 of file STLForwardCompat.h.

◆ RequireAnalysisLoopPass

template<typename AnalysisT >
using llvm::RequireAnalysisLoopPass = typedef RequireAnalysisPass<AnalysisT, Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater &>

An alias template to easily name a require analysis loop pass.

Definition at line 240 of file LoopPassManager.h.

◆ RetainedKnowledgeKey

using llvm::RetainedKnowledgeKey = typedef 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.

If the Attribute is not on any value, the Value is nullptr.

Definition at line 69 of file AssumeBundleQueries.h.

◆ RetainedKnowledgeMap

Definition at line 82 of file AssumeBundleQueries.h.

◆ ReverseIDFCalculator

Definition at line 56 of file IteratedDominanceFrontier.h.

◆ RTDyldSymbolTable

Definition at line 236 of file RuntimeDyldImpl.h.

◆ RuntimePointerCheck

A memcheck which made up of a pair of grouped pointers.

Definition at line 383 of file LoopAccessAnalysis.h.

◆ ScopedCommonHandle

Definition at line 184 of file WindowsSupport.h.

◆ ScopedCryptContext

Definition at line 186 of file WindowsSupport.h.

◆ ScopedFileHandle

Definition at line 185 of file WindowsSupport.h.

◆ ScopedFindHandle

Definition at line 188 of file WindowsSupport.h.

◆ ScopedJobHandle

Definition at line 189 of file WindowsSupport.h.

◆ ScopedRegHandle

Definition at line 187 of file WindowsSupport.h.

◆ SectionAddrMap

Definition at line 31 of file MCExpr.h.

◆ SectionSymbolsTy

using llvm::SectionSymbolsTy = typedef std::vector<SymbolInfoTy>

Definition at line 73 of file MCDisassembler.h.

◆ SmallInstListTy

Definition at line 545 of file Utils.h.

◆ SmallVecImplInsn

Definition at line 115 of file GVNHoist.cpp.

◆ SmallVecInsn

Definition at line 114 of file GVNHoist.cpp.

◆ SmallVectorSizeType

template<class T >
using llvm::SmallVectorSizeType = typedef std::conditional_t<sizeof(T) < 4 && sizeof(void *) >= 8, uint64_t, uint32_t>

Definition at line 118 of file SmallVector.h.

◆ SmallVirtRegSet

using llvm::SmallVirtRegSet = typedef SmallSet<Register, 16>

Definition at line 31 of file RegAllocEvictionAdvisor.h.

◆ SMTExprRef

using llvm::SMTExprRef = typedef const SMTExpr *

Shared pointer for SMTExprs, used by SMTSolver API.

Definition at line 129 of file SMTAPI.h.

◆ SMTSolverRef

using llvm::SMTSolverRef = typedef std::shared_ptr<SMTSolver>

Shared pointer for SMTSolvers.

Definition at line 440 of file SMTAPI.h.

◆ SMTSortRef

using llvm::SMTSortRef = typedef const SMTSort *

Shared pointer for SMTSorts, used by SMTSolver API.

Definition at line 97 of file SMTAPI.h.

◆ SpecMap

using llvm::SpecMap = typedef DenseMap<Function *, std::pair<unsigned, unsigned> >

Definition at line 92 of file FunctionSpecialization.h.

◆ SPIRVType

Definition at line 27 of file SPIRVGlobalRegistry.h.

◆ SSAContext

Definition at line 49 of file FunctionLoweringInfo.h.

◆ stable_hash

using llvm::stable_hash = typedef uint64_t

An opaque object representing a stable hash code.

It can be serialized, deserialized, and is stable across processes and executions.

Definition at line 24 of file StableHashing.h.

◆ Statistic

using llvm::Statistic = typedef NoopStatistic

Definition at line 162 of file Statistic.h.

◆ succ_iterator

Definition at line 242 of file CFG.h.

◆ succ_range

Definition at line 244 of file CFG.h.

◆ SummaryEntryVector

using llvm::SummaryEntryVector = typedef std::vector<ProfileSummaryEntry>

Definition at line 43 of file ProfileSummary.h.

◆ TableGenMainFn

using llvm::TableGenMainFn = typedef bool (raw_ostream &OS, RecordKeeper &Records)

Perform the action using Records, and write output to OS.

Returns true on error, false otherwise.

Definition at line 25 of file Main.h.

◆ TagNameMap

Definition at line 23 of file ELFAttributes.h.

◆ TargetFlagsType

typedef uint8_t llvm::TargetFlagsType

Holds target-specific properties for a symbol.

Definition at line 34 of file RuntimeDyldChecker.h.

◆ TrackingMDNodeRef

Definition at line 141 of file TrackingMDRef.h.

◆ TrackingValueAsMetadataRef

Definition at line 142 of file TrackingMDRef.h.

◆ TTI

◆ TUVectorTy

Definition at line 384 of file AccelTable.h.

◆ TypeAtIndex

template<size_t I, typename... Ts>
using llvm::TypeAtIndex = typedef std::tuple_element_t<I, std::tuple<Ts...> >

Find the type at a given index in a list of types.

TypeAtIndex<I, Ts...> is the type at index I in Ts.

Definition at line 179 of file STLExtras.h.

◆ TypeConversionCostTblEntry

Definition at line 61 of file CostTable.h.

◆ TypeGetter

using llvm::TypeGetter = typedef std::function<Type *(LLVMContext &)>

Definition at line 60 of file IRMutator.h.

◆ TypeIdCompatibleVtableInfo

List of vtable definitions decorated by a particular type identifier, and their corresponding offsets in that type identifier's metadata.

Note that each type identifier may be compatible with multiple vtables, due to inheritance, which is why this is a vector.

Definition at line 1301 of file ModuleSummaryIndex.h.

◆ TypeIdSummaryMapTy

using llvm::TypeIdSummaryMapTy = typedef std::multimap<GlobalValue::GUID, std::pair<std::string, TypeIdSummary> >

Map of a type GUID to type id string and summary (multimap used in case of GUID conflicts).

Definition at line 1277 of file ModuleSummaryIndex.h.

◆ uint24_t

using llvm::uint24_t = typedef Uint24

Definition at line 33 of file DataExtractor.h.

◆ UnderlyingObjectsVector

Definition at line 118 of file ScheduleDAGInstrs.h.

◆ UniformityInfo

Definition at line 23 of file UniformityAnalysis.h.

◆ unique_value

using llvm::unique_value = typedef std::unique_ptr<Value, ValueDeleter>

Use this instead of std::unique_ptr<Value> or std::unique_ptr<Instruction>.

Those don't work because Value and Instruction's destructors are protected, aren't virtual, and won't destroy the complete object.

Definition at line 875 of file Value.h.

◆ UniquingStringPool

Definition at line 73 of file NonRelocatableStringpool.h.

◆ UseListOrderStack

using llvm::UseListOrderStack = typedef std::vector<UseListOrder>

Definition at line 39 of file UseListOrder.h.

◆ UTF16

typedef unsigned short llvm::UTF16

Definition at line 129 of file ConvertUTF.h.

◆ UTF32

typedef unsigned int llvm::UTF32

Definition at line 128 of file ConvertUTF.h.

◆ UTF8

Definition at line 130 of file ConvertUTF.h.

◆ Value2VPValueTy

Definition at line 196 of file VPlanValue.h.

◆ ValueName

using llvm::ValueName = typedef StringMapEntry<Value *>

Definition at line 55 of file Value.h.

◆ ValuePlaneTy

typedef std::vector<GenericValue> llvm::ValuePlaneTy

Definition at line 54 of file Interpreter.h.

◆ ValueToSCEVMapTy

Definition at line 898 of file ScalarEvolutionExpressions.h.

◆ ValueToValueMap

Definition at line 897 of file ScalarEvolutionExpressions.h.

◆ ValueToValueMapTy

Definition at line 50 of file MemorySSAUpdater.h.

◆ ValueType

Definition at line 108 of file ScheduleDAGInstrs.h.

◆ ValueTypeCallbackTy

Definition at line 53 of file BitcodeReader.h.

◆ ValueTypeFromRangeType

template<typename RangeType >
using llvm::ValueTypeFromRangeType = typedef std::remove_const_t<std::remove_reference_t<decltype(*std::begin( std::declval<RangeType &>()))> >

Definition at line 1304 of file SmallVector.h.

◆ ValueTypeIsValid

template<typename T >
using llvm::ValueTypeIsValid = typedef std::bool_constant<std::is_fundamental<T>::value || std::is_pointer<T>::value>

Definition at line 243 of file IntervalTree.h.

◆ VNtoInsns

Definition at line 126 of file GVNHoist.cpp.

◆ VNType

using llvm::VNType = typedef std::pair<unsigned, uintptr_t>

Definition at line 124 of file GVNHoist.cpp.

◆ VPDominatorTree

Template specialization of the standard LLVM dominator tree utility for VPBlockBases.

Definition at line 38 of file VPlanDominatorTree.h.

◆ VPDomTreeNode

Definition at line 40 of file VPlanDominatorTree.h.

◆ VPlanPtr

using llvm::VPlanPtr = typedef std::unique_ptr<VPlan>

Definition at line 134 of file VPlan.h.

◆ VPValue2ValueTy

Definition at line 197 of file VPlanValue.h.

◆ VReg2SUnitMap

Use SparseSet as a SparseMap by relying on the fact that it never compares ValueT's, only unsigned keys.

This allows the set to be cleared between scheduling regions in constant time as long as ValueT does not require a destructor.

Definition at line 98 of file ScheduleDAGInstrs.h.

◆ VReg2SUnitMultiMap

Track local uses of virtual registers.

These uses are gathered by the DAG builder and may be consulted by the scheduler to avoid iterating an entire vreg use list.

Definition at line 103 of file ScheduleDAGInstrs.h.

◆ VReg2SUnitOperIdxMultiMap

Definition at line 105 of file ScheduleDAGInstrs.h.

◆ VTableFuncList

using llvm::VTableFuncList = typedef std::vector<VirtFuncOffset>

List of functions referenced by a particular vtable definition.

Definition at line 1101 of file ModuleSummaryIndex.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
GICXXPred_Invalid 
GICXXCustomAction_Invalid 

Definition at line 52 of file GIMatchTableExecutor.h.

◆ anonymous enum

anonymous enum

The MatchTable is encoded as an array of bytes.

Thus, opcodes are expected to be <255.

Operands can be variable-sized, their size is always after their name in the docs, e.g. "Foo(4)" means that "Foo" takes 4 entries in the table, so 4 bytes. "Foo()"

As a general rule of thumb:

  • Instruction & Operand IDs are ULEB128
  • LLT IDs are 1 byte
  • Predicates and target opcodes, register and register class IDs are 2 bytes.
  • Indexes into the table are 4 bytes.
  • Inline constants are 8 bytes

Design notes:

  • Inst/Op IDs have to be LEB128 because some targets generate extremely long patterns which need more than 255 temporaries. We could just use 2 bytes everytime, but then some targets like X86/AMDGPU that have no need for it will pay the price all the time.
Enumerator
GIM_Try 

Begin a try-block to attempt a match and jump to OnFail if it is unsuccessful.

  • OnFail(4) - The MatchTable entry at which to resume if the match fails.

FIXME: This ought to take an argument indicating the number of try-blocks to exit on failure. It's usually one but the last match attempt of a block will need more. The (implemented) alternative is to tack a GIM_Reject on the end of each try-block which is simpler but requires an extra opcode and iteration in the interpreter on each failed match.

GIM_SwitchOpcode 

Switch over the opcode on the specified instruction.

  • InsnID(ULEB128) - Instruction ID
  • LowerBound(2) - numerically minimum opcode supported
  • UpperBound(2) - numerically maximum + 1 opcode supported
  • Default(4) - failure jump target
  • JumpTable(4)... - (UpperBound - LowerBound) (at least 2) jump targets
GIM_SwitchType 

Switch over the LLT on the specified instruction operand.

  • InsnID(ULEB128) - Instruction ID
  • OpIdx(ULEB128) - Operand index
  • LowerBound(2) - numerically minimum Type ID supported
  • UpperBound(2) - numerically maximum + 1 Type ID supported
  • Default(4) - failure jump target
  • JumpTable(4)... - (UpperBound - LowerBound) (at least 2) jump targets
GIM_RecordInsn 

Record the specified instruction.

The IgnoreCopies variant ignores COPY instructions.

  • NewInsnID(ULEB128) - Instruction ID to define
  • InsnID(ULEB128) - Instruction ID
  • OpIdx(ULEB128) - Operand index
GIM_RecordInsnIgnoreCopies 
GIM_CheckFeatures 

Check the feature bits Feature(2) - Expected features.

GIM_CheckOpcode 

Check the opcode on the specified instruction.

GIM_CheckOpcodeIsEither 

Check the opcode on the specified instruction, checking 2 acceptable alternatives.

  • InsnID(ULEB128) - Instruction ID
  • Opc(2) - Expected opcode
  • Opc(2) - Alternative expected opcode
GIM_CheckNumOperands 

Check the instruction has the right number of operands.

GIM_CheckI64ImmPredicate 

Check an immediate predicate on the specified instruction.

  • InsnID(ULEB128) - Instruction ID
  • Pred(2) - The predicate to test
GIM_CheckAPIntImmPredicate 

Check an immediate predicate on the specified instruction via an APInt.

  • InsnID(ULEB128) - Instruction ID
  • Pred(2) - The predicate to test
GIM_CheckAPFloatImmPredicate 

Check a floating point immediate predicate on the specified instruction.

  • InsnID(ULEB128) - Instruction ID
  • Pred(2) - The predicate to test
GIM_CheckImmOperandPredicate 

Check an immediate predicate on the specified instruction.

  • InsnID(ULEB128) - Instruction ID
  • OpIdx(ULEB128) - Operand index
  • Pred(2) - The predicate to test
GIM_CheckAtomicOrdering 

Check a memory operation has the specified atomic ordering.

  • InsnID(ULEB128) - Instruction ID
  • Ordering(ULEB128) - The AtomicOrdering value
GIM_CheckAtomicOrderingOrStrongerThan 
GIM_CheckAtomicOrderingWeakerThan 
GIM_CheckMemorySizeEqualTo 

Check the size of the memory access for the given machine memory operand.

  • InsnID(ULEB128) - Instruction ID
  • MMOIdx(ULEB128) - MMO index
  • Size(4) - The size in bytes of the memory access
GIM_CheckMemoryAddressSpace 

Check the address space of the memory access for the given machine memory operand.

  • InsnID(ULEB128) - Instruction ID
  • MMOIdx(ULEB128) - MMO index
  • NumAddrSpace(ULEB128) - Number of valid address spaces
  • AddrSpaceN(ULEB128) - An allowed space of the memory access
  • AddrSpaceN+1 ...
GIM_CheckMemoryAlignment 

Check the minimum alignment of the memory access for the given machine memory operand.

  • InsnID(ULEB128) - Instruction ID
  • MMOIdx(ULEB128) - MMO index
  • MinAlign(ULEB128) - Minimum acceptable alignment
GIM_CheckMemorySizeEqualToLLT 

Check the size of the memory access for the given machine memory operand against the size of an operand.

  • InsnID(ULEB128) - Instruction ID
  • MMOIdx(ULEB128) - MMO index
  • OpIdx(ULEB128) - The operand index to compare the MMO against
GIM_CheckMemorySizeLessThanLLT 
GIM_CheckMemorySizeGreaterThanLLT 
GIM_CheckIsBuildVectorAllOnes 

Check if this is a vector that can be treated as a vector splat constant.

This is valid for both G_BUILD_VECTOR as well as G_BUILD_VECTOR_TRUNC. For AllOnes refers to individual bits, so a -1 element.

GIM_CheckIsBuildVectorAllZeros 
GIM_CheckSimplePredicate 

Check a trivial predicate which takes no arguments.

This can be used by executors to implement custom flags that don't fit in target features.

  • Pred(2) - Predicate ID to check.
GIM_CheckCxxInsnPredicate 

Check a generic C++ instruction predicate.

  • InsnID(ULEB128) - Instruction ID
  • PredicateID(2) - The ID of the predicate function to call
GIM_CheckHasNoUse 

Check if there's no use of the first result.

GIM_CheckType 

Check the type for the specified operand.

GIM_CheckPointerToAny 

Check the type of a pointer to any address space.

  • InsnID(ULEB128) - Instruction ID
  • OpIdx(ULEB128) - Operand index
  • SizeInBits(ULEB128) - The size of the pointer value in bits.
GIM_CheckRegBankForClass 

Check the register bank for the specified operand.

  • InsnID(ULEB128) - Instruction ID
  • OpIdx(ULEB128) - Operand index
  • RC(2) - Expected register bank (specified as a register class)
GIM_CheckComplexPattern 

Check the operand matches a complex predicate.

  • InsnID(ULEB128) - Instruction ID
  • OpIdx(ULEB128) - Operand index
  • RendererID(2) - The renderer to hold the result
  • Pred(2) - Complex predicate ID
GIM_CheckConstantInt 

Check the operand is a specific integer.

GIM_CheckConstantInt8 

Check the operand is a specific 8-bit signed integer.

GIM_CheckLiteralInt 

Check the operand is a specific literal integer (i.e.

MO.isImm() or MO.isCImm() is true).

GIM_CheckIntrinsicID 

Check the operand is a specific intrinsic ID.

GIM_CheckCmpPredicate 

Check the operand is a specific predicate.

GIM_CheckIsMBB 

Check the specified operand is an MBB.

  • InsnID(ULEB128) - Instruction ID
  • OpIdx(ULEB128) - Operand index
GIM_CheckIsImm 

Check the specified operand is an Imm.

  • InsnID(ULEB128) - Instruction ID
  • OpIdx(ULEB128) - Operand index
GIM_CheckIsSafeToFold 

Check if the specified operand is safe to fold into the current instruction.

GIM_CheckIsSameOperand 

Check the specified operands are identical.

The IgnoreCopies variant looks through COPY instructions before comparing the operands.

  • InsnID(ULEB128) - Instruction ID
  • OpIdx(ULEB128) - Operand index
  • OtherInsnID(ULEB128) - Other instruction ID
  • OtherOpIdx(ULEB128) - Other operand index
GIM_CheckIsSameOperandIgnoreCopies 
GIM_CheckCanReplaceReg 

Check we can replace all uses of a register with another.

  • OldInsnID(ULEB128)
  • OldOpIdx(ULEB128)
  • NewInsnID(ULEB128)
  • NewOpIdx(ULEB128)
GIM_MIFlags 

Check that a matched instruction has, or doesn't have a MIFlag.

  • InsnID(ULEB128) - Instruction to check.
  • Flags(4) - (can be one or more flags OR'd together)
GIM_MIFlagsNot 
GIM_RecordNamedOperand 

Predicates with 'let PredicateCodeUsesOperands = 1' need to examine some named operands that will be recorded in RecordedOperands.

Names of these operands are referenced in predicate argument list. Emitter determines StoreIdx(corresponds to the order in which names appear in argument list).

  • InsnID(ULEB128) - Instruction ID
  • OpIdx(ULEB128) - Operand index
  • StoreIdx(ULEB128) - Store location in RecordedOperands.
GIM_RecordRegType 

Records an operand's register type into the set of temporary types.

  • InsnID(ULEB128) - Instruction ID
  • OpIdx(ULEB128) - Operand index
  • TempTypeIdx(1) - Temp Type Index, always negative.
GIM_Reject 

Fail the current try-block, or completely fail to match if there is no current try-block.

GIR_MutateOpcode 

Mutate an instruction.

  • NewInsnID(ULEB128) - Instruction ID to define
  • OldInsnID(ULEB128) - Instruction ID to mutate
  • NewOpcode(2) - The new opcode to use
GIR_BuildMI 

Build a new instruction.

  • InsnID(ULEB128) - Instruction ID to define
  • Opcode(2) - The new opcode to use
GIR_BuildConstant 

Builds a constant and stores its result in a TempReg.

  • TempRegID(ULEB128) - Temp Register to define.
  • Imm(8) - The immediate to add
GIR_Copy 

Copy an operand to the specified instruction.

  • NewInsnID(ULEB128) - Instruction ID to modify
  • OldInsnID(ULEB128) - Instruction ID to copy from
  • OpIdx(ULEB128) - The operand to copy
GIR_CopyOrAddZeroReg 

Copy an operand to the specified instruction or add a zero register if the operand is a zero immediate.

  • NewInsnID(ULEB128) - Instruction ID to modify
  • OldInsnID(ULEB128) - Instruction ID to copy from
  • OpIdx(ULEB128) - The operand to copy
  • ZeroReg(2) - The zero register to use
GIR_CopySubReg 

Copy an operand to the specified instruction.

  • NewInsnID(ULEB128) - Instruction ID to modify
  • OldInsnID(ULEB128) - Instruction ID to copy from
  • OpIdx(ULEB128) - The operand to copy
  • SubRegIdx(2) - The subregister to copy
GIR_AddImplicitDef 

Add an implicit register def to the specified instruction.

  • InsnID(ULEB128) - Instruction ID to modify
  • RegNum(2) - The register to add
  • Flags(2) - Register Flags
GIR_AddImplicitUse 

Add an implicit register use to the specified instruction.

  • InsnID(ULEB128) - Instruction ID to modify
  • RegNum(2) - The register to add
GIR_AddRegister 

Add an register to the specified instruction.

  • InsnID(ULEB128) - Instruction ID to modify
  • RegNum(2) - The register to add
  • Flags(2) - Register Flags
GIR_AddIntrinsicID 

Adds an intrinsic ID to the specified instruction.

GIR_SetImplicitDefDead 

Marks the implicit def of a register as dead.

  • InsnID(ULEB128) - Instruction ID to modify
  • OpIdx(ULEB128) - The implicit def operand index

OpIdx starts at 0 for the first implicit def.

GIR_SetMIFlags 

Set or unset a MIFlag on an instruction.

  • InsnID(ULEB128) - Instruction to modify.
  • Flags(4) - (can be one or more flags OR'd together)
GIR_UnsetMIFlags 
GIR_CopyMIFlags 

Copy the MIFlags of a matched instruction into an output instruction.

The flags are OR'd together.

  • InsnID(ULEB128) - Instruction to modify.
  • OldInsnID(ULEB128) - Matched instruction to copy flags from.
GIR_AddTempRegister 

Add a temporary register to the specified instruction.

  • InsnID(ULEB128) - Instruction ID to modify
  • TempRegID(ULEB128) - The temporary register ID to add
  • TempRegFlags(2) - The register flags to set
GIR_AddSimpleTempRegister 

Add a temporary register to the specified instruction without setting any flags.

  • InsnID(ULEB128) - Instruction ID to modify
  • TempRegID(ULEB128) - The temporary register ID to add
GIR_AddTempSubRegister 

Add a temporary register to the specified instruction.

  • InsnID(ULEB128) - Instruction ID to modify
  • TempRegID(ULEB128) - The temporary register ID to add
  • TempRegFlags(2) - The register flags to set
  • SubRegIndex(2) - The subregister index to set
GIR_AddImm 

Add an immediate to the specified instruction.

  • InsnID(ULEB128) - Instruction ID to modify
  • Imm(8) - The immediate to add
GIR_AddImm8 

Add signed 8 bit immediate to the specified instruction.

  • InsnID(ULEB128) - Instruction ID to modify
  • Imm(1) - The immediate to add
GIR_AddCImm 

Add an CImm to the specified instruction.

  • InsnID(ULEB128) - Instruction ID to modify
  • Ty(1) - Type of the constant immediate.
  • Imm(8) - The immediate to add
GIR_ComplexRenderer 

Render complex operands to the specified instruction.

  • InsnID(ULEB128) - Instruction ID to modify
  • RendererID(2) - The renderer to call
GIR_ComplexSubOperandRenderer 

Render sub-operands of complex operands to the specified instruction.

  • InsnID(ULEB128) - Instruction ID to modify
  • RendererID(2) - The renderer to call
  • RenderOpID(ULEB128) - The suboperand to render.
GIR_ComplexSubOperandSubRegRenderer 

Render subregisters of suboperands of complex operands to the specified instruction.

  • InsnID(ULEB128) - Instruction ID to modify
  • RendererID(2) - The renderer to call
  • RenderOpID(ULEB128) - The suboperand to render
  • SubRegIdx(2) - The subregister to extract
GIR_CustomRenderer 

Render operands to the specified instruction using a custom function.

  • InsnID(ULEB128) - Instruction ID to modify
  • OldInsnID(ULEB128) - Instruction ID to get the matched operand from
  • RendererFnID(2) - Custom renderer function to call
GIR_CustomAction 

Calls a C++ function to perform an action when a match is complete.

The MatcherState is passed to the function to allow it to modify instructions. This is less constrained than a custom renderer and can update instructions in the state.

  • FnID(2) - The function to call. TODO: Remove this at some point when combiners aren't reliant on it. It's a bit of a hack.
GIR_CustomOperandRenderer 

Render operands to the specified instruction using a custom function, reading from a specific operand.

  • InsnID(ULEB128) - Instruction ID to modify
  • OldInsnID(ULEB128) - Instruction ID to get the matched operand from
  • OpIdx(ULEB128) - Operand index in OldInsnID the render function should read from..
  • RendererFnID(2) - Custom renderer function to call
GIR_CopyConstantAsSImm 

Render a G_CONSTANT operator as a sign-extended immediate.

  • NewInsnID(ULEB128) - Instruction ID to modify
  • OldInsnID(ULEB128) - Instruction ID to copy from The operand index is implicitly 1.
GIR_CopyFConstantAsFPImm 

Render a G_FCONSTANT operator as a sign-extended immediate.

  • NewInsnID(ULEB128) - Instruction ID to modify
  • OldInsnID(ULEB128) - Instruction ID to copy from The operand index is implicitly 1.
GIR_ConstrainOperandRC 

Constrain an instruction operand to a register class.

  • InsnID(ULEB128) - Instruction ID to modify
  • OpIdx(ULEB128) - Operand index
  • RCEnum(2) - Register class enumeration value
GIR_ConstrainSelectedInstOperands 

Constrain an instructions operands according to the instruction description.

GIR_MergeMemOperands 

Merge all memory operands into instruction.

  • InsnID(ULEB128) - Instruction ID to modify
  • NumInsnID(1) - Number of instruction IDs following this argument
  • MergeInsnID(ULEB128)... - One or more Instruction ID to merge into the result.
GIR_EraseFromParent 

Erase from parent.

GIR_MakeTempReg 

Create a new temporary register that's not constrained.

  • TempRegID(ULEB128) - The temporary register ID to initialize.
  • Ty(1) - Expected type
GIR_ReplaceReg 

Replaces all references to a register from an instruction with another register from another instruction.

  • OldInsnID(ULEB128)
  • OldOpIdx(ULEB128)
  • NewInsnID(ULEB128)
  • NewOpIdx(ULEB128)
GIR_ReplaceRegWithTempReg 

Replaces all references to a register with a temporary register.

  • OldInsnID(ULEB128)
  • OldOpIdx(ULEB128)
  • TempRegIdx(ULEB128)
GIR_Done 

A successful emission.

GIR_Coverage 

Increment the rule coverage counter.

  • RuleID(4) - The ID of the rule that was covered.
GIU_NumOpcodes 

Keeping track of the number of the GI opcodes. Must be the last entry.

Definition at line 77 of file GIMatchTableExecutor.h.

◆ anonymous enum

anonymous enum : int

This is a llvm local version of __cxa_demangle.

Other than the name and being in the llvm namespace it is identical.

The mangled_name is demangled into buf and returned. If the buffer is not large enough, realloc is used to expand it.

The *status will be set to a value from the following enumeration

Enumerator
demangle_unknown_error 
demangle_invalid_args 
demangle_invalid_mangled_name 
demangle_memory_alloc_failure 
demangle_success 

Definition at line 24 of file Demangle.h.

◆ anonymous enum

anonymous enum : unsigned
Enumerator
INVALID_MEMORYACCESS_ID 

Definition at line 129 of file MemorySSA.h.

◆ anonymous enum

anonymous enum
Enumerator
TB_INDEX_0 
TB_INDEX_1 
TB_INDEX_2 
TB_INDEX_3 
TB_INDEX_4 
TB_INDEX_MASK 
TB_NO_REVERSE 
TB_NO_FORWARD 
TB_FOLDED_LOAD 
TB_FOLDED_STORE 
TB_ALIGN_SHIFT 
TB_ALIGN_1 
TB_ALIGN_16 
TB_ALIGN_32 
TB_ALIGN_64 
TB_ALIGN_MASK 
TB_BCAST_TYPE_SHIFT 
TB_BCAST_W 
TB_BCAST_D 
TB_BCAST_Q 
TB_BCAST_SS 
TB_BCAST_SD 
TB_BCAST_SH 
TB_BCAST_MASK 

Definition at line 13 of file X86FoldTablesUtils.h.

◆ anonymous enum

anonymous enum
Enumerator
kSanitizerStatKindBits 

Definition at line 22 of file SanitizerStats.h.

◆ anonymous enum

anonymous enum
Enumerator
SM_SentinelUndef 
SM_SentinelZero 

Definition at line 28 of file X86ShuffleDecode.h.

◆ anonymous enum

anonymous enum : uintptr_t
Enumerator
InvalidVN 

Definition at line 159 of file GVNHoist.cpp.

◆ AArch64FrameOffsetStatus

Use to report the frame offset status in isAArch64FrameOffsetLegal.

Enumerator
AArch64FrameOffsetCannotUpdate 

Offset cannot apply.

AArch64FrameOffsetIsLegal 

Offset is legal.

AArch64FrameOffsetCanUpdate 

Offset can apply, at least partly.

Definition at line 637 of file AArch64InstrInfo.h.

◆ AArch64MachineCombinerPattern

Enumerator
SUBADD_OP1 
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 

Definition at line 37 of file AArch64InstrInfo.h.

◆ AccelTableKind

enum class llvm::AccelTableKind
strong

The kind of accelerator tables we should emit.

Enumerator
Default 

Platform default.

None 

None.

Apple 

.apple_names, .apple_namespaces, .apple_types, .apple_objc.

Dwarf 

DWARF v5 .debug_names.

Definition at line 343 of file DwarfDebug.h.

◆ AccessField

Enumerator
Offset 
Length 

Definition at line 456 of file DWP.cpp.

◆ AddressSpace

Enumerator
ADDRESS_SPACE_GENERIC 
ADDRESS_SPACE_GLOBAL 
ADDRESS_SPACE_SHARED 
ADDRESS_SPACE_CONST 
ADDRESS_SPACE_LOCAL 
ADDRESS_SPACE_PARAM 

Definition at line 21 of file NVPTXBaseInfo.h.

◆ AlignStyle

enum class llvm::AlignStyle
strong
Enumerator
Left 
Center 
Right 

Definition at line 17 of file FormatCommon.h.

◆ AlignTypeEnum

Enum used to categorize the alignment types stored by LayoutAlignElem.

Enumerator
INTEGER_ALIGN 
VECTOR_ALIGN 
FLOAT_ALIGN 
AGGREGATE_ALIGN 

Definition at line 54 of file DataLayout.h.

◆ AllocationType

enum class llvm::AllocationType : uint8_t
strong
Enumerator
None 
NotCold 
Cold 
Hot 
All 

Definition at line 354 of file ModuleSummaryIndex.h.

◆ AllocFnKind

enum class llvm::AllocFnKind : uint64_t
strong
Enumerator
Unknown 
Alloc 
Realloc 
Free 
Uninitialized 
Zeroed 
Aligned 

Definition at line 48 of file Attributes.h.

◆ AMDGPUDwarfFlavour

Enumerator
Wave64 
Wave32 

Definition at line 31 of file AMDGPUMCTargetDesc.h.

◆ AsanCtorKind

enum class llvm::AsanCtorKind
strong

Types of ASan module constructors supported.

Enumerator
None 
Global 

Definition at line 23 of file AddressSanitizerOptions.h.

◆ AsanDetectStackUseAfterReturnMode

Mode of ASan detect stack use after return.

Enumerator
Never 

Never detect stack use after return.

Runtime 

Detect stack use after return if not disabled runtime with (ASAN_OPTIONS=detect_stack_use_after_return=0).

Always 

Always detect stack use after return.

Invalid 

Not a valid detect mode.

Definition at line 29 of file AddressSanitizerOptions.h.

◆ AsanDtorKind

enum class llvm::AsanDtorKind
strong

Types of ASan module destructors supported.

Enumerator
None 

Do not emit any destructors for ASan.

Global 

Append to llvm.global_dtors.

Invalid 

Not a valid destructor Kind.

Definition at line 16 of file AddressSanitizerOptions.h.

◆ AsmRewriteKind

Enumerator
AOK_Align 
AOK_EVEN 
AOK_Emit 
AOK_CallInput 
AOK_Input 
AOK_Output 
AOK_SizeDirective 
AOK_Label 
AOK_EndOfStatement 
AOK_Skip 
AOK_IntelExpr 

Definition at line 35 of file MCTargetAsmParser.h.

◆ AssumeBundleArg

Index of elements in the operand bundle.

If the element exist it is guaranteed to be what is specified in this enum but it may not exist.

Enumerator
ABA_WasOn 
ABA_Argument 

Definition at line 29 of file AssumeBundleQueries.h.

◆ AtomicOrdering

enum class llvm::AtomicOrdering : unsigned
strong

Atomic ordering for LLVM's memory model.

C++ defines ordering as a lattice. LLVM supplements this with NotAtomic and Unordered, which are both below the C++ orders.

not_atomic-->unordered-->relaxed-->release------------—>acq_rel-->seq_cst -->consume-->acquire–/

Enumerator
NotAtomic 
Unordered 
Monotonic 
Acquire 
Release 
AcquireRelease 
SequentiallyConsistent 
LAST 

Definition at line 56 of file AtomicOrdering.h.

◆ AtomicOrderingCABI

enum class llvm::AtomicOrderingCABI
strong

Atomic ordering for C11 / C++11's memory models.

These values cannot change because they are shared with standard library implementations as well as with other compilers.

Enumerator
relaxed 
consume 
acquire 
release 
acq_rel 
seq_cst 

Definition at line 28 of file AtomicOrdering.h.

◆ AttributorRunOption

Run options, used by the pass manager.

Enumerator
NONE 
MODULE 
CGSCC 
ALL 

Definition at line 6425 of file Attributor.h.

◆ BasicBlockSection

enum class llvm::BasicBlockSection
strong
Enumerator
All 
List 
Labels 
Preset 
None 

Definition at line 61 of file TargetOptions.h.

◆ BinaryStreamFlags

Enumerator
BSF_None 
BSF_Write 
BSF_Append 

Definition at line 20 of file BinaryStream.h.

◆ BitcodeError

enum class llvm::BitcodeError
strong
Enumerator
CorruptedBitcode 

Definition at line 309 of file BitcodeReader.h.

◆ BitstreamWrapperHeader

Offsets of the 32-bit fields of bitstream wrapper header.

Enumerator
BWH_MagicField 
BWH_VersionField 
BWH_OffsetField 
BWH_SizeField 
BWH_CPUTypeField 
BWH_HeaderSize 

Definition at line 26 of file BitCodeEnums.h.

◆ CfiFunctionLinkage

The type of CFI jumptable needed for a function.

Enumerator
CFL_Definition 
CFL_Declaration 
CFL_WeakDeclaration 

Definition at line 33 of file TypeMetadataUtils.h.

◆ ChangePrinter

enum class llvm::ChangePrinter
strong
Enumerator
None 
Verbose 
Quiet 
DiffVerbose 
DiffQuiet 
ColourDiffVerbose 
ColourDiffQuiet 
DotCfgVerbose 
DotCfgQuiet 

Definition at line 18 of file PrintPasses.h.

◆ ChangeStatus

enum class llvm::ChangeStatus
strong

{

Enumerator
CHANGED 
UNCHANGED 

Definition at line 483 of file Attributor.h.

◆ CloneFunctionChangeType

enum class llvm::CloneFunctionChangeType
strong
Enumerator
LocalChangesOnly 
GlobalChanges 
DifferentModule 
ClonedModule 

Definition at line 137 of file Cloning.h.

◆ ClrHandlerType

enum class llvm::ClrHandlerType
strong
Enumerator
Catch 
Finally 
Fault 
Filter 

Definition at line 79 of file WinEHFuncInfo.h.

◆ CodeGenFileType

enum class llvm::CodeGenFileType
strong

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.

Enumerator
AssemblyFile 
ObjectFile 
Null 

Definition at line 83 of file CodeGen.h.

◆ CodeGenOptLevel

enum class llvm::CodeGenOptLevel
strong

Code generation optimization level.

Enumerator
None 

-O0

Less 

-O1

Default 

-O2, -Os

Aggressive 

-O3

Definition at line 54 of file CodeGen.h.

◆ CodeObjectVersionKind

Enumeration value for AMDGPU code object version, which is the code object version times 100.

Enumerator
COV_None 
COV_2 
COV_3 
COV_4 
COV_5 
COV_6 

Definition at line 126 of file TargetOptions.h.

◆ ColorMode

enum class llvm::ColorMode
strong
Enumerator
Auto 

Determine whether to use color based on the command line argument and the raw_ostream.

Enable 

Enable colors.

Because raw_ostream is the one implementing colors, this has no effect if the stream does not support colors or has colors disabled.

Disable 

Disable colors.

Definition at line 40 of file WithColor.h.

◆ CombineLevel

Enumerator
BeforeLegalizeTypes 
AfterLegalizeTypes 
AfterLegalizeVectorOps 
AfterLegalizeDAG 

Definition at line 15 of file DAGCombine.h.

◆ CombinerObjective

enum class llvm::CombinerObjective
strong

The combiner's goal may differ based on which pattern it is attempting to optimize.

Enumerator
MustReduceDepth 
MustReduceRegisterPressure 
Default 

Definition at line 21 of file MachineCombinerPattern.h.

◆ ComplexDeinterleavingOperation

Enumerator
CAdd 
CMulPartial 
Deinterleave 
Splat 
Symmetric 
ReductionPHI 
ReductionOperation 
ReductionSelect 

Definition at line 35 of file ComplexDeinterleavingPass.h.

◆ ComplexDeinterleavingRotation

Enumerator
Rotation_0 
Rotation_90 
Rotation_180 
Rotation_270 

Definition at line 48 of file ComplexDeinterleavingPass.h.

◆ ContextWorklistItemType

enum class llvm::ContextWorklistItemType : uint8_t
strong

The distinct types of work performed by the work loop in analyzeContextInfo.

Enumerator
AnalyzeContextInfo 
UpdateChildPruning 
UpdatePruning 

Definition at line 226 of file DWARFLinker.cpp.

◆ ConversionFlags

Enumerator
strictConversion 
lenientConversion 

Definition at line 155 of file ConvertUTF.h.

◆ ConversionResult

Enumerator
conversionOK 
sourceExhausted 
targetExhausted 
sourceIllegal 

Definition at line 148 of file ConvertUTF.h.

◆ CurStreamTypeType

CurStreamTypeType - A type for CurStreamType.

Enumerator
UnknownBitstream 
LLVMIRBitstream 
ClangSerializedASTBitstream 
ClangSerializedDiagnosticsBitstream 
LLVMBitstreamRemarks 

Definition at line 29 of file BitcodeAnalyzer.h.

◆ DebugCompressionType

enum class llvm::DebugCompressionType
strong
Enumerator
None 

No compression.

Zlib 

zlib

Zstd 

Zstandard.

Definition at line 27 of file Compression.h.

◆ DebuggerKind

enum class llvm::DebuggerKind
strong

Identify a debugger for "tuning" the debug info.

The "debugger tuning" concept allows us to present a more intuitive interface that unpacks into different sets of defaults for the various individual feature-flag settings, that suit the preferences of the various debuggers. However, it's worth remembering that debuggers are not the only consumers of debug info, and some variations in DWARF might better be treated as target/platform issues. Fundamentally, o if the feature is useful (or not) to a particular debugger, regardless of the target, that's a tuning decision; o if the feature is useful (or not) on a particular platform, regardless of the debugger, that's a target decision. It's not impossible to see both factors in some specific case.

Enumerator
Default 

No specific tuning requested.

GDB 

Tune debug info for gdb.

LLDB 

Tune debug info for lldb.

SCE 

Tune debug info for SCE targets (e.g. PS4).

DBX 

Tune debug info for dbx.

Definition at line 97 of file TargetOptions.h.

◆ DepClassTy

enum class llvm::DepClassTy
strong
Enumerator
REQUIRED 

The target cannot be valid if the source is not.

OPTIONAL 

The target may be valid if the source is not.

NONE 

Do not track a dependence between source and target.

Definition at line 493 of file Attributor.h.

◆ DiagnosticKind

Defines the different supported kind of a diagnostic.

This enum should be extended with a new ID for each added concrete subclass.

Enumerator
DK_InlineAsm 
DK_ResourceLimit 
DK_StackSize 
DK_Linker 
DK_Lowering 
DK_DebugMetadataVersion 
DK_DebugMetadataInvalid 
DK_ISelFallback 
DK_SampleProfile 
DK_OptimizationRemark 
DK_OptimizationRemarkMissed 
DK_OptimizationRemarkAnalysis 
DK_OptimizationRemarkAnalysisFPCommute 
DK_OptimizationRemarkAnalysisAliasing 
DK_OptimizationFailure 
DK_FirstRemark 
DK_LastRemark 
DK_MachineOptimizationRemark 
DK_MachineOptimizationRemarkMissed 
DK_MachineOptimizationRemarkAnalysis 
DK_FirstMachineRemark 
DK_LastMachineRemark 
DK_MIRParser 
DK_PGOProfile 
DK_Unsupported 
DK_SrcMgr 
DK_DontCall 
DK_MisExpect 
DK_FirstPluginKind 

Definition at line 60 of file DiagnosticInfo.h.

◆ DiagnosticPredicateTy

enum class llvm::DiagnosticPredicateTy
strong
Enumerator
Match 
NearMatch 
NoMatch 

Definition at line 170 of file MCTargetAsmParser.h.

◆ DiagnosticSeverity

Defines the different supported severity of a diagnostic.

Enumerator
DS_Error 
DS_Warning 
DS_Remark 
DS_Note 

Definition at line 49 of file DiagnosticInfo.h.

◆ DIDumpType

Selects which debug sections get dumped.

Enumerator
DIDT_Null 
DIDT_All 
DIDT_UUID 

Definition at line 181 of file DIContext.h.

◆ DIDumpTypeCounter

This is just a helper to programmatically construct DIDumpType.

Enumerator
DIDT_ID_UUID 
DIDT_ID_Count 

Definition at line 170 of file DIContext.h.

◆ DINameKind

enum class llvm::DINameKind
strong

A DINameKind is passed to name search methods to specify a preference regarding the type of name resolution the caller wants.

Enumerator
None 
ShortName 
LinkageName 

Definition at line 140 of file DIContext.h.

◆ DWARFSectionKind

The enum of section identifiers to be used in internal interfaces.

Pre-standard implementation of package files defined a number of section identifiers with values that clash definitions in the DWARFv5 standard. See https://gcc.gnu.org/wiki/DebugFissionDWP and Section 7.3.5.3 in DWARFv5.

The following identifiers are the same in the proposal and in DWARFv5:

  • DW_SECT_INFO = 1 (.debug_info.dwo)
  • DW_SECT_ABBREV = 3 (.debug_abbrev.dwo)
  • DW_SECT_LINE = 4 (.debug_line.dwo)
  • DW_SECT_STR_OFFSETS = 6 (.debug_str_offsets.dwo)

The following identifiers are defined only in DWARFv5:

  • DW_SECT_LOCLISTS = 5 (.debug_loclists.dwo)
  • DW_SECT_RNGLISTS = 8 (.debug_rnglists.dwo)

The following identifiers are defined only in the GNU proposal:

  • DW_SECT_TYPES = 2 (.debug_types.dwo)
  • DW_SECT_LOC = 5 (.debug_loc.dwo)
  • DW_SECT_MACINFO = 7 (.debug_macinfo.dwo)

DW_SECT_MACRO for the .debug_macro.dwo section is defined in both standards, but with different values, 8 in GNU and 7 in DWARFv5.

This enum defines constants to represent the identifiers of both sets. For DWARFv5 ones, the values are the same as defined in the standard. For pre-standard ones that correspond to sections being deprecated in DWARFv5, the values are chosen arbitrary and a tag "_EXT_" is added to the names.

The enum is for internal use only. The user should not expect the values to correspond to any input/output constants. Special conversion functions, serializeSectionKind() and deserializeSectionKind(), should be used for the translation.

Enumerator
DW_SECT_EXT_unknown 

Denotes a value read from an index section that does not correspond to any of the supported standards.

DW_SECT_EXT_TYPES 
DW_SECT_EXT_LOC 
DW_SECT_EXT_MACINFO 

Definition at line 56 of file DWARFUnitIndex.h.

◆ EABI

enum class llvm::EABI
strong
Enumerator
Unknown 
Default 
EABI4 
EABI5 
GNU 

Definition at line 76 of file TargetOptions.h.

◆ EHPersonality

enum class llvm::EHPersonality
strong
Enumerator
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 

Definition at line 21 of file EHPersonalities.h.

◆ EmitDwarfUnwindType

enum class llvm::EmitDwarfUnwindType
strong
Enumerator
Always 
NoCompactUnwind 
Default 

Definition at line 31 of file MCTargetOptions.h.

◆ endianness

enum class llvm::endianness
strong
Enumerator
big 
little 
native 

Definition at line 70 of file bit.h.

◆ errc

enum class llvm::errc
strong
Enumerator
argument_list_too_long 
argument_out_of_domain 
bad_address 
bad_file_descriptor 
broken_pipe 
device_or_resource_busy 
directory_not_empty 
executable_format_error 
file_exists 
file_too_large 
filename_too_long 
function_not_supported 
illegal_byte_sequence 
inappropriate_io_control_operation 
interrupted 
invalid_argument 
invalid_seek 
io_error 
is_a_directory 
no_child_process 
no_lock_available 
no_space_on_device 
no_such_device_or_address 
no_such_device 
no_such_file_or_directory 
no_such_process 
not_a_directory 
not_enough_memory 
not_supported 
operation_not_permitted 
permission_denied 
read_only_file_system 
resource_deadlock_would_occur 
resource_unavailable_try_again 
result_out_of_range 
too_many_files_open_in_system 
too_many_files_open 
too_many_links 

Definition at line 35 of file Errc.h.

◆ ExceptionHandling

enum class llvm::ExceptionHandling
strong
Enumerator
None 

No exception support.

DwarfCFI 

DWARF-like instruction based exceptions.

SjLj 

setjmp/longjmp based exceptions

ARM 

ARM EHABI.

WinEH 

Windows Exception Handling.

Wasm 

WebAssembly Exception Handling.

AIX 

AIX Exception Handling.

ZOS 

z/OS MVS Exception Handling.

Very similar to DwarfCFI, but the PPA1 is used instead of an .eh_frame section.

Definition at line 19 of file MCTargetOptions.h.

◆ ExplorationDirection

enum class llvm::ExplorationDirection
strong

Enum that allows us to spell out the direction.

Enumerator
BACKWARD 
FORWARD 

Definition at line 177 of file MustExecute.h.

◆ FeatureIDs

Enumerator
FeatureCount 

Definition at line 84 of file MLRegAllocPriorityAdvisor.cpp.

◆ FeatureIndex

enum class llvm::FeatureIndex : size_t
strong
Enumerator
POPULATE_INDICES 
NumberOfFeatures 

Definition at line 127 of file InlineModelFeatureMaps.h.

◆ FloatStyle

enum class llvm::FloatStyle
strong
Enumerator
Exponent 
ExponentUpper 
Fixed 
Percent 

Definition at line 17 of file NativeFormatting.h.

◆ fltNanEncoding

enum class llvm::fltNanEncoding
strong
Enumerator
IEEE 
AllOnes 
NegativeZero 

Definition at line 77 of file APFloat.cpp.

◆ fltNonfiniteBehavior

enum class llvm::fltNonfiniteBehavior
strong
Enumerator
IEEE754 
NanOnly 

Definition at line 57 of file APFloat.cpp.

◆ FPClassTest

Floating-point class tests, supported by 'is_fpclass' intrinsic.

Actual test may be an OR combination of basic tests.

Enumerator
fcNone 
fcSNan 
fcQNan 
fcNegInf 
fcNegNormal 
fcNegSubnormal 
fcNegZero 
fcPosZero 
fcPosSubnormal 
fcPosNormal 
fcPosInf 
fcNan 
fcInf 
fcNormal 
fcSubnormal 
fcZero 
fcPosFinite 
fcNegFinite 
fcFinite 
fcPositive 
fcNegative 
fcAllFlags 

Definition at line 239 of file FloatingPointMode.h.

◆ FramePointerKind

enum class llvm::FramePointerKind
strong
Enumerator
None 
NonLeaf 
All 

Definition at line 90 of file CodeGen.h.

◆ FunctionReturnThunksKind

enum class llvm::FunctionReturnThunksKind : unsigned int
strong
Enumerator
Keep 

No function return thunk.

Extern 

Replace returns with jump to thunk, don't emit thunk.

Invalid 

Not used.

Definition at line 127 of file CodeGen.h.

◆ GCNSchedStageID

enum class llvm::GCNSchedStageID : unsigned
strong
Enumerator
OccInitialSchedule 
UnclusteredHighRPReschedule 
ClusteredLowOccupancyReschedule 
PreRARematerialize 
ILPInitialSchedule 

Definition at line 27 of file GCNSchedStrategy.h.

◆ GlobalISelAbortMode

enum class llvm::GlobalISelAbortMode
strong

Enable abort calls when global instruction selection fails to lower/select an instruction.

Enumerator
Disable 
Enable 
DisableWithDiag 

Definition at line 107 of file TargetOptions.h.

◆ GVDAGType

Enumerator
GVDT_None 
GVDT_Fraction 
GVDT_Integer 
GVDT_Count 

Definition at line 1797 of file BlockFrequencyInfoImpl.h.

◆ HexPrintStyle

enum class llvm::HexPrintStyle
strong
Enumerator
Upper 
Lower 
PrefixUpper 
PrefixLower 

Definition at line 22 of file NativeFormatting.h.

◆ HighlightColor

enum class llvm::HighlightColor
strong
Enumerator
Address 
String 
Tag 
Attribute 
Enumerator 
Macro 
Error 
Warning 
Note 
Remark 

Definition at line 27 of file WithColor.h.

◆ HTTPMethod

enum class llvm::HTTPMethod
strong
Enumerator
GET 

Definition at line 27 of file HTTPClient.h.

◆ InitStatus

Enumerator
Uninitialized 
Wait 
Done 

Definition at line 61 of file Threading.h.

◆ InlineCostFeatureIndex

enum class llvm::InlineCostFeatureIndex : size_t
strong
Enumerator
POPULATE_INDICES 
NumberOfFeatures 

Definition at line 69 of file InlineModelFeatureMaps.h.

◆ InlinePass

enum class llvm::InlinePass : int
strong
Enumerator
AlwaysInliner 
CGSCCInliner 
EarlyInliner 
ModuleInliner 
MLInliner 
ReplayCGSCCInliner 
ReplaySampleProfileInliner 
SampleProfileInliner 

Definition at line 46 of file InlineAdvisor.h.

◆ InlinerFunctionImportStatsOpts

Enumerator
No 
Basic 
Verbose 

Definition at line 104 of file ImportedFunctionsInliningStatistics.h.

◆ InliningAdvisorMode

enum class llvm::InliningAdvisorMode : int
strong

There are 4 scenarios we can use the InlineAdvisor:

  • Default - use manual heuristics.
  • Release mode, the expected mode for production, day to day deployments. In this mode, when building the compiler, we also compile a pre-trained ML model to native code, and link it as a static library. This mode has low overhead and no additional dependencies for the compiler runtime.
  • Development mode, for training new models. In this mode, we trade off runtime performance for flexibility. This mode requires the TFLite library, and evaluates models dynamically. This mode also permits generating training logs, for offline training.
  • Dynamically load an advisor via a plugin (PluginInlineAdvisorAnalysis)
Enumerator
Default 
Release 
Development 

Definition at line 43 of file InlineAdvisor.h.

◆ instrprof_error

enum class llvm::instrprof_error
strong
Enumerator
success 
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 

Definition at line 346 of file InstrProf.h.

◆ InstrProfKind

enum class llvm::InstrProfKind
strong

An enum describing the attributes of an instrumented profile.

Enumerator
Unknown 
FrontendInstrumentation 
IRInstrumentation 
FunctionEntryInstrumentation 
ContextSensitive 
SingleByteCoverage 
FunctionEntryOnly 
MemProf 
TemporalProfile 

Definition at line 323 of file InstrProf.h.

◆ InstrProfSectKind

Definition at line 59 of file InstrProf.h.

◆ InstrProfValueKind

Definition at line 266 of file InstrProf.h.

◆ InstructionUniformity

enum class llvm::InstructionUniformity
strong

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.

the same on both threads?

Enumerator
Default 

The result values are uniform if and only if all operands are uniform.

AlwaysUniform 

The result values are always uniform.

NeverUniform 

The result values can never be assumed to be uniform.

Definition at line 18 of file Uniformity.h.

◆ IntegerStyle

enum class llvm::IntegerStyle
strong
Enumerator
Integer 
Number 

Definition at line 18 of file NativeFormatting.h.

◆ InternalRelocationType

Enumerator
INTERNAL_REL_ARM64_LONG_BRANCH26 

Definition at line 31 of file RuntimeDyldCOFFAArch64.h.

◆ IntrinsicType

Enumerator
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 
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 

Definition at line 22 of file X86IntrinsicsInfo.h.

◆ IRMemLocation

enum class llvm::IRMemLocation
strong

The locations at which a function might access memory.

Enumerator
ArgMem 

Access to memory via argument pointers.

InaccessibleMem 

Memory that is inaccessible via LLVM IR.

Other 

Any other memory.

First 

Helpers to iterate all locations in the MemoryEffectsBase class.

Last 

Definition at line 59 of file ModRef.h.

◆ IttEventType

Enumerator
LoadBinaryModule 
LoadBinarySection 
UnloadBinaryModule 
UnloadBinarySection 

Definition at line 24 of file IntelJITEventsWrapper.h.

◆ LibFunc

Enumerator
NumLibFuncs 
NotLibFunc 

Definition at line 69 of file TargetLibraryInfo.h.

◆ LiveRangeStage

Enumerator
RS_New 

Newly created live range that has never been queued.

RS_Assign 

Only attempt assignment and eviction. Then requeue as RS_Split.

RS_Split 

Attempt live range splitting if assignment is impossible.

RS_Split2 

Attempt more aggressive live range splitting that is guaranteed to make progress.

This is used for split products that may not be making progress.

RS_Spill 

Live range will be spilled. No more splitting will be attempted.

RS_Memory 

Live range is in memory.

Because of other evictions, it might get moved in a register in the end.

RS_Done 

There is nothing more we can do to this live range.

Abort compilation if it can't be assigned.

Definition at line 46 of file RegAllocEvictionAdvisor.h.

◆ LLVMConstants

Enumerator
DEBUG_METADATA_VERSION 

Definition at line 51 of file Metadata.h.

◆ LocalNum

Enumerator
LN_First 
LN_Middle 
LN_Last 

Definition at line 74 of file PredicateInfo.cpp.

◆ LoopPeelDirection

Enumerator
LPD_Front 

Peel the first iteration of the loop.

LPD_Back 

Peel the last iteration of the loop.

Definition at line 17 of file MachineLoopUtils.h.

◆ LoopUnrollResult

enum class llvm::LoopUnrollResult
strong

Represents the result of a UnrollLoop invocation.

Enumerator
Unmodified 

The loop was not modified.

PartiallyUnrolled 

The loop was partially unrolled – we still have a loop, but with a smaller trip count.

We may also have emitted epilogue loop if the loop had a non-constant trip count.

FullyUnrolled 

The loop was fully unrolled into straight-line code.

We no longer have any back-edges.

Definition at line 54 of file UnrollLoop.h.

◆ lostFraction

Enum that represents what fraction of the LSB truncated bits of an fp number represent.

This essentially combines the roles of guard and sticky bits.

Enumerator
lfExactlyZero 
lfLessThanHalf 
lfExactlyHalf 
lfMoreThanHalf 

Definition at line 48 of file APFloat.h.

◆ MachineCombinerPattern

These are instruction patterns matched by the machine combiner pass.

Enumerator
REASSOC_AX_BY 
REASSOC_AX_YB 
REASSOC_XA_BY 
REASSOC_XA_YB 
TARGET_PATTERN_START 

Definition at line 28 of file MachineCombinerPattern.h.

◆ MachineTraceStrategy

enum class llvm::MachineTraceStrategy
strong

Strategies for selecting traces.

Enumerator
TS_MinInstrCount 

Select the trace through a block that has the fewest instructions.

TS_Local 

Select the trace that contains only the current basic block.

For instance, this strategy can be used by MachineCombiner to make better decisions when we estimate critical path for in-order cores.

TS_NumStrategies 

Definition at line 86 of file MachineTraceMetrics.h.

◆ MCAssemblerFlag

Enumerator
MCAF_SyntaxUnified 

.syntax (ARM/ELF)

MCAF_SubsectionsViaSymbols 

.subsections_via_symbols (MachO)

MCAF_Code16 

.code16 (X86) / .code 16 (ARM)

MCAF_Code32 

.code32 (X86) / .code 32 (ARM)

MCAF_Code64 

.code64 (X86)

Definition at line 53 of file MCDirectives.h.

◆ MCDataRegionType

Enumerator
MCDR_DataRegion 

.data_region

MCDR_DataRegionJT8 

.data_region jt8

MCDR_DataRegionJT16 

.data_region jt16

MCDR_DataRegionJT32 

.data_region jt32

MCDR_DataRegionEnd 

.end_data_region

Definition at line 61 of file MCDirectives.h.

◆ MCFixupKind

Extensible enumeration to represent the type of a fixup.

Enumerator
FK_NONE 

A no-op fixup.

FK_Data_1 

A one-byte fixup.

FK_Data_2 

A two-byte fixup.

FK_Data_4 

A four-byte fixup.

FK_Data_8 

A eight-byte fixup.

FK_Data_leb128 

A leb128 fixup.

FK_PCRel_1 

A one-byte pc relative fixup.

FK_PCRel_2 

A two-byte pc relative fixup.

FK_PCRel_4 

A four-byte pc relative fixup.

FK_PCRel_8 

A eight-byte pc relative fixup.

FK_GPRel_1 

A one-byte gp relative fixup.

FK_GPRel_2 

A two-byte gp relative fixup.

FK_GPRel_4 

A four-byte gp relative fixup.

FK_GPRel_8 

A eight-byte gp relative fixup.

FK_DTPRel_4 

A four-byte dtp relative fixup.

FK_DTPRel_8 

A eight-byte dtp relative fixup.

FK_TPRel_4 

A four-byte tp relative fixup.

FK_TPRel_8 

A eight-byte tp relative fixup.

FK_SecRel_1 

A one-byte section relative fixup.

FK_SecRel_2 

A two-byte section relative fixup.

FK_SecRel_4 

A four-byte section relative fixup.

FK_SecRel_8 

A eight-byte section relative fixup.

FirstTargetFixupKind 
FirstLiteralRelocationKind 

The range [FirstLiteralRelocationKind, MaxTargetFixupKind) is used for relocations coming from .reloc directive.

Fixup kind FirstLiteralRelocationKind+V represents the relocation type with number V.

MaxFixupKind 

Set limit to accommodate the highest reloc type in use for all Targets, currently R_AARCH64_IRELATIVE at 1032, including room for expansion.

Definition at line 21 of file MCFixup.h.

◆ MCLOHType

Linker Optimization Hint Type.

Enumerator
MCLOH_AdrpAdrp 

Adrp xY, _v1@PAGE -> Adrp xY, _v2@PAGE.

MCLOH_AdrpLdr 

Adrp _v@PAGE -> Ldr _v@PAGEOFF.

MCLOH_AdrpAddLdr 

Adrp _v@PAGE -> Add _v@PAGEOFF -> Ldr.

MCLOH_AdrpLdrGotLdr 

Adrp _v@GOTPAGE -> Ldr _v@GOTPAGEOFF -> Ldr.

MCLOH_AdrpAddStr 

Adrp _v@PAGE -> Add _v@PAGEOFF -> Str.

MCLOH_AdrpLdrGotStr 

Adrp _v@GOTPAGE -> Ldr _v@GOTPAGEOFF -> Str.

MCLOH_AdrpAdd 

Adrp _v@PAGE -> Add _v@PAGEOFF.

MCLOH_AdrpLdrGot 

Adrp _v@GOTPAGE -> Ldr _v@GOTPAGEOFF.

Definition at line 33 of file MCLinkerOptimizationHint.h.

◆ MCPseudoProbeFlag

enum class llvm::MCPseudoProbeFlag
strong
Enumerator
AddressDelta 

Definition at line 78 of file MCPseudoProbe.h.

◆ MCSymbolAttr

Enumerator
MCSA_Invalid 

Not a valid directive.

MCSA_Cold 

.cold (MachO)

MCSA_ELF_TypeFunction 

.type _foo, STT_FUNC # aka @function

MCSA_ELF_TypeIndFunction 

.type _foo, STT_GNU_IFUNC

MCSA_ELF_TypeObject 

.type _foo, STT_OBJECT # aka @object

MCSA_ELF_TypeTLS 

.type _foo, STT_TLS # aka @tls_object

MCSA_ELF_TypeCommon 

.type _foo, STT_COMMON # aka @common

MCSA_ELF_TypeNoType 

.type _foo, STT_NOTYPE # aka @notype

MCSA_ELF_TypeGnuUniqueObject 
MCSA_Global 

.type _foo, @gnu_unique_object

.globl

MCSA_LGlobal 

.lglobl (XCOFF)

MCSA_Extern 

.extern (XCOFF)

MCSA_Hidden 

.hidden (ELF)

MCSA_Exported 

.globl _foo, exported (XCOFF)

MCSA_IndirectSymbol 

.indirect_symbol (MachO)

MCSA_Internal 

.internal (ELF)

MCSA_LazyReference 

.lazy_reference (MachO)

MCSA_Local 

.local (ELF)

MCSA_NoDeadStrip 

.no_dead_strip (MachO)

MCSA_SymbolResolver 

.symbol_resolver (MachO)

MCSA_AltEntry 

.alt_entry (MachO)

MCSA_PrivateExtern 

.private_extern (MachO)

MCSA_Protected 

.protected (ELF)

MCSA_Reference 

.reference (MachO)

MCSA_Weak 

.weak

MCSA_WeakDefinition 

.weak_definition (MachO)

MCSA_WeakReference 

.weak_reference (MachO)

MCSA_WeakDefAutoPrivate 

.weak_def_can_be_hidden (MachO)

MCSA_WeakAntiDep 

.weak_anti_dep (COFF)

MCSA_Memtag 

.memtag (ELF)

Definition at line 18 of file MCDirectives.h.

◆ MCVersionMinType

Enumerator
MCVM_IOSVersionMin 

.ios_version_min

MCVM_OSXVersionMin 

.macosx_version_min

MCVM_TvOSVersionMin 

.tvos_version_min

MCVM_WatchOSVersionMin 

.watchos_version_min

Definition at line 69 of file MCDirectives.h.

◆ ModRefInfo

enum class llvm::ModRefInfo : uint8_t
strong

Flags indicating whether a memory access modifies or references memory.

This is no access at all, a modification, a reference, or both a modification and a reference.

Enumerator
NoModRef 

The access neither references nor modifies the value stored in memory.

Ref 

The access may reference the value stored in memory.

Mod 

The access may modify the value stored in memory.

ModRef 

The access may reference and may modify the value stored in memory.

LLVM_MARK_AS_BITMASK_ENUM 

Definition at line 27 of file ModRef.h.

◆ MSDemangleFlags

Enumerator
MSDF_None 
MSDF_DumpBackrefs 
MSDF_NoAccessSpecifier 
MSDF_NoCallingConvention 
MSDF_NoReturnType 
MSDF_NoMemberType 
MSDF_NoVariableType 

Definition at line 37 of file Demangle.h.

◆ OnCuIndexOverflow

Enumerator
HardStop 
SoftStop 
Continue 

Definition at line 18 of file DWP.h.

◆ OperandMatchResultTy

Enumerator
MatchOperand_Success 
MatchOperand_NoMatch 
MatchOperand_ParseFail 

Definition at line 125 of file MCTargetAsmParser.h.

◆ OverflowResult

enum class llvm::OverflowResult
strong
Enumerator
AlwaysOverflowsLow 

Always overflows in the direction of signed/unsigned min value.

AlwaysOverflowsHigh 

Always overflows in the direction of signed/unsigned max value.

MayOverflow 

May or may not overflow.

NeverOverflows 

Never overflows.

Definition at line 849 of file ValueTracking.h.

◆ PackElem

enum class llvm::PackElem : int8_t
strong
Enumerator
Lo 
Hi 

Definition at line 130 of file VECustomDAG.h.

◆ Packing

enum class llvm::Packing
strong

} Node Properties

Enumerator
Normal 
Dense 

Definition at line 119 of file VECustomDAG.h.

◆ PassDebuggingString

Enumerator
EXECUTION_MSG 
MODIFICATION_MSG 
FREEING_MSG 
ON_FUNCTION_MSG 
ON_MODULE_MSG 
ON_REGION_MSG 
ON_LOOP_MSG 
ON_CG_MSG 

Definition at line 96 of file LegacyPassManagers.h.

◆ PassKind

Enumerator
PT_Region 
PT_Loop 
PT_Function 
PT_CallGraphSCC 
PT_Module 
PT_PassManager 

Definition at line 66 of file Pass.h.

◆ PassManagerType

Different types of internal pass managers.

External pass managers (PassManager and FunctionPassManager) are not represented here. Ordering of pass manager types is important here.

Enumerator
PMT_Unknown 
PMT_ModulePassManager 

MPPassManager.

PMT_CallGraphPassManager 

CGPassManager.

PMT_FunctionPassManager 

FPPassManager.

PMT_LoopPassManager 

LPPassManager.

PMT_RegionPassManager 

RGPassManager.

PMT_Last 

Definition at line 55 of file Pass.h.

◆ PassSummaryAction

enum class llvm::PassSummaryAction
strong

What to do with the summary when running passes that operate on it.

Enumerator
None 

Do nothing.

Import 

Import information from summary.

Export 

Export information to summary.

Definition at line 52 of file IPO.h.

◆ PGOViewCountsType

Enumerator
PGOVCT_None 
PGOVCT_Graph 
PGOVCT_Text 

Definition at line 34 of file BlockFrequencyInfo.h.

◆ PGSOQueryType

enum class llvm::PGSOQueryType
strong
Enumerator
IRPass 
Test 
Other 

Definition at line 34 of file SizeOpts.h.

◆ PPCMachineCombinerPattern

Enumerator
REASSOC_XY_AMM_BMM 
REASSOC_XMM_AMM_BMM 
REASSOC_XY_BCA 
REASSOC_XY_BAC 

Definition at line 89 of file PPCInstrInfo.h.

◆ PredicateType

Enumerator
PT_Branch 
PT_Assume 
PT_Switch 

Definition at line 70 of file PredicateInfo.h.

◆ PrevailingType

enum class llvm::PrevailingType
strong

PrevailingType enum used as a return type of callback passed to computeDeadSymbolsAndUpdateIndirectCalls.

Yes and No values used when status explicitly set by symbols resolution, otherwise status is Unknown.

Enumerator
Yes 
No 
Unknown 

Definition at line 168 of file FunctionImport.h.

◆ PseudoProbeAttributes

enum class llvm::PseudoProbeAttributes
strong
Enumerator
Reserved 
Sentinel 
HasDiscriminator 

Definition at line 31 of file PseudoProbe.h.

◆ PseudoProbeReservedId

enum class llvm::PseudoProbeReservedId
strong
Enumerator
Invalid 
Last 

Definition at line 27 of file PseudoProbe.h.

◆ PseudoProbeType

enum class llvm::PseudoProbeType
strong
Enumerator
Block 
IndirectCall 
DirectCall 

Definition at line 29 of file PseudoProbe.h.

◆ RecurKind

enum class llvm::RecurKind
strong

These are the kinds of recurrences that we support.

Enumerator
None 

Not a recurrence.

Add 

Sum of integers.

Mul 

Product of integers.

Or 

Bitwise or logical OR of integers.

And 

Bitwise or logical AND of integers.

Xor 

Bitwise or logical XOR of integers.

SMin 

Signed integer min implemented in terms of select(cmp()).

SMax 

Signed integer max implemented in terms of select(cmp()).

UMin 

Unsigned integer min implemented in terms of select(cmp()).

UMax 

Unsigned integer max implemented in terms of select(cmp()).

FAdd 

Sum of floats.

FMul 

Product of floats.

FMin 

FP min implemented in terms of select(cmp()).

FMax 

FP max implemented in terms of select(cmp()).

FMinimum 

FP min with llvm.minimum semantics.

FMaximum 

FP max with llvm.maximum semantics.

FMulAdd 

Sum of float products with llvm.fmuladd(a * b + sum).

IAnyOf 

Any_of reduction with select(icmp(),x,y) where one of (x,y) is loop invariant, and both x and y are integer type.

FAnyOf 

Any_of reduction with select(fcmp(),x,y) where one of (x,y) is loop invariant, and both x and y are integer type.

Definition at line 34 of file IVDescriptors.h.

◆ RegAllocType

enum class llvm::RegAllocType
strong
Enumerator
Default 
Basic 
Fast 
Greedy 
PBQP 

Definition at line 23 of file CGPassBuilderOption.h.

◆ RemapFlags

These are flags that the value mapping APIs allow.

Enumerator
RF_None 
RF_NoModuleLevelChanges 

If this flag is set, the remapper knows that only local values within a function (such as an instruction or argument) are mapped, not global values like functions and global metadata.

RF_IgnoreMissingLocals 

If this flag is set, the remapper ignores missing function-local entries (Argument, Instruction, BasicBlock) that are not in the value map.

If it is unset, it aborts if an operand is asked to be remapped which doesn't exist in the mapping.

There are no such assertions in MapValue(), whose results are almost unchanged by this flag. This flag mainly changes the assertion behaviour in RemapInstruction().

Since an Instruction's metadata operands (even that point to SSA values) aren't guaranteed to be dominated by their definitions, MapMetadata will return "!{}" instead of "null" for LocalAsMetadata instances whose SSA values are unmapped when this flag is set. Otherwise, MapValue() completely ignores this flag.

MapMetadata() always ignores this flag.

RF_ReuseAndMutateDistinctMDs 

Instruct the remapper to reuse and mutate distinct metadata (remapping them in place) instead of cloning remapped copies.

This flag has no effect when RF_NoModuleLevelChanges, since that implies an identity mapping.

RF_NullMapMissingGlobalValues 

Any global values not in value map are mapped to null instead of mapping to self.

Illegal if RF_IgnoreMissingLocals is also set.

Definition at line 70 of file ValueMapper.h.

◆ ReplaceExitVal

Enumerator
NeverRepl 
OnlyCheapRepl 
NoHardUse 
UnusedIndVarInLoop 
AlwaysRepl 

Definition at line 461 of file LoopUtils.h.

◆ ReplacementType

enum class llvm::ReplacementType
strong
Enumerator
Empty 
Format 
Literal 

Definition at line 46 of file FormatVariadic.h.

◆ RISCVMachineCombinerPattern

Enumerator
FMADD_AX 
FMADD_XA 
FMSUB 
FNMSUB 
SHXADD_ADD_SLLI_OP1 
SHXADD_ADD_SLLI_OP2 

Definition at line 53 of file RISCVInstrInfo.h.

◆ RISCVOptionArchArgType

enum class llvm::RISCVOptionArchArgType
strong
Enumerator
Full 
Plus 
Minus 

Definition at line 20 of file RISCVTargetStreamer.h.

◆ RoundingMode

enum class llvm::RoundingMode : int8_t
strong

Rounding mode.

Enumerates supported rounding modes, as well as some special values. The set of the modes must agree with IEEE-754, 4.3.1 and 4.3.2. The constants assigned to the IEEE rounding modes must agree with the values used by FLT_ROUNDS (C11, 5.2.4.2.2p8).

This value is packed into bitfield in some cases, including FPOptions, so the rounding mode values and the special value Dynamic must fit into the the bit field (now - 3 bits). The value Invalid is used only in values returned by intrinsics to indicate errors, it should never be stored as rounding mode value, so it does not need to fit the bit fields.

Enumerator
TowardZero 

roundTowardZero.

NearestTiesToEven 

roundTiesToEven.

TowardPositive 

roundTowardPositive.

TowardNegative 

roundTowardNegative.

NearestTiesToAway 

roundTiesToAway.

Dynamic 

Denotes mode unknown at compile time.

Invalid 

Denotes invalid value.

Definition at line 37 of file FloatingPointMode.h.

◆ RunOutliner

enum class llvm::RunOutliner
strong
Enumerator
TargetDefault 
AlwaysOutline 
NeverOutline 

Definition at line 22 of file CGPassBuilderOption.h.

◆ sampleprof_error

enum class llvm::sampleprof_error
strong
Enumerator
success 
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 

Definition at line 47 of file SampleProf.h.

◆ SanitizerStatKind

Enumerator
SanStat_CFI_VCall 
SanStat_CFI_NVCall 
SanStat_CFI_DerivedCast 
SanStat_CFI_UnrelatedCast 
SanStat_CFI_ICall 

Definition at line 24 of file SanitizerStats.h.

◆ ScalarEpilogueLowering

Enumerator
CM_ScalarEpilogueAllowed 
CM_ScalarEpilogueNotAllowedOptSize 
CM_ScalarEpilogueNotAllowedLowTripLoop 
CM_ScalarEpilogueNotNeededUsePredicate 
CM_ScalarEpilogueNotAllowedUsePredicate 

Definition at line 1051 of file LoopVectorize.cpp.

◆ ScanOptions

enum class llvm::ScanOptions
strong
Enumerator
DPP 
Iterative 
None 

Definition at line 99 of file AMDGPU.h.

◆ SCEVTypes

enum llvm::SCEVTypes : unsigned short
Enumerator
scConstant 
scVScale 
scTruncate 
scZeroExtend 
scSignExtend 
scAddExpr 
scMulExpr 
scUDivExpr 
scAddRecExpr 
scUMaxExpr 
scSMaxExpr 
scUMinExpr 
scSMinExpr 
scSequentialUMinExpr 
scPtrToInt 
scUnknown 
scCouldNotCompute 

Definition at line 37 of file ScalarEvolutionExpressions.h.

◆ SelectPatternFlavor

Specific patterns of select instructions we can match.

Enumerator
SPF_UNKNOWN 
SPF_SMIN 
SPF_UMIN 

Signed minimum.

SPF_SMAX 

Unsigned minimum.

SPF_UMAX 

Signed maximum.

SPF_FMINNUM 

Unsigned maximum.

SPF_FMAXNUM 

Floating point minnum.

SPF_ABS 

Floating point maxnum.

SPF_NABS 

Absolute value.

Negated absolute value

Definition at line 1055 of file ValueTracking.h.

◆ SelectPatternNaNBehavior

Behavior when a floating point min/max is given one NaN and one non-NaN as input.

Enumerator
SPNB_NA 
SPNB_RETURNS_NAN 

NaN behavior not applicable.

SPNB_RETURNS_OTHER 

Given one NaN input, returns the NaN.

SPNB_RETURNS_ANY 

Given one NaN input, returns the non-NaN.

Given one NaN input, can return either (or it has been determined that no operands can be NaN).

Definition at line 1069 of file ValueTracking.h.

◆ SetThreadPriorityResult

enum class llvm::SetThreadPriorityResult
strong
Enumerator
FAILURE 
SUCCESS 

Definition at line 255 of file Threading.h.

◆ SGPRSaveKind

enum class llvm::SGPRSaveKind : uint8_t
strong
Enumerator
COPY_TO_SCRATCH_SGPR 
SPILL_TO_VGPR_LANE 
SPILL_TO_MEM 

Definition at line 351 of file SIMachineFunctionInfo.h.

◆ SIRCFlags

enum llvm::SIRCFlags : uint8_t
Enumerator
RegTupleAlignUnitsWidth 
HasVGPRBit 
HasAGPRBit 
HasSGPRbit 
HasVGPR 
HasAGPR 
HasSGPR 
RegTupleAlignUnitsMask 
RegKindMask 

Definition at line 18 of file SIDefines.h.

◆ SIScheduleBlockLinkKind

Enumerator
NoData 
Data 

Definition at line 53 of file SIMachineScheduler.h.

◆ SIScheduleCandReason

Enumerator
NoCand 
RegUsage 
Latency 
Successor 
Depth 
NodeOrder 

Definition at line 31 of file SIMachineScheduler.h.

◆ SISchedulerBlockCreatorVariant

Enumerator
LatenciesAlone 
LatenciesGrouped 
LatenciesAlonePlusConsecutive 

Definition at line 216 of file SIMachineScheduler.h.

◆ SISchedulerBlockSchedulerVariant

Enumerator
BlockLatencyRegUsage 
BlockRegUsageLatency 
BlockRegUsage 

Definition at line 312 of file SIMachineScheduler.h.

◆ SpillOpcodeKey

Enumerator
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 

Definition at line 67 of file PPCInstrInfo.h.

◆ SROAOptions

enum class llvm::SROAOptions : bool
strong
Enumerator
ModifyCFG 
PreserveCFG 

Definition at line 24 of file SROA.h.

◆ StatepointFlags

enum class llvm::StatepointFlags
strong

The statepoint intrinsic accepts a set of flags as its third argument.

Valid values come out of this set.

Enumerator
None 
GCTransition 

Indicates that this statepoint is a transition from GC-aware code to code that is not GC-aware.

DeoptLiveIn 

Mark the deopt arguments associated with the statepoint as only being "live-in".

By default, deopt arguments are "live-through". "live-through" requires that they the value be live on entry, on exit, and at any point during the call. "live-in" only requires the value be available at the start of the call. In particular, "live-in" values can be placed in unused argument registers or other non-callee saved registers.

MaskAll 

A bitmask that includes all valid flags.

Definition at line 39 of file Statepoint.h.

◆ stream_error_code

enum class llvm::stream_error_code
strong
Enumerator
unspecified 
stream_too_short 
invalid_array_size 
invalid_offset 
filesystem_error 

Definition at line 18 of file BinaryStreamError.h.

◆ SubDirectoryType

enum class llvm::SubDirectoryType
strong
Enumerator
Bin 
Include 
Lib 

Definition at line 24 of file MSVCPaths.h.

◆ SwiftAsyncFramePointerMode

Indicates when and how the Swift async frame pointer bit should be set.

Enumerator
DeploymentBased 

Determine whether to set the bit statically or dynamically based on the deployment target.

Always 

Always set the bit.

Never 

Never set the bit.

Definition at line 114 of file TargetOptions.h.

◆ SymtabWritingMode

enum class llvm::SymtabWritingMode
strong
Enumerator
NoSymtab 
NormalSymtab 
BigArchive32 
BigArchive64 

Definition at line 43 of file ArchiveWriter.h.

◆ SystemZAsmDialect

Enumerator
AD_ATT 
AD_HLASM 

Definition at line 18 of file SystemZMCAsmInfo.h.

◆ TailFoldingOpts

enum class llvm::TailFoldingOpts : uint8_t
strong

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.

that would require a SVE splice instruction Reverse: Reverse loops Simple: Loops that are not reversed and don't contain reductions or first-order recurrences. All: All

Enumerator
Disabled 
Simple 
Reductions 
Recurrences 
Reverse 
All 

Definition at line 542 of file AArch64BaseInfo.h.

◆ TailFoldingStyle

enum class llvm::TailFoldingStyle
strong
Enumerator
None 

Don't use tail folding.

Data 

Use predicate only to mask operations on data in the loop.

When the VL is not known to be a power-of-2, this method requires a runtime overflow check for the i + VL in the loop because it compares the scalar induction variable against the tripcount rounded up by VL which may overflow. When the VL is a power-of-2, both the increment and uprounded tripcount will overflow to 0, which does not require a runtime check since the loop is exited when the loop induction variable equals the uprounded trip-count, which are both 0.

DataWithoutLaneMask 

Same as Data, but avoids using the get.active.lane.mask intrinsic to calculate the mask and instead implements this with a splat/stepvector/cmp.

FIXME: Can this kind be removed now that SelectionDAGBuilder expands the active.lane.mask intrinsic when it is not natively supported?

DataAndControlFlow 

Use predicate to control both data and control flow.

This method always requires a runtime overflow check for the i + VL increment inside the loop, because it uses the result direclty in the active.lane.mask to calculate the mask for the next iteration. If the increment overflows, the mask is no longer correct.

DataAndControlFlowWithoutRuntimeCheck 

Use predicate to control both data and control flow, but modify the trip count so that a runtime overflow check can be avoided and such that the scalar epilogue loop can always be removed.

DataWithEVL 

Use predicated EVL instructions for tail-folding.

Indicates that VP intrinsics should be used.

Definition at line 166 of file TargetTransformInfo.h.

◆ TensorType

enum class llvm::TensorType
strong
Enumerator
Invalid 
_TENSOR_TYPE_ENUM_MEMBERS 
Total 

Definition at line 50 of file TensorSpec.h.

◆ ThinOrFullLTOPhase

enum class llvm::ThinOrFullLTOPhase
strong

This enumerates the LLVM full LTO or ThinLTO optimization phases.

Enumerator
None 

No LTO/ThinLTO behavior needed.

ThinLTOPreLink 

ThinLTO prelink (summary) phase.

ThinLTOPostLink 

ThinLTO postlink (backend compile) phase.

FullLTOPreLink 

Full LTO prelink phase.

FullLTOPostLink 

Full LTO postlink (backend compile) phase.

Definition at line 76 of file Pass.h.

◆ ThreadPriority

enum class llvm::ThreadPriority
strong
Enumerator
Background 

Lower the current thread's priority as much as possible.

Can be used for long-running tasks that are not time critical; more energy- efficient than Low.

Low 

Lower the current thread's priority such that it does not affect foreground tasks significantly.

This is a good default for long- running, latency-insensitive tasks to make sure cpu is not hogged by this task.

Default 

Restore the current thread's priority to default scheduling priority.

Definition at line 240 of file Threading.h.

◆ ToolsetLayout

enum class llvm::ToolsetLayout
strong
Enumerator
OlderVS 
VS2017OrNewer 
DevDivInternal 

Definition at line 30 of file MSVCPaths.h.

◆ TransformationMode

The mode sets how eager a transformation should be applied.

Enumerator
TM_Unspecified 

The pass can use heuristics to determine whether a transformation should be applied.

TM_Enable 

The transformation should be applied without considering a cost model.

TM_Disable 

The transformation should not be applied.

TM_Force 

Force is a flag and should not be used alone.

TM_ForcedByUser 

The transformation was directed by the user, e.g.

by a #pragma in the source code. If the transformation could not be applied, a warning should be emitted.

TM_SuppressedByUser 

The transformation must not be applied.

For instance, #pragma clang loop unroll(disable) explicitly forbids any unrolling to take place. Unlike general loop metadata, it must not be dropped. Most passes should not behave differently under TM_Disable and TM_SuppressedByUser.

Definition at line 275 of file LoopUtils.h.

◆ UnitKind

enum class llvm::UnitKind
strong
Enumerator
Skeleton 
Full 

Definition at line 43 of file DwarfCompileUnit.h.

◆ UseCaptureKind

enum class llvm::UseCaptureKind
strong

Types of use capture kinds, see DetermineUseCaptureKind.

Enumerator
NO_CAPTURE 
MAY_CAPTURE 
PASSTHROUGH 

Definition at line 109 of file CaptureTracking.h.

◆ UWTableKind

enum class llvm::UWTableKind
strong
Enumerator
None 

No unwind table requested.

Sync 

"Synchronous" unwind tables

Async 

"Asynchronous" unwind tables (instr precise)

Default 

Definition at line 120 of file CodeGen.h.

◆ VariableID

enum class llvm::VariableID : unsigned
strong

Type wrapper for integer ID for Variables. 0 is reserved.

Enumerator
Reserved 

Definition at line 26 of file AssignmentTrackingAnalysis.h.

◆ VFISAKind

enum class llvm::VFISAKind
strong

Describes the type of Instruction Set Architecture.

Enumerator
AdvancedSIMD 
SVE 
SSE 
AVX 
AVX2 
AVX512 
LLVM 
Unknown 

Definition at line 44 of file VFABIDemangler.h.

◆ VFParamKind

enum class llvm::VFParamKind
strong

Describes the type of Parameters.

Enumerator
Vector 
OMP_Linear 
OMP_LinearRef 
OMP_LinearVal 
OMP_LinearUVal 
OMP_LinearPos 
OMP_LinearValPos 
OMP_LinearRefPos 
OMP_LinearUValPos 
OMP_Uniform 
GlobalPredicate 
Unknown 

Definition at line 25 of file VFABIDemangler.h.

◆ VMOVModImmType

Enumerator
VMOVModImm 
VMVNModImm 
MVEVMVNModImm 
OtherModImm 

Definition at line 999 of file ARMISelLowering.h.

◆ X86MachineCombinerPattern

Enumerator
DPWSSD 

Definition at line 30 of file X86InstrInfo.h.

Function Documentation

◆ __deregister_frame()

void llvm::__deregister_frame ( void *  )

◆ __register_frame()

void llvm::__register_frame ( void *  )

◆ AArch64PACKeyIDToString()

static StringRef llvm::AArch64PACKeyIDToString ( AArch64PACKey::ID  KeyID)
inlinestatic

Return 2-letter identifier string for numeric key ID.

Definition at line 829 of file AArch64BaseInfo.h.

References llvm::AArch64PACKey::DA, llvm::AArch64PACKey::DB, llvm::AArch64PACKey::IA, llvm::AArch64PACKey::IB, and llvm_unreachable.

Referenced by llvm::AArch64AuthMCExpr::printImpl().

◆ AArch64StringToPACKeyID()

static std::optional< AArch64PACKey::ID > llvm::AArch64StringToPACKeyID ( StringRef  Name)
inlinestatic

Return numeric key ID for 2-letter identifier string.

Definition at line 845 of file AArch64BaseInfo.h.

References llvm::AArch64PACKey::DA, llvm::AArch64PACKey::DB, llvm::AArch64PACKey::IA, llvm::AArch64PACKey::IB, and Name.

◆ AArch64StringToVectorLayout()

static AArch64Layout::VectorLayout llvm::AArch64StringToVectorLayout ( StringRef  LayoutStr)
inlinestatic

◆ AArch64VectorLayoutToString()

static const char * llvm::AArch64VectorLayoutToString ( AArch64Layout::VectorLayout  Layout)
inlinestatic

◆ abs()

APFloat llvm::abs ( APFloat  X)
inline

Returns the absolute value of the argument.

Definition at line 1381 of file APFloat.h.

References X.

Referenced by isValidLSDoubleOffset().

◆ AbsoluteDifference()

template<typename T >
std::enable_if_t< std::is_unsigned_v< T >, T > llvm::AbsoluteDifference ( T  X,
T  Y 
)

Subtract two unsigned integers, X and Y, of type T and return the absolute value of the result.

Definition at line 469 of file MathExtras.h.

References X, and Y.

Referenced by llvm::xray::profileFromTrace(), and llvm::msf::MappedBlockStream::readBytes().

◆ adaptNoAliasScopes()

void llvm::adaptNoAliasScopes ( llvm::Instruction I,
const DenseMap< MDNode *, MDNode * > &  ClonedScopes,
LLVMContext Context 
)

Adapt the metadata for the specified instruction according to the provided mapping.

This is normally used after cloning an instruction, when some noalias scopes needed to be cloned.

Definition at line 1164 of file CloneFunction.cpp.

References Context, llvm::MDNode::get(), I, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::lookup(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by cloneAndAdaptNoAliasScopes(), and llvm::JumpThreadingPass::cloneInstructions().

◆ add16()

static void llvm::add16 ( uint8_t *  p,
int16_t  v 
)
static

◆ addAssumptions() [1/2]

bool llvm::addAssumptions ( CallBase CB,
const DenseSet< StringRef > &  Assumptions 
)

Appends the set of assumptions Assumptions to \CB.

Definition at line 100 of file Assumptions.cpp.

◆ addAssumptions() [2/2]

bool llvm::addAssumptions ( Function F,
const DenseSet< StringRef > &  Assumptions 
)

Appends the set of assumptions Assumptions to \F.

Definition at line 96 of file Assumptions.cpp.

References F.

◆ addClonedBlockToLoopInfo()

const Loop * llvm::addClonedBlockToLoopInfo ( BasicBlock OriginalBB,
BasicBlock ClonedBB,
LoopInfo LI,
NewLoopsMap NewLoops 
)

Adds ClonedBB to LoopInfo, creates a new loop for ClonedBB if necessary and adds a mapping from the original loop to the new loop to NewLoops.

Returns nullptr if no new loop was created and a pointer to the original loop OriginalBB was part of otherwise.

Definition at line 147 of file LoopUnroll.cpp.

References llvm::LoopBase< BlockT, LoopT >::addBasicBlockToLoop(), llvm::LoopBase< BlockT, LoopT >::addChildLoop(), llvm::LoopInfoBase< BlockT, LoopT >::addTopLevelLoop(), llvm::LoopInfoBase< BlockT, LoopT >::AllocateLoop(), assert(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), llvm::LoopBase< BlockT, LoopT >::getParentLoop(), and llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::lookup().

Referenced by CloneLoopBlocks(), UnrollAndJamLoop(), and UnrollLoop().

◆ addConstantPoolReference()

static const MachineInstrBuilder & llvm::addConstantPoolReference ( const MachineInstrBuilder MIB,
unsigned  CPI,
unsigned  GlobalBaseReg,
unsigned char  OpFlags 
)
inlinestatic

addConstantPoolReference - This function is used to add a reference to the base of a constant value spilled to the per-function constant pool.

The reference uses the abstract ConstantPoolIndex which is retained until either machine code emission or assembly output. In PIC mode on x86-32, the GlobalBaseReg parameter can be used to make this a GlobalBaseReg-relative reference.

Definition at line 223 of file X86InstrBuilder.h.

References llvm::MachineInstrBuilder::addConstantPoolIndex(), llvm::MachineInstrBuilder::addImm(), and llvm::MachineInstrBuilder::addReg().

◆ addDiffRuntimeChecks()

Value * llvm::addDiffRuntimeChecks ( Instruction Loc,
ArrayRef< PointerDiffInfo Checks,
SCEVExpander Expander,
function_ref< Value *(IRBuilderBase &, unsigned)>  GetVF,
unsigned  IC 
)

◆ addDirectMem()

static const MachineInstrBuilder & llvm::addDirectMem ( const MachineInstrBuilder MIB,
unsigned  Reg 
)
inlinestatic

addDirectMem - This function is used to add a direct memory reference to the current instruction – that is, a dereference of an address in a register, with no scale, index or displacement.

An example is: DWORD PTR [EAX].

Definition at line 124 of file X86InstrBuilder.h.

References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), and Reg.

◆ addEnumValues()

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 llvm::addEnumValues ( EnumTy1  LHS,
EnumTy2  RHS 
)
constexpr

Helper which adds two underlying types of enumeration type.

Implicit conversion to a common type is accepted.

Definition at line 188 of file STLExtras.h.

References LHS, and RHS.

◆ addFrameReference() [1/4]

static const MachineInstrBuilder & llvm::addFrameReference ( const MachineInstrBuilder MIB,
int  FI 
)
inlinestatic

◆ addFrameReference() [2/4]

static const MachineInstrBuilder & llvm::addFrameReference ( const MachineInstrBuilder MIB,
int  FI,
int  Offset = 0 
)
inlinestatic

addFrameReference - This function is used to add a reference to the base of an abstract object on the stack frame of the current function.

This reference has base register as the FrameIndex offset until it is resolved. This allows a constant offset to be specified as well...

Definition at line 198 of file X86InstrBuilder.h.

References llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addMemOperand(), addOffset(), llvm::MachinePointerInfo::getFixedStack(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getMachineMemOperand(), llvm::MachineFrameInfo::getObjectAlign(), llvm::MachineFrameInfo::getObjectSize(), llvm::MCInstrDesc::mayLoad(), llvm::MCInstrDesc::mayStore(), MI, llvm::MachineMemOperand::MOLoad, llvm::MachineMemOperand::MONone, llvm::MachineMemOperand::MOStore, and Offset.

◆ addFrameReference() [3/4]

static const MachineInstrBuilder & llvm::addFrameReference ( const MachineInstrBuilder MIB,
int  FI,
int  Offset = 0,
bool  mem = true 
)
inlinestatic

◆ addFrameReference() [4/4]

static const MachineInstrBuilder & llvm::addFrameReference ( const MachineInstrBuilder MIB,
int  FI,
int  Offset = 0,
bool  ThreeOp = true 
)
inlinestatic

addFrameReference - This function is used to add a reference to the base of an abstract object on the stack frame of the current function.

This reference has base register as the FrameIndex offset until it is resolved. This allows a constant offset to be specified as well...

Definition at line 32 of file VEInstrBuilder.h.

References llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addImm(), and Offset.

◆ addFullAddress()

static const MachineInstrBuilder & llvm::addFullAddress ( const MachineInstrBuilder MIB,
const X86AddressMode AM 
)
inlinestatic

◆ addInnerLoopsToHeadersMap()

template<class BlockT , class LoopT >
void llvm::addInnerLoopsToHeadersMap ( DenseMap< BlockT *, const LoopT * > &  LoopHeaders,
const LoopInfoBase< BlockT, LoopT > &  LI,
const LoopT &  L 
)

◆ addLiveIns()

void llvm::addLiveIns ( MachineBasicBlock MBB,
const LivePhysRegs LiveRegs 
)

Adds registers contained in LiveRegs to the block live-in list of MBB.

Does not add reserved registers.

Definition at line 259 of file LivePhysRegs.cpp.

References llvm::MachineBasicBlock::addLiveIn(), any_of(), assert(), llvm::MachineBasicBlock::getParent(), llvm::MachineFunction::getRegInfo(), llvm::MachineBasicBlock::livein_empty(), MBB, MRI, and TRI.

Referenced by computeAndAddLiveIns(), and llvm::MachineBasicBlock::splitAt().

◆ addLocationToRemarks()

void llvm::addLocationToRemarks ( OptimizationRemark Remark,
DebugLoc  DLoc 
)

Add location info to ORE message.

Definition at line 464 of file InlineAdvisor.cpp.

References First, llvm::DebugLoc::get(), Name, Offset, and Remark.

Referenced by emitInlinedInto().

◆ addNumImm()

void llvm::addNumImm ( const APInt Imm,
MachineInstrBuilder MIB 
)

◆ addOffset() [1/2]

static const MachineInstrBuilder & llvm::addOffset ( const MachineInstrBuilder MIB,
const MachineOperand Offset 
)
inlinestatic

◆ addOffset() [2/2]

static const MachineInstrBuilder & llvm::addOffset ( const MachineInstrBuilder MIB,
int  Offset 
)
inlinestatic

◆ AddOverflow()

template<typename T >
std::enable_if_t< std::is_signed_v< T >, T > llvm::AddOverflow ( T  X,
T  Y,
T Result 
)

Add two signed integers, computing the two's complement truncated result, returning true if overflow occurred.

Definition at line 571 of file MathExtras.h.

References X, and Y.

Referenced by addWithOverflow(), llvm::detail::CheckedInt::operator+(), and llvm::InstructionCost::operator+=().

◆ addPredicatedMveVpredNOp()

void llvm::addPredicatedMveVpredNOp ( MachineInstrBuilder MIB,
unsigned  Cond 
)

◆ addPredicatedMveVpredROp()

void llvm::addPredicatedMveVpredROp ( MachineInstrBuilder MIB,
unsigned  Cond,
unsigned  Inactive 
)

◆ addRegOffset()

static const MachineInstrBuilder & llvm::addRegOffset ( const MachineInstrBuilder MIB,
unsigned  Reg,
bool  isKill,
int  Offset 
)
inlinestatic

addRegOffset - This function is used to add a memory reference of the form [Reg + Offset], i.e., one with no scale or index, but with a displacement.

An example is: DWORD PTR [EAX + 4].

Definition at line 157 of file X86InstrBuilder.h.

References addOffset(), llvm::MachineInstrBuilder::addReg(), getKillRegState(), Offset, and Reg.

Referenced by llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::X86FrameLowering::emitEpilogue(), llvm::X86TargetLowering::EmitInstrWithCustomInserter(), llvm::X86FrameLowering::emitPrologue(), llvm::X86FrameLowering::emitSPUpdate(), and llvm::X86FrameLowering::restoreWin32EHStackPointers().

◆ addRegReg()

static const MachineInstrBuilder & llvm::addRegReg ( const MachineInstrBuilder MIB,
unsigned  Reg1,
bool  isKill1,
unsigned  Reg2,
bool  isKill2 
)
inlinestatic

addRegReg - This function is used to add a memory reference of the form: [Reg + Reg].

Definition at line 164 of file X86InstrBuilder.h.

References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), and getKillRegState().

Referenced by llvm::X86InstrInfo::convertToThreeAddress().

◆ addressSpaceToStorageClass()

SPIRV::StorageClass::StorageClass llvm::addressSpaceToStorageClass ( unsigned  AddrSpace,
const SPIRVSubtarget STI 
)

◆ addRuntimeChecks()

Value * llvm::addRuntimeChecks ( 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.

Returns the final comparator value or NULL if no check is needed.

Definition at line 1820 of file LoopUtils.cpp.

References A, assert(), B, Check, llvm::IRBuilderBase::CreateAnd(), llvm::IRBuilderBase::CreateICmpSLT(), llvm::IRBuilderBase::CreateICmpULT(), llvm::IRBuilderBase::CreateOr(), expandBounds(), llvm::Value::getContext(), llvm::Module::getDataLayout(), llvm::Instruction::getModule(), HoistRuntimeChecks, and llvm::IRBuilderBase::SetInsertPoint().

Referenced by llvm::LoopVersioning::versionLoop().

◆ addStringImm() [1/3]

void llvm::addStringImm ( const StringRef Str,
IRBuilder<> &  B,
std::vector< Value * > &  Args 
)

Definition at line 67 of file SPIRVUtils.cpp.

References B, convertCharsToWord(), and getPaddedLen().

◆ addStringImm() [2/3]

void llvm::addStringImm ( const StringRef Str,
MachineInstrBuilder MIB 
)

◆ addStringImm() [3/3]

void llvm::addStringImm ( const StringRef Str,
MCInst Inst 
)

◆ addStringMetadataToLoop()

void llvm::addStringMetadataToLoop ( Loop TheLoop,
const char StringMD,
unsigned  V = 0 
)

◆ addUnpredicatedMveVpredNOp()

void llvm::addUnpredicatedMveVpredNOp ( MachineInstrBuilder MIB)

◆ addUnpredicatedMveVpredROp()

void llvm::addUnpredicatedMveVpredROp ( MachineInstrBuilder MIB,
Register  DestReg 
)

◆ adjustPqBits()

static unsigned llvm::adjustPqBits ( const MCInst Inst,
unsigned  Value,
unsigned  PBitShift,
unsigned  QBitShift 
)
static

◆ adl_begin()

template<typename RangeT >
constexpr auto llvm::adl_begin ( RangeT &&  range) -> decltype(adl_detail::begin_impl(std::forward<RangeT>(range)))
constexpr

◆ adl_end()

template<typename RangeT >
constexpr auto llvm::adl_end ( RangeT &&  range) -> decltype(adl_detail::end_impl(std::forward<RangeT>(range)))
constexpr

◆ adl_rbegin()

template<typename RangeT >
constexpr auto llvm::adl_rbegin ( RangeT &&  range) -> decltype(adl_detail::rbegin_impl(std::forward<RangeT>(range)))
constexpr

Returns the reverse-begin iterator to range using std::rbegin and function found through Argument-Dependent Lookup (ADL).

Definition at line 94 of file ADL.h.

References llvm::adl_detail::rbegin_impl().

Referenced by reverse().

◆ adl_rend()

template<typename RangeT >
constexpr auto llvm::adl_rend ( RangeT &&  range) -> decltype(adl_detail::rend_impl(std::forward<RangeT>(range)))
constexpr

Returns the reverse-end iterator to range using std::rend and functions found through Argument-Dependent Lookup (ADL).

Definition at line 102 of file ADL.h.

References llvm::adl_detail::rend_impl().

Referenced by reverse().

◆ adl_size()

template<typename RangeT >
constexpr auto llvm::adl_size ( RangeT &&  range) -> decltype(adl_detail::size_impl(std::forward<RangeT>(range)))
constexpr

Returns the size of range using std::size and functions found through Argument-Dependent Lookup (ADL).

Definition at line 118 of file ADL.h.

References llvm::adl_detail::size_impl().

Referenced by range_size().

◆ adl_swap()

template<typename T >
constexpr void llvm::adl_swap ( T &&  lhs,
T &&  rhs 
)
constexprnoexcept

Swaps lhs with rhs using std::swap and functions found through Argument-Dependent Lookup (ADL).

Definition at line 110 of file ADL.h.

References llvm::adl_detail::swap_impl().

◆ alignAddr()

uintptr_t llvm::alignAddr ( const void *  Addr,
Align  Alignment 
)
inline

◆ alignDown()

uint64_t llvm::alignDown ( uint64_t  Value,
uint64_t  Align,
uint64_t  Skew = 0 
)
inline

◆ alignTo() [1/6]

constexpr TypeSize llvm::alignTo ( TypeSize  Size,
uint64_t  Align 
)
inlineconstexpr

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.

Align must be non-zero.

Similar to the alignTo functions in MathExtras.h

Definition at line 398 of file TypeSize.h.

References assert(), and Size.

◆ alignTo() [2/6]

uint64_t llvm::alignTo ( uint64_t  Size,
Align  A 
)
inline

Returns a multiple of A needed to store Size bytes.

Definition at line 155 of file Alignment.h.

References A, and Size.

Referenced by llvm::StringTableBuilder::add(), addByteCountSuffix(), llvm::codeview::DebugChecksumsSubsection::addChecksum(), addData(), llvm::trailing_objects_internal::TrailingObjectsImpl< Align, BaseTy, TopTrailingObj, PrevTy, NextTy, MoreTys... >::additionalSizeToAllocImpl(), addSection(), llvm::objcopy::coff::addSection(), AdjustStackOffset(), alignAddr(), llvm::memtag::alignAndPadAlloca(), llvm::LegalizeRuleSet::alignNumElementsTo(), llvm::TargetFrameLowering::alignSPAdjust(), alignTo(), llvm::orc::MapperJITLinkMemoryManager::allocate(), llvm::jitlink::InProcessMemoryManager::allocate(), llvm::AMDGPUMachineFunction::allocateLDSGlobal(), llvm::SITargetLowering::allocatePreloadKernArgSGPRs(), llvm::CCState::AllocateStack(), analyzeArguments(), llvm::AMDGPUTargetLowering::analyzeFormalArgumentsCompute(), analyzeReturnValues(), llvm::CSKYAsmBackend::applyFixup(), llvm::LoongArchAsmBackend::applyFixup(), llvm::RISCVAsmBackend::applyFixup(), llvm::jitlink::aarch32::applyFixupThumb(), areRuntimeChecksProfitable(), llvm::X86FrameLowering::assignCalleeSavedSpillSlots(), llvm::RISCVFrameLowering::assignCalleeSavedSpillSlots(), buildCopyToRegs(), buildFatArchList(), buildFrameType(), buildRPathLoadCommand(), calculateDiSymbolStreamSize(), llvm::codeview::DebugSubsectionRecordBuilder::calculateSerializedLength(), llvm::pdb::DbiModuleDescriptorBuilder::calculateSerializedLength(), llvm::pdb::HashTable< ValueT >::calculateSerializedLength(), CalculateStackSlotUsed(), callBufferedPrintfStart(), llvm::VNCoercion::canCoerceMustAliasedValueToLoad(), CC_AArch64_Custom_Block(), CC_AIX(), CC_ARM_AAPCS_Custom_Aggregate(), llvm::codeview::DebugSubsectionRecordBuilder::commit(), computeAllocationSizeForSections(), ComputeLinkerOptionsLoadCommandSize(), computeMemberData(), llvm::MachObjectWriter::computeSectionAddresses(), llvm::RuntimeDyldImpl::computeTotalAllocSize(), llvm::jitlink::SimpleSegmentAlloc::Create(), llvm::orc::LocalIndirectStubsInfo< ORCABI >::create(), llvm::objcopy::coff::createGnuDebugLinkSectionContents(), llvm::gsym::GsymCreator::createSegment(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::PPCFrameLowering::determineFrameLayout(), determineSVEStackObjectOffsets(), divideCeil(), llvm::AArch64FrameLowering::eliminateCallFramePseudoInstr(), llvm::MSP430FrameLowering::eliminateCallFramePseudoInstr(), llvm::XCoreFrameLowering::eliminateCallFramePseudoInstr(), llvm::SIFrameLowering::eliminateCallFramePseudoInstr(), llvm::Thumb1FrameLowering::eliminateCallFramePseudoInstr(), llvm::M68kFrameLowering::eliminateCallFramePseudoInstr(), llvm::X86FrameLowering::eliminateCallFramePseudoInstr(), llvm::AsmPrinter::emitConstantPool(), llvm::DWARFYAML::emitDebugAranges(), llvm::M68kFrameLowering::emitEpilogue(), llvm::X86FrameLowering::emitEpilogue(), llvm::CodeViewContext::emitFileChecksums(), emitGlobalConstantLargeInt(), llvm::AMDGPU::HSAMD::MetadataStreamerMsgPackV4::emitHiddenKernelArgs(), llvm::AMDGPU::HSAMD::MetadataStreamerMsgPackV5::emitHiddenKernelArgs(), llvm::AMDGPU::HSAMD::MetadataStreamerMsgPackV4::emitKernelArg(), llvm::M68kFrameLowering::emitPrologue(), llvm::RISCVFrameLowering::emitPrologue(), llvm::SparcFrameLowering::emitPrologue(), llvm::VEFrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), llvm::BPFSelectionDAGInfo::EmitTargetCodeForMemcpy(), emitThumbRegPlusImmediate(), EnsureStackAlignment(), llvm::LegalizerHelper::equalizeVectorShuffleLengths(), llvm::MachineFrameInfo::estimateStackSize(), llvm::MipsFrameLowering::estimateStackSize(), llvm::DWARFDebugNames::Header::extract(), llvm::orc::EPCGenericJITLinkMemoryManager::InFlightAlloc::finalize(), llvm::orc::EPCGenericRTDyldMemoryManager::finalizeMemory(), llvm::SparcSubtarget::getAdjustedFrameSize(), llvm::VESubtarget::getAdjustedFrameSize(), llvm::CCState::getAlignedCallFrameSize(), llvm::AArch64FunctionInfo::getCalleeSavedStackSize(), llvm::jitlink::BasicLayout::getContiguousPageBasedLayoutSizes(), getCoverTy(), llvm::RuntimeDyldCOFF::getDLLImportOffset(), llvm::AMDGPUSubtarget::getExplicitKernArgSize(), getFixedObjectSize(), llvm::R600FrameLowering::getFrameIndexReference(), llvm::AMDGPUTargetLowering::getImplicitParameterOffset(), llvm::orc::getIndirectStubsBlockSizes(), getInputSegmentList(), M68kDisassembler::getInstruction(), llvm::ARMBaseInstrInfo::getInstSizeInBytes(), llvm::X86TTIImpl::getIntImmCost(), llvm::AMDGPUSubtarget::getKernArgSegmentSize(), getMaxBitmapSize(), llvm::HexagonTTIImpl::getMemoryOpCost(), llvm::object::ArchiveMemberHeader::getNextChildLoc(), llvm::objcopy::coff::getNextRVA(), llvm::AMDGPU::IsaInfo::getNumWavesPerEUWithNumVGPRs(), llvm::object::BigArchiveMemberHeader::getRawName(), llvm::pdb::DbiModuleDescriptor::getRecordLength(), llvm::object::BigArchiveMemberHeader::getSize(), llvm::X86InstrInfo::getSPAdjust(), llvm::RISCVFrameLowering::getStackSizeWithRVVPadding(), llvm::AMDGPU::getTotalNumVGPRs(), llvm::DataLayout::getTypeAllocSize(), getUUID(), llvm::GCNRegPressure::getVGPRNum(), llvm::AArch64FrameLowering::getWinEHFuncletFrameSize(), llvm::MipsTargetLowering::HandleByVal(), llvm::CCState::HandleByVal(), INITIALIZE_PASS(), initializeOptionalHeader(), llvm::orc::MachOBuilder< MachOTraits >::layout(), layoutCOFF(), layoutSections(), layoutSectionsForOnlyKeepDebug(), layoutSegments(), loadBinaryFormat(), llvm::RuntimeDyldImpl::loadObjectImpl(), llvm::NVPTXTargetLowering::LowerCall(), llvm::AArch64CallLowering::lowerCall(), llvm::MipsCallLowering::lowerCall(), llvm::VETargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_64(), llvm::AArch64CallLowering::lowerFormalArguments(), llvm::MipsCallLowering::lowerFormalArguments(), llvm::AMDGPUCallLowering::lowerFormalArgumentsKernel(), lowerKernelArguments(), llvm::AMDGPUCallLowering::lowerTailCall(), offsetToAlignment(), llvm::MDNode::operator new(), llvm::VarStreamArrayExtractor< T >::operator()(), llvm::VarStreamArrayExtractor< codeview::DebugSubsectionRecord >::operator()(), llvm::raw_ostream::operator<<(), pad(), llvm::BinaryStreamReader::padToAlignment(), llvm::BinaryStreamWriter::padToAlignment(), performOptimizedStructLayout(), llvm::AArch64FrameLowering::processFunctionBeforeFrameFinalized(), llvm::SystemZXPLINKFrameLowering::processFunctionBeforeFrameFinalized(), llvm::RuntimeDyldELF::processRelocationRef(), readGSIHashBuckets(), llvm::BitstreamCursor::readRecord(), llvm::jitlink::relaxAlign(), llvm::orc::EPCGenericRTDyldMemoryManager::reserveAllocationSpace(), llvm::BitVector::reset(), scavengeStackSlot(), serializePublic(), llvm::BitVector::set(), llvm::AMDGPUMachineFunction::setDynLDSAlign(), setSectionType(), sizeOfPublic(), llvm::BitstreamCursor::skipRecord(), tagGlobalDefinition(), updateLoadCommandPayloadString(), llvm::StrOffsetsContributionDescriptor::validateContributionSize(), VarAndRedzoneSize(), llvm::LegalizeMutations::widenScalarOrEltToNextMultipleOf(), llvm::object::OffloadBinary::write(), writeArchiveToStream(), llvm::MachObjectWriter::writeObject(), llvm::pdb::writeSparseBitVector(), llvm::orc::OrcAArch64::writeTrampolines(), llvm::orc::OrcRiscv64::writeTrampolines(), and llvm::orc::OrcLoongArch64::writeTrampolines().

◆ alignTo() [3/6]

uint64_t llvm::alignTo ( uint64_t  Size,
Align  A,
uint64_t  Skew 
)
inline

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.

If Skew is larger than A, its value is adjusted to 'Skew mod A'.

Examples:

alignTo(5, Align(8), 7) = 7
alignTo(17, Align(8), 1) = 17
alignTo(~0LL, Align(8), 3) = 3
uint64_t alignTo(uint64_t Size, Align A)
Returns a multiple of A needed to store Size bytes.
Definition: Alignment.h:155
This struct is a compact representation of a valid (non-zero power of two) alignment.
Definition: Alignment.h:39

Definition at line 180 of file Alignment.h.

References A, alignTo(), and Size.

◆ alignTo() [4/6]

template<uint64_t Align>
constexpr uint64_t llvm::alignTo ( uint64_t  Value)
inlineconstexpr

Returns the next integer (mod 2**64) that is greater than or equal to Value and is a multiple of Align.

Align must be non-zero.

Definition at line 411 of file MathExtras.h.

◆ alignTo() [5/6]

uint64_t llvm::alignTo ( uint64_t  Value,
uint64_t  Align 
)
inline

Returns the next integer (mod 2**64) that is greater than or equal to Value and is a multiple of Align.

Align must be non-zero.

Examples:

alignTo(5, 8) = 8
alignTo(17, 8) = 24
alignTo(~0LL, 8) = 0
alignTo(321, 255) = 510

Definition at line 377 of file MathExtras.h.

References assert().

◆ alignTo() [6/6]

uint64_t llvm::alignTo ( uint64_t  Value,
uint64_t  Align,
uint64_t  Skew 
)
inline

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.

If Skew is larger than A, its value is adjusted to 'Skew mod A'. Align must be non-zero.

Examples:

alignTo(5, 8, 7) = 7
alignTo(17, 8, 1) = 17
alignTo(~0LL, 8, 3) = 3
alignTo(321, 255, 42) = 552

Definition at line 403 of file MathExtras.h.

References alignTo(), and assert().

◆ alignToPowerOf2()

uint64_t llvm::alignToPowerOf2 ( uint64_t  Value,
uint64_t  Align 
)
inline

◆ all_equal() [1/2]

template<typename R >
bool llvm::all_equal ( R &&  Range)

Returns true if all elements in Range are equal or when the Range is empty.

Definition at line 2031 of file STLExtras.h.

References adl_begin(), adl_end(), and End.

◆ all_equal() [2/2]

template<typename T >
bool llvm::all_equal ( std::initializer_list< T Values)

◆ all_of()

template<typename R , typename UnaryPredicate >
bool llvm::all_of ( R &&  range,
UnaryPredicate  P 
)

Provide wrappers to std::all_of which take ranges instead of having to pass begin/end explicitly.

Definition at line 1722 of file STLExtras.h.

References adl_begin(), adl_end(), and P.

Referenced by llvm::slpvectorizer::BoUpSLP::ShuffleCostEstimator::add(), llvm::ResourceSegments::add(), llvm::Loc::MMI::addFrameIndexExpr(), addNoUndefAttrs(), llvm::DebugLocEntry::addValues(), llvm::ConstraintSystem::addVariableRow(), llvm::ConstraintSystem::addVariableRowFill(), allCallersPassValidPointerForArgument(), allConstant(), llvm::ISD::allOperandsUndef(), allSameBlock(), allSameType(), allZeroIndices(), llvm::BitVector::apply(), llvm::LoopNest::areAllLoopsRotatedForm(), llvm::LoopNest::areAllLoopsSimplifyForm(), areAllOperandsNonInsts(), llvm::X86TTIImpl::areInlineCompatible(), areLoadedOffsetButOtherwiseSame(), areTypesABICompatible(), blockEndIsUnreachable(), llvm::MachineIRBuilder::buildInstr(), buildModuleSummaryIndex(), llvm::SwitchInstProfUpdateWrapper::buildProfBranchWeightsMD(), llvm::LoopVectorizationCostModel::calculateRegisterUsage(), llvm::ValueInfo::canAutoHide(), canConvertToMinOrMaxIntrinsic(), canLowerToLDG(), canonicalizeShuffleMaskWithHorizOp(), canPeel(), canRemat(), canSinkInstructions(), canTrackGlobalVariableInterprocedurally(), canTRE(), llvm::LoopVectorizationLegality::canVectorizeFPMath(), llvm::slpvectorizer::BoUpSLP::canVectorizeLoads(), llvm::LoopVectorizationCostModel::canVectorizeReductions(), llvm::Attributor::checkForAllReturnedValues(), checkLoopsStructure(), llvm::SCEVExpanderCleaner::cleanup(), clusterSortPtrAccesses(), combineAnd(), combineBitcastvxi1(), combineConcatVectorOfShuffleAndItsOperands(), combineConcatVectorOps(), combineExtractVectorElt(), combineHorizOpWithShuffle(), combineINSERT_SUBVECTOR(), combineShuffleToZeroExtendVectorInReg(), combineX86ShuffleChain(), combineX86ShufflesRecursively(), completeEphemeralValues(), llvm::slpvectorizer::BoUpSLP::computeMinimumValueSizes(), computePointerICmp(), ConstantFoldGetElementPtr(), ConstantFoldInstruction(), ConstantFoldShuffleVectorInstruction(), containsOnlyConstantData(), llvm::OpenMPIRBuilder::createOrderedDepend(), llvm::OpenMPIRBuilder::createReductions(), doesNotNeedToSchedule(), doesStoreDominatesAllLatches(), dropTypeTests(), llvm::BitstreamWriter::emitBlob(), llvm::InstrEmitter::EmitDbgInstrRef(), LiveDebugValues::MLocTracker::emitLoc(), llvm::VPReplicateRecipe::execute(), llvm::HexagonInstrInfo::expandPostRAPseudo(), filterDeadComdatFunctions(), llvm::DebugLocEntry::finalize(), llvm::RISCVInstrInfo::finalizeInsInstrs(), findBestNonTrivialUnswitchCandidate(), findReturnsToZap(), llvm::slpvectorizer::BoUpSLP::findReusedOrderedScalars(), llvm::InstCombinerImpl::foldBinopWithPhiOperands(), FoldBranchToCommonDest(), FoldBUILD_VECTOR(), foldCONCAT_VECTORS(), llvm::SelectionDAG::FoldConstantArithmetic(), foldGEPChainAsStructAccess(), llvm::InstCombinerImpl::foldICmpWithConstant(), llvm::InstCombinerImpl::foldIntegerTypedPHI(), llvm::InstCombinerImpl::foldPHIArgIntToPtrToPHI(), formSplatFromShuffles(), functionWillReturn(), llvm::AttributeList::get(), llvm::ScalarEvolution::getAddRecExpr(), llvm::RecordKeeper::getAllDerivedDefinitions(), getGEPCosts(), getHeaders(), llvm::AArch64RegisterBankInfo::getInstrMapping(), llvm::X86TTIImpl::getMemoryOpCost(), llvm::TargetLowering::getNegatedExpression(), getPerfectShuffleCost(), llvm::slpvectorizer::BoUpSLP::getReorderingData(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::AArch64TTIImpl::getShuffleCost(), getShuffleDemandedElts(), llvm::Constant::getSplatValue(), llvm::slpvectorizer::BoUpSLP::getTreeCost(), getV4X86ShuffleImm(), llvm::SelectionDAG::getVectorShuffle(), llvm::InstCombinerImpl::handlePotentiallyDeadBlocks(), llvm::Function::hasAddressTaken(), llvm::Loop::hasLoopInvariantOperands(), hasOnlySelectUsers(), hasPartialIVCondition(), hoistGEP(), hoistLockstepIdenticalDbgVariableRecords(), hoistRegion(), llvm::SCEVUnionPredicate::implies(), impliesPoison(), IncomingValuesAreCompatible(), llvm::yaml::ScalarTraits< FixedSizeHex< N > >::input(), insert1BitVector(), llvm::SCEVUnionPredicate::isAlwaysTrue(), isAsciiString(), llvm::IRSimilarity::isClose(), isCommutative(), llvm::PHINode::isComplete(), llvm::ConstraintSystem::isConditionImplied(), isDeadRecipe(), llvm::ValueInfo::isDSOLocal(), isEphemeralValueOf(), isFullDominator(), isFullPostDominator(), isGuaranteedNotToBeUndefOrPoison(), llvm::SelectionDAG::isGuaranteedNotToBeUndefOrPoison(), llvm::TargetLowering::isGuaranteedNotToBeUndefOrPoisonForTargetNode(), isHeader(), isHorizontalBinOp(), isKnownNonZeroFromOperator(), isKnownToBeAPowerOfTwo(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), llvm::Loop::isLCSSAForm(), isLoopDead(), isLowHalfOnly(), llvm::ShuffleVectorInst::isOneUseSingleSourceMask(), isOnlyUsedInZeroEqualityComparison(), llvm::Loop::isRecursivelyLCSSAForm(), isReplicationMaskWithParams(), llvm::MachineRegisterInfo::isReservedRegUnit(), isReverseOrder(), isSafeToMoveBefore(), llvm::IRSimilarity::IRSimilarityCandidate::isSimilar(), llvm::orc::SpeculateQuery::isStraightLine(), isTargetShuffleEquivalent(), llvm::slpvectorizer::BoUpSLP::isTreeTinyAndNotFullyVectorizable(), isUndefInRange(), isUndefOrEqual(), isUndefOrEqualInRange(), isUndefOrInRange(), isUndefOrZeroInRange(), isUndefOrZeroOrInRange(), llvm::LoopVectorizationLegality::isUniform(), llvm::vputils::isUniformAfterVectorization(), isUsedOutsideBlock(), isVariantApplicableInContextHelper(), llvm::jitlink::JITLinkerBase::linkPhase1(), LowerBUILD_VECTOR_i1(), lowerBuildVectorAsBroadcast(), llvm::AArch64TargetLowering::lowerInterleavedStore(), lowerShuffleAsLanePermuteAndShuffle(), lowerV4F64Shuffle(), LowerVECTOR_SHUFFLE(), lowerVECTOR_SHUFFLE(), LowerVSETCC(), llvm::PatternMatch::m_ZeroMask::match(), llvm::PatternMatch::m_SplatOrUndefMask::match(), llvm::MCInstPrinter::matchAliasPatterns(), llvm::CombinerHelper::matchAllExplicitUsesAreUndef(), llvm::CombinerHelper::matchCombineInsertVecElts(), llvm::CombinerHelper::matchUndefShuffleVectorMask(), MatchVectorAllEqualTest(), llvm::TargetInstrInfo::mergeOutliningCandidateAttributes(), moveLCSSAPhis(), llvm::slpvectorizer::BoUpSLP::ShuffleInstructionBuilder::needToDelay(), llvm::vputils::onlyFirstLaneUsed(), llvm::VPBlendRecipe::onlyFirstLaneUsed(), llvm::vputils::onlyFirstPartUsed(), operator==(), optimizeDivRem(), partitionShuffleOfConcats(), performConcatVectorsCombine(), llvm::AMDGPUTargetLowering::performMulCombine(), llvm::ARMTargetLowering::PerformMVETruncCombine(), llvm::VPlan::prepareToExecute(), llvm::InstCombinerImpl::prepareWorklist(), llvm::X86InstrInfo::preservesZeroValueInReg(), PrintShuffleMask(), promoteLoopAccessesToScalars(), pushAddIntoCmovOfConsts(), llvm::SDValue::reachesChainWithoutSideEffects(), recognizeBSwapOrBitReverseIdiom(), TransferTracker::redefVar(), llvm::LazyCallGraph::RefSCC::removeInternalRefEdge(), llvm::slpvectorizer::BoUpSLP::reorderBottomToTop(), reorderOrder(), llvm::slpvectorizer::BoUpSLP::reorderTopToBottom(), llvm::LoopVectorizationCostModel::requiresScalarEpilogue(), rewritePHIs(), runAttributorLightOnFunctions(), runAttributorOnFunctions(), runIPSCCP(), shiftAmountKnownInRange(), shouldSplitOnPredicatedArgument(), ShouldUseSwitchConditionAsTableIndex(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), llvm::X86TargetLowering::SimplifyDemandedVectorEltsForTargetNode(), simplifyGEPInst(), simplifyInstructionWithOperands(), llvm::X86TargetLowering::SimplifyMultipleUseDemandedBitsForTargetNode(), simplifyShuffleVectorInst(), simplifyUsingControlFlow(), simplifyX86varShift(), sinkLastInstruction(), sinkLoopInvariantInstructions(), llvm::InnerLoopVectorizer::sinkScalarOperands(), sinkScalarOperands(), sortPtrAccesses(), llvm::Function::stealArgumentListFrom(), StrengthenNoWrapFlags(), stripDebugLocFromLoopID(), SwitchToLookupTable(), llvm::VPlanTransforms::truncateToMinimalBitwidths(), llvm::HexagonShuffler::tryAuction(), tryInterleave(), tryToFindRegisterToRename(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), turnVectorIntoSplatVector(), llvm::RecordRecTy::typeIsConvertibleTo(), unswitchNontrivialInvariants(), unswitchTrivialSwitch(), llvm::mca::Instruction::updateDispatched(), llvm::ARMFrameLowering::updateLRRestored(), llvm::mca::Instruction::updatePending(), validThroughout(), llvm::SIInstrInfo::verifyInstruction(), verifyRegionRec(), verifySubExpr(), llvm::InstCombinerImpl::visitPHINode(), llvm::InstCombinerImpl::visitSwitchInst(), wouldInstructionBeTriviallyDead(), llvm::coverage::CoverageMappingWriter::write(), and llvm::TimeTraceProfiler::write().

◆ all_of_zip()

template<typename... ArgsAndPredicate>
bool llvm::all_of_zip ( ArgsAndPredicate &&...  argsAndPredicate)

Compare two zipped ranges using the provided predicate (as last argument).

Return true if all elements satisfy the predicate and false otherwise.

Definition at line 2454 of file STLExtras.h.

References llvm::detail::all_of_zip_predicate_last().

◆ allocate_buffer()

LLVM_ATTRIBUTE_RETURNS_NONNULL LLVM_ATTRIBUTE_RETURNS_NOALIAS void * llvm::allocate_buffer ( size_t  Size,
size_t  Alignment 
)

Allocate a buffer of memory with the given size and alignment.

When the compiler supports aligned operator new, this will use it to handle even over-aligned allocations.

However, this doesn't make any attempt to leverage the fancier techniques like posix_memalign due to portability. It is mostly intended to allow compatibility with platforms that, after aligned allocation was added, use reduced default alignment.

Definition at line 15 of file MemAlloc.cpp.

References Size.

Referenced by llvm::MallocAllocator::Allocate(), and llvm::detail::UniqueFunctionBase< ReturnT, ParamTs >::UniqueFunctionBase().

◆ allocateAllRegClasses()

static bool llvm::allocateAllRegClasses ( const TargetRegisterInfo ,
const TargetRegisterClass  
)
inlinestatic

Default register class filter function for register allocation.

All virtual registers should be allocated.

Definition at line 24 of file RegAllocCommon.h.

◆ allocValueProfData()

static std::unique_ptr< ValueProfData > llvm::allocValueProfData ( uint32_t  TotalSize)
static

Definition at line 1143 of file InstrProf.cpp.

◆ allocValueProfDataInstrProf()

ValueProfData * llvm::allocValueProfDataInstrProf ( size_t  TotalSizeInBytes)

Definition at line 1048 of file InstrProf.cpp.

◆ analyzeArguments()

template<typename ArgT >
static void llvm::analyzeArguments ( TargetLowering::CallLoweringInfo CLI,
const Function F,
const DataLayout TD,
const SmallVectorImpl< ArgT > &  Args,
SmallVectorImpl< CCValAssign > &  ArgLocs,
CCState CCInfo,
bool  Tiny 
)
static

Analyze incoming and outgoing function arguments.

We need custom C++ code to handle special constraints in the ABI. In addition, all pieces of a certain argument have to be passed either using registers or the stack but never mixing both.

Definition at line 1240 of file AVRISelLowering.cpp.

References llvm::CCState::addLoc(), alignTo(), llvm::CCState::AllocateReg(), llvm::CCState::AllocateStack(), assert(), llvm::CCValAssign::Full, llvm::DataLayout::getABITypeAlign(), llvm::CCState::getContext(), llvm::CCValAssign::getMem(), llvm::CCValAssign::getReg(), llvm::MVT::getStoreSize(), llvm::DataLayout::getTypeAllocSize(), llvm::EVT::getTypeForEVT(), llvm_unreachable, Offset, Reg, RegList16AVR, RegList16Tiny, RegList8AVR, RegList8Tiny, and llvm::ArrayRef< T >::size().

◆ analyzeContextInfo()

static void llvm::analyzeContextInfo ( const DWARFDie DIE,
unsigned  ParentIdx,
CompileUnit CU,
DeclContext CurrentDeclContext,
DeclContextTree Contexts,
uint64_t  ModulesEndOffset,
DWARFLinkerBase::SwiftInterfacesMapTy ParseableSwiftInterfaces,
std::function< void(const Twine &, const DWARFDie &)>  ReportWarning 
)
static

Recursive helper to build the global DeclContext information and gather the child->parent relationships in the original compile unit.

This function uses the same work list approach as lookForDIEsToKeep.

Returns
true when this DIE and all of its children are only forward declarations to types defined in external clang modules (i.e., forward declarations that are children of a DW_TAG_module).

Definition at line 293 of file DWARFLinker.cpp.

References AnalyzeContextInfo, analyzeImportedModule(), llvm::DWARFDie::children(), llvm::ContextWorklistItem::Context, llvm::ContextWorklistItem::Die, llvm::DWARFDie::find(), llvm::dwarf_linker::classic::DeclContextTree::getChildDeclContext(), llvm::DWARFDie::getTag(), Idx, Info, llvm::ContextWorklistItem::InImportedModule, llvm::ContextWorklistItem::OtherInfo, llvm::ContextWorklistItem::ParentIdx, reverse(), llvm::dwarf::toString(), llvm::ContextWorklistItem::Type, UpdateChildPruning, updateChildPruning(), UpdatePruning, and updatePruning().

Referenced by llvm::dwarf_linker::classic::DWARFLinker::link().

◆ analyzeICmp()

static void llvm::analyzeICmp ( ScalarEvolution SE,
ICmpInst ICmp,
ConditionInfo &  Cond,
const Loop L 
)
static

◆ analyzeImportedModule()

static void llvm::analyzeImportedModule ( const DWARFDie DIE,
CompileUnit CU,
DWARFLinkerBase::SwiftInterfacesMapTy ParseableSwiftInterfaces,
std::function< void(const Twine &, const DWARFDie &)>  ReportWarning 
)
static

◆ analyzeKnownBitsFromAndXorOr()

KnownBits llvm::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).

Definition at line 947 of file ValueTracking.cpp.

References Depth, llvm::APInt::getAllOnes(), getKnownBitsFromAndXorOr(), and I.

Referenced by llvm::InstCombinerImpl::SimplifyDemandedUseBits(), and llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits().

◆ AnalyzePhysRegInBundle()

PhysRegInfo llvm::AnalyzePhysRegInBundle ( const MachineInstr MI,
Register  Reg,
const TargetRegisterInfo TRI 
)

◆ analyzeReturnValues()

template<typename ArgT >
static void llvm::analyzeReturnValues ( const SmallVectorImpl< ArgT > &  Args,
CCState CCInfo,
bool  Tiny 
)
static

Analyze incoming and outgoing value of returning from a function.

The algorithm is similar to analyzeArguments, but there can only be one value, possibly an aggregate, and it is limited to 8 bytes.

Definition at line 1333 of file AVRISelLowering.cpp.

References llvm::CCState::addLoc(), alignTo(), llvm::CCState::AllocateReg(), assert(), llvm::CCValAssign::Full, llvm::CCValAssign::getReg(), llvm::MVT::getStoreSize(), getTotalArgumentsSizeInBytes(), llvm_unreachable, Reg, RegList16AVR, RegList16Tiny, RegList8AVR, and RegList8Tiny.

◆ AnalyzeVirtRegInBundle()

VirtRegInfo llvm::AnalyzeVirtRegInBundle ( MachineInstr MI,
Register  Reg,
SmallVectorImpl< std::pair< MachineInstr *, unsigned > > *  Ops = nullptr 
)

AnalyzeVirtRegInBundle - Analyze how the current instruction or bundle uses a virtual register.

This function should not be called after operator++(), it expects a fresh iterator.

Parameters
RegThe virtual register to analyze.
OpsWhen set, this vector will receive an (MI, OpNum) entry for each operand referring to Reg.
Returns
A filled-in RegInfo struct.

Definition at line 278 of file MachineInstrBundle.cpp.

References llvm::MachineOperand::getParent(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isReg(), llvm::MachineInstr::isRegTiedToDefOperand(), MI, llvm::VirtRegInfo::Reads, llvm::MachineOperand::readsReg(), llvm::VirtRegInfo::Tied, and llvm::VirtRegInfo::Writes.

Referenced by foldInlineAsmMemOperand(), and getInstReadLaneMask().

◆ AnalyzeVirtRegLanesInBundle()

std::pair< LaneBitmask, LaneBitmask > llvm::AnalyzeVirtRegLanesInBundle ( 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.

Definition at line 309 of file MachineInstrBundle.cpp.

References llvm::MachineOperand::getReg(), llvm::MachineOperand::getSubReg(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUndef(), llvm::MachineOperand::isUse(), MI, MRI, SubReg, and TRI.

◆ AnnotateInlinePassName()

std::string llvm::AnnotateInlinePassName ( InlineContext  IC)

◆ annotateValueSite() [1/2]

void llvm::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.

This function will not annotate !prof metadata on the instruction if the referenced array is empty.

Definition at line 1245 of file InstrProf.cpp.

References llvm::MDBuilder::createConstant(), llvm::MDBuilder::createString(), llvm::ArrayRef< T >::empty(), llvm::MDNode::get(), llvm::Type::getInt32Ty(), llvm::Type::getInt64Ty(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::Instruction::setMetadata().

◆ annotateValueSite() [2/2]

void llvm::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.

Annotate up to MaxMDCount (default 3) number of records per value site.

Definition at line 1229 of file InstrProf.cpp.

References annotateValueSite(), llvm::InstrProfRecord::getNumValueDataForSite(), and llvm::InstrProfRecord::getValueForSite().

Referenced by annotateValueSite(), and updateIDTMetaData().

◆ any_cast() [1/5]

template<class T >
T llvm::any_cast ( Any &&  Value)

Definition at line 148 of file Any.h.

◆ any_cast() [2/5]

template<class T >
T llvm::any_cast ( Any Value)

Definition at line 143 of file Any.h.

◆ any_cast() [3/5]

template<class T >
T * llvm::any_cast ( Any Value)

Definition at line 160 of file Any.h.

◆ any_cast() [4/5]

template<class T >
T llvm::any_cast ( const Any Value)

Definition at line 138 of file Any.h.

◆ any_cast() [5/5]

template<class T >
const T * llvm::any_cast ( const Any Value)

Definition at line 153 of file Any.h.

◆ any_of()

template<typename R , typename UnaryPredicate >
bool llvm::any_of ( R &&  range,
UnaryPredicate  P 
)

Provide wrappers to std::any_of which take ranges instead of having to pass begin/end explicitly.

Definition at line 1729 of file STLExtras.h.

References adl_begin(), adl_end(), and P.

Referenced by llvm::Instruction::addAnnotationMetadata(), addIntrinsicToSummary(), addLiveIns(), llvm::DwarfExpression::addMachineRegExpression(), llvm::slpvectorizer::BoUpSLP::ShuffleCostEstimator::adjustExtracts(), llvm::slpvectorizer::BoUpSLP::ShuffleInstructionBuilder::adjustExtracts(), llvm::Bitset< NumBits >::any(), llvm::BitVector::any(), llvm::FeatureBitset::any(), llvm::DIExpression::appendOpsToArg(), areInnerLoopExitPHIsSupported(), llvm::AArch64TTIImpl::areTypesABICompatible(), llvm::MultiHazardRecognizer::atIssueLimit(), llvm::DebugHandlerBase::beginFunction(), llvm::AArch64InstrInfo::buildOutlinedFrame(), llvm::ARMBaseInstrInfo::buildOutlinedFrame(), buildVRegToDbgValueMap(), callHasFloatingPointArgument(), callHasFP128Argument(), llvm::AutoInitRemark::canHandle(), canHoistIVInc(), canLoopBeDeleted(), canonicalizeShuffleMaskWithHorizOp(), canRenameUpToDef(), canRotateDeoptimizingLatchExit(), canSinkInstructions(), llvm::LoopVectorizationLegality::canVectorizeFPMath(), checkDenormalAttributeConsistency(), checkForMustTailInVarArgFn(), checkFunctionsAttributeConsistency(), checkLoopsStructure(), clusterSortPtrAccesses(), collectUnswitchCandidates(), collectVirtualRegUses(), combineExtractFromVectorLoad(), combineExtractWithShuffle(), combineShiftToMULH(), combineX86ShufflesRecursively(), llvm::IRSimilarity::IRSimilarityCandidate::compareStructure(), computeDeadSymbolsAndUpdateIndirectCalls(), llvm::slpvectorizer::BoUpSLP::computeMinimumValueSizes(), computeMinimumValueSizes(), containsEpilogue(), containsGCPtrType(), llvm::DIExpression::convertToVariadicExpression(), LiveDebugValues::DbgValue::DbgValue(), llvm::DbgValueLoc::DbgValueLoc(), directlyImpliesPoison(), doesInTreeUserNeedToExtract(), dontUseFastISelFor(), ehAwareSplitEdge(), llvm::InstrEmitter::EmitDbgInstrRef(), llvm::DwarfDebug::emitDebugLocValue(), llvm::CodeViewContext::emitLineTableForFunction(), emitSelectPseudo(), emitThumbRegPlusImmInReg(), llvm::logicalview::LVCompare::execute(), llvm::CodeExtractor::extractCodeRegion(), llvm::AArch64CallLowering::fallBackToDAGISel(), llvm::objcopy::elf::ELFWriter< ELFT >::finalize(), findDefsUsedOutsideOfLoop(), findForkedSCEVs(), llvm::sys::Process::FindInEnvPath(), findNextInsertLocation(), llvm::slpvectorizer::BoUpSLP::findReusedOrderedScalars(), fixupDebugInfoPostExtraction(), FoldCondBranchOnValueKnownInPredecessorImpl(), foldExtractSubvectorFromShuffleVector(), llvm::TargetFolder::FoldGEP(), llvm::ConstantFolder::FoldGEP(), llvm::InstCombinerImpl::foldIntegerTypedPHI(), FoldTwoEntryPHINode(), forAllMIsUntilDef(), llvm::TargetTransformInfoImplBase::getArithmeticInstrCost(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), getCommonExitBlock(), llvm::SCCPInstVisitor::getConstantOrNull(), llvm::LoopBase< BlockT, LoopT >::getExitingBlock(), getFauxShuffleMask(), getFreezeInsertPt(), llvm::SIInstrInfo::getGenericInstructionUniformity(), llvm::AArch64RegisterBankInfo::getInstrMapping(), llvm::PPCRegisterBankInfo::getInstrMapping(), llvm::RISCVRegisterBankInfo::getInstrMapping(), llvm::X86RegisterBankInfo::getInstrMapping(), llvm::SIInstrInfo::getInstructionUniformity(), llvm::AArch64TTIImpl::getIntrinsicInstrCost(), llvm::GCNTTIImpl::getIntrinsicInstrCost(), getIntrinsicNameImpl(), getInvertedVectorForFMA(), llvm::TargetLowering::getNegatedExpression(), llvm::DOTGraphTraits< BoUpSLP * >::getNodeLabel(), llvm::SCEVAddRecExpr::getNumIterationsInRange(), getOpcode(), llvm::symbolize::LLVMSymbolizer::getOrCreateModuleInfo(), llvm::slpvectorizer::BoUpSLP::getReorderingData(), getSameOpcode(), llvm::AArch64TTIImpl::getShuffleCost(), llvm::X86TTIImpl::getShuffleCost(), getSplatIndex(), getTargetConstantBitsFromNode(), llvm::BasicTTIImplBase< T >::getTypeBasedIntrinsicInstrCost(), llvm::AMDGPUTTIImpl::getUnrollingPreferences(), llvm::ARMTTIImpl::getUnrollingPreferences(), getVectorSplat(), llvm::SIInstrInfo::hasAnyModifiersSet(), hasAutoInitMetadata(), llvm::object::ObjectFile::hasDebugInfo(), llvm::MachineInstr::hasDebugOperandForReg(), llvm::mca::InstructionBase::hasDependentUsers(), hasHugeExpression(), llvm::HexagonShuffler::HasInstWith(), llvm::MachineInstr::hasOrderedMemoryRef(), hasPartialIVCondition(), llvm::LoopVectorizationPlanner::hasPlanWithVF(), hasSameValue(), llvm::VPlan::hasScalableVF(), hasSideeffectFreeStaticResolution(), hasTiedUseOf(), hasUsersIn(), llvm::SIInstrInfo::hasVGPRUses(), hoistAndMergeSGPRInits(), llvm::SCEVUnionPredicate::implies(), insertIfNotContained(), insertSpills(), isAddressBase(), llvm::AArch64RegisterInfo::isAnyArgRegReserved(), isAnyArgRegReserved(), llvm::slpvectorizer::BoUpSLP::isAnyGathered(), isAnyInRange(), llvm::outliner::Candidate::isAnyUnavailableAcrossOrOutOfSeq(), isAnyZero(), llvm::X86RegisterInfo::isArgumentRegister(), isBufferFatPtrConst(), isCycleInvariant(), isEarlyClobberMI(), llvm::CodeExtractor::isEligible(), llvm::AArch64CallLowering::isEligibleForTailCallOptimization(), llvm::AMDGPUCallLowering::isEligibleForTailCallOptimization(), llvm::AArch64InstrInfo::isFpOrNEON(), llvm::AArch64_MC::isFpOrNEON(), isGuaranteedNotToBeUndefOrPoison(), llvm::AArch64InstrInfo::isHForm(), llvm::AArch64_MC::isHForm(), isHorizontalBinOp(), llvm::LoopVectorizationLegality::isInvariantAddressOfReduction(), llvm::LoopVectorizationLegality::isInvariantStoreOfReduction(), llvm::DbgVariableRecord::isKillLocation(), llvm::RawLocationWrapper::isKillLocation(), llvm::AArch64InstrInfo::isLdStPairSuppressed(), isLoopDead(), isLoopVariantIndirectAddress(), isLRSpilled(), llvm::ARMBaseInstrInfo::isMBBSafeToOutlineFrom(), llvm::AArch64InstrInfo::isMBBSafeToSplitToCold(), isNZCVTouchedInInstructionRange(), llvm::Instruction::isOnlyUserOfAnyOperand(), llvm::SDNode::isOperandOf(), isOverflowIntrinsicNoWrap(), llvm::PreservedCFGCheckerInstrumentation::CFG::isPoisoned(), llvm::AArch64InstrInfo::isQForm(), llvm::AArch64_MC::isQForm(), isRegLiveIn(), isSafeToMoveBefore(), isSafeToUnrollAndJam(), isSpecialPass(), llvm::AArch64InstrInfo::isStridedAccess(), llvm::RecordRecTy::isSubClassOf(), llvm::slpvectorizer::BoUpSLP::isTreeTinyAndNotFullyVectorizable(), llvm::SelectionDAG::isUndef(), llvm::LiveRange::isUndefIn(), isUpperSubvectorUndef(), isUseMIInFoldList(), llvm::AA::isValidAtPosition(), isVariableIndexable(), isVectorOp(), lowerBuildVectorToBitOp(), LowerDbgDeclare(), llvm::RISCVTargetLowering::LowerFormalArguments(), llvm::RISCVTargetLowering::LowerReturn(), lowerV8I16Shuffle(), lowerVECTOR_SHUFFLE(), makePostTransformationMetadata(), llvm::CombinerHelper::matchAnyExplicitUseIsUndef(), llvm::CombinerHelper::matchEqualDefs(), mayBeVisibleThroughUnwinding(), llvm::AliasSet::mergeSetIn(), mustExecuteUBIfPoisonOnPathTo(), llvm::InsertFunctionStrategy::mutate(), llvm::sys::unicode::nameToGeneratedCodePoint(), llvm::PHITransAddr::needsPHITranslationFromBlock(), optimizeCallInst(), llvm::slpvectorizer::BoUpSLP::optimizeGatherSequence(), outputHasNonPHI(), llvm::AttrBuilder::overlaps(), llvm::RISCVISAInfo::parseArchString(), llvm::RISCVISAInfo::parseNormalizedArchString(), passingValueIsAlwaysUndefined(), peelToTurnInvariantLoadsDerefencebale(), PerformVECREDUCE_ADDCombine(), llvm::SMDiagnostic::print(), llvm::JumpThreadingPass::processBranchOnXOR(), profitableToRotateLoopExitingLatch(), llvm::SwiftErrorValueTracking::propagateVRegs(), rematerializeLiveValuesAtUses(), removeRedundantCanonicalIVs(), removeUndefDbgLocsFromEntryBlock(), llvm::slpvectorizer::BoUpSLP::VLOperands::reorder(), llvm::HexagonShuffler::restrictPreferSlot3(), rewriteLoopExitValues(), llvm::DevirtSCCRepeatedPass::run(), GCEmptyBasicBlocks::runOnMachineFunction(), llvm::MipsInstrInfo::SafeInLoadDelaySlot(), llvm::SelectionDAGISel::SelectCodeCommon(), llvm::LoopVectorizationCostModel::selectInterleaveCount(), setBranchWeights(), llvm::AArch64RegisterInfo::shouldCoalesce(), llvm::HexagonRegisterInfo::shouldCoalesce(), shouldConvertOrWithNoCommonBitsToAdd(), llvm::VPReplicateRecipe::shouldPack(), llvm::MultiHazardRecognizer::ShouldPreferAnother(), llvm::AArch64TargetLowering::shouldSinkOperands(), llvm::AMDGPUTargetLowering::shouldSinkOperands(), llvm::ARMTargetLowering::shouldSinkOperands(), llvm::RISCVTargetLowering::shouldSinkOperands(), llvm::X86TargetLowering::shouldSinkOperands(), llvm::TargetLowering::SimplifyDemandedVectorElts(), llvm::X86TargetLowering::SimplifyDemandedVectorEltsForTargetNode(), simplifyFPOp(), simplifyGEPInst(), sinkLastInstruction(), llvm::ARMFrameLowering::spillCalleeSavedRegisters(), SplitKnownCriticalEdge(), stashEntryDbgValues(), stripNonValidData(), tailMergeBlocksWithSimilarFunctionTerminators(), tryToFindRegisterToRename(), tryToWidenSetCCOperands(), llvm::LegalityPredicates::typePairAndMemDescInSet(), UnrollLoop(), unswitchAllTrivialConditions(), UpdatePredRedefs(), updateValueInfoForIndirectCalls(), llvm::slpvectorizer::BoUpSLP::vectorizeTree(), verifyVPlanIsValid(), violatesLegacyMultiExitLoopCheck(), llvm::SelectionDAGBuilder::visitDbgInfo(), llvm::object::writeUniversalBinary(), and writtenBetween().

◆ append_range()

template<typename Container , typename Range >
void llvm::append_range ( Container &  C,
Range &&  R 
)

Wrapper function to append range R to container C.

C.insert(C.end(), R.begin(), R.end());

Definition at line 2073 of file STLExtras.h.

References adl_begin(), adl_end(), and llvm::CallingConv::C.

Referenced by addBasicBlockMetadata(), llvm::InstrProfWriter::addBinaryIds(), addBlockAndPredsToSet(), addData(), llvm::lowertypetests::GlobalLayoutBuilder::addFragment(), llvm::pdb::TpiStreamBuilder::addTypeRecords(), llvm::TargetLibraryInfoImpl::addVectorizableFunctions(), allUsersAreInFunction(), llvm::mca::Scheduler::analyzeResourcePressure(), llvm::pdb::NamedStreamMap::appendStringData(), llvm::ScalarEvolution::applyLoopGuards(), llvm::DominatorTreeBase< NodeT, IsPostDom >::applyUpdates(), llvm::AttrBuilder::AttrBuilder(), CleanupConstantGlobalUsers(), CleanupPointerRootUsers(), CloneAndPruneIntoFromInst(), collectEHScopeMembers(), llvm::DDGNode::collectInstructions(), collectLeaves(), collectUnswitchCandidates(), combineConcatVectorOfShuffleAndItsOperands(), llvm::rdf::Liveness::computePhiInfo(), ConcatListInits(), llvm::IRSimilarity::IRInstructionMapper::convertToUnsignedVec(), llvm::IRBuilderBase::CreateConstrainedFPCall(), llvm::DataDependenceGraph::DataDependenceGraph(), doPromotion(), emitSNPrintf(), emitSPrintf(), llvm::WinCFGuard::endFunction(), llvm::BitstreamCursor::EnterSubBlock(), llvm::BitstreamWriter::EnterSubblock(), llvm::rdf::DeadCodeElimination::erase(), llvm::yaml::escape(), findArgParts(), llvm::MustBeExecutedContextExplorer::findForwardJoinPoint(), llvm::DirectedGraph< NodeType, EdgeType >::findIncomingEdgesToNode(), llvm::SSAUpdaterTraits< SSAUpdater >::FindPredecessorBlocks(), llvm::SSAUpdaterTraits< MachineSSAUpdater >::FindPredecessorBlocks(), FixIrreducibleImpl(), llvm::BinOpInit::Fold(), llvm::InstCombinerImpl::foldFreezeIntoRecurrence(), forEachUser(), llvm::msf::MSFBuilder::generateLayout(), generateReproducer(), llvm::AttributeList::get(), llvm::ScalarEvolution::getAddExpr(), llvm::ScalarEvolution::getAddRecExpr(), llvm::rdf::Liveness::getAllReachingDefs(), getBaseType(), llvm::CacheCost::getCacheCost(), llvm::GraphDiff< NodePtr, InverseGraph >::getChildren(), llvm::SelectionDAG::getConstant(), llvm::DWARFContext::getDIEsForAddress(), llvm::GenericCycle< ContextT >::getExitBlocks(), llvm::MachineFunction::getFilterIDFor(), llvm::ReachingDefAnalysis::getGlobalUses(), llvm::RegisterBankInfo::getInstrPossibleMappings(), llvm::ScalarEvolution::getMinMaxExpr(), llvm::BasicAAResult::getModRefInfoMask(), llvm::ScalarEvolution::getMulExpr(), llvm::MemoryDependenceResults::getNonLocalCallDependency(), getObjCNamesIfSelector(), llvm::object::ELFObjectFileBase::getPltEntries(), GetRPOList(), getStatepointArgs(), getStatepointBundles(), llvm::ScalarEvolution::getUDivExactExpr(), getUnderlyingObjects(), llvm::coverage::CoverageMapping::getUniqueSourceFiles(), INITIALIZE_PASS(), InlineFunction(), insertLineSequence(), insertParsePoints(), isEphemeralValueOf(), isObjectSizeLessThanOrEq(), lle_X_printf(), llvm::LoopNest::LoopNest(), llvm::SelectionDAGBuilder::LowerAsSTATEPOINT(), llvm::ARMTargetLowering::lowerInterleavedStore(), llvm::AliasSet::mergeSetIn(), llvm::symbolize::MarkupParser::nextNode(), nodes_for_root(), llvm::OperandBundleDefT< InputTy >::OperandBundleDefT(), parseScalarValue(), push(), llvm::sampleprof::SampleProfileReaderGCC::readOneFunctionProfile(), recursivelyVisitUsers(), llvm::SMSchedule::reorderInstructions(), llvm::PlaceSafepointsPass::runImpl(), llvm::SelectionDAGISel::SelectInlineAsmMemoryOperands(), llvm::MachineRegisterInfo::setCalleeSavedRegs(), llvm::LoopVectorizationCostModel::setCostBasedWideningDecision(), llvm::orc::JITDylib::setLinkOrder(), llvm::msf::MSFBuilder::setStreamSize(), sinkInstruction(), llvm::AbstractDependenceGraphBuilder< GraphType >::sortNodesTopologically(), llvm::X86InstrInfo::unfoldMemoryOperand(), llvm::SelectionDAG::updateDivergence(), llvm::AddrLabelMap::UpdateForRAUWBlock(), usersDominator(), llvm::ScalarEvolution::verify(), verifyCTRBranch(), llvm::codeview::VFTableRecord::VFTableRecord(), llvm::InstCombinerImpl::visitGEPOfGEP(), writeFunctionTypeMetadataRecords(), and writeWholeProgramDevirtResolutionByArg().

◆ append_values()

template<typename Container , typename... Args>
void llvm::append_values ( Container &  C,
Args &&...  Values 
)

Appends all Values to container C.

Definition at line 2079 of file STLExtras.h.

References llvm::CallingConv::C, and range_size().

◆ appendArchToWindowsSDKLibPath()

bool llvm::appendArchToWindowsSDKLibPath ( int  SDKMajor,
llvm::SmallString< 128 >  LibPath,
llvm::Triple::ArchType  Arch,
std::string &  path 
)

◆ appendLoopsToWorklist() [1/2]

void llvm::appendLoopsToWorklist ( LoopInfo LI,
SmallPriorityWorklist< Loop *, 4 > &  Worklist 
)

Utility that implements appending of loops onto a worklist given LoopInfo.

Calls the templated utility taking a Range of loops, handing it the Loops in LoopInfo, iterated in reverse. This is because the loops are stored in RPO w.r.t. the control flow graph in LoopInfo. For the purpose of unrolling, loop deletion, and LICM, we largely want to work forward across the CFG so that we visit defs before uses and can propagate simplifications from one loop nest into the next. Calls appendReversedLoopsToWorklist with the already reversed loops in LI. FIXME: Consider changing the order in LoopInfo.

Definition at line 1693 of file LoopUtils.cpp.

References appendReversedLoopsToWorklist().

◆ appendLoopsToWorklist() [2/2]

template<typename RangeT >
void llvm::appendLoopsToWorklist ( RangeT &&  Loops,
SmallPriorityWorklist< Loop *, 4 > &  Worklist 
)

Utility that implements appending of loops onto a worklist given a range.

We want to process loops in postorder, but the worklist is a LIFO data structure, so we append to it in reverse postorder. For trees, a preorder traversal is a viable reverse postorder, so we actually append using a preorder walk algorithm.

Definition at line 1681 of file LoopUtils.cpp.

References appendReversedLoopsToWorklist(), Loops, and reverse().

Referenced by llvm::LPMUpdater::addChildLoops(), llvm::LPMUpdater::addSiblingLoops(), llvm::IRCEPass::run(), llvm::LoopAccessInfoPrinterPass::run(), llvm::FunctionToLoopPassAdaptor::run(), llvm::LoopUnrollPass::run(), sinkRegionForLoopNest(), and tryToUnrollAndJamLoop().

◆ appendReversedLoopsToWorklist()

template<typename RangeT >
void llvm::appendReversedLoopsToWorklist ( RangeT &&  Loops,
SmallPriorityWorklist< Loop *, 4 > &  Worklist 
)

Utility that implements appending of loops onto a worklist given a range.

Utility that implements appending of loops onto a worklist.

It has the same behavior as appendLoopsToWorklist, but assumes the range of loops has already been reversed, so it processes loops in the given order.

Loops are added in preorder (analogous for reverse postorder for trees), and the worklist is processed LIFO.

Definition at line 1656 of file LoopUtils.cpp.

References llvm::SmallVectorImpl< T >::append(), assert(), llvm::SmallVectorImpl< T >::clear(), llvm::SmallVectorBase< Size_T >::empty(), llvm::PriorityWorklist< T, VectorT, MapT >::insert(), Loops, llvm::SmallVectorImpl< T >::pop_back_val(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by appendLoopsToWorklist().

◆ appendToCompilerUsed()

void llvm::appendToCompilerUsed ( Module M,
ArrayRef< GlobalValue * >  Values 
)

◆ appendToGlobalCtors()

void llvm::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.

This wraps the function in the appropriate structure and stores it along side other global constructors. For details see https://llvm.org/docs/LangRef.html#the-llvm-global-ctors-global-variable

Definition at line 73 of file ModuleUtils.cpp.

References appendToGlobalArray(), and F.

Referenced by llvm::SanitizerStatReport::finish(), lowerGlobalIFuncUsersAsGlobalCtor(), and runImpl().

◆ appendToGlobalDtors()

void llvm::appendToGlobalDtors ( Module M,
Function F,
int  Priority,
Constant Data = nullptr 
)

Same as appendToGlobalCtors(), but for global dtors.

Definition at line 77 of file ModuleUtils.cpp.

References appendToGlobalArray(), and F.

◆ appendToUsed()

void llvm::appendToUsed ( Module M,
ArrayRef< GlobalValue * >  Values 
)

Adds global values to the llvm.used list.

Definition at line 113 of file ModuleUtils.cpp.

References appendToUsedList().

Referenced by llvm::sampleprofutil::createFSDiscriminatorVariable(), createSanitizerCtor(), and runImpl().

◆ applyDebugifyMetadata()

bool llvm::applyDebugifyMetadata ( Module M,
iterator_range< Module::iterator Functions,
StringRef  Banner,
std::function< bool(DIBuilder &, Function &)>  ApplyToMF 
)

Add synthesized debug information to a module.

Parameters
MThe module to add debug information to.
FunctionsA range of functions to add debug information to.
BannerA prefix string to add to debug/error messages.
ApplyToMFA call back that will add debug information to the MachineFunction for a Function. If nullptr, then the MachineFunction (if any) will not be modified.

Referenced by applyDebugify(), and NewPMDebugifyPass::run().

◆ ApplyExtTspWithoutProfile()

cl::opt< bool > llvm::ApplyExtTspWithoutProfile ( "ext-tsp-apply-without-profile"  ,
cl::desc("Whether to apply ext-tsp placement for instances w/o profile")  ,
cl::init(true ,
cl::Hidden   
)

◆ applyFlowInference() [1/2]

void llvm::applyFlowInference ( const ProfiParams Params,
FlowFunction Func 
)

Apply the profile inference algorithm for a given function and provided profi options.

Definition at line 1323 of file SampleProfileInference.cpp.

References Block, llvm::FlowJump::Flow, and llvm::FlowJump::Weight.

Referenced by llvm::SampleProfileInference< FT >::apply(), and applyFlowInference().

◆ applyFlowInference() [2/2]

void llvm::applyFlowInference ( FlowFunction Func)

◆ applyPPCha()

static uint16_t llvm::applyPPCha ( uint64_t  value)
inlinestatic

Definition at line 796 of file RuntimeDyldELF.cpp.

References value.

◆ applyPPChi()

static uint16_t llvm::applyPPChi ( uint64_t  value)
inlinestatic

Definition at line 792 of file RuntimeDyldELF.cpp.

References value.

◆ applyPPChigher()

static uint16_t llvm::applyPPChigher ( uint64_t  value)
inlinestatic

Definition at line 800 of file RuntimeDyldELF.cpp.

References value.

◆ applyPPChighera()

static uint16_t llvm::applyPPChighera ( uint64_t  value)
inlinestatic

Definition at line 804 of file RuntimeDyldELF.cpp.

References value.

◆ applyPPChighest()

static uint16_t llvm::applyPPChighest ( uint64_t  value)
inlinestatic

Definition at line 808 of file RuntimeDyldELF.cpp.

References value.

◆ applyPPChighesta()

static uint16_t llvm::applyPPChighesta ( uint64_t  value)
inlinestatic

Definition at line 812 of file RuntimeDyldELF.cpp.

References value.

◆ applyPPClo()

static uint16_t llvm::applyPPClo ( uint64_t  value)
inlinestatic

Definition at line 790 of file RuntimeDyldELF.cpp.

References value.

◆ archToDevDivInternalArch()

const char * llvm::archToDevDivInternalArch ( llvm::Triple::ArchType  Arch)

◆ archToLegacyVCArch()

const char * llvm::archToLegacyVCArch ( llvm::Triple::ArchType  Arch)

◆ archToWindowsSDKArch()

const char * llvm::archToWindowsSDKArch ( llvm::Triple::ArchType  Arch)

◆ areAllOperandsNonInsts()

static bool llvm::areAllOperandsNonInsts ( Value V)
static

Checks if the provided value does not require scheduling.

It does not require scheduling if this is not an instruction or it is an instruction that does not read/write memory and all operands are either not instructions or phi nodes or instructions from different blocks.

Definition at line 980 of file SLPVectorizer.cpp.

References all_of(), I, and mayHaveNonDefUseDependency().

Referenced by doesNotNeedToBeScheduled(), and doesNotNeedToSchedule().

◆ AreStatisticsEnabled()

bool llvm::AreStatisticsEnabled ( )

◆ ARMCondCodeFromString()

static unsigned llvm::ARMCondCodeFromString ( StringRef  CC)
inlinestatic

◆ ARMCondCodeToString()

static const char * llvm::ARMCondCodeToString ( ARMCC::CondCodes  CC)
inlinestatic

◆ ARMVectorCondCodeFromString()

static unsigned llvm::ARMVectorCondCodeFromString ( StringRef  CC)
inlinestatic

◆ ARMVPTPredToString()

static const char * llvm::ARMVPTPredToString ( ARMVCC::VPTCodes  CC)
inlinestatic

◆ array_pod_sort() [1/2]

template<class IteratorTy >
void llvm::array_pod_sort ( IteratorTy  Start,
IteratorTy  End 
)
inline

array_pod_sort - This sorts an array with the specified start and end extent.

This is just like std::sort, except that it calls qsort instead of using an inlined template. qsort is slightly slower than std::sort, but most sorts are not performance critical in LLVM and std::sort has to be template instantiated for each type, leading to significant measured code bloat. This function should generally be used instead of std::sort where possible.

This function assumes that you have simple POD-like types that can be compared with std::less and can be moved with memcpy. If this isn't true, you should use std::sort.

NOTE: If qsort_r were portable, we could allow a custom comparator and default to std::less.

Definition at line 1607 of file STLExtras.h.

References End, and get_array_pod_sort_comparator.

Referenced by CasesAreContiguous(), llvm::object::computeSymbolSizes(), llvm::X86TargetLowering::ExpandInlineAsm(), findArrayDimensions(), llvm::MachineModuleInfoImpl::getSortedStubs(), lowerV16I8Shuffle(), lowerV8I16GeneralSingleInputShuffle(), performOptimizedStructLayout(), llvm::PassNameParser::printOptionInfo(), llvm::TargetRegistry::printRegisteredTargetsForVersion(), setUsedInitializer(), llvm::JumpThreadingPass::simplifyPartiallyRedundantLoad(), llvm::InstCombinerImpl::SliceUpIllegalIntegerPHI(), sort(), sortOpts(), sortSubCommands(), and ValuesOverlap().

◆ array_pod_sort() [2/2]

template<class IteratorTy >
void llvm::array_pod_sort ( IteratorTy  Start,
IteratorTy  End,
int(*)(const typename std::iterator_traits< IteratorTy >::value_type *, const typename std::iterator_traits< IteratorTy >::value_type *)  Compare 
)
inline

Definition at line 1619 of file STLExtras.h.

References End.

◆ array_pod_sort_comparator()

template<typename T >
int llvm::array_pod_sort_comparator ( const void *  P1,
const void *  P2 
)
inline

Adapt std::less<T> for array_pod_sort.

Definition at line 1557 of file STLExtras.h.

◆ ArrayRef() [1/10]

template<typename T >
llvm::ArrayRef ( ArrayRef< T > &  Vec) -> ArrayRef< T >

Deduction guide to construct an ArrayRef from an ArrayRef.

◆ ArrayRef() [2/10]

template<typename T >
llvm::ArrayRef ( const ArrayRef< T > &  Vec) -> ArrayRef< T >

Deduction guide to construct an ArrayRef from an ArrayRef (const)

◆ ArrayRef() [3/10]

template<typename T , unsigned N>
llvm::ArrayRef ( const SmallVector< T, N > &  Vec) -> ArrayRef< T >

Deduction guide to construct an ArrayRef from a SmallVector.

◆ ArrayRef() [4/10]

template<typename T >
llvm::ArrayRef ( const SmallVectorImpl< T > &  Vec) -> ArrayRef< T >

Deduction guide to construct an ArrayRef from a SmallVector.

◆ ArrayRef() [5/10]

template<typename T , std::size_t N>
llvm::ArrayRef ( const std::array< T, N > &  Vec) -> ArrayRef< T >

Deduction guide to construct an ArrayRef from a std::array.

◆ ArrayRef() [6/10]

template<typename T >
llvm::ArrayRef ( const std::vector< T > &  Vec) -> ArrayRef< T >

Deduction guide to construct an ArrayRef from a std::vector.

◆ ArrayRef() [7/10]

template<typename T >
llvm::ArrayRef ( const T OneElt) -> ArrayRef< T >

◆ ArrayRef() [8/10]

template<typename T >
llvm::ArrayRef ( const T data,
const T end 
) -> ArrayRef< T >

Deduction guide to construct an ArrayRef from a range.

◆ ArrayRef() [9/10]

template<typename T >
llvm::ArrayRef ( const T data,
size_t  length 
) -> ArrayRef< T >

Deduction guide to construct an ArrayRef from a pointer and length.

◆ ArrayRef() [10/10]

template<typename T , size_t N>
llvm::ArrayRef ( const T(&)  Arr[N]) -> ArrayRef< T >

Deduction guide to construct an ArrayRef from a C array.

◆ AsmMacroMaxNestingDepth()

cl::opt< unsigned > llvm::AsmMacroMaxNestingDepth ( "asm-macro-max-nesting-depth"  ,
cl::init(20)  ,
cl::Hidden  ,
cl::desc("The maximum nesting depth allowed for assembly macros.")   
)

◆ assumeAligned()

Align llvm::assumeAligned ( uint64_t  Value)
inline

Treats the value 0 as a 1, so Align is always at least 1.

Definition at line 111 of file Alignment.h.

Referenced by llvm::AMDGPURegisterBankInfo::applyMappingDynStackAlloc(), and llvm::LegalizerHelper::lowerDynStackAlloc().

◆ atomicBarrierDroppedOnZero()

static bool llvm::atomicBarrierDroppedOnZero ( unsigned  Opcode)
inlinestatic

Definition at line 208 of file AArch64BaseInfo.h.

Referenced by llvm::AArch64InstPrinter::printInst().

◆ attributesPermitTailCall()

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

AllowDifferingSizes is an output parameter which, if forming a tail call is permitted, determines whether it's permitted only if the size of the caller's and callee's return types match exactly.

Definition at line 581 of file Analysis.cpp.

References llvm::AttrBuilder::contains(), F, I, and llvm::AttrBuilder::removeAttribute().

Referenced by returnTypeIsEligibleForTailCall().

◆ avoidZeroOffsetLandingPad()

void llvm::avoidZeroOffsetLandingPad ( MachineFunction MF)

◆ baseRegNeedsLoadStoreMask()

bool llvm::baseRegNeedsLoadStoreMask ( unsigned  Reg)

Definition at line 257 of file MipsNaClELFStreamer.cpp.

◆ bf_begin()

template<class T >
bf_iterator< T > llvm::bf_begin ( const T G)

Definition at line 148 of file BreadthFirstIterator.h.

References llvm::bf_iterator< GraphT, SetType, GT >::begin(), and G.

Referenced by breadth_first().

◆ bf_end()

template<class T >
bf_iterator< T > llvm::bf_end ( const T G)

Definition at line 152 of file BreadthFirstIterator.h.

References llvm::bf_iterator< GraphT, SetType, GT >::end(), and G.

Referenced by breadth_first().

◆ biasPhysReg()

int llvm::biasPhysReg ( const SUnit SU,
bool  isTop 
)

Minimize physical register live ranges.

Regalloc wants them adjacent to their physreg def/use.

FIXME: This is an unnecessary check on the critical path. Most are root/leaf copies which can be prescheduled. The rest (e.g. x86 MUL) could be bundled with the operation that produces or consumes the physreg. We'll do this when regalloc has support for parallel copies.

Definition at line 3444 of file MachineScheduler.cpp.

References llvm::SUnit::getInstr(), MI, llvm::SUnit::NumPredsLeft, and llvm::SUnit::NumSuccsLeft.

Referenced by llvm::GenericScheduler::tryCandidate(), llvm::GCNMaxILPSchedStrategy::tryCandidate(), and llvm::PPCPreRASchedStrategy::tryCandidate().

◆ binary_search() [1/2]

template<typename R , typename T >
auto llvm::binary_search ( R &&  Range,
T &&  Value 
)

Provide wrappers to std::binary_search which take ranges instead of having to pass begin/end explicitly.

Definition at line 1941 of file STLExtras.h.

References adl_begin(), and adl_end().

◆ binary_search() [2/2]

template<typename R , typename T , typename Compare >
auto llvm::binary_search ( R &&  Range,
T &&  Value,
Compare  C 
)

Definition at line 1947 of file STLExtras.h.

References adl_begin(), adl_end(), and llvm::CallingConv::C.

◆ bit_cast()

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 llvm::bit_cast ( const From from)
inlinenoexcept

Definition at line 89 of file bit.h.

Referenced by llvm::AArch64_AM::isSVEMaskOfIdenticalElements().

◆ bit_ceil()

template<typename T >
T llvm::bit_ceil ( T  Value)

Returns the smallest integral power of two no smaller than Value if Value is nonzero.

Returns 1 otherwise.

Ex. bit_ceil(5) == 8.

The return value is undefined if the input is larger than the largest power of two representable in T.

Definition at line 342 of file bit.h.

References T.

Referenced by combineShiftToAVG(), llvm::slpvectorizer::BoUpSLP::computeMinimumValueSizes(), computeMinimumValueSizes(), computeRecurrenceType(), llvm::OnDiskChainedHashTableGenerator< Info >::Emit(), llvm::EVT::getRoundIntegerType(), getVectorTypeBreakdownMVT(), llvm::TargetLowering::ShrinkDemandedOp(), sizeToSubRegIndex(), llvm::SmallDenseMap< KeyT, ValueT, InlineBuckets, KeyInfoT, BucketT >::SmallDenseMap(), and llvm::X86TargetLowering::targetShrinkDemandedConstant().

◆ bit_floor()

template<typename T >
T llvm::bit_floor ( T  Value)

◆ bit_width()

template<typename T >
int llvm::bit_width ( T  Value)

◆ BitcodeErrorCategory()

const std::error_category & llvm::BitcodeErrorCategory ( )

Definition at line 8048 of file BitcodeReader.cpp.

Referenced by make_error_code().

◆ breadth_first()

template<class T >
iterator_range< bf_iterator< T > > llvm::breadth_first ( const T G)

Definition at line 157 of file BreadthFirstIterator.h.

References bf_begin(), bf_end(), G, and make_range().

Referenced by llvm::CacheCost::getCacheCost(), and llvm::LoopNest::LoopNest().

◆ breakLoopBackedge()

void llvm::breakLoopBackedge ( Loop L,
DominatorTree DT,
ScalarEvolution SE,
LoopInfo LI,
MemorySSA MSSA 
)

Remove the backedge of the specified loop.

Handles loop nests and general loop structures subject to the precondition that the loop has no parent loop and has a single latch block. Preserves all listed analyses.

Definition at line 724 of file LoopUtils.cpp.

References llvm::DomTreeUpdater::applyUpdates(), assert(), changeToUnreachable(), llvm::Instruction::copyMetadata(), llvm::IRBuilderBase::CreateBr(), llvm::LoopInfo::erase(), llvm::ScalarEvolution::forgetBlockAndLoopDispositions(), llvm::ScalarEvolution::forgetLoop(), formLCSSARecursively(), and SplitEdge().

Referenced by breakBackedgeIfNotTaken(), and UnrollRuntimeLoopRemainder().

◆ buildAssumeFromInst()

AssumeInst * llvm::buildAssumeFromInst ( Instruction I)

Build a call to llvm.assume to preserve informations that can be derived from the given instruction.

If no information derived from I, this call returns null. The returned instruction is not inserted anywhere.

Definition at line 284 of file AssumeBundleBuilder.cpp.

References EnableKnowledgeRetention, and I.

◆ buildAssumeFromKnowledge()

AssumeInst * llvm::buildAssumeFromKnowledge ( 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.

Definition at line 309 of file AssumeBundleBuilder.cpp.

References llvm::Instruction::getModule().

Referenced by llvm::InstCombinerImpl::visitCallInst().

◆ buildAtomicCompareExchangeInst()

static bool llvm::buildAtomicCompareExchangeInst ( const SPIRV::IncomingCall Call,
const SPIRV::DemangledBuiltin Builtin,
unsigned  Opcode,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ buildAtomicFlagInst()

static bool llvm::buildAtomicFlagInst ( const SPIRV::IncomingCall Call,
unsigned  Opcode,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ buildAtomicFloatingRMWInst()

static bool llvm::buildAtomicFloatingRMWInst ( const SPIRV::IncomingCall Call,
unsigned  Opcode,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ buildAtomicInitInst()

static bool llvm::buildAtomicInitInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder 
)
static

◆ buildAtomicLoadInst()

static bool llvm::buildAtomicLoadInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ buildAtomicRMWInst()

static bool llvm::buildAtomicRMWInst ( const SPIRV::IncomingCall Call,
unsigned  Opcode,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ buildAtomicRMWValue()

Value * llvm::buildAtomicRMWValue ( AtomicRMWInst::BinOp  Op,
IRBuilderBase Builder,
Value Loaded,
Value Val 
)

◆ buildAtomicStoreInst()

static bool llvm::buildAtomicStoreInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ buildBarrierInst()

static bool llvm::buildBarrierInst ( const SPIRV::IncomingCall Call,
unsigned  Opcode,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ buildBoolRegister()

static std::tuple< Register, SPIRVType * > llvm::buildBoolRegister ( MachineIRBuilder MIRBuilder,
const SPIRVType ResultType,
SPIRVGlobalRegistry GR 
)
static

◆ buildBuiltinVariableLoad()

static Register llvm::buildBuiltinVariableLoad ( MachineIRBuilder MIRBuilder,
SPIRVType VariableType,
SPIRVGlobalRegistry GR,
SPIRV::BuiltIn::BuiltIn  BuiltinValue,
LLT  LLType,
Register  Reg = Register(0),
bool  isConst = true,
bool  hasLinkageTy = true 
)
static

◆ buildConstantIntReg()

static Register llvm::buildConstantIntReg ( uint64_t  Val,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR,
unsigned  BitWidth = 32 
)
static

◆ buildDbgValueForSpill() [1/2]

MachineInstr * llvm::buildDbgValueForSpill ( MachineBasicBlock BB,
MachineBasicBlock::iterator  I,
const MachineInstr Orig,
int  FrameIndex,
Register  SpillReg 
)

◆ buildDbgValueForSpill() [2/2]

MachineInstr * llvm::buildDbgValueForSpill ( MachineBasicBlock BB,
MachineBasicBlock::iterator  I,
const MachineInstr Orig,
int  FrameIndex,
SmallVectorImpl< const MachineOperand * > &  SpilledOperands 
)

◆ buildDuplicateError()

Error llvm::buildDuplicateError ( const std::pair< uint64_t, UnitIndexEntry > &  PrevE,
const CompileUnitIdentifiers ID,
StringRef  DWPName 
)

Definition at line 523 of file DWP.cpp.

References buildDWODescription().

Referenced by write().

◆ buildEnqueueKernel()

static bool llvm::buildEnqueueKernel ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ buildIDToString()

static std::string llvm::buildIDToString ( BuildIDRef  ID)
static

◆ buildLoadInst()

static Register llvm::buildLoadInst ( SPIRVType BaseType,
Register  PtrRegister,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR,
LLT  LowLevelType,
Register  DestinationReg = Register(0) 
)
static

◆ buildMemSemanticsReg()

static Register llvm::buildMemSemanticsReg ( Register  SemanticsRegister,
Register  PtrRegister,
unsigned Semantics,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ BuildMI() [1/16]

MachineInstrBuilder llvm::BuildMI ( MachineBasicBlock BB,
MachineBasicBlock::instr_iterator  I,
const MIMetadata MIMD,
const MCInstrDesc MCID 
)
inline

◆ BuildMI() [2/16]

MachineInstrBuilder llvm::BuildMI ( MachineBasicBlock BB,
MachineBasicBlock::instr_iterator  I,
const MIMetadata MIMD,
const MCInstrDesc MCID,
Register  DestReg 
)
inline

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.

If I is inside a bundle, then the newly inserted MachineInstr is added to the same bundle.

Definition at line 399 of file MachineInstrBuilder.h.

References llvm::MachineInstrBuilder::addReg(), llvm::MachineFunction::CreateMachineInstr(), llvm::RegState::Define, llvm::MIMetadata::getDL(), llvm::MachineBasicBlock::getParent(), llvm::MIMetadata::getPCSections(), I, llvm::MachineBasicBlock::insert(), MI, and llvm::MachineInstrBuilder::setPCSections().

◆ BuildMI() [3/16]

MachineInstrBuilder llvm::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.

Definition at line 2252 of file MachineInstr.cpp.

References BuildMI(), DL, llvm::MachineBasicBlock::getParent(), I, llvm::MachineBasicBlock::insert(), and MI.

◆ BuildMI() [4/16]

MachineInstrBuilder llvm::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.

Definition at line 2241 of file MachineInstr.cpp.

References BuildMI(), DL, llvm::MachineBasicBlock::getParent(), I, llvm::MachineBasicBlock::insert(), and MI.

◆ BuildMI() [5/16]

MachineInstrBuilder llvm::BuildMI ( MachineBasicBlock BB,
MachineBasicBlock::iterator  I,
const MIMetadata MIMD,
const MCInstrDesc MCID 
)
inline

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.

Definition at line 431 of file MachineInstrBuilder.h.

References llvm::MachineFunction::CreateMachineInstr(), llvm::MIMetadata::getDL(), llvm::MachineBasicBlock::getParent(), llvm::MIMetadata::getPCSections(), I, llvm::MachineBasicBlock::insert(), MI, and llvm::MachineInstrBuilder::setPCSections().

◆ BuildMI() [6/16]

MachineInstrBuilder llvm::BuildMI ( MachineBasicBlock BB,
MachineBasicBlock::iterator  I,
const MIMetadata MIMD,
const MCInstrDesc MCID,
Register  DestReg 
)
inline

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.

Definition at line 381 of file MachineInstrBuilder.h.

References llvm::MachineInstrBuilder::addReg(), llvm::MachineFunction::CreateMachineInstr(), llvm::RegState::Define, llvm::MIMetadata::getDL(), llvm::MachineBasicBlock::getParent(), llvm::MIMetadata::getPCSections(), I, llvm::MachineBasicBlock::insert(), MI, and llvm::MachineInstrBuilder::setPCSections().

◆ BuildMI() [7/16]

MachineInstrBuilder llvm::BuildMI ( MachineBasicBlock BB,
MachineInstr I,
const MIMetadata MIMD,
const MCInstrDesc MCID 
)
inline

Definition at line 451 of file MachineInstrBuilder.h.

References BuildMI(), and I.

◆ BuildMI() [8/16]

MachineInstrBuilder llvm::BuildMI ( MachineBasicBlock BB,
MachineInstr I,
const MIMetadata MIMD,
const MCInstrDesc MCID,
Register  DestReg 
)
inline

Definition at line 411 of file MachineInstrBuilder.h.

References BuildMI(), and I.

◆ BuildMI() [9/16]

MachineInstrBuilder llvm::BuildMI ( MachineBasicBlock BB,
MachineInstr I,
const MIMetadata MIMD,
const MCInstrDesc MCID 
)
inline

Definition at line 461 of file MachineInstrBuilder.h.

References BuildMI(), and I.

◆ BuildMI() [10/16]

MachineInstrBuilder llvm::BuildMI ( MachineBasicBlock BB,
MachineInstr I,
const MIMetadata MIMD,
const MCInstrDesc MCID,
Register  DestReg 
)
inline

Definition at line 422 of file MachineInstrBuilder.h.

References BuildMI(), and I.

◆ BuildMI() [11/16]

MachineInstrBuilder llvm::BuildMI ( MachineBasicBlock BB,
const MIMetadata MIMD,
const MCInstrDesc MCID 
)
inline

This version of the builder inserts the newly-built instruction at the end of the given MachineBasicBlock, and does NOT take a destination register.

Definition at line 469 of file MachineInstrBuilder.h.

References BuildMI(), and llvm::MachineBasicBlock::end().

◆ BuildMI() [12/16]

MachineInstrBuilder llvm::BuildMI ( MachineBasicBlock BB,
const MIMetadata MIMD,
const MCInstrDesc MCID,
Register  DestReg 
)
inline

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.

Definition at line 478 of file MachineInstrBuilder.h.

References BuildMI(), and llvm::MachineBasicBlock::end().

◆ BuildMI() [13/16]

MachineInstrBuilder llvm::BuildMI ( MachineFunction MF,
const DebugLoc DL,
const MCInstrDesc MCID,
bool  IsIndirect,
ArrayRef< MachineOperand MOs,
const MDNode Variable,
const MDNode Expr 
)

◆ BuildMI() [14/16]

MachineInstrBuilder llvm::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.

The convention is that a DBG_VALUE is indirect iff the second operand is an immediate.

Definition at line 2191 of file MachineInstr.cpp.

References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addMetadata(), llvm::MachineInstrBuilder::addReg(), assert(), BuildMI(), DL, and isValid().

◆ BuildMI() [15/16]

MachineInstrBuilder llvm::BuildMI ( MachineFunction MF,
const MIMetadata MIMD,
const MCInstrDesc MCID 
)
inline

Builder interface. Specify how to create the initial instruction itself.

Definition at line 363 of file MachineInstrBuilder.h.

References llvm::MachineFunction::CreateMachineInstr(), llvm::MIMetadata::getDL(), llvm::MIMetadata::getPCSections(), and llvm::MachineInstrBuilder::setPCSections().

Referenced by addAsmInstr(), addImplicitDefs(), llvm::MachineBasicBlock::addLiveIn(), llvm::SITargetLowering::AddMemOpInit(), llvm::M68kInstrInfo::AddSExt(), llvm::M68kInstrInfo::AddZExt(), AdjustBaseAndOffset(), llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::ARMFrameLowering::adjustForSegmentedStacks(), llvm::X86FrameLowering::adjustForSegmentedStacks(), llvm::RISCVRegisterInfo::adjustReg(), llvm::MipsSEInstrInfo::adjustStackPtr(), llvm::AVRInstrInfo::analyzeBranch(), llvm::M68kInstrInfo::AnalyzeBranchImpl(), appendEndToFunction(), llvm::ARMBaseInstrInfo::breakPartialRegDependency(), llvm::X86InstrInfo::breakPartialRegDependency(), llvm::Mips16InstrInfo::BuildAddiuSpImm(), buildCFAOffs(), llvm::MSP430FrameLowering::BuildCFI(), llvm::X86FrameLowering::BuildCFI(), llvm::AArch64InstrInfo::buildClearRegister(), llvm::X86InstrInfo::buildClearRegister(), buildDbgValueForSpill(), llvm::R600InstrInfo::buildDefaultInstruction(), buildDefCFAReg(), llvm::MachineIRBuilder::buildDirectDbgValue(), llvm::SIInstrInfo::buildExtractSubReg(), buildGitPtr(), llvm::MachineIRBuilder::buildIndirectDbgValue(), llvm::MachineIRBuilder::buildInstrNoInsert(), BuildMI(), buildMUBUFOffsetLoadStore(), buildOpDecorate(), llvm::AArch64InstrInfo::buildOutlinedFrame(), llvm::ARMBaseInstrInfo::buildOutlinedFrame(), llvm::RISCVInstrInfo::buildOutlinedFrame(), llvm::X86InstrInfo::buildOutlinedFrame(), BuildPACM(), buildScratchExecCopy(), llvm::SIInstrInfo::buildShrunkInst(), llvm::SIRegisterInfo::buildSpillLoadStore(), llvm::SITargetLowering::bundleInstWithWaitcnt(), llvm::AArch64PAuth::checkAuthenticatedRegister(), llvm::X86InstrInfo::classifyLEAReg(), CMSEPopCalleeSaves(), CMSEPushCalleeSaves(), CombineCVTAToLocal(), combineFPFusedMultiply(), llvm::PPCInstrInfo::commuteInstructionImpl(), constrainOperandRegClass(), llvm::FastISel::constrainOperandRegClass(), convertCalleeSaveRestoreToSPPrePostIncDec(), llvm::SIInstrInfo::convertNonUniformIfRegion(), llvm::SIInstrInfo::convertNonUniformLoopRegion(), llvm::SIInstrInfo::convertToThreeAddress(), llvm::ARMBaseInstrInfo::convertToThreeAddress(), llvm::RISCVInstrInfo::convertToThreeAddress(), llvm::SystemZInstrInfo::convertToThreeAddress(), llvm::X86InstrInfo::convertToThreeAddress(), llvm::ARMBaseInstrInfo::copyFromCPSR(), llvm::AArch64InstrInfo::copyGPRRegTuple(), llvm::ARCInstrInfo::copyPhysReg(), llvm::AArch64InstrInfo::copyPhysReg(), llvm::ARMBaseInstrInfo::copyPhysReg(), llvm::Thumb1InstrInfo::copyPhysReg(), llvm::Thumb2InstrInfo::copyPhysReg(), llvm::BPFInstrInfo::copyPhysReg(), llvm::HexagonInstrInfo::copyPhysReg(), llvm::MSP430InstrInfo::copyPhysReg(), llvm::NVPTXInstrInfo::copyPhysReg(), llvm::PPCInstrInfo::copyPhysReg(), llvm::SparcInstrInfo::copyPhysReg(), llvm::VEInstrInfo::copyPhysReg(), llvm::XCoreInstrInfo::copyPhysReg(), llvm::SystemZInstrInfo::copyPhysReg(), llvm::LoongArchInstrInfo::copyPhysReg(), llvm::RISCVInstrInfo::copyPhysReg(), llvm::SIInstrInfo::copyPhysReg(), llvm::AVRInstrInfo::copyPhysReg(), llvm::CSKYInstrInfo::copyPhysReg(), llvm::M68kInstrInfo::copyPhysReg(), llvm::Mips16InstrInfo::copyPhysReg(), llvm::MipsSEInstrInfo::copyPhysReg(), llvm::WebAssemblyInstrInfo::copyPhysReg(), llvm::X86InstrInfo::copyPhysReg(), llvm::LanaiInstrInfo::copyPhysReg(), llvm::AArch64InstrInfo::copyPhysRegTuple(), llvm::RISCVInstrInfo::copyPhysRegVector(), copyPhysSubRegs(), llvm::ARMBaseInstrInfo::copyToCPSR(), createCall(), llvm::SwiftErrorValueTracking::createEntriesInEntryBlock(), llvm::PeelingModuloScheduleExpander::CreateLCSSAExitingBlock(), llvm::TargetInstrInfo::createPHIDestinationCopy(), llvm::SIInstrInfo::createPHIDestinationCopy(), createPHIsForCMOVsInSinkBB(), createPHIsForSelects(), llvm::TargetInstrInfo::createPHISourceCopy(), llvm::SIInstrInfo::createPHISourceCopy(), createPostIncLoadStore(), llvm::MSP430FrameLowering::eliminateCallFramePseudoInstr(), llvm::PPCFrameLowering::eliminateCallFramePseudoInstr(), llvm::XCoreFrameLowering::eliminateCallFramePseudoInstr(), llvm::SIFrameLowering::eliminateCallFramePseudoInstr(), llvm::AVRFrameLowering::eliminateCallFramePseudoInstr(), llvm::AArch64RegisterInfo::eliminateFrameIndex(), llvm::ThumbRegisterInfo::eliminateFrameIndex(), llvm::HexagonRegisterInfo::eliminateFrameIndex(), llvm::LanaiRegisterInfo::eliminateFrameIndex(), llvm::MSP430RegisterInfo::eliminateFrameIndex(), llvm::PPCRegisterInfo::eliminateFrameIndex(), llvm::SparcRegisterInfo::eliminateFrameIndex(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::CSKYRegisterInfo::eliminateFrameIndex(), llvm::SystemZRegisterInfo::eliminateFrameIndex(), llvm::AVRRegisterInfo::eliminateFrameIndex(), llvm::BPFRegisterInfo::eliminateFrameIndex(), llvm::LoongArchRegisterInfo::eliminateFrameIndex(), llvm::WebAssemblyRegisterInfo::eliminateFrameIndex(), emitAlignedDPRCS2Restores(), emitAlignedDPRCS2Spills(), emitAligningInstructions(), emitARMRegPlusImmediate(), llvm::PPCTargetLowering::EmitAtomicBinary(), emitBuildPairF64Pseudo(), emitCalleeSavedRestores(), EmitCfiOffset(), llvm::SIFrameLowering::emitCSRSpillRestores(), llvm::SIFrameLowering::emitCSRSpillStores(), llvm::InstrEmitter::EmitDbgInstrRef(), llvm::InstrEmitter::EmitDbgLabel(), llvm::InstrEmitter::EmitDbgNoLocation(), llvm::InstrEmitter::EmitDbgValueFromSingleOp(), llvm::InstrEmitter::EmitDbgValueList(), EmitDefCfaOffset(), EmitDefCfaRegister(), emitDefineCFAWithFP(), llvm::PPCTargetLowering::emitEHSjLjLongJmp(), llvm::VETargetLowering::emitEHSjLjLongJmp(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), llvm::VETargetLowering::emitEHSjLjSetJmp(), llvm::SIFrameLowering::emitEntryFunctionPrologue(), llvm::AArch64FrameLowering::emitEpilogue(), llvm::SIFrameLowering::emitEpilogue(), llvm::ARCFrameLowering::emitEpilogue(), llvm::ARMFrameLowering::emitEpilogue(), llvm::Thumb1FrameLowering::emitEpilogue(), llvm::AVRFrameLowering::emitEpilogue(), llvm::CSKYFrameLowering::emitEpilogue(), llvm::LanaiFrameLowering::emitEpilogue(), llvm::M68kFrameLowering::emitEpilogue(), llvm::Mips16FrameLowering::emitEpilogue(), llvm::MipsSEFrameLowering::emitEpilogue(), llvm::MSP430FrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitEpilogue(), llvm::SparcFrameLowering::emitEpilogue(), llvm::VEFrameLowering::emitEpilogue(), llvm::WebAssemblyFrameLowering::emitEpilogue(), llvm::X86FrameLowering::emitEpilogue(), llvm::XCoreFrameLowering::emitEpilogue(), llvm::VEFrameLowering::emitEpilogueInsns(), llvm::AArch64TargetLowering::EmitF128CSEL(), llvm::AArch64TargetLowering::EmitFill(), emitFrameOffsetAdj(), emitFROUND(), llvm::HexagonDAGToDAGISel::emitFunctionEntryCode(), emitGPDisp(), llvm::SITargetLowering::emitGWSMemViolTestLoop(), emitIncrement(), emitIndirectDst(), emitIndirectSrc(), llvm::R600TargetLowering::EmitInstrWithCustomInserter(), llvm::SITargetLowering::EmitInstrWithCustomInserter(), llvm::BPFTargetLowering::EmitInstrWithCustomInserter(), llvm::MSP430TargetLowering::EmitInstrWithCustomInserter(), llvm::ARMTargetLowering::EmitInstrWithCustomInserter(), llvm::AVRTargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::X86TargetLowering::EmitInstrWithCustomInserter(), llvm::XCoreTargetLowering::EmitInstrWithCustomInserter(), llvm::AArch64TargetLowering::EmitKCFICheck(), llvm::RISCVTargetLowering::EmitKCFICheck(), llvm::X86TargetLowering::EmitKCFICheck(), llvm::AArch64InstrInfo::emitLdStWithAddr(), llvm::RISCVInstrInfo::emitLdStWithAddr(), llvm::MachineRegisterInfo::EmitLiveInCopies(), emitLoad(), llvm::ARMBaseRegisterInfo::emitLoadConstPool(), emitLoadM0FromVGPRLoop(), emitLoadScalarOpsFromVGPRLoop(), LiveDebugValues::MLocTracker::emitLoc(), EmitLoweredCascadedSelect(), TransferTracker::emitMOLoc(), llvm::PPCTargetLowering::EmitPartwordAtomicBinary(), llvm::TargetLoweringBase::emitPatchPoint(), emitPostLd(), emitPostSt(), llvm::PPCTargetLowering::emitProbedAlloca(), llvm::AArch64FrameLowering::emitPrologue(), llvm::SIFrameLowering::emitPrologue(), llvm::ARCFrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::AVRFrameLowering::emitPrologue(), llvm::CSKYFrameLowering::emitPrologue(), llvm::LanaiFrameLowering::emitPrologue(), llvm::LoongArchFrameLowering::emitPrologue(), llvm::M68kFrameLowering::emitPrologue(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::MSP430FrameLowering::emitPrologue(), llvm::NVPTXFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), llvm::RISCVFrameLowering::emitPrologue(), llvm::SparcFrameLowering::emitPrologue(), llvm::SystemZELFFrameLowering::emitPrologue(), llvm::SystemZXPLINKFrameLowering::emitPrologue(), llvm::VEFrameLowering::emitPrologue(), llvm::WebAssemblyFrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), emitPrologueEpilogueSPUpdate(), llvm::VEFrameLowering::emitPrologueInsns(), emitPseudoXVINSGR2VR(), emitQuietFCMP(), emitReadCounterWidePseudo(), emitRegUpdate(), emitSCSEpilogue(), emitSCSPrologue(), emitSelectPseudo(), emitShadowCallStackEpilogue(), emitShadowCallStackPrologue(), llvm::MSP430TargetLowering::EmitShiftInstr(), llvm::VETargetLowering::emitSjLjDispatchBlock(), emitSplitF64Pseudo(), llvm::X86FrameLowering::emitSPUpdate(), llvm::M68kFrameLowering::emitSPUpdate(), llvm::X86FrameLowering::emitStackProbe(), emitStore(), emitT2RegPlusImmediate(), emitThumb1LoadConstPool(), emitThumb2LoadConstPool(), emitThumbRegPlusImmediate(), emitThumbRegPlusImmInReg(), llvm::AArch64TargetLowering::EmitTileLoad(), emitVecCondBranchPseudo(), emitVFROUND_NOEXCEPT_MASK(), emitXBegin(), llvm::AArch64TargetLowering::EmitZAInstr(), llvm::AArch64TargetLowering::EmitZero(), llvm::AArch64TargetLowering::EmitZTInstr(), llvm::SIInstrInfo::enforceOperandRCAlignment(), llvm::AMDGPURegisterBankInfo::executeInWaterfallLoop(), llvm::VEInstrInfo::expandExtendStackPseudo(), llvm::VEInstrInfo::expandGetStackTopPseudo(), expandLoadStackGuard(), llvm::ARMBaseInstrInfo::expandLoadStackGuardBase(), expandMOV32r1(), llvm::SIInstrInfo::expandMovDPP64(), llvm::M68kInstrInfo::ExpandMOVEM(), ExpandMOVImmSExti8(), llvm::M68kInstrInfo::ExpandMOVSZX_RR(), llvm::AArch64InstrInfo::expandPostRAPseudo(), llvm::SIInstrInfo::expandPostRAPseudo(), llvm::HexagonInstrInfo::expandPostRAPseudo(), llvm::PPCInstrInfo::expandPostRAPseudo(), llvm::VEInstrInfo::expandPostRAPseudo(), llvm::X86InstrInfo::expandPostRAPseudo(), expandPseudoLogM(), expandPseudoVFMK(), llvm::M68kInstrInfo::ExpandPUSH_POP(), llvm::SparcTargetLowering::expandSelectCC(), expandSGPRCopy(), llvm::HexagonInstrInfo::expandVGatherPseudo(), extractRsrcPtr(), llvm::FastISel::fastEmitInst_(), llvm::FastISel::fastEmitInst_extractsubreg(), llvm::FastISel::fastEmitInst_f(), llvm::FastISel::fastEmitInst_i(), llvm::FastISel::fastEmitInst_r(), llvm::FastISel::fastEmitInst_ri(), llvm::FastISel::fastEmitInst_rii(), llvm::FastISel::fastEmitInst_rr(), llvm::FastISel::fastEmitInst_rri(), llvm::FastISel::fastEmitInst_rrr(), finalizeBundle(), llvm::ARMBaseInstrInfo::foldImmediate(), llvm::RISCVInstrInfo::foldMemoryOperandImpl(), llvm::SystemZInstrInfo::foldMemoryOperandImpl(), foldVGPRCopyIntoRegSequence(), forceReg(), llvm::HexagonInstrInfo::genAllInsnTimingClasses(), llvm::AArch64InstrInfo::genAlternativeCodeSequence(), genAlternativeDpCodeSequence(), generateEndPgm(), generateStackAdjustment(), genFNegatedMAD(), genFusedMultiply(), genIndexedMultiply(), llvm::MipsInstrInfo::genInstrWithNewOpc(), genMaddR(), genNeg(), genShXAddAddShift(), genSubAdd2SubSub(), genTPEntry(), genTPLoopBody(), llvm::SIInstrInfo::getAddNoCarry(), getFunctionLiveInPhysReg(), llvm::CSKYInstrInfo::getGlobalBaseReg(), llvm::SparcInstrInfo::getGlobalBaseReg(), llvm::VEInstrInfo::getGlobalBaseReg(), getIndirectSGPRIdx(), llvm::SPIRVGlobalRegistry::getOrCreateConstFP(), llvm::SPIRVGlobalRegistry::getOrCreateConstInt(), getOrCreateFrameHelper(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVArrayType(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVBoolType(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVPointerType(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVType(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVVectorType(), llvm::SPIRVGlobalRegistry::getOrCreateUndef(), llvm::SITargetLowering::getPrefLoopAlignment(), llvm::FastISel::handleDbgInfo(), IfNeededExtSP(), IfNeededLDAWSP(), indirectCopyToAGPR(), llvm::MipsFunctionInfo::initGlobalBaseReg(), INITIALIZE_PASS(), llvm::PPCFrameLowering::inlineStackProbe(), llvm::SystemZELFFrameLowering::inlineStackProbe(), llvm::SystemZXPLINKFrameLowering::inlineStackProbe(), llvm::ARCInstrInfo::insertBranch(), llvm::AArch64InstrInfo::insertBranch(), llvm::R600InstrInfo::insertBranch(), llvm::SIInstrInfo::insertBranch(), llvm::ARMBaseInstrInfo::insertBranch(), llvm::AVRInstrInfo::insertBranch(), llvm::BPFInstrInfo::insertBranch(), llvm::CSKYInstrInfo::insertBranch(), llvm::HexagonInstrInfo::insertBranch(), llvm::LoongArchInstrInfo::insertBranch(), llvm::M68kInstrInfo::insertBranch(), llvm::MipsInstrInfo::insertBranch(), llvm::MSP430InstrInfo::insertBranch(), llvm::NVPTXInstrInfo::insertBranch(), llvm::PPCInstrInfo::insertBranch(), llvm::RISCVInstrInfo::insertBranch(), llvm::SparcInstrInfo::insertBranch(), llvm::SystemZInstrInfo::insertBranch(), llvm::VEInstrInfo::insertBranch(), llvm::WebAssemblyInstrInfo::insertBranch(), llvm::X86InstrInfo::insertBranch(), llvm::XCoreInstrInfo::insertBranch(), llvm::LanaiInstrInfo::insertBranch(), insertCFISameValue(), llvm::AArch64TargetLowering::insertCopiesSplitCSR(), llvm::SITargetLowering::insertCopiesSplitCSR(), insertCopy(), insertCSRRestores(), insertCSRSaves(), insertDivByZeroTrap(), llvm::SIInstrInfo::insertEQ(), InsertFPConstInst(), InsertFPImmInst(), llvm::AArch64InstrInfo::insertIndirectBranch(), llvm::SIInstrInfo::insertIndirectBranch(), llvm::AVRInstrInfo::insertIndirectBranch(), llvm::LoongArchInstrInfo::insertIndirectBranch(), llvm::RISCVInstrInfo::insertIndirectBranch(), InsertLDR_STR(), insertMultibyteShift(), llvm::SIInstrInfo::insertNE(), InsertNewDef(), llvm::AArch64InstrInfo::insertNoop(), llvm::HexagonInstrInfo::insertNoop(), llvm::MipsInstrInfo::insertNoop(), llvm::PPCInstrInfo::insertNoop(), llvm::X86InstrInfo::insertNoop(), llvm::SIInstrInfo::insertNoops(), insertNoopsInBundle(), llvm::MipsInstrInfo::insertNop(), insertNopBeforeInstruction(), llvm::AArch64InstrInfo::insertOutlinedCall(), llvm::ARMBaseInstrInfo::insertOutlinedCall(), llvm::RISCVInstrInfo::insertOutlinedCall(), llvm::X86InstrInfo::insertOutlinedCall(), insertPHI(), llvm::SIInstrInfo::insertReturn(), llvm::SIInstrInfo::insertScratchExecCopy(), InsertSEH(), insertSEH(), llvm::SIInstrInfo::insertSelect(), llvm::AArch64InstrInfo::insertSelect(), llvm::PPCInstrInfo::insertSelect(), llvm::SystemZInstrInfo::insertSelect(), llvm::X86InstrInfo::insertSelect(), InsertSPConstInst(), InsertSPImmInst(), insertUndefLaneMask(), llvm::SIInstrInfo::insertVectorSelect(), llvm::SIInstrInfo::legalizeGenericOperand(), llvm::SIInstrInfo::legalizeOperands(), llvm::SIInstrInfo::legalizeOperandsVOP2(), llvm::SIInstrInfo::legalizeOperandsVOP3(), llvm::SIInstrInfo::legalizeOpWithMove(), llvm::AMDGPULegalizerInfo::legalizeTrapEndpgm(), llvm::MipsSEInstrInfo::loadImmediate(), llvm::SystemZInstrInfo::loadImmediate(), llvm::ARCInstrInfo::loadImmediate(), llvm::XCoreInstrInfo::loadImmediate(), llvm::Mips16InstrInfo::loadImmediate(), loadM0FromVGPR(), loadMBUFScalarOperandsFromVGPR(), llvm::Mips16InstrInfo::loadRegFromStack(), llvm::MipsSEInstrInfo::loadRegFromStack(), llvm::SystemZInstrInfo::loadRegFromStackSlot(), llvm::AArch64InstrInfo::loadRegFromStackSlot(), llvm::ARMBaseInstrInfo::loadRegFromStackSlot(), llvm::Thumb1InstrInfo::loadRegFromStackSlot(), llvm::Thumb2InstrInfo::loadRegFromStackSlot(), llvm::BPFInstrInfo::loadRegFromStackSlot(), llvm::HexagonInstrInfo::loadRegFromStackSlot(), llvm::SparcInstrInfo::loadRegFromStackSlot(), llvm::VEInstrInfo::loadRegFromStackSlot(), llvm::LoongArchInstrInfo::loadRegFromStackSlot(), llvm::RISCVInstrInfo::loadRegFromStackSlot(), llvm::MSP430InstrInfo::loadRegFromStackSlot(), llvm::SIInstrInfo::loadRegFromStackSlot(), llvm::ARCInstrInfo::loadRegFromStackSlot(), llvm::AVRInstrInfo::loadRegFromStackSlot(), llvm::CSKYInstrInfo::loadRegFromStackSlot(), llvm::M68kInstrInfo::loadRegFromStackSlot(), llvm::X86InstrInfo::loadRegFromStackSlot(), llvm::XCoreInstrInfo::loadRegFromStackSlot(), llvm::LanaiInstrInfo::loadRegFromStackSlot(), loadRegPairFromStackSlot(), llvm::X86InstrInfo::loadStoreTileReg(), llvm::PPCRegisterInfo::lowerACCRestore(), llvm::PPCRegisterInfo::lowerACCSpilling(), LowerCallResults(), llvm::PPCRegisterInfo::lowerCRBitRestore(), llvm::PPCRegisterInfo::lowerCRBitSpilling(), llvm::PPCRegisterInfo::lowerCRRestore(), llvm::PPCRegisterInfo::lowerCRSpilling(), llvm::FastISel::lowerDbgDeclare(), llvm::FastISel::lowerDbgValue(), llvm::PPCRegisterInfo::lowerDynamicAlloc(), llvm::PPCRegisterInfo::lowerDynamicAreaOffset(), LowerFPToInt(), llvm::PPCRegisterInfo::lowerPrepareProbedAlloca(), llvm::PPCRegisterInfo::lowerQuadwordRestore(), llvm::PPCRegisterInfo::lowerQuadwordSpilling(), llvm::RISCVRegisterInfo::lowerVRELOAD(), llvm::RISCVRegisterInfo::lowerVSPILL(), llvm::PPCRegisterInfo::lowerWACCRestore(), llvm::PPCRegisterInfo::lowerWACCSpilling(), lowerWaveReduce(), llvm::Mips16InstrInfo::makeFrame(), MakeM0Inst(), llvm::AArch64RegisterInfo::materializeFrameBaseRegister(), llvm::SIRegisterInfo::materializeFrameBaseRegister(), llvm::ARMBaseRegisterInfo::materializeFrameBaseRegister(), llvm::PPCRegisterInfo::materializeFrameBaseRegister(), llvm::RISCVRegisterInfo::materializeFrameBaseRegister(), llvm::SIInstrInfo::materializeImmediate(), llvm::PPCInstrInfo::materializeImmPostRA(), maybeRewriteToFallthrough(), moveAndTeeForMultiUse(), llvm::ARMBlockPlacement::moveBasicBlock(), llvm::PeelingModuloScheduleExpander::moveStageBetweenBlocks(), llvm::SIInstrInfo::moveToVALUImpl(), llvm::LoongArchInstrInfo::movImm(), llvm::RISCVInstrInfo::movImm(), llvm::CSKYInstrInfo::movImm(), llvm::RISCVInstrInfo::mulImm(), llvm::SIInstrInfo::optimizeCompareInstr(), llvm::PPCInstrInfo::optimizeCompareInstr(), llvm::AArch64InstrInfo::optimizeCondBranch(), llvm::RISCVInstrInfo::optimizeCondBranch(), llvm::LanaiInstrInfo::optimizeSelect(), llvm::ARMBaseInstrInfo::optimizeSelect(), llvm::Thumb2InstrInfo::optimizeSelect(), llvm::RISCVInstrInfo::optimizeSelect(), popRegsFromStack(), llvm::HexagonInstrInfo::PredicateInstruction(), llvm::SGPRSpillBuilder::prepare(), llvm::PPCRegisterInfo::prepareDynamicAlloca(), llvm::VETargetLowering::prepareMBB(), llvm::VETargetLowering::prepareSymbol(), llvm::AArch64InstrInfo::probedStackAlloc(), llvm::AArch64FrameLowering::processFunctionBeforeFrameFinalized(), llvm::SwiftErrorValueTracking::propagateVRegs(), pushRegsToStack(), llvm::SIInstrInfo::readlaneVGPRToSGPR(), llvm::SGPRSpillBuilder::readWriteTmpVGPR(), llvm::TargetInstrInfo::reassociateOps(), llvm::ARMBaseInstrInfo::reMaterialize(), llvm::X86InstrInfo::reMaterialize(), llvm::X86InstrInfo::replaceBranchWithTailCall(), replaceFI(), replaceFrameIndex(), reportIllegalCopy(), llvm::AArch64FrameLowering::resetCFIToInitialState(), llvm::SGPRSpillBuilder::restore(), llvm::SystemZELFFrameLowering::restoreCalleeSavedRegisters(), llvm::SystemZXPLINKFrameLowering::restoreCalleeSavedRegisters(), llvm::AArch64FrameLowering::restoreCalleeSavedRegisters(), llvm::AVRFrameLowering::restoreCalleeSavedRegisters(), llvm::M68kFrameLowering::restoreCalleeSavedRegisters(), llvm::MSP430FrameLowering::restoreCalleeSavedRegisters(), llvm::PPCFrameLowering::restoreCalleeSavedRegisters(), llvm::RISCVFrameLowering::restoreCalleeSavedRegisters(), llvm::X86FrameLowering::restoreCalleeSavedRegisters(), restoreCRs(), llvm::SIInstrInfo::restoreExec(), llvm::Mips16InstrInfo::restoreFrame(), llvm::SIRegisterInfo::restoreSGPR(), RestoreSpillList(), restoreStatusRegister(), llvm::X86FrameLowering::restoreWin32EHStackPointers(), RevertDoLoopStart(), RevertLoopDec(), RevertLoopEnd(), RevertWhileLoopSetup(), RevertWhileLoopStartLR(), llvm::ARMBlockPlacement::revertWhileToDoLoop(), llvm::ThumbRegisterInfo::rewriteFrameIndex(), llvm::CFIFixup::runOnMachineFunction(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::InsertNOPLoad::runOnMachineFunction(), llvm::FixAllFDIVSQRT::runOnMachineFunction(), llvm::MachineFunction::salvageCopySSAImpl(), llvm::FastISel::selectCall(), selectCopy(), llvm::FastISel::selectFreeze(), llvm::FastISel::selectIntrinsicCall(), llvm::FastISel::selectPatchpoint(), llvm::FastISel::selectStackmap(), llvm::FastISel::selectXRayCustomEvent(), llvm::FastISel::selectXRayTypedEvent(), llvm::FunctionLoweringInfo::set(), setCallTargetReg(), llvm::ARMBaseInstrInfo::setExecutionDomain(), setM0ToIndexFromSGPR(), llvm::VETargetLowering::setupEntryBlockForSjLj(), signOutlinedFunction(), llvm::SystemZELFFrameLowering::spillCalleeSavedRegisters(), llvm::SystemZXPLINKFrameLowering::spillCalleeSavedRegisters(), llvm::AArch64FrameLowering::spillCalleeSavedRegisters(), llvm::ARMFrameLowering::spillCalleeSavedRegisters(), llvm::AVRFrameLowering::spillCalleeSavedRegisters(), llvm::M68kFrameLowering::spillCalleeSavedRegisters(), llvm::MipsSEFrameLowering::spillCalleeSavedRegisters(), llvm::MSP430FrameLowering::spillCalleeSavedRegisters(), llvm::PPCFrameLowering::spillCalleeSavedRegisters(), llvm::RISCVFrameLowering::spillCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), llvm::SIRegisterInfo::spillEmergencySGPR(), spillRegPairs(), llvm::SIRegisterInfo::spillSGPR(), spillVGPRtoAGPR(), splitEdge(), splitMBB(), storeRegPairToStackSlot(), llvm::Mips16InstrInfo::storeRegToStack(), llvm::MipsSEInstrInfo::storeRegToStack(), llvm::AArch64InstrInfo::storeRegToStackSlot(), llvm::ARMBaseInstrInfo::storeRegToStackSlot(), llvm::Thumb1InstrInfo::storeRegToStackSlot(), llvm::Thumb2InstrInfo::storeRegToStackSlot(), llvm::BPFInstrInfo::storeRegToStackSlot(), llvm::HexagonInstrInfo::storeRegToStackSlot(), llvm::LoongArchInstrInfo::storeRegToStackSlot(), llvm::RISCVInstrInfo::storeRegToStackSlot(), llvm::SparcInstrInfo::storeRegToStackSlot(), llvm::SystemZInstrInfo::storeRegToStackSlot(), llvm::VEInstrInfo::storeRegToStackSlot(), llvm::SIInstrInfo::storeRegToStackSlot(), llvm::ARCInstrInfo::storeRegToStackSlot(), llvm::AVRInstrInfo::storeRegToStackSlot(), llvm::CSKYInstrInfo::storeRegToStackSlot(), llvm::M68kInstrInfo::storeRegToStackSlot(), llvm::MSP430InstrInfo::storeRegToStackSlot(), llvm::X86InstrInfo::storeRegToStackSlot(), llvm::XCoreInstrInfo::storeRegToStackSlot(), llvm::LanaiInstrInfo::storeRegToStackSlot(), llvm::X86InstrInfo::unfoldMemoryOperand(), unstackifyVRegsUsedInSplitBB(), and llvm::WebAssemblyFrameLowering::writeSPToGlobal().

◆ BuildMI() [16/16]

MachineInstrBuilder llvm::BuildMI ( MachineFunction MF,
const MIMetadata MIMD,
const MCInstrDesc MCID,
Register  DestReg 
)
inline

◆ buildModuleSummaryIndex()

ModuleSummaryIndex llvm::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; } 
)

◆ buildNDRange()

static bool llvm::buildNDRange ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ buildOpDecorate() [1/2]

void llvm::buildOpDecorate ( Register  Reg,
MachineInstr I,
const SPIRVInstrInfo TII,
SPIRV::Decoration::Decoration  Dec,
const std::vector< uint32_t > &  DecArgs,
StringRef  StrImm 
)

◆ buildOpDecorate() [2/2]

void llvm::buildOpDecorate ( Register  Reg,
MachineIRBuilder MIRBuilder,
SPIRV::Decoration::Decoration  Dec,
const std::vector< uint32_t > &  DecArgs,
StringRef  StrImm 
)

◆ buildOpFromWrapper()

static bool llvm::buildOpFromWrapper ( MachineIRBuilder MIRBuilder,
unsigned  Opcode,
const SPIRV::IncomingCall Call,
Register  TypeReg = Register(0) 
)
static

◆ buildOpName()

void llvm::buildOpName ( Register  Target,
const StringRef Name,
MachineIRBuilder MIRBuilder 
)

◆ buildScopeReg()

static Register llvm::buildScopeReg ( Register  CLScopeRegister,
SPIRV::Scope::Scope  Scope,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR,
MachineRegisterInfo MRI 
)
static

◆ buildSelectInst()

static bool llvm::buildSelectInst ( MachineIRBuilder MIRBuilder,
Register  ReturnRegister,
Register  SourceRegister,
const SPIRVType ReturnType,
SPIRVGlobalRegistry GR 
)
static

◆ BuryPointer() [1/2]

void llvm::BuryPointer ( const void *  Ptr)

Definition at line 15 of file BuryPointer.cpp.

References Idx, LLVM_ATTRIBUTE_USED, and Ptr.

Referenced by BuryPointer().

◆ BuryPointer() [2/2]

template<typename T >
void llvm::BuryPointer ( std::unique_ptr< T Ptr)

Definition at line 23 of file BuryPointer.h.

References BuryPointer(), and Ptr.

◆ bypassSlowDivision()

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

This optimization may add basic blocks immediately after BB; for obvious reasons, you shouldn't pass those blocks to bypassSlowDivision.

◆ byteswap()

template<typename T , typename = std::enable_if_t<std::is_integral_v<T>>>
constexpr T llvm::byteswap ( T  V)
constexprnoexcept

Reverses the bytes in the given integer value V.

Definition at line 101 of file bit.h.

References Hi, Lo, and T.

Referenced by llvm::sys::getSwappedBytes(), llvm::RawInstrProfReader< IntPtrT >::hasFormat(), llvm::InstrProfCorrelatorImpl< IntPtrT >::maybeSwap(), XXH3_len_4to8_64b(), and XXH3_len_9to16_64b().

◆ c_str()

template<class T >
SmallVectorImpl< T >::const_pointer llvm::c_str ( SmallVectorImpl< T > &  str)

◆ cacheAnnotationFromMD() [1/2]

static void llvm::cacheAnnotationFromMD ( const MDNode md,
key_val_pair_t &  retval 
)
static

◆ cacheAnnotationFromMD() [2/2]

static void llvm::cacheAnnotationFromMD ( const Module m,
const GlobalValue gv 
)
static

◆ calculateClrEHStateNumbers()

void llvm::calculateClrEHStateNumbers ( const Function Fn,
WinEHFuncInfo FuncInfo 
)

◆ calculateCountScale()

static uint64_t llvm::calculateCountScale ( uint64_t  MaxCount)
inlinestatic

Calculate what to divide by to scale counts.

Given the maximum count, calculate a divisor that will scale all the weights to strictly less than std::numeric_limits<uint32_t>::max().

Definition at line 162 of file Instrumentation.h.

Referenced by llvm::pgo::promoteIndirectCall(), and setProfMetadata().

◆ calculateCXXStateForAsynchEH()

void llvm::calculateCXXStateForAsynchEH ( const BasicBlock BB,
int  State,
WinEHFuncInfo FuncInfo 
)

◆ calculateDbgEntityHistory()

void llvm::calculateDbgEntityHistory ( const MachineFunction MF,
const TargetRegisterInfo TRI,
DbgValueHistoryMap DbgValues,
DbgLabelInstrMap DbgLabels 
)

◆ calculateRegAllocScore() [1/2]

RegAllocScore llvm::calculateRegAllocScore ( const MachineFunction MF,
const MachineBlockFrequencyInfo MBFI 
)

Calculate a score.

When comparing 2 scores for the same function but different policies, the better policy would have a smaller score. The implementation is the overload below (which is also easily unittestable)

Definition at line 73 of file RegAllocScore.cpp.

References calculateRegAllocScore(), llvm::MachineBlockFrequencyInfo::getBlockFreqRelativeToEntryBlock(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineFunction::getSubtarget(), llvm::TargetInstrInfo::isTriviallyReMaterializable(), MBB, and MI.

Referenced by calculateRegAllocScore().

◆ calculateRegAllocScore() [2/2]

RegAllocScore llvm::calculateRegAllocScore ( const MachineFunction MF,
llvm::function_ref< double(const MachineBasicBlock &)>  GetBBFreq,
llvm::function_ref< bool(const MachineInstr &)>  IsTriviallyRematerializable 
)

◆ calculateSEHStateForAsynchEH()

void llvm::calculateSEHStateForAsynchEH ( const BasicBlock BB,
int  State,
WinEHFuncInfo FuncInfo 
)

◆ calculateSEHStateNumbers()

void llvm::calculateSEHStateNumbers ( const Function ParentFn,
WinEHFuncInfo FuncInfo 
)

◆ calculateUpperBound()

static bool llvm::calculateUpperBound ( const Loop L,
ScalarEvolution SE,
ConditionInfo &  Cond,
bool  IsExitCond 
)
static

◆ calculateWasmEHInfo()

void llvm::calculateWasmEHInfo ( const Function F,
WasmEHFuncInfo EHInfo 
)

◆ calculateWinCXXEHStateNumbers()

void llvm::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.

This analysis assumes that WinEHPrepare has already been run.

Definition at line 611 of file WinEHPrepare.cpp.

References calculateCXXStateForAsynchEH(), calculateCXXStateNumbers(), calculateStateNumbersForInvokes(), llvm::WinEHFuncInfo::EHPadStateMap, llvm::Function::getEntryBlock(), llvm::Module::getModuleFlag(), llvm::GlobalValue::getParent(), and isTopLevelPadForMSVC().

Referenced by llvm::FunctionLoweringInfo::set().

◆ call_once()

template<typename Function , typename... Args>
void llvm::call_once ( once_flag flag,
Function &&  F,
Args &&...  ArgList 
)

Execute the function specified as a parameter once.

Typical usage:

void foo() {...};
...
static once_flag flag;
call_once(flag, foo);
void call_once(once_flag &flag, Function &&F, Args &&... ArgList)
Execute the function specified as a parameter once.
Definition: Threading.h:87
Parameters
flagFlag used for tracking whether or not this has run.
FFunction to call once.

Definition at line 87 of file Threading.h.

References llvm::sys::CompareAndSwap(), Done, F, llvm::sys::MemoryFence(), llvm::once_flag::status, TsanHappensAfter, TsanHappensBefore, TsanIgnoreWritesBegin, TsanIgnoreWritesEnd, Uninitialized, and Wait.

Referenced by llvm::AArch64RegisterBankInfo::AArch64RegisterBankInfo(), llvm::AMDGPURegisterBankInfo::AMDGPURegisterBankInfo(), llvm::ARMRegisterBankInfo::ARMRegisterBankInfo(), llvm::TargetPassConfig::createRegAllocPass(), and llvm::SIRegisterInfo::SIRegisterInfo().

◆ callDefaultCtor()

template<class PassName , std::enable_if_t< std::is_default_constructible< PassName >{}, bool > = true>
Pass * llvm::callDefaultCtor ( )

Definition at line 84 of file PassSupport.h.

References PassName.

◆ callDefaultCtor< RegAllocEvictionAdvisorAnalysis >()

Specialization for the API used by the analysis infrastructure to create an instance of the eviction advisor.

Definition at line 93 of file RegAllocEvictionAdvisor.cpp.

References createDevelopmentModeAdvisor(), createReleaseModeAdvisor(), and Mode.

◆ callDefaultCtor< RegAllocPriorityAdvisorAnalysis >()

Specialization for the API used by the analysis infrastructure to create an instance of the priority advisor.

Definition at line 72 of file RegAllocPriorityAdvisor.cpp.

References createDevelopmentModePriorityAdvisor(), createReleaseModePriorityAdvisor(), and Mode.

◆ callsGCLeafFunction()

bool llvm::callsGCLeafFunction ( const CallBase Call,
const TargetLibraryInfo TLI 
)

Return true if this call calls a gc leaf function.

A leaf function is a function that does not safepoint the thread during its execution. During a call or invoke to such a function, the callers stack does not have to be made parseable.

Most passes can and should ignore this information, and it is only used during lowering by the GC infrastructure.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 3484 of file Local.cpp.

References F, llvm::TargetLibraryInfo::getLibFunc(), and llvm::TargetLibraryInfo::has().

Referenced by needsStatepoint(), and llvm::RewriteStatepointsForGC::runOnFunction().

◆ canConstantFoldCallTo()

bool llvm::canConstantFoldCallTo ( const CallBase Call,
const Function F 
)

canConstantFoldCallTo - Return true if its even possible to fold a call to the specified function.

Definition at line 1486 of file ConstantFolding.cpp.

References F, Name, and llvm::Intrinsic::not_intrinsic.

Referenced by CanConstantFold(), and tryConstantFoldCall().

◆ canConvertToMinOrMaxIntrinsic()

std::pair< Intrinsic::ID, bool > llvm::canConvertToMinOrMaxIntrinsic ( ArrayRef< Value * >  VL)

Check if the values in VL are select instructions that can be converted to a min or max (vector) intrinsic.

Returns the intrinsic ID, if such a conversion is possible, together with a bool indicating whether all select conditions are only used by the selects. Otherwise return Intrinsic::not_intrinsic.

Definition at line 8469 of file ValueTracking.cpp.

References all_of(), llvm::SelectPatternResult::Flavor, I, llvm::SelectPatternResult::isMinOrMax(), LHS, llvm_unreachable, llvm::PatternMatch::m_OneUse(), llvm::PatternMatch::m_Select(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), matchSelectPattern(), llvm::Intrinsic::not_intrinsic, RHS, SPF_FMAXNUM, SPF_FMINNUM, SPF_SMAX, SPF_SMIN, SPF_UMAX, SPF_UMIN, and SPF_UNKNOWN.

◆ canCreatePoison()

bool llvm::canCreatePoison ( const Operator Op,
bool  ConsiderFlagsAndMetadata = true 
)

◆ canCreateUndefOrPoison()

bool llvm::canCreateUndefOrPoison ( const Operator Op,
bool  ConsiderFlagsAndMetadata = true 
)

canCreateUndefOrPoison returns true if Op can create undef or poison from non-undef & non-poison operands.

For vectors, canCreateUndefOrPoison returns true if there is potential poison or undef in any element of the result when vectors without undef/poison poison are given as operands. For example, given Op = shl <2 x i32> x, <0, 32>, this function returns true. If Op raises immediate UB but never creates poison or undef (e.g. sdiv I, 0), canCreatePoison returns false.

ConsiderFlagsAndMetadata controls whether poison producing flags and metadata on the instruction are considered. This can be used to see if the instruction could still introduce undef or poison even without poison generating flags and metadata which might be on the instruction. (i.e. could the result of Op->dropPoisonGeneratingFlags() still create poison or undef)

canCreatePoison returns true if Op can create poison from non-poison operands.

Definition at line 7104 of file ValueTracking.cpp.

Referenced by llvm::InstCombinerImpl::foldFreezeIntoRecurrence(), isGuaranteedNotToBeUndefOrPoison(), and llvm::InstCombinerImpl::pushFreezeToPreventPoisonFromPropagating().

◆ canIgnoreSNaN()

bool llvm::canIgnoreSNaN ( fp::ExceptionBehavior  EB,
FastMathFlags  FMF 
)
inline

Returns true if the possibility of a signaling NaN can be safely ignored.

Definition at line 83 of file FPEnv.h.

References llvm::fp::ebIgnore, and llvm::FastMathFlags::noNaNs().

Referenced by simplifyFAddInst(), and simplifyFSubInst().

◆ cannotBeMaxInLoop()

bool llvm::cannotBeMaxInLoop ( const SCEV S,
const Loop L,
ScalarEvolution SE,
bool  Signed 
)

◆ cannotBeMinInLoop()

bool llvm::cannotBeMinInLoop ( const SCEV S,
const Loop L,
ScalarEvolution SE,
bool  Signed 
)

◆ cannotBeNegativeZero()

bool llvm::cannotBeNegativeZero ( const Value V,
unsigned  Depth,
const SimplifyQuery SQ 
)
inline

Return true if we can prove that the specified FP value is never equal to -0.0.

Users should use caution when considering PreserveSign denormal-fp-math.

Definition at line 528 of file ValueTracking.h.

References computeKnownFPClass(), Depth, fcNegZero, and llvm::KnownFPClass::isKnownNeverNegZero().

Referenced by foldSelectBinOpIdentity(), simplifyFAddInst(), simplifyFSubInst(), and llvm::InstCombinerImpl::visitFSub().

◆ cannotBeOrderedLessThanZero()

bool llvm::cannotBeOrderedLessThanZero ( const Value V,
unsigned  Depth,
const SimplifyQuery SQ 
)
inline

Return true if we can prove that the specified FP value is either NaN or never less than -0.0.

 NaN --> true
  +0 --> true
  -0 --> true

x > +0 --> true x < -0 --> false

Definition at line 542 of file ValueTracking.h.

References llvm::KnownFPClass::cannotBeOrderedLessThanZero(), computeKnownFPClass(), Depth, and llvm::KnownFPClass::OrderedLessThanZeroMask.

Referenced by llvm::AMDGPULibCalls::fold(), and foldSqrt().

◆ canonicalizePath()

static ErrorOr< SmallString< 128 > > llvm::canonicalizePath ( StringRef  P)
static

◆ canPeel()

bool llvm::canPeel ( const Loop L)

◆ canRemoveInstruction()

static bool llvm::canRemoveInstruction ( Instruction I)
static

◆ canRenameComdatFunc()

bool llvm::canRenameComdatFunc ( const Function F,
bool  CheckAddressTaken = false 
)

Check if we can safely rename this Comdat function.

Instances of the same comdat function may have different control flows thus can not share the same counter variable.

Definition at line 1424 of file InstrProf.cpp.

References assert(), llvm::GlobalValue::AvailableExternallyLinkage, F, llvm::GlobalValue::isDiscardableIfUnused(), and needsComdatForCounter().

Referenced by canRenameComdat(), and getVarName().

◆ canReplaceOperandWithVariable()

bool llvm::canReplaceOperandWithVariable ( const Instruction I,
unsigned  OpIdx 
)

Given an instruction, is it legal to set operand OpIdx to a non-constant value?

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 4050 of file Local.cpp.

References gep_type_begin(), I, and llvm::generic_gep_type_iterator< ItTy >::isStruct().

Referenced by canSinkInstructions().

◆ canReplacePointersIfEqual()

bool llvm::canReplacePointersIfEqual ( Value A,
Value B,
const DataLayout DL,
Instruction CtxI 
)

Returns true if a pointer value A can be replace with another pointer value \B if they are deemed equal through some means (e.g.

information from conditions). NOTE: the current implementations is incomplete and unsound. It does not reject all invalid cases yet, but will be made stricter in the future. In particular this means returning true means unknown if replacement is safe.

Definition at line 713 of file Loads.cpp.

References A, assert(), B, llvm::CallingConv::C, DL, isDereferenceableAndAlignedPointer(), and llvm::Type::isPointerTy().

◆ canReplaceReg()

bool llvm::canReplaceReg ( Register  DstReg,
Register  SrcReg,
MachineRegisterInfo MRI 
)

◆ canRoundingModeBe()

bool llvm::canRoundingModeBe ( RoundingMode  RM,
RoundingMode  QRM 
)
inline

Returns true if the rounding mode RM may be QRM at compile time or at run time.

Definition at line 77 of file FPEnv.h.

References Dynamic.

Referenced by simplifyFAddInst(), and simplifyFSubInst().

◆ canSimplifyInvokeNoUnwind()

bool llvm::canSimplifyInvokeNoUnwind ( const Function F)

◆ canSinkOrHoistInst()

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

Reasoning about potential faulting instructions is the responsibility of the caller since it is challenging to do efficiently from within this routine. TargetExecutesOncePerLoop is true only when it is guaranteed that the target executes at most once per execution of the loop body. This is used to assess the legality of duplicating atomic loads. Generally, this is true when moving out of loop and not true when moving into loops. If ORE is set use it to emit optimization remarks.

Definition at line 1158 of file LICM.cpp.

References assert(), llvm::LoopBase< BlockT, LoopT >::contains(), DEBUG_TYPE, llvm::MemoryEffectsBase< LocationEnum >::doesNotAccessMemory(), llvm::MemorySSA::dominates(), llvm::OptimizationRemarkEmitter::emit(), llvm::MemoryLocation::get(), llvm::MemorySSA::getBlockAccesses(), llvm::LoopBase< BlockT, LoopT >::getBlocks(), getClobberingMemoryAccess(), llvm::MemorySSA::getMemoryAccess(), llvm::AAResults::getMemoryEffects(), llvm::MemorySSAUpdater::getMemorySSA(), llvm::BatchAAResults::getModRefInfo(), llvm::AAResults::getModRefInfoMask(), I, Invalidated, llvm::MemorySSA::isLiveOnEntryDef(), isLoadInvariantInLoop(), llvm::Loop::isLoopInvariant(), isModOrRefSet(), isModSet(), llvm::PatternMatch::match(), MRI, llvm::MemoryEffectsBase< LocationEnum >::onlyAccessesArgPointees(), llvm::MemoryEffectsBase< LocationEnum >::onlyReadsMemory(), and pointerInvalidatedByLoop().

Referenced by hoistRegion(), sinkLoopInvariantInstructions(), and sinkRegion().

◆ canSplitLoopBound()

static bool llvm::canSplitLoopBound ( const Loop L,
const DominatorTree DT,
ScalarEvolution SE,
ConditionInfo &  Cond 
)
static

◆ cantFail() [1/3]

void llvm::cantFail ( Error  Err,
const char Msg = nullptr 
)
inline

Report a fatal error if Err is a failure value.

This function can be used to wrap calls to fallible functions ONLY when it is known that the Error will always be a success value. E.g.

// foo only attempts the fallible operation if DoFallibleOperation is
// true. If DoFallibleOperation is false then foo always returns
// Error::success().
Error foo(bool DoFallibleOperation);
cantFail(foo(false));
Lightweight error class with error context and mandatory checking.
Definition: Error.h:160
void cantFail(Error Err, const char *Msg=nullptr)
Report a fatal error if Err is a failure value.
Definition: Error.h:749

Definition at line 749 of file Error.h.

References llvm_unreachable, and OS.

Referenced by llvm::orc::EPCGenericJITLinkMemoryManager::InFlightAlloc::abandon(), addPadding(), llvm::orc::EPCGenericJITLinkMemoryManager::allocate(), llvm::codeview::ContinuationRecordBuilder::begin(), llvm::FileCheckString::Check(), llvm::FileCheckString::CheckDag(), llvm::FileCheckString::CheckNot(), llvm::orc::cloneToNewContext(), commitFpm(), llvm::orc::COFFPlatform::Create(), llvm::msf::WritableMappedBlockStream::createFpmStream(), llvm::ARMAsmBackendDarwin::createObjectTargetWriter(), createRecord(), llvm::orc::EPCGenericJITLinkMemoryManager::deallocate(), llvm::DebuginfodServer::DebuginfodServer(), llvm::AMDGPUDisassembler::decodeKernelDescriptor(), llvm::orc::SharedMemoryMapper::deinitialize(), llvm::object::describe(), llvm::DWARFYAML::emitDebugAranges(), llvm::DWARFYAML::emitDebugRanges(), llvm::MCStreamer::emitDwarfFileDirective(), llvm::MCJIT::emitObject(), llvm::codeview::ContinuationRecordBuilder::end(), exprMin(), llvm::orc::EPCGenericJITLinkMemoryManager::InFlightAlloc::finalize(), llvm::orc::EPCGenericRTDyldMemoryManager::finalizeMemory(), llvm::pdb::NativeFunctionSymbol::findInlineFramesByVA(), llvm::pdb::LinePrinter::formatMsfStreamBlocks(), llvm::CodeViewYAML::fromDebugH(), llvm::orc::JITCompileCallbackManager::getCompileCallback(), llvm::MCDwarfLineTable::getFile(), llvm::MCDwarfDwoLineTable::getFile(), llvm::DWARFDataExtractor::getInitialLength(), llvm::orc::getMachOObjectFileSymbolInfo(), llvm::pdb::NativeInlineSiteSymbol::getName(), llvm::pdb::SymbolCache::getOrCreateGlobalSymbolByOffset(), llvm::object::ELFFile< ELFT >::getSectionAndRelocations(), llvm::object::COFFObjectFile::getSymbolAddress(), llvm::object::MachOObjectFile::getSymbolAlignment(), llvm::codeview::getSymbolName(), llvm::RuntimeDyldCOFF::getSymbolOffset(), handleAllErrors(), llvm::pdb::PDBFile::hasPDBIpiStream(), importedSymbolBegin(), importedSymbolEnd(), llvm::orc::SharedMemoryMapper::initialize(), isCodeViewDebugSubsection(), isDebugSSection(), isDebugTSection(), llvm::object::XCOFFSymbolRef::isFunction(), llvm::orc::EPCGenericDylibManager::lookupAsync(), llvm::orc::shared::detail::ResultDeserializer< SPSError, Error >::makeSafe(), llvm::orc::shared::detail::ResultDeserializer< SPSExpected< SPSTagT >, Expected< T > >::makeSafe(), llvm::xray::mergeProfilesByStack(), llvm::xray::mergeProfilesByThread(), llvm::orc::PerfSupportPlugin::modifyPassConfig(), llvm::orc::VTuneSupportPlugin::modifyPassConfig(), llvm::pdb::NativeEnumGlobals::NativeEnumGlobals(), llvm::orc::ConcurrentIRCompiler::operator()(), llvm::Pattern::parsePattern(), llvm::orc::PerfSupportPlugin::PerfSupportPlugin(), processConstantStringArg(), llvm::xray::Profile::Profile(), readBBAddrMapImpl(), readDynsymVersionsImpl(), llvm::orc::SharedMemoryMapper::release(), llvm::orc::SharedMemoryMapper::reserve(), resolveTypeIndexReferences(), llvm::codeview::SimpleTypeSerializer::serialize(), llvm::CodeViewYAML::toDebugH(), llvm::DWARFDebugLoclists::visitLocationList(), writeDIE(), writeDWARFOffset(), writeExtendedOpcode(), writeInitialLength(), writeListEntry(), llvm::codeview::ContinuationRecordBuilder::writeMemberType(), llvm::orc::InProcessMemoryMapper::~InProcessMemoryMapper(), and llvm::orc::PerfSupportPlugin::~PerfSupportPlugin().

◆ cantFail() [2/3]

template<typename T >
T & llvm::cantFail ( Expected< T & >  ValOrErr,
const char Msg = nullptr 
)

Report a fatal error if ValOrErr is a failure value, otherwise unwraps and returns the contained reference.

This function can be used to wrap calls to fallible functions ONLY when it is known that the Error will always be a success value. E.g.

// foo only attempts the fallible operation if DoFallibleOperation is
// true. If DoFallibleOperation is false then foo always returns a Bar&.
Expected<Bar&> foo(bool DoFallibleOperation);
Bar &X = cantFail(foo(false));
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang", "erlang-compatible garbage collector")
Tagged union holding either a T or a Error.
Definition: Error.h:474

Definition at line 808 of file Error.h.

References E, llvm_unreachable, and OS.

◆ cantFail() [3/3]

template<typename T >
T llvm::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.

This function can be used to wrap calls to fallible functions ONLY when it is known that the Error will always be a success value. E.g.

// foo only attempts the fallible operation if DoFallibleOperation is
// true. If DoFallibleOperation is false then foo always returns an int.
Expected<int> foo(bool DoFallibleOperation);
int X = cantFail(foo(false));

Definition at line 777 of file Error.h.

References E, llvm_unreachable, and OS.

◆ canTrackArgumentsInterprocedurally()

bool llvm::canTrackArgumentsInterprocedurally ( Function F)

Determine if the values of the given function's arguments can be tracked interprocedurally.

The value of an argument can be tracked if the function has local linkage and its address is not taken.

Definition at line 19 of file ValueLatticeUtils.cpp.

References F.

Referenced by runCVP(), and runIPSCCP().

◆ canTrackGlobalVariableInterprocedurally()

bool llvm::canTrackGlobalVariableInterprocedurally ( GlobalVariable GV)

Determine if the value maintained in the given global variable can be tracked interprocedurally.

A value can be tracked if the global variable has local linkage and is only used by non-volatile loads and stores.

Definition at line 27 of file ValueLatticeUtils.cpp.

References all_of(), llvm::GlobalVariable::hasDefinitiveInitializer(), llvm::GlobalValue::hasLocalLinkage(), llvm::GlobalVariable::isConstant(), and llvm::Value::users().

Referenced by runIPSCCP().

◆ canTrackReturnsInterprocedurally()

bool llvm::canTrackReturnsInterprocedurally ( Function F)

Determine if the values of the given function's returns can be tracked interprocedurally.

Return values can be tracked if the function has an exact definition and it doesn't have the "naked" attribute. Naked functions may contain assembly code that returns untrackable values.

Definition at line 23 of file ValueLatticeUtils.cpp.

References F.

Referenced by runIPSCCP().

◆ canUseDebuginfod()

bool llvm::canUseDebuginfod ( )

Returns false if a debuginfod lookup can be determined to have no chance of succeeding.

Definition at line 67 of file Debuginfod.cpp.

References getDefaultDebuginfodUrls(), and llvm::HTTPClient::isAvailable().

◆ capacity_in_bytes() [1/4]

BitVector::size_type llvm::capacity_in_bytes ( const BitVector X)
inline

Definition at line 835 of file BitVector.h.

References X.

Referenced by capacity_in_bytes().

◆ capacity_in_bytes() [2/4]

template<typename KeyT , typename ValueT , typename KeyInfoT >
size_t llvm::capacity_in_bytes ( const DenseMap< KeyT, ValueT, KeyInfoT > &  X)
inline

Definition at line 1330 of file DenseMap.h.

References X.

◆ capacity_in_bytes() [3/4]

template<typename T , unsigned N>
size_t llvm::capacity_in_bytes ( const SmallVector< T, N > &  X)
inline

Definition at line 1299 of file SmallVector.h.

References capacity_in_bytes(), and X.

◆ capacity_in_bytes() [4/4]

template<typename T >
static size_t llvm::capacity_in_bytes ( const T x)
inlinestatic

Definition at line 22 of file Capacity.h.

◆ caseFoldingDjbHash()

uint32_t llvm::caseFoldingDjbHash ( StringRef  Buffer,
uint32_t  H = 5381 
)

Computes the Bernstein hash after folding the input according to the Dwarf 5 standard case folding rules.

Definition at line 72 of file DJB.cpp.

References llvm::CallingConv::C, chopOneUTF32(), djbHash(), llvm::StringRef::empty(), fastCaseFoldingDjbHash(), foldCharDwarf(), H, and toUTF8().

Referenced by llvm::DWARF5AccelTableData::hash().

◆ cast() [1/4]

template<typename To , typename From >
decltype(auto) llvm::cast ( const From Val)
inline

cast<X> - Return the argument parameter cast to the specified type.

This casting operator asserts that the type is correct, so it does not return null on failure. It does not allow a null argument (use cast_if_present for that). It is typically used like this:

cast<Instruction>(myVal)->getParent()

Definition at line 565 of file Casting.h.

References assert(), and llvm::CastInfo< To, From, Enable >::doCast().

Referenced by LowerVECTOR_SHUFFLE_i1().

◆ cast() [2/4]

template<typename To , typename From >
decltype(auto) llvm::cast ( From Val)
inline

Definition at line 571 of file Casting.h.

References assert(), and llvm::CastInfo< To, From, Enable >::doCast().

◆ cast() [3/4]

template<typename To , typename From >
decltype(auto) llvm::cast ( From Val)
inline

Definition at line 577 of file Casting.h.

References assert(), and llvm::CastInfo< To, From, Enable >::doCast().

◆ cast() [4/4]

template<typename To , typename From >
decltype(auto) llvm::cast ( std::unique_ptr< From > &&  Val)
inline

Definition at line 583 of file Casting.h.

References assert().

◆ cast_if_present() [1/4]

template<class X , class Y >
auto llvm::cast_if_present ( const Y Val)
inline

cast_if_present<X> - Functionally identical to cast, except that a null value is accepted.

Definition at line 689 of file Casting.h.

References assert(), llvm::CastInfo< To, From, Enable >::castFailed(), llvm::detail::isPresent(), and llvm::detail::unwrapValue().

◆ cast_if_present() [2/4]

template<class X , class Y >
auto llvm::cast_if_present ( std::unique_ptr< Y > &&  Val)
inline

◆ cast_if_present() [3/4]

template<class X , class Y >
auto llvm::cast_if_present ( Y Val)
inline

◆ cast_if_present() [4/4]

template<class X , class Y >
auto llvm::cast_if_present ( Y Val)
inline

◆ cast_or_null() [1/4]

template<class X , class Y >
auto llvm::cast_or_null ( const Y Val)

Definition at line 720 of file Casting.h.

◆ cast_or_null() [2/4]

template<class X , class Y >
auto llvm::cast_or_null ( std::unique_ptr< Y > &&  Val)

Definition at line 732 of file Casting.h.

◆ cast_or_null() [3/4]

template<class X , class Y >
auto llvm::cast_or_null ( Y Val)

Definition at line 724 of file Casting.h.

◆ cast_or_null() [4/4]

template<class X , class Y >
auto llvm::cast_or_null ( Y Val)

Definition at line 728 of file Casting.h.

◆ CC_AArch64_AAPCS()

bool llvm::CC_AArch64_AAPCS ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_AArch64_Arm64EC_CFGuard_Check()

bool llvm::CC_AArch64_Arm64EC_CFGuard_Check ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_AArch64_Arm64EC_Thunk()

bool llvm::CC_AArch64_Arm64EC_Thunk ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_AArch64_Arm64EC_Thunk_Native()

bool llvm::CC_AArch64_Arm64EC_Thunk_Native ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_AArch64_Arm64EC_VarArg()

bool llvm::CC_AArch64_Arm64EC_VarArg ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_AArch64_DarwinPCS()

bool llvm::CC_AArch64_DarwinPCS ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_AArch64_DarwinPCS_ILP32_VarArg()

bool llvm::CC_AArch64_DarwinPCS_ILP32_VarArg ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_AArch64_DarwinPCS_VarArg()

bool llvm::CC_AArch64_DarwinPCS_VarArg ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_AArch64_GHC()

bool llvm::CC_AArch64_GHC ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_AArch64_Win64_CFGuard_Check()

bool llvm::CC_AArch64_Win64_CFGuard_Check ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_AArch64_Win64_VarArg()

bool llvm::CC_AArch64_Win64_VarArg ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_AArch64_Win64PCS()

bool llvm::CC_AArch64_Win64PCS ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_ARM_AAPCS()

bool llvm::CC_ARM_AAPCS ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_ARM_AAPCS_VFP()

bool llvm::CC_ARM_AAPCS_VFP ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_ARM_APCS()

bool llvm::CC_ARM_APCS ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_ARM_APCS_GHC()

bool llvm::CC_ARM_APCS_GHC ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_ARM_Win32_CFGuard_Check()

bool llvm::CC_ARM_Win32_CFGuard_Check ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_CSKY_ABIV2_SOFT_64()

static bool llvm::CC_CSKY_ABIV2_SOFT_64 ( unsigned ValNo,
MVT ValVT,
MVT LocVT,
CCValAssign::LocInfo LocInfo,
ISD::ArgFlagsTy ArgFlags,
CCState State 
)
static

◆ CC_M68k_Any_AssignToReg()

bool llvm::CC_M68k_Any_AssignToReg ( unsigned ValNo,
MVT ValVT,
MVT LocVT,
CCValAssign::LocInfo LocInfo,
ISD::ArgFlagsTy ArgFlags,
CCState State 
)
inline

NOTE this function is used to select registers for formal arguments and call FIXME: Handling on pointer arguments is not complete.

Definition at line 38 of file M68kCallingConv.h.

References llvm::CCState::addLoc(), llvm::CCState::AllocateReg(), llvm::M68kCCState::ArgTypeList, End, llvm::CCValAssign::getReg(), I, No, and Reg.

◆ CC_PPC32_SVR4()

bool llvm::CC_PPC32_SVR4 ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_PPC32_SVR4_ByVal()

bool llvm::CC_PPC32_SVR4_ByVal ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_PPC32_SVR4_VarArg()

bool llvm::CC_PPC32_SVR4_VarArg ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_PPC64_ELF()

bool llvm::CC_PPC64_ELF ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_PPC64_ELF_FIS()

bool llvm::CC_PPC64_ELF_FIS ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_SystemZ_Error()

bool llvm::CC_SystemZ_Error ( unsigned ,
MVT ,
MVT ,
CCValAssign::LocInfo ,
ISD::ArgFlagsTy ,
CCState  
)
inline

Definition at line 211 of file SystemZCallingConv.h.

References llvm_unreachable.

◆ CC_SystemZ_GHC_Error()

bool llvm::CC_SystemZ_GHC_Error ( unsigned ,
MVT ,
MVT ,
CCValAssign::LocInfo ,
ISD::ArgFlagsTy ,
CCState  
)
inline

Definition at line 216 of file SystemZCallingConv.h.

References report_fatal_error().

◆ CC_SystemZ_I128Indirect()

bool llvm::CC_SystemZ_I128Indirect ( unsigned ValNo,
MVT ValVT,
MVT LocVT,
CCValAssign::LocInfo LocInfo,
ISD::ArgFlagsTy ArgFlags,
CCState State 
)
inline

◆ CC_X86()

bool llvm::CC_X86 ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ CC_XPLINK64_Allocate128BitVararg()

bool llvm::CC_XPLINK64_Allocate128BitVararg ( unsigned ValNo,
MVT ValVT,
MVT LocVT,
CCValAssign::LocInfo LocInfo,
ISD::ArgFlagsTy ArgFlags,
CCState State 
)
inline

◆ CC_XPLINK64_Shadow_Reg()

bool llvm::CC_XPLINK64_Shadow_Reg ( unsigned ValNo,
MVT ValVT,
MVT LocVT,
CCValAssign::LocInfo LocInfo,
ISD::ArgFlagsTy ArgFlags,
CCState State 
)
inline

◆ center_justify()

FormattedString llvm::center_justify ( StringRef  Str,
unsigned  Width 
)
inline

center_justify - add spaces before and after string so total output is Width characters.

If Str is larger that Width, full string is written with no padding.

Definition at line 160 of file Format.h.

References llvm::FormattedString::JustifyCenter.

◆ changeToCall()

CallInst * llvm::changeToCall ( InvokeInst II,
DomTreeUpdater DTU = nullptr 
)

◆ changeToInvokeAndSplitBasicBlock()

BasicBlock * llvm::changeToInvokeAndSplitBasicBlock ( CallInst CI,
BasicBlock UnwindEdge,
DomTreeUpdater DTU = nullptr 
)

◆ changeToUnreachable()

unsigned llvm::changeToUnreachable ( Instruction I,
bool  PreserveLCSSA = false,
DomTreeUpdater DTU = nullptr,
MemorySSAUpdater MSSAU = nullptr 
)

◆ CheckAssert()

void llvm::CheckAssert ( SMLoc  Loc,
Init Condition,
Init Message 
)

◆ CheckBFIUnknownBlockQueries()

cl::opt< bool > llvm::CheckBFIUnknownBlockQueries ( "check-bfi-unknown-block-queries"  ,
cl::init(false)  ,
cl::Hidden  ,
cl::desc("Check if block frequency is queried for an unknown block " "for debugging missed BFI updates")   
)

◆ CheckBitcodeOutputToConsole()

bool llvm::CheckBitcodeOutputToConsole ( raw_ostream stream_to_check)

Determine if the raw_ostream provided is connected to a terminal.

If so, generate a warning message to errs() advising against display of bitcode and return true. Otherwise just return false. Check for output written to a console

Parameters
stream_to_checkThe stream to be checked

Definition at line 18 of file SystemUtils.cpp.

References errs(), and llvm::raw_ostream::is_displayed().

◆ checkConvertToNonDenormSingle()

bool llvm::checkConvertToNonDenormSingle ( APFloat ArgAPFloat)

◆ checkDebugInfoMetadata()

bool llvm::checkDebugInfoMetadata ( Module M,
iterator_range< Module::iterator Functions,
DebugInfoPerPass DebugInfoBeforePass,
StringRef  Banner,
StringRef  NameOfWrappedPass,
StringRef  OrigDIVerifyBugsReportFilePath 
)

Check original debug information after a pass.

Parameters
MThe module to collect debug information from.
FunctionsA range of functions to collect debug information from.
DebugInfoBeforePassDI metadata before a pass.
BannerA prefix string to add to debug/error messages.
NameOfWrappedPassA name of a pass to add to debug/error messages.

Definition at line 541 of file Debugify.cpp.

References checkFunctions(), checkInstructions(), checkVars(), llvm::MapVector< KeyT, ValueT, MapType, VectorType >::count(), dbgs(), DebugInfoPerPass::DIFunctions, DebugInfoPerPass::DILocations, DebugInfoPerPass::DIVariables, llvm::StringRef::empty(), llvm::json::Array::empty(), F, filterDbgVars(), getFilename(), I, llvm::MapVector< KeyT, ValueT, MapType, VectorType >::insert(), DebugInfoPerPass::InstToDelete, LLVM_DEBUG, and writeJSON().

Referenced by llvm::DebugifyEachInstrumentation::registerCallbacks(), and NewPMCheckDebugifyPass::run().

◆ checkedAdd()

template<typename T >
std::enable_if_t< std::is_signed_v< T >, std::optional< T > > llvm::checkedAdd ( T  LHS,
T  RHS 
)

Add two signed integers LHS and RHS.

Returns
Optional of sum if no signed overflow occurred, std::nullopt otherwise.

Definition at line 46 of file CheckedArithmetic.h.

References LHS, RHS, and llvm::APInt::sadd_ov().

Referenced by checkedMulAdd(), and llvm::InterleaveGroup< InstTy >::insertMember().

◆ checkedAddUnsigned()

template<typename T >
std::enable_if_t< std::is_unsigned_v< T >, std::optional< T > > llvm::checkedAddUnsigned ( T  LHS,
T  RHS 
)

Add two unsigned integers LHS and RHS.

Returns
Optional of sum if no unsigned overflow occurred, std::nullopt otherwise.

Definition at line 85 of file CheckedArithmetic.h.

References LHS, RHS, and llvm::APInt::uadd_ov().

Referenced by checkedMulAddUnsigned().

◆ checkedMul()

template<typename T >
std::enable_if_t< std::is_signed_v< T >, std::optional< T > > llvm::checkedMul ( T  LHS,
T  RHS 
)

Multiply two signed integers LHS and RHS.

Returns
Optional of product if no signed overflow occurred, std::nullopt otherwise.

Definition at line 64 of file CheckedArithmetic.h.

References LHS, RHS, and llvm::APInt::smul_ov().

Referenced by checkedMulAdd().

◆ checkedMulAdd()

template<typename T >
std::enable_if_t< std::is_signed_v< T >, std::optional< T > > llvm::checkedMulAdd ( T  A,
T  B,
T  C 
)

Multiply A and B, and add C to the resulting product.

Returns
Optional of result if no signed overflow occurred, std::nullopt otherwise.

Definition at line 73 of file CheckedArithmetic.h.

References A, B, llvm::CallingConv::C, checkedAdd(), and checkedMul().

◆ checkedMulAddUnsigned()

template<typename T >
std::enable_if_t< std::is_unsigned_v< T >, std::optional< T > > llvm::checkedMulAddUnsigned ( T  A,
T  B,
T  C 
)

Multiply unsigned integers A and B, and add C to the resulting product.

Returns
Optional of result if no unsigned overflow occurred, std::nullopt otherwise.

Definition at line 103 of file CheckedArithmetic.h.

References A, B, llvm::CallingConv::C, checkedAddUnsigned(), and checkedMulUnsigned().

◆ checkedMulUnsigned()

template<typename T >
std::enable_if_t< std::is_unsigned_v< T >, std::optional< T > > llvm::checkedMulUnsigned ( T  LHS,
T  RHS 
)

Multiply two unsigned integers LHS and RHS.

Returns
Optional of product if no unsigned overflow occurred, std::nullopt otherwise.

Definition at line 94 of file CheckedArithmetic.h.

References LHS, RHS, and llvm::APInt::umul_ov().

Referenced by checkedMulAddUnsigned().

◆ checkedSub()

template<typename T >
std::enable_if_t< std::is_signed_v< T >, std::optional< T > > llvm::checkedSub ( T  LHS,
T  RHS 
)

Subtract two signed integers LHS and RHS.

Returns
Optional of sum if no signed overflow occurred, std::nullopt otherwise.

Definition at line 55 of file CheckedArithmetic.h.

References LHS, RHS, and llvm::APInt::ssub_ov().

Referenced by llvm::InterleaveGroup< InstTy >::insertMember().

◆ checkForCycles() [1/2]

void llvm::checkForCycles ( const SDNode N,
const SelectionDAG DAG = nullptr,
bool  force = false 
)

Definition at line 13054 of file SelectionDAG.cpp.

References assert(), check, checkForCyclesHelper(), and N.

◆ checkForCycles() [2/2]

void llvm::checkForCycles ( const SelectionDAG DAG,
bool  force = false 
)

◆ checkGEPType()

Type * llvm::checkGEPType ( Type Ty)
inline

Definition at line 965 of file Instructions.h.

References assert().

◆ checkStackTop()

static std::optional< std::string > llvm::checkStackTop ( const SmallVectorImpl< wasm::ValType > &  ExpectedStackTop,
const SmallVectorImpl< wasm::ValType > &  Got 
)
static

◆ checkVOPDRegConstraints()

bool llvm::checkVOPDRegConstraints ( const SIInstrInfo TII,
const MachineInstr FirstMI,
const MachineInstr SecondMI 
)

◆ children()

template<class GraphType >
iterator_range< typename GraphTraits< GraphType >::ChildIteratorType > llvm::children ( const typename GraphTraits< GraphType >::NodeRef &  G)

◆ children_edges()

template<class GraphType >
iterator_range< typename GraphTraits< GraphType >::ChildEdgeIteratorType > llvm::children_edges ( const typename GraphTraits< GraphType >::NodeRef &  G)

Definition at line 137 of file GraphTraits.h.

References G, and make_range().

◆ clampStateAndIndicateChange()

template<typename StateType >
ChangeStatus llvm::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).

Definition at line 3462 of file Attributor.h.

References CHANGED, and UNCHANGED.

Referenced by clampStateAndIndicateChange< DerefState >().

◆ clampStateAndIndicateChange< DerefState >()

◆ classifyEHPersonality()

EHPersonality llvm::classifyEHPersonality ( const Value Pers)

◆ cleanUpTempFiles()

std::error_code llvm::cleanUpTempFiles ( ArrayRef< std::string >  FileName)

◆ clearAnnotationCache()

void llvm::clearAnnotationCache ( const Module Mod)

Definition at line 47 of file NVPTXUtilities.cpp.

References Mod.

Referenced by llvm::NVPTXAsmPrinter::doFinalization().

◆ cloneAndAdaptNoAliasScopes() [1/2]

void llvm::cloneAndAdaptNoAliasScopes ( ArrayRef< MDNode * >  NoAliasDeclScopes,
ArrayRef< BasicBlock * >  NewBlocks,
LLVMContext Context,
StringRef  Ext 
)

Clone the specified noalias decl scopes.

Then adapt all instructions in the NewBlocks basicblocks to the cloned versions. 'Ext' will be added to the duplicate scope names.

Definition at line 1198 of file CloneFunction.cpp.

References adaptNoAliasScopes(), cloneNoAliasScopes(), Context, dbgs(), llvm::ArrayRef< T >::empty(), I, LLVM_DEBUG, and llvm::ArrayRef< T >::size().

Referenced by cloneLoopBlocks(), and UnrollLoop().

◆ cloneAndAdaptNoAliasScopes() [2/2]

void llvm::cloneAndAdaptNoAliasScopes ( ArrayRef< MDNode * >  NoAliasDeclScopes,
Instruction IStart,
Instruction IEnd,
LLVMContext Context,
StringRef  Ext 
)

Clone the specified noalias decl scopes.

Then adapt all instructions in the [IStart, IEnd] (IEnd included !) range to the cloned versions. 'Ext' will be added to the duplicate scope names.

Definition at line 1215 of file CloneFunction.cpp.

References adaptNoAliasScopes(), assert(), cloneNoAliasScopes(), Context, dbgs(), llvm::ArrayRef< T >::empty(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Instruction::getParent(), I, LLVM_DEBUG, make_range(), and llvm::ArrayRef< T >::size().

◆ CloneAndPruneFunctionInto()

void llvm::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.

The effect of this is to copy significantly less code in cases where (for example) a function call with constant arguments is inlined, and those constant arguments cause a significant amount of code in the callee to be dead. Since this doesn't produce an exactly copy of the input, it can't be used for things like CloneFunction or CloneModule.

If ModuleLevelChanges is false, VMap contains no non-identity GlobalValue mappings.

The effect of this is to copy significantly less code in cases where (for example) a function call with constant arguments is inlined, and those constant arguments cause a significant amount of code in the callee to be dead. Since this doesn't produce an exact copy of the input, it can't be used for things like CloneFunction or CloneModule.

Definition at line 980 of file CloneFunction.cpp.

References CloneAndPruneIntoFromInst(), llvm::BasicBlock::front(), and llvm::Function::front().

Referenced by InlineFunction().

◆ CloneAndPruneIntoFromInst()

void llvm::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.

Instead it starts at an instruction provided by the caller and copies (and prunes) only the code reachable from that instruction.

Definition at line 664 of file CloneFunction.cpp.

References append_range(), llvm::Function::args(), assert(), llvm::BasicBlock::back(), llvm::BasicBlock::begin(), ConstantFoldTerminator(), llvm::SmallPtrSetImpl< PtrType >::contains(), llvm::ValueMap< KeyT, ValueT, Config >::count(), DeleteDeadBlocks(), DL, llvm::SmallVectorBase< Size_T >::empty(), llvm::Function::end(), llvm::BasicBlock::eraseFromParent(), llvm::Instruction::eraseFromParent(), llvm::BasicBlock::front(), llvm::PoisonValue::get(), llvm::CallBase::getCalledFunction(), llvm::Module::getDataLayout(), llvm::Function::getEntryBlock(), llvm::PHINode::getIncomingBlock(), llvm::PHINode::getIncomingValue(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::PHINode::getNumIncomingValues(), llvm::GlobalValue::getParent(), llvm::Instruction::getParent(), getParent(), llvm::BasicBlock::getSinglePredecessor(), llvm::BranchInst::getSuccessor(), llvm::BasicBlock::getTerminator(), llvm::Value::getType(), I, Idx, llvm::SetVector< T, Vector, Set, N >::insert(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::BranchInst::isConditional(), isInstructionTriviallyDead(), llvm::Function::isIntrinsic(), llvm::ValueMap< KeyT, ValueT, Config >::lookup(), make_range(), MapValue(), llvm::BasicBlock::moveBefore(), llvm::SmallVectorImpl< T >::pop_back_val(), pred, pred_size(), predecessors(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), RemapDbgVariableRecordRange(), RemapInstruction(), llvm::PHINode::removeIncomingValue(), llvm::Value::replaceAllUsesWith(), RF_NoModuleLevelChanges, RF_None, llvm::PHINode::setIncomingBlock(), llvm::PHINode::setIncomingValue(), simplifyInstruction(), llvm::SetVector< T, Vector, Set, N >::size(), llvm::SmallVectorBase< Size_T >::size(), Size, successors(), and llvm::Value::users().

Referenced by CloneAndPruneFunctionInto().

◆ CloneBasicBlock()

BasicBlock * llvm::CloneBasicBlock ( const BasicBlock BB,
ValueToValueMapTy VMap,
const Twine NameSuffix = "",
Function F = nullptr,
ClonedCodeInfo CodeInfo = nullptr,
DebugInfoFinder DIFinder = nullptr 
)

Return a copy of the specified basic block, but without embedding the block into a particular function.

See comments in Cloning.h.

The block returned is an exact copy of the specified basic block, without any remapping having been performed. Because of this, this is only suitable for applications where the basic block will be inserted into the same function that it was cloned from (loop unrolling would use this, for example).

Also, note that this function makes a direct copy of the basic block, and can thus produce illegal LLVM code. In particular, it will copy any PHI nodes from the original block, even though there are no predecessors for the newly cloned block (thus, phi nodes will have to be updated). Also, this block will branch to the old successors of the original block: these successors will have to have any PHI nodes updated to account for the new incoming edges.

The correlation between instructions in the source and result basic blocks is recorded in the VMap map.

If you have a particular suffix you'd like to use to add to any cloned names, specify it as the optional third parameter.

If you would like the basic block to be auto-inserted into the end of a function, you can specify it as the optional fourth parameter.

If you would like to collect additional information about the cloned function, you can specify a ClonedCodeInfo object with the optional fifth parameter.

Definition at line 42 of file CloneFunction.cpp.

References llvm::Instruction::cloneDebugInfoFrom(), llvm::ClonedCodeInfo::ContainsCalls, llvm::ClonedCodeInfo::ContainsDynamicAllocas, llvm::ClonedCodeInfo::ContainsMemProfMetadata, llvm::BasicBlock::Create(), llvm::BasicBlock::end(), F, llvm::BasicBlock::getContext(), llvm::Value::getName(), llvm::Value::hasName(), I, llvm::Instruction::insertBefore(), llvm::BasicBlock::IsNewDbgInfoFormat, llvm::DebugInfoFinder::processInstruction(), and llvm::Value::setName().

Referenced by buildClonedLoopBlocks(), CloneFunctionInto(), cloneLoopBlocks(), CloneLoopBlocks(), cloneLoopWithPreheader(), SplitIndirectBrCriticalEdges(), UnrollAndJamLoop(), and UnrollLoop().

◆ CloneFunction()

Function * llvm::CloneFunction ( Function F,
ValueToValueMapTy VMap,
ClonedCodeInfo CodeInfo = nullptr 
)

Return a copy of the specified function and add it to that function's module.

Also, any references specified in the VMap are changed to refer to their mapped value instead of the original one. If any of the arguments to the function are in the VMap, the arguments are deleted from the resultant function. The VMap is updated to include mappings from all of the instructions and basicblocks in the function from their old to new values. The final argument captures information about the cloned code if non-null.

Precondition
VMap contains no non-identity GlobalValue mappings.

Also, any references specified in the VMap are changed to refer to their mapped value instead of the original one. If any of the arguments to the function are in the VMap, the arguments are deleted from the resultant function. The VMap is updated to include mappings from all of the instructions and basicblocks in the function from their old to new values.

Definition at line 320 of file CloneFunction.cpp.

References llvm::Function::arg_begin(), CloneFunctionInto(), llvm::ValueMap< KeyT, ValueT, Config >::count(), llvm::Function::Create(), F, I, llvm::Function::setIsNewDbgInfoFormat(), and llvm::Value::setName().

Referenced by cloneCandidateFunction(), createFunctionClones(), and replaceAliasWithAliasee().

◆ CloneFunctionInto()

void llvm::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.

Note that if NewFunc already has basic blocks, the ones cloned into it will be added to the end of the function. This function fills in a list of return instructions, and can optionally remap types and/or append the specified suffix to all values cloned.

If Changes is CloneFunctionChangeType::LocalChangesOnly, VMap is required to contain no non-identity GlobalValue mappings. Otherwise, referenced metadata will be cloned.

If Changes is less than CloneFunctionChangeType::DifferentModule indicating cloning into the same module (even if it's LocalChangesOnly), if debug info metadata transitively references a DISubprogram, it will be cloned, effectively upgrading Changes to GlobalChanges while suppressing cloning of types and compile units.

If Changes is CloneFunctionChangeType::DifferentModule, the new module's !llvm.dbg.cu will get updated with any newly created compile units. (CloneFunctionChangeType::ClonedModule leaves that work for the caller.)

FIXME: Consider simplifying this function by splitting out CloneFunctionMetadataInto() and expecting / updating callers to call it first when / how it's needed.

Definition at line 90 of file CloneFunction.cpp.

References llvm::GlobalObject::addMetadata(), llvm::Function::arg_size(), llvm::Function::args(), assert(), CloneBasicBlock(), llvm::Function::copyAttributesFrom(), llvm::ValueMap< KeyT, ValueT, Config >::count(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::Function::end(), llvm::Function::front(), llvm::BlockAddress::get(), llvm::AttributeList::get(), llvm::GlobalObject::getAllMetadata(), llvm::Function::getAttributes(), llvm::Function::getContext(), llvm::AttributeList::getFnAttrs(), llvm::Module::getOrInsertNamedMetadata(), llvm::AttributeList::getParamAttrs(), llvm::GlobalValue::getParent(), llvm::Function::getPersonalityFn(), llvm::Function::getPrefixData(), llvm::Function::getPrologueData(), llvm::AttributeList::getRetAttrs(), llvm::Function::getSubprogram(), llvm::BasicBlock::getTerminator(), llvm::Function::hasPersonalityFn(), llvm::Function::hasPrefixData(), llvm::Function::hasPrologueData(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::GlobalValue::isDeclaration(), llvm::Function::IsNewDbgInfoFormat, MapMetadata(), MapValue(), llvm::ValueMap< KeyT, ValueT, Config >::MD(), N, llvm::SmallVectorTemplateBase< T, bool >::push_back(), RemapDbgVariableRecordRange(), RemapInstruction(), RF_NoModuleLevelChanges, RF_None, llvm::Function::setAttributes(), llvm::Function::setIsNewDbgInfoFormat(), llvm::Function::setPersonalityFn(), llvm::Function::setPrefixData(), llvm::Function::setPrologueData(), and llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::try_emplace().

Referenced by CloneFunction(), CloneModule(), and llvm::Attributor::internalizeFunctions().

◆ cloneLoop()

Loop * llvm::cloneLoop ( 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.

Definition at line 1698 of file LoopUtils.cpp.

References llvm::LPPassManager::addLoop(), llvm::LoopInfoBase< BlockT, LoopT >::addTopLevelLoop(), llvm::LoopInfoBase< BlockT, LoopT >::AllocateLoop(), cloneLoop(), llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), and I.

Referenced by cloneLoop(), and cloneLoopBlocks().

◆ cloneLoopWithPreheader()

Loop * llvm::cloneLoopWithPreheader ( BasicBlock Before,
BasicBlock LoopDomBB,
Loop OrigLoop,
ValueToValueMapTy VMap,
const Twine NameSuffix,
LoopInfo LI,
DominatorTree DT,
SmallVectorImpl< BasicBlock * > &  Blocks 
)

◆ CloneModule() [1/3]

std::unique_ptr< Module > llvm::CloneModule ( const Module M)

Return an exact copy of the specified module.

This is not as easy as it might seem because we have to worry about making copies of global variables and functions, and making their (initializers and references, respectively) refer to the right globals.

Cloning un-materialized modules is not currently supported, so any modules initialized via lazy loading should be materialized before cloning

Definition at line 39 of file CloneModule.cpp.

References CloneModule().

Referenced by CloneModule(), llvm::orc::cloneToNewContext(), LLVMCloneModule(), and SplitModule().

◆ CloneModule() [2/3]

std::unique_ptr< Module > llvm::CloneModule ( const Module M,
ValueToValueMapTy VMap 
)

Definition at line 46 of file CloneModule.cpp.

References CloneModule().

◆ CloneModule() [3/3]

std::unique_ptr< Module > llvm::CloneModule ( const Module M,
ValueToValueMapTy VMap,
function_ref< bool(const GlobalValue *)>  ShouldCloneDefinition 
)

◆ cloneNoAliasScopes()

void llvm::cloneNoAliasScopes ( ArrayRef< MDNode * >  NoAliasDeclScopes,
DenseMap< MDNode *, MDNode * > &  ClonedScopes,
StringRef  Ext,
LLVMContext Context 
)

Duplicate the specified list of noalias decl scopes.

The 'Ext' string is added as an extension to the name. Afterwards, the ClonedScopes contains the mapping of the original scope MDNode onto the cloned scope. Be aware that the cloned scopes are still part of the original scope domain.

Definition at line 1139 of file CloneFunction.cpp.

References Context, llvm::MDBuilder::createAnonymousAliasScope(), llvm::AliasScopeNode::getDomain(), llvm::AliasScopeNode::getName(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::insert(), and Name.

Referenced by cloneAndAdaptNoAliasScopes(), and llvm::JumpThreadingPass::cloneInstructions().

◆ collectChildrenInLoop()

SmallVector< DomTreeNode *, 16 > llvm::collectChildrenInLoop ( DomTreeNode N,
const Loop CurLoop 
)

Does a BFS from a given node to all of its children inside a given loop.

The returned vector of nodes includes the starting point.

Definition at line 450 of file LoopUtils.cpp.

References children(), llvm::LoopBase< BlockT, LoopT >::contains(), I, N, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::SmallVectorBase< Size_T >::size().

Referenced by sinkRegion().

◆ collectCmpOps()

void llvm::collectCmpOps ( CmpInst Comparison,
SmallVectorImpl< Value * > &  CmpOperands 
)

◆ collectDebugInfoMetadata()

bool llvm::collectDebugInfoMetadata ( Module M,
iterator_range< Module::iterator Functions,
DebugInfoPerPass DebugInfoBeforePass,
StringRef  Banner,
StringRef  NameOfWrappedPass 
)

Collect original debug information before a pass.

Parameters
MThe module to collect debug information from.
FunctionsA range of functions to collect debug information from.
DebugInfoBeforePassDI metadata before a pass.
BannerA prefix string to add to debug/error messages.
NameOfWrappedPassA name of a pass to add to debug/error messages.

Definition at line 295 of file Debugify.cpp.

References llvm::MapVector< KeyT, ValueT, MapType, VectorType >::count(), dbgs(), DebugInfoPerPass::DIFunctions, DebugInfoPerPass::DILocations, DebugInfoPerPass::DIVariables, F, filterDbgVars(), I, llvm::MapVector< KeyT, ValueT, MapType, VectorType >::insert(), DebugInfoPerPass::InstToDelete, LLVM_DEBUG, and llvm::MapVector< KeyT, ValueT, MapType, VectorType >::size().

Referenced by applyDebugify(), and NewPMDebugifyPass::run().

◆ collectGlobalObjectNameStrings()

Error llvm::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.

The Result string is comprised of three fields: The first field is the length of the uncompressed strings, and the the second field is the length of the zlib-compressed string. Both fields are encoded in ULEB128. If doCompress is false, the third field is the uncompressed strings; otherwise it is the compressed string. When the string compression is off, the second field will have value zero.

Definition at line 626 of file InstrProf.cpp.

References assert(), llvm::ArrayRef< T >::begin(), llvm::compression::zlib::BestSizeCompression, llvm::compression::zlib::compress(), count(), llvm::ArrayRef< T >::empty(), encodeULEB128(), llvm::ArrayRef< T >::end(), getInstrProfNameSeparator(), P, llvm::ArrayRef< T >::size(), llvm::SmallVectorBase< Size_T >::size(), llvm::Error::success(), and llvm::dwarf::toStringRef().

Referenced by collectPGOFuncNameStrings(), and collectVTableStrings().

◆ collectParametricTerms()

void llvm::collectParametricTerms ( ScalarEvolution SE,
const SCEV Expr,
SmallVectorImpl< const SCEV * > &  Terms 
)

Collect parametric terms occurring in step expressions (first step of delinearization).

Find parametric terms in this SCEVAddRecExpr.

We first for parameters in two places: 1) The strides of AddRec expressions. 2) Unknowns that are multiplied with AddRec expressions.

Definition at line 171 of file Delinearization.cpp.

References dbgs(), LLVM_DEBUG, and visitAll().

Referenced by delinearize().

◆ collectPGOFuncNameStrings()

Error llvm::collectPGOFuncNameStrings ( ArrayRef< GlobalVariable * >  NameVars,
std::string &  Result,
bool  doCompression = true 
)

Produce Result string with the same format described above.

The input is vector of PGO function name variables that are referenced. The global variable element in 'NameVars' is a string containing the pgo name of a function. See createPGOFuncNameVar that creates these global variables.

Definition at line 671 of file InstrProf.cpp.

References collectGlobalObjectNameStrings(), getPGOFuncNameVarInitializer(), and llvm::compression::zlib::isAvailable().

◆ collectUsedGlobalVariables()

GlobalVariable * llvm::collectUsedGlobalVariables ( const Module M,
SmallVectorImpl< GlobalValue * > &  Vec,
bool  CompilerUsed 
)

◆ collectVTableStrings()

Error llvm::collectVTableStrings ( ArrayRef< GlobalVariable * >  VTables,
std::string &  Result,
bool  doCompression 
)

◆ colorEHFunclets()

DenseMap< BasicBlock *, ColorVector > llvm::colorEHFunclets ( Function F)

◆ combineKnownMetadata()

static void llvm::combineKnownMetadata ( Instruction ReplInst,
Instruction I 
)
static

Definition at line 241 of file GVNHoist.cpp.

References combineMetadata(), and I.

◆ combineLostFractions()

static lostFraction llvm::combineLostFractions ( lostFraction  moreSignificant,
lostFraction  lessSignificant 
)
static

Definition at line 650 of file APFloat.cpp.

References lfExactlyHalf, lfExactlyZero, lfLessThanHalf, and lfMoreThanHalf.

◆ combineMetadata()

void llvm::combineMetadata ( Instruction K,
const Instruction J,
ArrayRef< unsigned KnownIDs,
bool  DoesKMove 
)

◆ combineMetadataForCSE()

void llvm::combineMetadataForCSE ( Instruction K,
const Instruction J,
bool  DoesKMove 
)

Combine the metadata of two instructions so that K can replace J.

This specifically handles the case of CSE-like transformations. Some metadata can only be kept if K dominates J. For this to be correct, K cannot be hoisted.

Unknown metadata is removed.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 3327 of file Local.cpp.

References combineMetadata().

Referenced by llvm::gvn::AvailableValue::MaterializeAdjustedValue(), patchReplacementInstruction(), llvm::JumpThreadingPass::simplifyPartiallyRedundantLoad(), sinkLastInstruction(), and llvm::InstCombinerImpl::visitLoadInst().

◆ commonAlignment()

Align llvm::commonAlignment ( Align  A,
uint64_t  Offset 
)
inline

Returns the alignment that satisfies both alignments.

Same semantic as MinAlign.

Definition at line 212 of file Alignment.h.

References A, MinAlign(), and Offset.

Referenced by llvm::SITargetLowering::allocatePreloadKernArgSGPRs(), llvm::SIRegisterInfo::buildSpillLoadStore(), combineExtractFromVectorLoad(), computeAlignmentAfterScalarization(), llvm::RuntimeDyldImpl::computeSectionStubBufSize(), llvm::MachineFrameInfo::CreateFixedObject(), llvm::MachineFrameInfo::CreateFixedSpillStackObject(), createMemCpyLoopKnownSize(), createMemMoveLoop(), createMemSetLoop(), expandf64Toi32(), getAdjustedAlignment(), llvm::MachineMemOperand::getAlign(), llvm::MachineFunction::getMachineMemOperand(), getMemcpyLoadsAndStores(), llvm::X86TTIImpl::getMemoryOpCost(), getParamsForOneTrueMaskedElt(), llvm::AMDGPULegalizerInfo::getSegmentAperture(), inferAlignFromPtrInfo(), llvm::SelectionDAG::InferPtrAlign(), llvm::CallLowering::insertSRetLoads(), llvm::CallLowering::insertSRetStores(), llvm::AMDGPULegalizerInfo::legalizeTrapHsaQueuePtr(), llvm::SITargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::LegalizerHelper::lowerExtractInsertVectorElt(), LowerF128Load(), LowerF128Store(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::AMDGPUCallLowering::lowerFormalArgumentsKernel(), lowerKernelArguments(), llvm::NVPTXTargetLowering::LowerReturn(), llvm::CombinerHelper::matchCombineExtractedVectorLoad(), llvm::PPCTargetLowering::PerformDAGCombine(), performLOADCombine(), PerformVMOVRRDCombine(), scalarizeMaskedCompressStore(), scalarizeMaskedExpandLoad(), scalarizeMaskedLoad(), scalarizeMaskedStore(), llvm::RISCVDAGToDAGISel::SelectAddrRegImm(), llvm::TargetLowering::SimplifySetCC(), splitMergedValStore(), splitStoreSplat(), llvm::AMDGPUTargetLowering::SplitVectorLoad(), llvm::AMDGPUTargetLowering::SplitVectorStore(), SRAGlobal(), unpackLoadToAggregate(), and unpackStoreToAggregate().

◆ compareLoops()

template<class BlockT , class LoopT >
static void llvm::compareLoops ( const LoopT *  L,
const LoopT *  OtherL,
DenseMap< BlockT *, const LoopT * > &  OtherLoopHeaders 
)
static

◆ CompareVars()

static bool llvm::CompareVars ( const ASanStackVariableDescription a,
const ASanStackVariableDescription b 
)
inlinestatic

◆ compareVectors()

template<typename T >
bool llvm::compareVectors ( std::vector< T > &  BB1,
std::vector< T > &  BB2 
)

Definition at line 650 of file GenericLoopInfoImpl.h.

References sort().

◆ CompleteNodeLabelString()

template<typename BasicBlockT >
std::string llvm::CompleteNodeLabelString ( const BasicBlockT *  Node,
function_ref< void(raw_string_ostream &, const BasicBlockT &)>  HandleBasicBlock,
function_ref< void(std::string &, unsigned &, unsigned)>  HandleComment 
)

Definition at line 140 of file CFGPrinter.h.

References Idx, and OS.

Referenced by llvm::DOTGraphTraits< DOTFuncInfo * >::getCompleteNodeLabel().

◆ computeAccessFunctions()

void llvm::computeAccessFunctions ( ScalarEvolution SE,
const SCEV Expr,
SmallVectorImpl< const SCEV * > &  Subscripts,
SmallVectorImpl< const SCEV * > &  Sizes 
)

◆ computeAllocationSizeForSections()

static uint64_t llvm::computeAllocationSizeForSections ( std::vector< uint64_t > &  SectionSizes,
Align  Alignment 
)
static

Definition at line 463 of file RuntimeDyld.cpp.

References alignTo().

Referenced by llvm::RuntimeDyldImpl::computeTotalAllocSize().

◆ computeAndAddLiveIns()

void llvm::computeAndAddLiveIns ( LivePhysRegs LiveRegs,
MachineBasicBlock MBB 
)

Convenience function combining computeLiveIns() and addLiveIns().

Definition at line 336 of file LivePhysRegs.cpp.

References addLiveIns(), computeLiveIns(), and MBB.

Referenced by recomputeLiveIns(), and llvm::ARMBlockPlacement::revertWhileToDoLoop().

◆ computeArchiveRelativePath()

Expected< std::string > llvm::computeArchiveRelativePath ( StringRef  From,
StringRef  To 
)

◆ ComputeASanStackFrameDescription()

SmallString< 64 > llvm::ComputeASanStackFrameDescription ( const SmallVectorImpl< ASanStackVariableDescription > &  Vars)

◆ ComputeASanStackFrameLayout()

ASanStackFrameLayout llvm::ComputeASanStackFrameLayout ( SmallVectorImpl< ASanStackVariableDescription > &  Vars,
uint64_t  Granularity,
uint64_t  MinHeaderSize 
)

◆ computeBundlePadding()

uint64_t llvm::computeBundlePadding ( const MCAssembler Assembler,
const MCEncodedFragment F,
uint64_t  FOffset,
uint64_t  FSize 
)

Compute the amount of padding required before the fragment F to obey bundling restrictions, where FOffset is the fragment's offset in its section and FSize is the fragment's size.

Definition at line 213 of file MCFragment.cpp.

References assert(), F, and llvm::MCAssembler::getBundleAlignSize().

Referenced by llvm::MCAsmLayout::layoutFragment().

◆ computeConstantRange()

ConstantRange llvm::computeConstantRange ( const Value V,
bool  ForSigned,
bool  UseInstrInfo = true,
AssumptionCache AC = nullptr,
const Instruction CtxI = nullptr,
const DominatorTree DT = nullptr,
unsigned  Depth = 0 
)

◆ computeConstantRangeIncludingKnownBits()

ConstantRange llvm::computeConstantRangeIncludingKnownBits ( const WithCache< const Value * > &  V,
bool  ForSigned,
const SimplifyQuery SQ 
)

◆ ComputeCrossModuleImport()

void llvm::ComputeCrossModuleImport ( const ModuleSummaryIndex Index,
const DenseMap< StringRef, GVSummaryMapTy > &  ModuleToDefinedGVSummaries,
function_ref< bool(GlobalValue::GUID, const GlobalValueSummary *)>  isPrevailing,
DenseMap< StringRef, FunctionImporter::ImportMapTy > &  ImportLists,
DenseMap< StringRef, FunctionImporter::ExportSetTy > &  ExportLists 
)

Compute all the imports and exports for every module in the Index.

Compute all the import and export for every module using the Index.

ModuleToDefinedGVSummaries contains for each Module a map (GUID -> Summary) for every global defined in the module.

isPrevailing is a callback that will be called with a global value's GUID and summary and should return whether the module corresponding to the summary contains the linker-prevailing copy of that value.

ImportLists will be populated with an entry for every Module we are importing into. This entry is itself a map that can be passed to FunctionImporter::importFunctions() above (see description there).

ExportLists contains for each Module the set of globals (GUID) that will be imported by another module, or referenced by such a function. I.e. this is the set of globals that need to be promoted/renamed appropriately.

The module identifier strings that are the keys of the above two maps are owned by the in-memory ModuleSummaryIndex the importing decisions are made from (the module path for each summary is owned by the index's module path string table).

Definition at line 992 of file FunctionImport.cpp.

References assert(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::begin(), checkVariableImport(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::count(), ModuleImportsManager::create(), dbgs(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::end(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::erase(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), LLVM_DEBUG, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::lookup(), numGlobalVarSummaries(), Ref, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::size(), and llvm::StringRef::size().

Referenced by llvm::ThinLTOCodeGenerator::crossModuleImport(), llvm::ThinLTOCodeGenerator::emitImports(), llvm::ThinLTOCodeGenerator::gatherImportedSummariesForModule(), llvm::ThinLTOCodeGenerator::internalize(), llvm::ThinLTOCodeGenerator::promote(), and llvm::ThinLTOCodeGenerator::run().

◆ computeDeadSymbolsAndUpdateIndirectCalls()

void llvm::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.

Non-prevailing symbols are symbols without a prevailing copy anywhere in IR and are normally dead, isPrevailing predicate returns status of symbol. Also update call edges for indirect calls to local functions added from SamplePGO when needed.

Definition at line 1202 of file FunctionImport.cpp.

References any_of(), assert(), llvm::GlobalValue::AvailableExternallyLinkage, ComputeDead, dbgs(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::empty(), llvm::SmallVectorBase< Size_T >::empty(), llvm::GlobalValue::isInterposableLinkage(), llvm::GlobalValue::LinkOnceODRLinkage, LLVM_DEBUG, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), Ref, report_fatal_error(), llvm::SmallVectorImpl< T >::reserve(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::size(), updateIndirectCalls(), updateValueInfoForIndirectCalls(), and llvm::GlobalValue::WeakODRLinkage.

Referenced by computeDeadSymbolsWithConstProp().

◆ computeDeadSymbolsWithConstProp()

void llvm::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.

Definition at line 1318 of file FunctionImport.cpp.

References computeDeadSymbolsAndUpdateIndirectCalls().

Referenced by computeDeadSymbolsInIndex(), and llvm::lto::LTO::run().

◆ computeDelta()

static int64_t llvm::computeDelta ( SectionEntry A,
SectionEntry B 
)
static

Definition at line 310 of file RuntimeDyldMachO.cpp.

References A, and B.

Referenced by llvm::RuntimeDyldMachOCRTPBase< Impl >::registerEHFrames().

◆ ComputeEditDistance()

template<typename T >
unsigned llvm::ComputeEditDistance ( ArrayRef< T FromArray,
ArrayRef< T ToArray,
bool  AllowReplacements = true,
unsigned  MaxEditDistance = 0 
)

Definition at line 106 of file edit_distance.h.

References ComputeMappedEditDistance(), and X.

Referenced by llvm::StringRef::edit_distance().

◆ computeEHOnlyBlocks()

template<typename FunctionT , typename BlockT >
static void llvm::computeEHOnlyBlocks ( FunctionT &  F,
DenseSet< BlockT * > &  EHBlocks 
)
static

◆ computeExpressionSize()

unsigned short llvm::computeExpressionSize ( ArrayRef< const SCEV * >  Args)
inline

Definition at line 95 of file ScalarEvolutionExpressions.h.

References Size.

◆ computeFunctionBodyMemoryAccess()

MemoryEffects llvm::computeFunctionBodyMemoryAccess ( Function F,
AAResults AAR 
)

Returns the memory access properties of this copy of the function.

Definition at line 252 of file FunctionAttrs.cpp.

References checkFunctionMemoryAccess(), and F.

◆ computeKnownBits() [1/6]

KnownBits llvm::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.

Definition at line 182 of file ValueTracking.cpp.

References computeKnownBits(), Depth, DL, and safeCxtI().

◆ computeKnownBits() [2/6]

KnownBits llvm::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.

Definition at line 1838 of file ValueTracking.cpp.

References computeKnownBits(), Depth, llvm::SimplifyQuery::DL, and getBitWidth().

◆ computeKnownBits() [3/6]

KnownBits llvm::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.

Definition at line 174 of file ValueTracking.cpp.

References computeKnownBits(), Depth, DL, and safeCxtI().

◆ computeKnownBits() [4/6]

void llvm::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 
)

◆ computeKnownBits() [5/6]

void llvm::computeKnownBits ( const Value V,
KnownBits Known,
unsigned  Depth,
const SimplifyQuery Q 
)

Definition at line 154 of file ValueTracking.cpp.

References computeKnownBits(), Depth, and llvm::APInt::getAllOnes().

◆ computeKnownBits() [6/6]

KnownBits llvm::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.

Definition at line 1847 of file ValueTracking.cpp.

References computeKnownBits(), Depth, llvm::SimplifyQuery::DL, and getBitWidth().

◆ computeKnownBitsFromContext()

void llvm::computeKnownBitsFromContext ( const Value V,
KnownBits Known,
unsigned  Depth,
const SimplifyQuery Q 
)

◆ computeKnownBitsFromRangeMetadata()

void llvm::computeKnownBitsFromRangeMetadata ( const MDNode Ranges,
KnownBits Known 
)

Compute known bits from the range metadata.

KnownZero the set of bits that are known to be zero KnownOne the set of bits that are known to be one

Definition at line 410 of file ValueTracking.cpp.

References assert(), BitWidth, countl_zero(), llvm::KnownBits::getBitWidth(), llvm::APInt::getHighBitsSet(), Lower, llvm::KnownBits::One, llvm::APInt::setAllBits(), Upper, and llvm::KnownBits::Zero.

Referenced by llvm::SelectionDAG::computeKnownBits(), computeKnownBitsFromOperator(), and llvm::GISelKnownBits::computeKnownBitsImpl().

◆ computeKnownFPClass() [1/4]

KnownFPClass llvm::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.

This function is defined on values with floating-point type, values vectors of floating-point type, and arrays of floating-point type. InterestedClasses is a compile time optimization hint for which floating point classes should be queried. Queries not specified in InterestedClasses should be reliable if they are determined during the query.

Definition at line 5695 of file ValueTracking.cpp.

References computeKnownFPClass(), and Depth.

Referenced by cannotBeNegativeZero(), cannotBeOrderedLessThanZero(), computeKnownFPClass(), computeKnownFPClass(), llvm::InstCombinerImpl::computeKnownFPClass(), computeKnownFPClassForFPTrunc(), computeKnownFPSignBit(), foldFPtoI(), isKnownNeverInfinity(), isKnownNeverInfOrNaN(), isKnownNeverNaN(), simplifyFCmpInst(), and simplifyFMAFMul().

◆ computeKnownFPClass() [2/4]

KnownFPClass llvm::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 
)
inline

Definition at line 495 of file ValueTracking.h.

References computeKnownFPClass(), Depth, and DL.

◆ computeKnownFPClass() [3/4]

KnownFPClass llvm::computeKnownFPClass ( const Value V,
FastMathFlags  FMF,
FPClassTest  InterestedClasses,
unsigned  Depth,
const SimplifyQuery SQ 
)
inline

Wrapper to account for known fast math flags at the use instruction.

Definition at line 507 of file ValueTracking.h.

References computeKnownFPClass(), Depth, llvm::FastMathFlags::noInfs(), and llvm::FastMathFlags::noNaNs().

◆ computeKnownFPClass() [4/4]

KnownFPClass llvm::computeKnownFPClass ( const Value V,
FPClassTest  InterestedClasses,
unsigned  Depth,
const SimplifyQuery SQ 
)

Definition at line 5706 of file ValueTracking.cpp.

References computeKnownFPClass(), and Depth.

◆ computeKnownFPSignBit()

std::optional< bool > llvm::computeKnownFPSignBit ( const Value V,
unsigned  Depth,
const SimplifyQuery SQ 
)
inline

Return false if we can prove that the specified FP value's sign bit is 0.

Return true if we can prove that the specified FP value's sign bit is 1. Otherwise return std::nullopt.

Definition at line 577 of file ValueTracking.h.

References computeKnownFPClass(), Depth, fcAllFlags, and llvm::KnownFPClass::SignBit.

Referenced by simplifyUnaryIntrinsic(), and llvm::InstCombinerImpl::visitCallInst().

◆ computeLegalValueVTs() [1/2]

void llvm::computeLegalValueVTs ( const Function F,
const TargetMachine TM,
Type Ty,
SmallVectorImpl< MVT > &  ValueVTs 
)

Definition at line 56 of file WebAssemblyMachineFunctionInfo.cpp.

References computeLegalValueVTs(), DL, F, and TM.

◆ computeLegalValueVTs() [2/2]

void llvm::computeLegalValueVTs ( const WebAssemblyTargetLowering TLI,
LLVMContext Ctx,
const DataLayout DL,
Type Ty,
SmallVectorImpl< MVT > &  ValueVTs 
)

◆ ComputeLinearIndex() [1/2]

unsigned llvm::ComputeLinearIndex ( Type Ty,
ArrayRef< unsigned Indices,
unsigned  CurIndex = 0 
)
inline

◆ ComputeLinearIndex() [2/2]

unsigned llvm::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.

Compute the linearized index of a member in a nested aggregate/struct/array by recursing and accumulating CurIndex as long as there are indices in the index list.

Given an LLVM IR aggregate type and a sequence of insertvalue or extractvalue indices that identify a member, return the linearized index of the start of the member, i.e the number of element in memory before the sought one. This is disconnected from the number of bytes.

Parameters
Tyis the type indexed by Indices.
Indicesis an optional pointer in the indices list to the current index.
IndicesEndis the end of the indices list.
CurIndexis the current index in the recursion.
Returns
CurIndex plus the linear index in Ty the indices list.

Definition at line 33 of file Analysis.cpp.

References assert(), ComputeLinearIndex(), enumerate(), and I.

Referenced by ComputeLinearIndex(), and llvm::FastISel::selectExtractValue().

◆ computeLiveIns()

void llvm::computeLiveIns ( LivePhysRegs LiveRegs,
const MachineBasicBlock MBB 
)

Computes registers live-in to MBB assuming all of its successors live-in lists are up-to-date.

Puts the result into the given LivePhysReg instance LiveRegs.

Definition at line 248 of file LivePhysRegs.cpp.

References llvm::LivePhysRegs::addLiveOutsNoPristines(), llvm::MachineBasicBlock::getParent(), llvm::MachineFunction::getRegInfo(), llvm::LivePhysRegs::init(), MBB, MI, MRI, reverse(), llvm::LivePhysRegs::stepBackward(), and TRI.

Referenced by computeAndAddLiveIns().

◆ computeLTOCacheKey()

void llvm::computeLTOCacheKey ( SmallString< 40 > &  Key,
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 std::set< GlobalValue::GUID > &  CfiFunctionDefs = {},
const std::set< GlobalValue::GUID > &  CfiFunctionDecls = {} 
)

◆ computeMachineUniformityInfo()

MachineUniformityInfo llvm::computeMachineUniformityInfo ( MachineFunction F,
const MachineCycleInfo cycleInfo,
const MachineDomTree domTree,
bool  HasBranchDivergence 
)

Compute uniformity information for a Machine IR function.

If HasBranchDivergence is false, produces a dummy result which assumes everything is uniform.

Definition at line 156 of file MachineUniformityAnalysis.cpp.

References assert(), llvm::GenericUniformityInfo< ContextT >::compute(), and F.

Referenced by llvm::MachineUniformityAnalysisPass::runOnMachineFunction(), and llvm::AMDGPURegBankSelect::runOnMachineFunction().

◆ ComputeMappedEditDistance()

template<typename T , typename Functor >
unsigned llvm::ComputeMappedEditDistance ( ArrayRef< T FromArray,
ArrayRef< T ToArray,
Functor  Map,
bool  AllowReplacements = true,
unsigned  MaxEditDistance = 0 
)

Determine the edit distance between two sequences.

Parameters
FromArraythe first sequence to compare.
ToArraythe second sequence to compare.
MapA Functor to apply to each item of the sequences before comparison.
AllowReplacementswhether to allow element replacements (change one element into another) as a single operation, rather than as two operations (an insertion and a removal).
MaxEditDistanceIf non-zero, the maximum edit distance that this routine is allowed to compute. If the edit distance will exceed that maximum, returns MaxEditDistance+1.
Returns
the minimum number of element insertions, removals, or (if AllowReplacements is true) replacements needed to transform one of the given sequences into the other. If zero, the sequences are identical.

Definition at line 45 of file edit_distance.h.

References llvm::ArrayRef< T >::size().

Referenced by ComputeEditDistance(), and llvm::StringRef::edit_distance_insensitive().

◆ ComputeMaxSignificantBits()

unsigned llvm::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.

i.e. x == sext(trunc(x to MaxSignificantBits) to bitwidth(x)). Similar to the APInt::getSignificantBits function.

Definition at line 337 of file ValueTracking.cpp.

References ComputeNumSignBits(), Depth, and DL.

Referenced by llvm::InstCombiner::ComputeMaxSignificantBits(), and eliminateDeadSwitchCases().

◆ computeMinimumValueSizes()

MapVector< Instruction *, uint64_t > llvm::computeMinimumValueSizes ( ArrayRef< BasicBlock * >  Blocks,
DemandedBits DB,
const TargetTransformInfo TTI = nullptr 
)

Compute a map of integer instructions to their minimum legal type size.

C semantics force sub-int-sized values (e.g. i8, i16) to be promoted to int type (e.g. i32) whenever arithmetic is performed on them.

For targets with native i8 or i16 operations, usually InstCombine can shrink the arithmetic type down again. However InstCombine refuses to create illegal types, so for targets without i8 or i16 registers, the lengthening and shrinking remains.

Most SIMD ISAs (e.g. NEON) however support vectors of i8 or i16 even when their scalar equivalents do not, so during vectorization it is important to remove these lengthens and truncates when deciding the profitability of vectorization.

This function analyzes the given range of instructions and determines the minimum type size each can be converted to. It attempts to remove or minimize type size changes across each def-use chain, so for example in the following code:

%1 = load i8, i8* %2 = add i8 %1, 2 %3 = load i16, i16* %4 = zext i8 %2 to i32 %5 = zext i16 %3 to i32 %6 = add i32 %4, %5 %7 = trunc i32 %6 to i16

Instruction %6 must be done at least in i16, so computeMinimumValueSizes will return: {%1: 16, %2: 16, %3: 16, %4: 16, %5: 16, %6: 16, %7: 16}.

If the optional TargetTransformInfo is provided, this function tries harder to do less work by only looking at illegal types.

Definition at line 544 of file VectorUtils.cpp.

References any_of(), llvm::EquivalenceClasses< ElemTy, Compare >::begin(), bit_ceil(), bit_width(), Blocks, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::count(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::SmallVectorBase< Size_T >::empty(), llvm::EquivalenceClasses< ElemTy, Compare >::end(), llvm::EquivalenceClasses< ElemTy, Compare >::getOrInsertLeaderValue(), llvm::Type::getScalarSizeInBits(), getScalarSizeInBits(), getType(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::TargetTransformInfo::isTypeLegal(), make_range(), llvm::EquivalenceClasses< ElemTy, Compare >::member_begin(), llvm::EquivalenceClasses< ElemTy, Compare >::member_end(), MI, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::EquivalenceClasses< ElemTy, Compare >::unionSets().

◆ ComputeNumSignBits()

unsigned llvm::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.

We know that at least 1 bit is always equal to the sign bit (itself), but other cases can give us information. For example, immediately after an "ashr X, 2", we know that the top 3 bits are all equal to each other, so we return 3. For vectors, return the number of sign bits for the vector element with the mininum number of known sign bits.

Definition at line 329 of file ValueTracking.cpp.

References Depth, DL, and safeCxtI().

Referenced by llvm::slpvectorizer::BoUpSLP::computeMinimumValueSizes(), llvm::InstCombiner::ComputeNumSignBits(), computeOverflowForSignedAdd(), computeOverflowForSignedMul(), computeOverflowForSignedSub(), computeRecurrenceType(), setShiftFlags(), and simplifyAShrInst().

◆ computeOverflowForSignedAdd() [1/2]

OverflowResult llvm::computeOverflowForSignedAdd ( const AddOperator Add,
const SimplifyQuery SQ 
)

This version also leverages the sign bit of Add if known.

Definition at line 7374 of file ValueTracking.cpp.

References Add.

◆ computeOverflowForSignedAdd() [2/2]

OverflowResult llvm::computeOverflowForSignedAdd ( const WithCache< const Value * > &  LHS,
const WithCache< const Value * > &  RHS,
const SimplifyQuery SQ 
)

Definition at line 7381 of file ValueTracking.cpp.

References LHS, and RHS.

Referenced by llvm::InstCombiner::computeOverflowForSignedAdd(), and hoistSub().

◆ computeOverflowForSignedMul()

OverflowResult llvm::computeOverflowForSignedMul ( const Value LHS,
const Value RHS,
const SimplifyQuery SQ 
)

◆ computeOverflowForSignedSub()

OverflowResult llvm::computeOverflowForSignedSub ( const Value LHS,
const Value RHS,
const SimplifyQuery SQ 
)

◆ computeOverflowForUnsignedAdd()

OverflowResult llvm::computeOverflowForUnsignedAdd ( const WithCache< const Value * > &  LHS,
const WithCache< const Value * > &  RHS,
const SimplifyQuery SQ 
)

◆ computeOverflowForUnsignedMul()

OverflowResult llvm::computeOverflowForUnsignedMul ( const Value LHS,
const Value RHS,
const SimplifyQuery SQ 
)

◆ computeOverflowForUnsignedSub()

OverflowResult llvm::computeOverflowForUnsignedSub ( const Value LHS,
const Value RHS,
const SimplifyQuery SQ 
)

◆ computePeelCount()

void llvm::computePeelCount ( Loop L,
unsigned  LoopSize,
TargetTransformInfo::PeelingPreferences PP,
unsigned  TripCount,
DominatorTree DT,
ScalarEvolution SE,
AssumptionCache AC = nullptr,
unsigned  Threshold = UINT_MAX 
)

◆ computeSignatureVTs()

void llvm::computeSignatureVTs ( const FunctionType Ty,
const Function TargetFunc,
const Function ContextFunc,
const TargetMachine TM,
SmallVectorImpl< MVT > &  Params,
SmallVectorImpl< MVT > &  Results 
)

◆ ComputeSpeculationCost()

static InstructionCost llvm::ComputeSpeculationCost ( const Instruction I,
const TargetTransformInfo TTI 
)
static

◆ computeSyntheticCounts()

void llvm::computeSyntheticCounts ( ModuleSummaryIndex Index)

◆ computeUnrollCount()

bool llvm::computeUnrollCount ( Loop L,
const TargetTransformInfo TTI,
DominatorTree DT,
LoopInfo LI,
AssumptionCache AC,
ScalarEvolution SE,
const SmallPtrSetImpl< const Value * > &  EphValues,
OptimizationRemarkEmitter ORE,
unsigned  TripCount,
unsigned  MaxTripCount,
bool  MaxOrZero,
unsigned  TripMultiple,
const UnrollCostEstimator UCE,
TargetTransformInfo::UnrollingPreferences UP,
TargetTransformInfo::PeelingPreferences PP,
bool UseUpperBound 
)

◆ computeValueLLTs()

void llvm::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.

If Offsets is non-null, it points to a vector to be filled in with the in-memory offsets of each of the individual values.

Definition at line 141 of file Analysis.cpp.

References computeValueLLTs(), DL, llvm::StructLayout::getElementOffset(), getLLTForType(), I, llvm::Type::isVoidTy(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by computeValueLLTs().

◆ ComputeValueVTs() [1/4]

void llvm::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.

If Offsets is non-null, it points to a vector to be filled in with the in-memory offsets of each of the individual values.

Definition at line 79 of file Analysis.cpp.

References assert(), ComputeValueVTs(), DL, llvm::StructLayout::getElementOffset(), llvm::TargetLoweringBase::getMemValueType(), llvm::TargetLoweringBase::getValueType(), llvm::TypeSize::getZero(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable(), llvm::Type::isScalableTy(), llvm::Type::isVoidTy(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isZero(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by adjustInliningThresholdUsingCallee(), llvm::AMDGPUTargetLowering::analyzeFormalArgumentsCompute(), computeLegalValueVTs(), llvm::FunctionLoweringInfo::ComputePHILiveOutRegInfo(), ComputePTXValueVTs(), ComputeValueVTs(), llvm::FunctionLoweringInfo::CreateRegs(), llvm::AArch64TargetLowering::functionArgumentNeedsConsecutiveRegisters(), llvm::WebAssemblyFrameLowering::getLocalForStackObject(), llvm::NVPTXTargetLowering::getPrototype(), llvm::CallLowering::getReturnInfo(), GetReturnInfo(), llvm::FunctionLoweringInfo::getValueFromVirtualReg(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::CallLowering::insertSRetIncomingArgument(), llvm::CallLowering::insertSRetLoads(), llvm::CallLowering::insertSRetStores(), llvm::NVPTXTargetLowering::LowerCall(), llvm::FastISel::lowerCallTo(), llvm::TargetLowering::LowerCallTo(), llvm::AArch64CallLowering::lowerReturn(), llvm::RegsForValue::RegsForValue(), llvm::FastISel::selectExtractValue(), llvm::FunctionLoweringInfo::set(), and llvm::CallLowering::splitToValueTypes().

◆ ComputeValueVTs() [2/4]

void llvm::ComputeValueVTs ( const TargetLowering TLI,
const DataLayout DL,
Type Ty,
SmallVectorImpl< EVT > &  ValueVTs,
SmallVectorImpl< EVT > *  MemVTs,
SmallVectorImpl< uint64_t > *  FixedOffsets,
uint64_t  StartingOffset 
)

◆ ComputeValueVTs() [3/4]

void llvm::ComputeValueVTs ( const TargetLowering TLI,
const DataLayout DL,
Type Ty,
SmallVectorImpl< EVT > &  ValueVTs,
SmallVectorImpl< TypeSize > *  Offsets = nullptr,
TypeSize  StartingOffset = TypeSize::getZero() 
)
inline

Variant of ComputeValueVTs that don't produce memory VTs.

Definition at line 77 of file Analysis.h.

References ComputeValueVTs(), and DL.

◆ ComputeValueVTs() [4/4]

void llvm::ComputeValueVTs ( const TargetLowering TLI,
const DataLayout DL,
Type Ty,
SmallVectorImpl< EVT > &  ValueVTs,
SmallVectorImpl< uint64_t > *  FixedOffsets,
uint64_t  StartingOffset 
)
inline

Definition at line 83 of file Analysis.h.

References ComputeValueVTs(), and DL.

◆ concat()

template<typename ValueT , typename... RangeTs>
detail::concat_range< ValueT, RangeTs... > llvm::concat ( RangeTs &&...  Ranges)

Concatenated range across two or more ranges.

The desired value type must be explicitly specified.

Definition at line 1176 of file STLExtras.h.

Referenced by LiveDebugValues::ValueIDNum::asString(), llvm::SystemZAsmPrinter::emitFunctionEntryLabel(), LiveDebugValues::MLocTracker::LocIdxToName(), reportNonStaticGEPChain(), and rewriteAccessChain().

◆ concatenateVectors()

Value * llvm::concatenateVectors ( IRBuilderBase Builder,
ArrayRef< Value * >  Vecs 
)

Concatenate a list of vectors.

This function generates code that concatenate the vectors in Vecs into a single large vector. The number of vectors should be greater than one, and their element types should be the same. The number of elements in the vectors should also be the same; however, if the last vector has fewer elements, it will be padded with undefs.

Definition at line 935 of file VectorUtils.cpp.

References llvm::SmallVectorImpl< T >::append(), assert(), llvm::ArrayRef< T >::begin(), concatenateTwoVectors(), llvm::ArrayRef< T >::end(), llvm::Value::getType(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::ArrayRef< T >::size(), and llvm::SmallVectorBase< Size_T >::size().

Referenced by interleaveVectors(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), and llvm::ARMTargetLowering::lowerInterleavedLoad().

◆ condCodeOp()

static MachineOperand llvm::condCodeOp ( unsigned  CCReg = 0)
inlinestatic

◆ const_mi_bundle_ops()

iterator_range< ConstMIBundleOperands > llvm::const_mi_bundle_ops ( const MachineInstr MI)
inline

◆ ConstantFoldBinaryInstruction()

Constant * llvm::ConstantFoldBinaryInstruction ( unsigned  Opcode,
Constant V1,
Constant V2 
)

Definition at line 676 of file ConstantFold.cpp.

References llvm::APFloat::add(), llvm::APInt::ashr(), assert(), ConstantFoldBinaryInstruction(), llvm::APFloat::divide(), DL, llvm::ConstantVector::get(), llvm::IntegerType::get(), llvm::UndefValue::get(), llvm::PoisonValue::get(), llvm::ConstantExpr::get(), llvm::Constant::getAllOnesValue(), llvm::ConstantExpr::getBinOpIdentity(), llvm::APInt::getBitWidth(), llvm::ConstantExpr::getCompare(), llvm::Value::getContext(), llvm::ConstantExpr::getExtractElement(), llvm::ConstantInt::getFalse(), llvm::CmpInst::getInversePredicate(), llvm::APInt::getLowBitsSet(), llvm::ConstantFP::getNaN(), llvm::Constant::getNullValue(), getOpcode(), llvm::GlobalValue::getParent(), llvm::Value::getPointerAlignment(), llvm::ConstantVector::getSplat(), llvm::Constant::getSplatValue(), llvm::Value::getType(), llvm::ConstantExpr::getXor(), llvm::Instruction::isAssociative(), llvm::Instruction::isBinaryOp(), llvm::Instruction::isCommutative(), llvm::ConstantExpr::isDesirableBinOp(), llvm::Instruction::isIntDivRem(), llvm::Type::isIntegerTy(), llvm::APInt::isMinSignedValue(), llvm::Type::isVectorTy(), LHS, llvm_unreachable, Log2(), llvm::APInt::lshr(), llvm::PatternMatch::m_APInt(), llvm::PatternMatch::m_CombineOr(), llvm::PatternMatch::m_NegZeroFP(), llvm::PatternMatch::m_Undef(), llvm::PatternMatch::m_Zero(), llvm::PatternMatch::match(), llvm::APFloat::mod(), llvm::APFloat::multiply(), pred, RHS, llvm::APInt::sdiv(), llvm::APInt::shl(), llvm::APInt::srem(), llvm::APFloat::subtract(), llvm::APInt::udiv(), and llvm::APInt::urem().

Referenced by collectInsertionElements(), ConstantFoldBinaryInstruction(), ConstantFoldBinaryOpOperands(), ConstantFoldGetElementPtr(), llvm::ConstantFolder::FoldBinOp(), llvm::ConstantFolder::FoldExactBinOp(), llvm::ConstantFolder::FoldNoWrapBinOp(), and llvm::ConstantExpr::get().

◆ ConstantFoldBinaryIntrinsic()

Constant * llvm::ConstantFoldBinaryIntrinsic ( Intrinsic::ID  ID,
Constant LHS,
Constant RHS,
Type Ty,
Instruction FMFSource 
)

Definition at line 3395 of file ConstantFolding.cpp.

References LHS, and RHS.

Referenced by llvm::TargetFolder::FoldBinaryIntrinsic().

◆ ConstantFoldBinaryOpOperands()

Constant * llvm::ConstantFoldBinaryOpOperands ( unsigned  Opcode,
Constant LHS,
Constant RHS,
const DataLayout DL 
)

◆ ConstantFoldBinOp()

std::optional< APInt > llvm::ConstantFoldBinOp ( unsigned  Opcode,
const Register  Op1,
const Register  Op2,
const MachineRegisterInfo MRI 
)

◆ ConstantFoldCall()

Constant * llvm::ConstantFoldCall ( const CallBase Call,
Function F,
ArrayRef< Constant * >  Operands,
const TargetLibraryInfo TLI = nullptr 
)

ConstantFoldCall - Attempt to constant fold a call to the specified function with the specified arguments, returning null if unsuccessful.

Definition at line 3402 of file ConstantFolding.cpp.

References F, llvm::TargetLibraryInfo::getLibFunc(), Name, llvm::Intrinsic::not_intrinsic, and Operands.

Referenced by tryConstantFoldCall().

◆ ConstantFoldCastInstruction()

Constant * llvm::ConstantFoldCastInstruction ( unsigned  opcode,
Constant V,
Type DestTy 
)

◆ ConstantFoldCastOp()

std::optional< APInt > llvm::ConstantFoldCastOp ( unsigned  Opcode,
LLT  DstTy,
const Register  Op0,
const MachineRegisterInfo MRI 
)

◆ ConstantFoldCastOperand()

Constant * llvm::ConstantFoldCastOperand ( unsigned  Opcode,
Constant C,
Type DestTy,
const DataLayout DL 
)

◆ ConstantFoldCompareInstOperands()

Constant * llvm::ConstantFoldCompareInstOperands ( unsigned  Predicate,
Constant LHS,
Constant RHS,
const DataLayout DL,
const TargetLibraryInfo TLI = nullptr,
const Instruction I = nullptr 
)

◆ ConstantFoldCompareInstruction()

Constant * llvm::ConstantFoldCompareInstruction ( CmpInst::Predicate  Predicate,
Constant C1,
Constant C2 
)

◆ ConstantFoldConstant()

Constant * llvm::ConstantFoldConstant ( const Constant C,
const DataLayout DL,
const TargetLibraryInfo TLI = nullptr 
)

ConstantFoldConstant - Fold the constant using the specified DataLayout.

This function always returns a non-null constant: Either the folding result, or the original constant if further folding is not possible.

Definition at line 1177 of file ConstantFolding.cpp.

References llvm::CallingConv::C, and DL.

Referenced by llvm::VNCoercion::coerceAvailableValueToLoadType(), emitGlobalConstantImpl(), emitGlobalConstantVector(), llvm::AsmPrinter::lowerConstant(), OptimizeGlobalVars(), llvm::InstCombinerImpl::prepareWorklist(), and simplifyGEPInst().

◆ ConstantFoldCountZeros()

std::optional< SmallVector< unsigned > > llvm::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.

If Src is a vector then it tries to do an element-wise constant fold.

Definition at line 969 of file Utils.cpp.

References llvm::SmallVectorImpl< T >::emplace_back(), getIConstantVRegVal(), llvm::LLT::isVector(), and MRI.

Referenced by llvm::CSEMIRBuilder::buildInstr().

◆ ConstantFoldExtOp()

std::optional< APInt > llvm::ConstantFoldExtOp ( unsigned  Opcode,
const Register  Op1,
uint64_t  Imm,
const MachineRegisterInfo MRI 
)

Definition at line 915 of file Utils.cpp.

References getIConstantVRegVal(), llvm::LLT::getScalarSizeInBits(), and MRI.

Referenced by llvm::CSEMIRBuilder::buildInstr().

◆ ConstantFoldExtractElementInstruction()

Constant * llvm::ConstantFoldExtractElementInstruction ( Constant Val,
Constant Idx 
)

Attempt to constant fold an extractelement instruction with the specified operands and indices.

The constant result is returned if successful; if not, null is returned.

Definition at line 413 of file ConstantFold.cpp.

References llvm::CallingConv::C, GEP, llvm::UndefValue::get(), llvm::PoisonValue::get(), llvm::Constant::getAggregateElement(), llvm::ConstantExpr::getExtractElement(), llvm::Constant::getSplatValue(), llvm::Value::getType(), Idx, llvm::APSInt::isSameValue(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::SmallVectorImpl< T >::reserve().

Referenced by llvm::ConstantExpr::getExtractElement().

◆ ConstantFoldExtractValueInstruction()

Constant * llvm::ConstantFoldExtractValueInstruction ( Constant Agg,
ArrayRef< unsigned Idxs 
)

Attempt to constant fold an extractvalue instruction with the specified operands and indices.

The constant result is returned if successful; if not, null is returned.

Definition at line 578 of file ConstantFold.cpp.

References llvm::CallingConv::C, ConstantFoldExtractValueInstruction(), llvm::ArrayRef< T >::empty(), llvm::Constant::getAggregateElement(), and llvm::ArrayRef< T >::slice().

Referenced by ConstantFoldExtractValueInstruction(), llvm::InstCombinerImpl::foldCmpLoadFromIndexedGlobal(), llvm::TargetFolder::FoldExtractValue(), llvm::ConstantFolder::FoldExtractValue(), and simplifyExtractValueInst().

◆ ConstantFoldFPBinOp()

std::optional< APFloat > llvm::ConstantFoldFPBinOp ( unsigned  Opcode,
const Register  Op1,
const Register  Op2,
const MachineRegisterInfo MRI 
)

◆ ConstantFoldFPInstOperands()

Constant * llvm::ConstantFoldFPInstOperands ( unsigned  Opcode,
Constant LHS,
Constant RHS,
const DataLayout DL,
const Instruction I 
)

Attempt to constant fold a floating point binary operation with the specified operands, applying the denormal handling mod to the operands.

Returns null or a constant expression of the specified operands on failure.

Definition at line 1358 of file ConstantFolding.cpp.

References llvm::CallingConv::C, ConstantFoldBinaryOpOperands(), DL, FlushFPConstant(), I, llvm::Instruction::isBinaryOp(), LHS, and RHS.

Referenced by foldOrCommuteConstant().

◆ ConstantFoldGetElementPtr()

Constant * llvm::ConstantFoldGetElementPtr ( Type Ty,
Constant C,
bool  InBounds,
std::optional< ConstantRange InRange,
ArrayRef< Value * >  Idxs 
)

◆ ConstantFoldICmp()

std::optional< SmallVector< APInt > > llvm::ConstantFoldICmp ( unsigned  Pred,
const Register  Op1,
const Register  Op2,
const MachineRegisterInfo MRI 
)

◆ ConstantFoldInsertElementInstruction()

Constant * llvm::ConstantFoldInsertElementInstruction ( Constant Val,
Constant Elt,
Constant Idx 
)

Attempt to constant fold an insertelement instruction with the specified operands and indices.

The constant result is returned if successful; if not, null is returned.

Definition at line 477 of file ConstantFold.cpp.

References llvm::CallingConv::C, llvm::ConstantVector::get(), llvm::PoisonValue::get(), llvm::Value::getContext(), llvm::ConstantExpr::getExtractElement(), llvm::Type::getInt32Ty(), llvm::Value::getType(), llvm::ConstantInt::getZExtValue(), Idx, llvm::Constant::isNullValue(), and llvm::ConstantInt::uge().

Referenced by llvm::ConstantExpr::getInsertElement().

◆ ConstantFoldInsertValueInstruction()

Constant * llvm::ConstantFoldInsertValueInstruction ( Constant Agg,
Constant Val,
ArrayRef< unsigned Idxs 
)

ConstantFoldInsertValueInstruction - Attempt to constant fold an insertvalue instruction with the specified operands and indices.

The constant result is returned if successful; if not, null is returned.

Definition at line 590 of file ConstantFold.cpp.

References llvm::CallingConv::C, ConstantFoldInsertValueInstruction(), llvm::ArrayRef< T >::empty(), llvm::ConstantArray::get(), llvm::ConstantStruct::get(), llvm::Constant::getAggregateElement(), llvm::Value::getType(), and llvm::ArrayRef< T >::slice().

Referenced by ConstantFoldInsertValueInstruction(), llvm::OpenMPIRBuilder::createTargetDeinit(), llvm::TargetFolder::FoldInsertValue(), llvm::ConstantFolder::FoldInsertValue(), and simplifyInsertValueInst().

◆ ConstantFoldInstOperands()

Constant * llvm::ConstantFoldInstOperands ( Instruction I,
ArrayRef< Constant * >  Ops,
const DataLayout DL,
const TargetLibraryInfo TLI = nullptr 
)

ConstantFoldInstOperands - Attempt to constant fold an instruction with the specified operands.

If successful, the constant result is returned, if not, null is returned. Note that this function can fail when attempting to fold instructions like loads and stores, which have no constant expression form.

Definition at line 1183 of file ConstantFolding.cpp.

References DL, and I.

Referenced by ConstantFold(), ConstantFoldInstruction(), constantFoldOperationIntoSelectOperand(), EvaluateExpression(), simplifyInstructionWithOperands(), and simplifyWithOpReplaced().

◆ ConstantFoldInstruction()

Constant * llvm::ConstantFoldInstruction ( Instruction I,
const DataLayout DL,
const TargetLibraryInfo TLI = nullptr 
)

ConstantFoldInstruction - Try to constant fold the specified instruction.

If successful, the constant result is returned, if not, null is returned. Note that this fails if not all of the operands are constant. Otherwise, this function can only fail when attempting to fold instructions like loads and stores, which have no constant expression form.

Definition at line 1129 of file ConstantFolding.cpp.

References all_of(), llvm::CallingConv::C, ConstantFoldInstOperands(), DL, llvm::UndefValue::get(), I, and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by ConstantPropUsersOf(), llvm::InstCombinerImpl::prepareWorklist(), llvm::JumpThreadingPass::processBlock(), and while().

◆ ConstantFoldIntegerCast()

Constant * llvm::ConstantFoldIntegerCast ( 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.

Returns nullptr on failure.

Definition at line 1470 of file ConstantFolding.cpp.

References llvm::CallingConv::C, ConstantFoldCastOperand(), DL, and llvm::Type::getScalarSizeInBits().

Referenced by ConstantFoldCastOperand(), ConstantFoldCompareInstOperands(), llvm::InstCombinerImpl::EvaluateInDifferentType(), GetConstantInt(), isBytewiseValue(), llvm::AsmPrinter::lowerConstant(), processUse(), and simplifySubInst().

◆ ConstantFoldIntToFloat()

std::optional< APFloat > llvm::ConstantFoldIntToFloat ( unsigned  Opcode,
LLT  DstTy,
Register  Src,
const MachineRegisterInfo MRI 
)

◆ ConstantFoldLoadFromConst() [1/2]

Constant * llvm::ConstantFoldLoadFromConst ( Constant C,
Type Ty,
const APInt Offset,
const DataLayout DL 
)

◆ ConstantFoldLoadFromConst() [2/2]

Constant * llvm::ConstantFoldLoadFromConst ( Constant C,
Type Ty,
const DataLayout DL 
)

Extract value of C reinterpreted as Ty.

Same as previous API with zero offset.

Definition at line 724 of file ConstantFolding.cpp.

References llvm::CallingConv::C, ConstantFoldLoadFromConst(), and DL.

◆ ConstantFoldLoadFromConstPtr() [1/2]

Constant * llvm::ConstantFoldLoadFromConstPtr ( Constant C,
Type Ty,
APInt  Offset,
const DataLayout DL 
)

◆ ConstantFoldLoadFromConstPtr() [2/2]

Constant * llvm::ConstantFoldLoadFromConstPtr ( Constant C,
Type Ty,
const DataLayout DL 
)

Return the value that a load from C would produce if it is constant and determinable.

If this is not determinable, return null.

Definition at line 751 of file ConstantFolding.cpp.

References llvm::CallingConv::C, ConstantFoldLoadFromConstPtr(), DL, and Offset.

◆ ConstantFoldLoadFromUniformValue()

Constant * llvm::ConstantFoldLoadFromUniformValue ( 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.

If the value is not uniform or the result cannot be represented, return null.

Definition at line 757 of file ConstantFolding.cpp.

References llvm::CallingConv::C, DL, llvm::UndefValue::get(), llvm::PoisonValue::get(), llvm::Constant::getAllOnesValue(), llvm::Constant::getNullValue(), llvm::Type::isFPOrFPVectorTy(), llvm::Type::isIntOrIntVectorTy(), llvm::Type::isX86_AMXTy(), and llvm::Type::isX86_MMXTy().

Referenced by CleanupConstantGlobalUsers(), ConstantFoldLoadFromConst(), ConstantFoldLoadFromConstPtr(), ConstantFoldLoadThroughBitcast(), llvm::AA::getInitialValueForObj(), and simplifyLoadInst().

◆ ConstantFoldLoadThroughBitcast()

Constant * llvm::ConstantFoldLoadThroughBitcast ( Constant C,
Type DestTy,
const DataLayout DL 
)

ConstantFoldLoadThroughBitcast - try to cast constant to destination type returning null if unsuccessful.

Can cast pointer to pointer or pointer to integer and vice versa if their sizes are equal.

Definition at line 344 of file ConstantFolding.cpp.

References llvm::CallingConv::C, llvm::CastInst::castIsValid(), ConstantFoldCastOperand(), ConstantFoldLoadFromUniformValue(), DL, llvm::Type::getScalarType(), llvm::Value::getType(), llvm::Type::isAggregateType(), llvm::Type::isIntegerTy(), llvm::Type::isPointerTy(), llvm::Type::isStructTy(), and llvm::Type::isVectorTy().

Referenced by ConstantFoldLoadFromConst().

◆ ConstantFoldSelectInstruction()

Constant * llvm::ConstantFoldSelectInstruction ( Constant Cond,
Constant V1,
Constant V2 
)

Attempt to constant fold a select instruction with the specified operands.

The constant result is returned if successful; if not, null is returned.

Definition at line 335 of file ConstantFold.cpp.

References llvm::CallingConv::C, Cond, llvm::ConstantVector::get(), llvm::IntegerType::get(), llvm::PoisonValue::get(), llvm::ConstantExpr::getExtractElement(), and llvm::Value::getType().

Referenced by llvm::TargetFolder::FoldSelect(), llvm::ConstantFolder::FoldSelect(), simplifySelectInst(), and llvm::InstCombinerImpl::visitTrunc().

◆ ConstantFoldShuffleVectorInstruction()

Constant * llvm::ConstantFoldShuffleVectorInstruction ( Constant V1,
Constant V2,
ArrayRef< int >  Mask 
)

Attempt to constant fold a shufflevector instruction with the specified operands and mask.

See class ShuffleVectorInst for a description of the mask representation. The constant result is returned if successful; if not, null is returned.

Definition at line 519 of file ConstantFold.cpp.

References all_of(), llvm::ConstantVector::get(), llvm::IntegerType::get(), llvm::ElementCount::get(), llvm::UndefValue::get(), llvm::PoisonValue::get(), llvm::ConstantAggregateZero::get(), llvm::Value::getContext(), llvm::ConstantExpr::getExtractElement(), llvm::ConstantVector::getSplat(), llvm::Value::getType(), llvm::Constant::isNullValue(), and PoisonMaskElem.

Referenced by llvm::ConstantExpr::getShuffleVector().

◆ ConstantFoldTerminator()

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

ConstantFoldTerminator - If a terminator instruction is predicated on a constant value, convert it into an unconditional branch to the constant destination.

This is a nontrivial operation because the successors of this basic block must have their PHI nodes updated. Also calls RecursivelyDeleteTriviallyDeadInstructions() on any branch/switch conditions and indirectbr addresses this might make dead if DeleteDeadConditions is true.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 129 of file Local.cpp.

References llvm::DomTreeUpdater::applyUpdates(), assert(), llvm::SmallVectorTemplateCommon< T, typename >::back(), Cond, llvm::Instruction::copyMetadata(), llvm::IRBuilderBase::CreateBr(), llvm::MDBuilder::createBranchWeights(), llvm::IRBuilderBase::CreateCondBr(), llvm::IRBuilderBase::CreateICmpEQ(), End, llvm::Instruction::eraseFromParent(), extractBranchWeights(), llvm::BasicBlock::getContext(), llvm::BasicBlock::getFirstNonPHIOrDbg(), llvm::BasicBlock::getTerminator(), getValidBranchWeightMDNode(), Idx, llvm::SmallSet< T, N, C >::insert(), llvm::SmallVectorTemplateBase< T, bool >::pop_back(), RecursivelyDeleteTriviallyDeadInstructions(), llvm::BasicBlock::removePredecessor(), setBranchWeights(), llvm::Instruction::setMetadata(), llvm::SmallSet< T, N, C >::size(), llvm::SmallVectorBase< Size_T >::size(), successors(), and std::swap().

Referenced by CloneAndPruneIntoFromInst(), markAliveBlocks(), llvm::JumpThreadingPass::processBlock(), processSwitch(), and while().

◆ ConstantFoldUnaryInstruction()

Constant * llvm::ConstantFoldUnaryInstruction ( unsigned  Opcode,
Constant V 
)

◆ ConstantFoldUnaryOpOperand()

Constant * llvm::ConstantFoldUnaryOpOperand ( unsigned  Opcode,
Constant Op,
const DataLayout DL 
)

◆ ConstantFoldVectorBinop()

SmallVector< APInt > llvm::ConstantFoldVectorBinop ( unsigned  Opcode,
const Register  Op1,
const Register  Op2,
const MachineRegisterInfo MRI 
)

Tries to constant fold a vector binop with sources Op1 and Op2.

Returns an empty vector on failure.

Definition at line 767 of file Utils.cpp.

References ConstantFoldBinOp(), Idx, MRI, and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by llvm::CSEMIRBuilder::buildInstr().

◆ ConstantMaterializationCost()

unsigned llvm::ConstantMaterializationCost ( unsigned  Val,
const ARMSubtarget Subtarget,
bool  ForCodesize = false 
)

Returns the number of instructions required to materialize the given constant in a register, or 3 if a literal pool load is needed.

If ForCodesize is specified, an approximate cost in bytes is returned.

Definition at line 5629 of file ARMBaseInstrInfo.cpp.

References llvm::ARM_AM::getSOImmVal(), llvm::ARM_AM::getT2SOImmVal(), llvm::ARM_AM::isSOImmTwoPartVal(), llvm::ARM_AM::isSOImmTwoPartValNeg(), llvm::ARM_AM::isThumbImmShiftedVal(), and llvm::ARMSubtarget::useMovt().

Referenced by HasLowerConstantMaterializationCost(), and llvm::ARMTargetLowering::isMulAddWithConstProfitable().

◆ constrainOperandRegClass() [1/2]

Register llvm::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.

If this fails, create a new virtual register in the correct class and insert a COPY before InsertPt if it is a use or after if it is a definition. In both cases, the function also updates the register of RegMo. This is equivalent to constrainOperandRegClass(..., RegClass, ...) with RegClass obtained from the MCInstrDesc. The debug location of InsertPt is used for the new copy.

Returns
The virtual register constrained to the right register class.

Definition at line 106 of file Utils.cpp.

References assert(), constrainOperandRegClass(), llvm::MCInstrDesc::getOpcode(), llvm::MachineOperand::getReg(), isTargetSpecificOpcode(), llvm::MachineOperand::isUse(), MRI, TII, and TRI.

◆ constrainOperandRegClass() [2/2]

Register llvm::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).

If this fails, create a new virtual register in the correct class and insert a COPY before InsertPt if it is a use or after if it is a definition. In both cases, the function also updates the register of RegMo. The debug location of InsertPt is used for the new copy.

Returns
The virtual register constrained to the right register class.

Definition at line 54 of file Utils.cpp.

References llvm::MachineInstrBuilder::addReg(), assert(), BuildMI(), constrainRegToClass(), llvm::MachineInstr::getDebugLoc(), llvm::MachineFunction::getObserver(), llvm::MachineOperand::getParent(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isUse(), MBB, MRI, llvm::MachineOperand::setReg(), and TII.

Referenced by constrainOperandRegClass(), constrainSelectedInstRegOperands(), llvm::GIMatchTableExecutor::executeMatchTable(), llvm::AArch64CallLowering::lowerCall(), llvm::AMDGPUCallLowering::lowerCall(), llvm::ARMCallLowering::lowerCall(), llvm::M68kCallLowering::lowerCall(), llvm::RISCVCallLowering::lowerCall(), llvm::X86CallLowering::lowerCall(), and llvm::AMDGPUCallLowering::lowerTailCall().

◆ constrainRegToClass()

Register llvm::constrainRegToClass ( MachineRegisterInfo MRI,
const TargetInstrInfo TII,
const RegisterBankInfo RBI,
Register  Reg,
const TargetRegisterClass RegClass 
)

Try to constrain Reg to the specified register class.

If this fails, create a new virtual register in the correct class.

Returns
The virtual register constrained to the right register class.

Definition at line 44 of file Utils.cpp.

References llvm::RegisterBankInfo::constrainGenericRegister(), and MRI.

Referenced by constrainOperandRegClass().

◆ constrainSelectedInstRegOperands()

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

This could involve inserting COPYs before (for uses) or after (for defs). This requires the number of operands to match the instruction description.

Returns
whether operand regclass constraining succeeded.

Definition at line 153 of file Utils.cpp.

References assert(), constrainOperandRegClass(), dbgs(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), I, isPreISelGenericOpcode(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), LLVM_DEBUG, MBB, MRI, llvm::MCOI::TIED_TO, TII, and TRI.

Referenced by llvm::AMDGPURegisterBankInfo::applyMappingBFE(), llvm::SPIRVGlobalRegistry::buildConstantInt(), llvm::SPIRVGlobalRegistry::buildGlobalVariable(), llvm::MachineInstrBuilder::constrainAllUses(), llvm::GIMatchTableExecutor::executeMatchTable(), llvm::SPIRVGlobalRegistry::getOrCreateConstFP(), llvm::SPIRVGlobalRegistry::getOrCreateConstInt(), and llvm::SPIRVGlobalRegistry::getOrCreateUndef().

◆ consumeError()

void llvm::consumeError ( Error  Err)
inline

Consume a Error without doing anything.

This method should be used only where an error can be considered a reasonable and expected return value.

Uses of this method are potentially indicative of design problems: If it's legitimate to do nothing while processing an "error", the error-producer might be more clearly refactored to return an std::optional<T>.

Definition at line 1041 of file Error.h.

References handleAllErrors().

Referenced by accumulateLocs(), llvm::MachO::DylibReader::accumulateSourceLocFromDSYM(), llvm::logicalview::LVPatterns::addPatterns(), llvm::DWARFDie::addressRangeContainsAddress(), llvm::APFloat::APFloat(), llvm::object::ArchiveMemberHeader::ArchiveMemberHeader(), llvm::object::BindRebaseSegInfo::BindRebaseSegInfo(), llvm::gsym::FunctionInfo::cacheEncoding(), llvm::codeview::computeTypeName(), llvm::object::SectionRef::containsSymbol(), llvm::gsym::ObjectFileTransformer::convert(), llvm::object::OffloadFile::copy(), llvm::sys::fs::TempFile::create(), llvm::coverage::BinaryCoverageReader::create(), llvm::logicalview::LVBinaryReader::createInstructions(), createMemberHeaderParseError(), createOnDiskBuffer(), llvm::object::SymbolicFile::createSymbolicFile(), llvm::pdb::SymbolCache::createTypeEnumerator(), llvm::ListeningSocket::createUnix(), llvm::NewArchiveMember::detectKindFromObject(), llvm::coverage::CounterMappingContext::dump(), llvm::DWARFDebugAbbrev::dump(), llvm::DWARFDebugLine::Prologue::dump(), llvm::DWARFLocationTable::dumpLocationList(), llvm::DWARFDebugNames::Entry::dumpParentIdx(), llvm::DWARFYAML::emitDebugInfo(), error(), errorToBool(), llvm::objcopy::macho::executeObjcopyOnMachOUniversalBinary(), expectedToOptional(), expectedToStdOptional(), llvm::RangeListEntry::extract(), llvm::DebuginfodFetcher::fetch(), llvm::codeview::FieldListDeserializer::FieldListDeserializer(), llvm::RuntimeDyldELF::finalizeLoad(), llvm::RuntimeDyldMachOCRTPBase< Impl >::finalizeLoad(), llvm::RuntimeDyldMachOARM::finalizeSection(), llvm::RuntimeDyldMachOI386::finalizeSection(), llvm::DebuginfodCollection::findBinaryPath(), findInlineeByTypeIndex(), llvm::pdb::NativeInlineSiteSymbol::findInlineeLinesByVA(), llvm::pdb::NativeFunctionSymbol::findInlineFramesByVA(), llvm::pdb::SymbolCache::findLineNumbersByVA(), llvm::MCJIT::findSymbol(), llvm::pdb::SymbolCache::findSymbolByTypeIndex(), llvm::pdb::SymbolGroup::formatFromChecksumsOffset(), llvm::pdb::LinePrinter::formatMsfStreamData(), llvm::DWARFUnit::getAbbreviations(), getAccelTable(), llvm::pdb::NativeExeSymbol::getAge(), llvm::object::XCOFFObjectFile::getCommonSymbolSizeImpl(), getDbiStreamPtr(), ThreadUnsafeDWARFContextState::getDWOContext(), llvm::logicalview::LVLogicalVisitor::getElement(), llvm::pdb::NativeSourceFile::getFileName(), llvm::logicalview::LVSymbolVisitorDelegate::getFileNameForFileOffset(), llvm::codeview::LazyRandomTypeCollection::getFirst(), getFirstReloc(), llvm::pdb::NativeExeSymbol::getGuid(), llvm::DWARFDataExtractor::getInitialLength(), llvm::pdb::NativeSession::getInjectedSources(), llvm::pdb::NativeInlineSiteSymbol::getName(), llvm::object::Archive::Child::getNext(), llvm::codeview::LazyRandomTypeCollection::getNext(), getNumberOfRelocations(), llvm::sys::Process::getPageSizeEstimate(), llvm::object::getPhdrIndexForError(), llvm::object::ELFObjectFileBase::getPltEntries(), llvm::logicalview::getRecordName(), llvm::logicalview::LVSymbolVisitorDelegate::getRecordOffset(), llvm::object::getSecIndexForError(), llvm::object::XCOFFObjectFile::getSymbolAlignment(), llvm::object::ELFObjectFile< ELFT >::getSymbolFlags(), llvm::object::XCOFFObjectFile::getSymbolSize(), llvm::IndexedInstrProfReader::getSymtab(), llvm::codeview::LazyRandomTypeCollection::getTypeName(), getUdtOptions(), getUdtSize(), getUUID(), llvm::BitcodeReaderValueList::getValueFwdRef(), llvm::pdb::NativeExeSymbol::hasCTypes(), hashFullyQualifiedName(), llvm::pdb::PDBFile::hasPDBGlobalsStream(), llvm::pdb::PDBFile::hasPDBInjectedSourceStream(), llvm::pdb::PDBFile::hasPDBPublicsStream(), llvm::pdb::PDBFile::hasPDBStringTable(), llvm::pdb::NativeExeSymbol::hasPrivateSymbols(), ignoreStrippedErrors(), llvm::yaml::ScalarTraits< Target >::input(), isCodeViewDebugSubsection(), llvm::object::COFFObjectFile::isDebugSection(), llvm::object::ELFObjectFile< ELFT >::isDebugSection(), llvm::object::MachOObjectFile::isDebugSection(), llvm::object::ObjectFile::isSectionBitcode(), llvm::RISCVISAInfo::isSupportedExtensionWithVersion(), isVariableIndexable(), llvm::remarks::RemarkLinker::link(), LLVMCreateObjectFile(), LLVMRemarkParserGetNext(), loadBinaryFormat(), llvm::xray::loadInstrumentationMap(), loadObj(), llvm::xray::loadTraceFile(), localCache(), llvm::logicalview::LVBinaryReader::mapVirtualAddress(), llvm::MSVCPExpected< T >::MSVCPExpected(), llvm::VarStreamArrayIterator< ValueType, Extractor >::operator+=(), llvm::FixedStreamArray< T >::operator[](), llvm::ELFAttributeParser::parse(), llvm::DWARFDebugLine::LineTable::parse(), llvm::object::WindowsResourceParser::parse(), llvm::RISCVISAInfo::parseArchString(), llvm::pdb::PDBFile::parseFileHeaders(), llvm::MetadataLoader::MetadataLoaderImpl::parseMetadata(), parseV2DirFileTables(), llvm::BinaryStreamReader::peek(), llvm::Pattern::printSubstitutions(), llvm::logicalview::LVLogicalVisitor::processLines(), processMultiLetterExtension(), llvm::RuntimeDyldELF::processRelocationRef(), processSingleLetterExtension(), llvm::coverage::RawCoverageFilenamesReader::read(), readAndDecodeStrings(), llvm::MachO::DylibReader::readFile(), llvm::msgpack::Document::readFromBlob(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::registerModuleReference(), llvm::pdb::TpiStream::reload(), searchForExe(), llvm::pdb::NativeSession::searchForPdb(), llvm::object::XCOFFObjectFile::section_rel_begin(), llvm::object::XCOFFObjectFile::section_rel_end(), llvm::object::ELFObjectFileBase::setARMSubArch(), llvm::dwarf_linker::parallel::SectionDescriptor::setSizesForSectionCreatedByAsmPrinter(), streamFile(), llvm::dwarf::toString(), llvm::codeview::LazyRandomTypeCollection::tryGetType(), llvm::DWARFUnit::updateAddressDieMap(), llvm::DWARFUnit::updateVariableDieMap(), llvm::VarStreamArrayIterator< ValueType, Extractor >::VarStreamArrayIterator(), llvm::logicalview::LVSymbolVisitor::visitKnownRecord(), llvm::logicalview::LVLogicalVisitor::visitKnownRecord(), llvm::codeview::SymbolSerializer::writeOneSymbol(), llvm::BitcodeWriter::writeSymtab(), llvm::support::detail::ErrorAdapter::~ErrorAdapter(), llvm::codeview::FieldListDeserializer::~FieldListDeserializer(), and llvm::GCOVBuffer::~GCOVBuffer().

◆ consumeSignedInteger()

bool llvm::consumeSignedInteger ( StringRef Str,
unsigned  Radix,
long long &  Result 
)

Definition at line 456 of file StringRef.cpp.

References consumeUnsignedInteger().

Referenced by llvm::StringRef::consumeInteger(), and getAsSignedInteger().

◆ consumeUnsignedInteger()

bool llvm::consumeUnsignedInteger ( StringRef Str,
unsigned  Radix,
unsigned long long &  Result 
)

◆ containsIrreducibleCFG()

template<class NodeT , class RPOTraversalT , class LoopInfoT , class GT = GraphTraits<NodeT>>
bool llvm::containsIrreducibleCFG ( RPOTraversalT &  RPOTraversal,
const LoopInfoT &  LI 
)

Return true if the control flow in RPOTraversal is irreducible.

This is a generic implementation to detect CFG irreducibility based on loop info analysis. It can be used for any kind of CFG (Loop, MachineLoop, Function, MachineFunction, etc.) by providing an RPO traversal (RPOTraversal) and the loop info analysis (LI) of the CFG. This utility function is only recommended when loop info analysis is available. If loop info analysis isn't available, please, don't compute it explicitly for this purpose. There are more efficient ways to detect CFG irreducibility that don't require recomputing loop info analysis (e.g., T1/T2 or Tarjan's algorithm).

Requirements: 1) GraphTraits must be implemented for NodeT type. It is used to access NodeT successors. target CFG with begin()/end() iterator interfaces. 3) LI must be a valid LoopInfoBase that contains up-to-date loop analysis information of the CFG.

This algorithm uses the information about reducible loop back-edges already computed in LI. When a back-edge is found during the RPO traversal, the algorithm checks whether the back-edge is one of the reducible back-edges in loop info. If it isn't, the CFG is irreducible. For example, for the CFG below (canonical irreducible graph) loop info won't contain any loop, so the algorithm will return that the CFG is irreducible when checking the B <- -> C back-edge.

(A->B, A->C, B->C, C->B, C->D) A / \ B<- ->C | D

Check whether the edge (Src, Dst) is a reducible loop backedge according to LI. I.e., check if there exists a loop that contains Src and where Dst is the loop header.

Definition at line 136 of file CFG.h.

References llvm::SmallPtrSetImpl< PtrType >::count(), llvm::SmallPtrSetImpl< PtrType >::insert(), and make_range().

Referenced by mayContainIrreducibleControl().

◆ convertAddSubFlagsOpcode()

unsigned llvm::convertAddSubFlagsOpcode ( unsigned  OldOpc)

Map pseudo instructions that imply an 'S' bit onto real opcodes.

Whether the instruction is encoded with an 'S' bit is determined by the optional CPSR def operand.

Definition at line 2460 of file ARMBaseInstrInfo.cpp.

References AddSubFlagsOpcodeMap.

Referenced by llvm::ARMTargetLowering::AdjustInstrPostInstrSelection(), and llvm::ARMAsmPrinter::emitInstruction().

◆ convertCharsToWord()

static uint32_t llvm::convertCharsToWord ( const StringRef Str,
unsigned  i 
)
static

Definition at line 32 of file SPIRVUtils.cpp.

Referenced by addStringImm().

◆ ConvertCodePointToUTF8()

bool llvm::ConvertCodePointToUTF8 ( unsigned  Source,
char *&  ResultPtr 
)

Convert an Unicode code point to UTF8 sequence.

Parameters
Sourcea Unicode code point.
[in,out]ResultPtrpointer to the output buffer, needs to be at least UNI_MAX_UTF8_BYTES_PER_CODE_POINT bytes. On success ResultPtr is updated one past end of the converted sequence.
Returns
true on success.

Definition at line 65 of file ConvertUTFWrapper.cpp.

References conversionOK, ConvertUTF32toUTF8(), and strictConversion.

◆ ConvertCostTableLookup() [1/2]

template<class CostType >
const TypeConversionCostTblEntryT< CostType > * llvm::ConvertCostTableLookup ( ArrayRef< TypeConversionCostTblEntryT< CostType > >  Tbl,
int  ISD,
MVT  Dst,
MVT  Src 
)
inline

◆ ConvertCostTableLookup() [2/2]

template<size_t N, class CostType >
const TypeConversionCostTblEntryT< CostType > * llvm::ConvertCostTableLookup ( const TypeConversionCostTblEntryT< CostType >(&)  Table[N],
int  ISD,
MVT  Dst,
MVT  Src 
)
inline

Definition at line 81 of file CostTable.h.

◆ ConvertDebugDeclareToDebugValue() [1/6]

void llvm::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.

Definition at line 1735 of file Local.cpp.

References assert(), dbgs(), getDebugValueLoc(), llvm::DbgVariableIntrinsic::getExpression(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Value::getType(), llvm::DbgVariableIntrinsic::getVariable(), insertDbgValueOrDbgVariableRecordAfter(), LLVM_DEBUG, and valueCoversEntireFragment().

◆ ConvertDebugDeclareToDebugValue() [2/6]

void llvm::ConvertDebugDeclareToDebugValue ( DbgVariableIntrinsic DII,
PHINode LI,
DIBuilder Builder 
)

◆ ConvertDebugDeclareToDebugValue() [3/6]

void llvm::ConvertDebugDeclareToDebugValue ( DbgVariableIntrinsic DII,
StoreInst SI,
DIBuilder Builder 
)

===------------------------------------------------------------------—===// Dbg Intrinsic utilities

Inserts a llvm.dbg.value intrinsic before a store to an alloca'd value that has an associated llvm.dbg.declare intrinsic.

Inserts a llvm.dbg.value intrinsic before a store to an alloca'd value that has an associated llvm.dbg.declare intrinsic.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 1690 of file Local.cpp.

References assert(), dbgs(), llvm::UndefValue::get(), getDebugValueLoc(), llvm::DbgVariableIntrinsic::getExpression(), llvm::Value::getType(), llvm::DbgVariableIntrinsic::getVariable(), insertDbgValueOrDbgVariableRecord(), llvm::DbgVariableIntrinsic::isAddressOfVariable(), LLVM_DEBUG, and valueCoversEntireFragment().

Referenced by LowerDbgDeclare(), promoteSingleBlockAlloca(), rewriteSingleStoreAlloca(), and llvm::InstCombinerImpl::visitAllocSite().

◆ ConvertDebugDeclareToDebugValue() [4/6]

void llvm::ConvertDebugDeclareToDebugValue ( DbgVariableRecord DVR,
LoadInst LI,
DIBuilder Builder 
)

◆ ConvertDebugDeclareToDebugValue() [5/6]

void llvm::ConvertDebugDeclareToDebugValue ( DbgVariableRecord DVR,
PHINode LI,
DIBuilder Builder 
)

◆ ConvertDebugDeclareToDebugValue() [6/6]

void llvm::ConvertDebugDeclareToDebugValue ( DbgVariableRecord DVR,
StoreInst SI,
DIBuilder Builder 
)

◆ convertExceptionBehaviorToStr()

std::optional< StringRef > llvm::convertExceptionBehaviorToStr ( fp::ExceptionBehavior  UseExcept)

For any ExceptionBehavior enumerator, returns a string valid as input in constrained intrinsic exception behavior metadata.

Definition at line 74 of file FPEnv.cpp.

References llvm::fp::ebIgnore, llvm::fp::ebMayTrap, and llvm::fp::ebStrict.

Referenced by llvm::IRBuilderBase::setDefaultConstrainedExcept().

◆ convertPointerToIntegerType()

static Type * llvm::convertPointerToIntegerType ( const DataLayout DL,
Type Ty 
)
static

◆ convertRoundingModeToStr()

std::optional< StringRef > llvm::convertRoundingModeToStr ( RoundingMode  UseRounding)

For any RoundingMode enumerator, returns a string valid as input in constrained intrinsic rounding mode metadata.

Definition at line 37 of file FPEnv.cpp.

References Dynamic, NearestTiesToAway, NearestTiesToEven, TowardNegative, TowardPositive, and TowardZero.

Referenced by llvm::IRBuilderBase::setDefaultConstrainedRounding().

◆ convertStrToExceptionBehavior()

std::optional< fp::ExceptionBehavior > llvm::convertStrToExceptionBehavior ( StringRef  ExceptionArg)

Returns a valid ExceptionBehavior enumerator when given a string valid as input in constrained intrinsic exception behavior metadata.

Definition at line 65 of file FPEnv.cpp.

References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), llvm::fp::ebIgnore, llvm::fp::ebMayTrap, and llvm::fp::ebStrict.

Referenced by llvm::ConstrainedFPIntrinsic::getExceptionBehavior().

◆ convertStrToRoundingMode()

std::optional< RoundingMode > llvm::convertStrToRoundingMode ( StringRef  RoundingArg)

Returns a valid RoundingMode enumerator when given a string that is valid as input in constrained intrinsic rounding mode metadata.

Definition at line 24 of file FPEnv.cpp.

References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), Dynamic, NearestTiesToAway, NearestTiesToEven, TowardNegative, TowardPositive, and TowardZero.

Referenced by llvm::ConstrainedFPIntrinsic::getRoundingMode().

◆ convertToDeclaration()

bool llvm::convertToDeclaration ( GlobalValue GV)

◆ convertToNonDenormSingle() [1/2]

bool llvm::convertToNonDenormSingle ( APFloat ArgAPFloat)

◆ convertToNonDenormSingle() [2/2]

bool llvm::convertToNonDenormSingle ( APInt ArgAPInt)

◆ convertUsersOfConstantsToInstructions()

bool llvm::convertUsersOfConstantsToInstructions ( ArrayRef< Constant * >  Consts)

Replace constant expressions users of the given constants with instructions.

Return whether anything was changed.

Definition at line 52 of file ReplaceConstant.cpp.

References assert(), llvm::CallingConv::C, llvm::SetVector< T, Vector, Set, N >::contains(), llvm::BasicBlock::end(), expandUser(), llvm::BasicBlock::getFirstInsertionPt(), I, llvm::SetVector< T, Vector, Set, N >::insert(), and isExpandableUser().

◆ ConvertUTF16toUTF32()

ConversionResult llvm::ConvertUTF16toUTF32 ( const UTF16 **  sourceStart,
const UTF16 sourceEnd,
UTF32 **  targetStart,
UTF32 targetEnd,
ConversionFlags  flags 
)

◆ ConvertUTF16toUTF8()

ConversionResult llvm::ConvertUTF16toUTF8 ( const UTF16 **  sourceStart,
const UTF16 sourceEnd,
UTF8 **  targetStart,
UTF8 targetEnd,
ConversionFlags  flags 
)

◆ convertUTF16ToUTF8String() [1/2]

bool llvm::convertUTF16ToUTF8String ( ArrayRef< char SrcBytes,
std::string &  Out 
)

Converts a stream of raw bytes assumed to be UTF16 into a UTF8 std::string.

Parameters
[in]SrcBytesA buffer of what is assumed to be UTF-16 encoded text.
[out]OutConverted UTF-8 is stored here on success.
Returns
true on success

Definition at line 84 of file ConvertUTFWrapper.cpp.

References assert(), llvm::ArrayRef< T >::begin(), conversionOK, ConvertUTF16toUTF8(), llvm::ArrayRef< T >::empty(), llvm::ArrayRef< T >::end(), I, llvm::ArrayRef< T >::size(), strictConversion, targetExhausted, UNI_MAX_UTF8_BYTES_PER_CODE_POINT, UNI_UTF16_BYTE_ORDER_MARK_NATIVE, and UNI_UTF16_BYTE_ORDER_MARK_SWAPPED.

Referenced by llvm::object::convertUTF16LEToUTF8String(), convertUTF16ToUTF8String(), convertWideToUTF8(), llvm::object::MinidumpFile::getString(), llvm::pdb::DIARawSymbol::getUndecoratedNameEx(), and invokeBstrMethod().

◆ convertUTF16ToUTF8String() [2/2]

bool llvm::convertUTF16ToUTF8String ( ArrayRef< UTF16 Src,
std::string &  Out 
)

Converts a UTF16 string into a UTF8 std::string.

Parameters
[in]SrcA buffer of UTF-16 encoded text.
[out]OutConverted UTF-8 is stored here on success.
Returns
true on success

Definition at line 135 of file ConvertUTFWrapper.cpp.

References convertUTF16ToUTF8String().

◆ ConvertUTF32toUTF16()

ConversionResult llvm::ConvertUTF32toUTF16 ( const UTF32 **  sourceStart,
const UTF32 sourceEnd,
UTF16 **  targetStart,
UTF16 targetEnd,
ConversionFlags  flags 
)

◆ ConvertUTF32toUTF8()

ConversionResult llvm::ConvertUTF32toUTF8 ( const UTF32 **  sourceStart,
const UTF32 sourceEnd,
UTF8 **  targetStart,
UTF8 targetEnd,
ConversionFlags  flags 
)

◆ convertUTF32ToUTF8String() [1/2]

bool llvm::convertUTF32ToUTF8String ( ArrayRef< char SrcBytes,
std::string &  Out 
)

Converts a stream of raw bytes assumed to be UTF32 into a UTF8 std::string.

Parameters
[in]SrcBytesA buffer of what is assumed to be UTF-32 encoded text.
[out]OutConverted UTF-8 is stored here on success.
Returns
true on success

Definition at line 142 of file ConvertUTFWrapper.cpp.

References assert(), llvm::ArrayRef< T >::begin(), conversionOK, ConvertUTF32toUTF8(), llvm::ArrayRef< T >::empty(), llvm::ArrayRef< T >::end(), I, llvm::ArrayRef< T >::size(), strictConversion, targetExhausted, UNI_MAX_UTF8_BYTES_PER_CODE_POINT, UNI_UTF32_BYTE_ORDER_MARK_NATIVE, and UNI_UTF32_BYTE_ORDER_MARK_SWAPPED.

Referenced by convertUTF32ToUTF8String().

◆ convertUTF32ToUTF8String() [2/2]

bool llvm::convertUTF32ToUTF8String ( ArrayRef< UTF32 Src,
std::string &  Out 
)

Converts a UTF32 string into a UTF8 std::string.

Parameters
[in]SrcA buffer of UTF-32 encoded text.
[out]OutConverted UTF-8 is stored here on success.
Returns
true on success

Definition at line 193 of file ConvertUTFWrapper.cpp.

References convertUTF32ToUTF8String().

◆ convertUTF8Sequence()

ConversionResult llvm::convertUTF8Sequence ( const UTF8 **  source,
const UTF8 sourceEnd,
UTF32 target,
ConversionFlags  flags 
)
inline

Convert the first UTF8 sequence in the given source buffer to a UTF32 code point.

Parameters
[in,out]sourceA pointer to the source buffer. If the conversion succeeds, this pointer will be updated to point to the byte just past the end of the converted sequence.
sourceEndA pointer just past the end of the source buffer.
[out]targetThe converted code
flagsWhether the conversion is strict or lenient.
Returns
conversionOK on success
See also
ConvertUTF8toUTF32

Definition at line 269 of file ConvertUTF.h.

References ConvertUTF8toUTF32(), getNumBytesForUTF8(), size(), and sourceExhausted.

◆ ConvertUTF8toUTF16()

ConversionResult llvm::ConvertUTF8toUTF16 ( const UTF8 **  sourceStart,
const UTF8 sourceEnd,
UTF16 **  targetStart,
UTF16 targetEnd,
ConversionFlags  flags 
)

◆ convertUTF8ToUTF16String()

bool llvm::convertUTF8ToUTF16String ( StringRef  SrcUTF8,
SmallVectorImpl< UTF16 > &  DstUTF16 
)

◆ ConvertUTF8toUTF32()

ConversionResult llvm::ConvertUTF8toUTF32 ( const UTF8 **  sourceStart,
const UTF8 sourceEnd,
UTF32 **  targetStart,
UTF32 targetEnd,
ConversionFlags  flags 
)

Convert a partial UTF8 sequence to UTF32.

If the sequence ends in an incomplete code unit sequence, returns sourceIllegal.

Definition at line 736 of file ConvertUTF.cpp.

References ConvertUTF8toUTF32Impl().

Referenced by chopOneUTF32(), llvm::sys::unicode::columnWidthUTF8(), convertUTF8Sequence(), ConvertUTF8toWide(), and llvm::json::fixUTF8().

◆ ConvertUTF8toUTF32Impl()

static ConversionResult llvm::ConvertUTF8toUTF32Impl ( const UTF8 **  sourceStart,
const UTF8 sourceEnd,
UTF32 **  targetStart,
UTF32 targetEnd,
ConversionFlags  flags,
Boolean  InputIsPartial 
)
static

◆ ConvertUTF8toUTF32Partial()

ConversionResult llvm::ConvertUTF8toUTF32Partial ( const UTF8 **  sourceStart,
const UTF8 sourceEnd,
UTF32 **  targetStart,
UTF32 targetEnd,
ConversionFlags  flags 
)

Convert a partial UTF8 sequence to UTF32.

If the sequence ends in an incomplete code unit sequence, returns sourceExhausted.

Definition at line 727 of file ConvertUTF.cpp.

References ConvertUTF8toUTF32Impl().

◆ ConvertUTF8toWide() [1/3]

bool llvm::ConvertUTF8toWide ( const char Source,
std::wstring &  Result 
)

Converts a UTF-8 C-string to a std::wstring.

Returns
true on success.

Definition at line 263 of file ConvertUTFWrapper.cpp.

References ConvertUTF8toWide().

◆ ConvertUTF8toWide() [2/3]

bool llvm::ConvertUTF8toWide ( llvm::StringRef  Source,
std::wstring &  Result 
)

Converts a UTF-8 StringRef to a std::wstring.

Returns
true on success.

Definition at line 259 of file ConvertUTFWrapper.cpp.

References ConvertUTF8toWideInternal().

◆ ConvertUTF8toWide() [3/3]

bool llvm::ConvertUTF8toWide ( unsigned  WideCharWidth,
llvm::StringRef  Source,
char *&  ResultPtr,
const UTF8 *&  ErrorPtr 
)

Convert an UTF8 StringRef to UTF8, UTF16, or UTF32 depending on WideCharWidth.

The converted data is written to ResultPtr, which needs to point to at least WideCharWidth * (Source.Size() + 1) bytes. On success, ResultPtr will point one after the end of the copied string. On failure, ResultPtr will not be changed, and ErrorPtr will be set to the location of the first character which could not be converted.

Returns
true on success.

Definition at line 19 of file ConvertUTFWrapper.cpp.

References assert(), conversionOK, ConvertUTF8toUTF16(), ConvertUTF8toUTF32(), isLegalUTF8String(), sourceIllegal, strictConversion, and targetExhausted.

Referenced by ConvertUTF8toWide(), and ConvertUTF8toWideInternal().

◆ ConvertUTF8toWideInternal()

template<typename TResult >
static bool llvm::ConvertUTF8toWideInternal ( llvm::StringRef  Source,
TResult &  Result 
)
inlinestatic

Definition at line 243 of file ConvertUTFWrapper.cpp.

References ConvertUTF8toWide().

Referenced by ConvertUTF8toWide().

◆ convertWideToUTF8()

bool llvm::convertWideToUTF8 ( const std::wstring &  Source,
std::string &  Result 
)

Converts a std::wstring to a UTF-8 encoded std::string.

Returns
true on success.

Definition at line 271 of file ConvertUTFWrapper.cpp.

References conversionOK, convertUTF16ToUTF8String(), ConvertUTF32toUTF8(), End, isLegalUTF8String(), llvm_unreachable, strictConversion, and UNI_MAX_UTF8_BYTES_PER_CODE_POINT.

Referenced by findVCToolChainViaSetupConfig().

◆ copy()

template<typename R , typename OutputIt >
OutputIt llvm::copy ( R &&  Range,
OutputIt  Out 
)

◆ copy_if()

template<typename R , typename OutputIt , typename UnaryPredicate >
OutputIt llvm::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.

Definition at line 1768 of file STLExtras.h.

References adl_begin(), adl_end(), and P.

Referenced by FoldTwoEntryPHINode(), lowerV16I8Shuffle(), lowerV8I16GeneralSingleInputShuffle(), and removeUnreachableFunctions().

◆ copyMetadataForLoad()

void llvm::copyMetadataForLoad ( LoadInst Dest,
const LoadInst Source 
)

◆ copyNonnullMetadata()

void llvm::copyNonnullMetadata ( const LoadInst OldLI,
MDNode N,
LoadInst NewLI 
)

Copy a nonnull metadata node to a new load instruction.

This handles mapping it to range metadata if the new load is an integer load instead of a pointer load.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 3513 of file Local.cpp.

References llvm::MDBuilder::createRange(), llvm::ConstantPointerNull::get(), llvm::ConstantExpr::getAdd(), llvm::Value::getContext(), llvm::LoadInst::getPointerOperand(), llvm::ConstantExpr::getPtrToInt(), llvm::Value::getType(), N, Ptr, and llvm::Instruction::setMetadata().

Referenced by copyMetadataForLoad().

◆ copyRangeMetadata()

void llvm::copyRangeMetadata ( const DataLayout DL,
const LoadInst OldLI,
MDNode N,
LoadInst NewLI 
)

Copy a range metadata node to a new load instruction.

This handles mapping it to nonnull metadata if the new load is a pointer load instead of an integer load and the range doesn't cover null.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 3538 of file Local.cpp.

References BitWidth, llvm::ConstantRange::contains(), DL, llvm::MDNode::get(), getConstantRangeFromMetadata(), llvm::Value::getContext(), llvm::Type::getScalarSizeInBits(), llvm::Value::getType(), N, and llvm::Instruction::setMetadata().

Referenced by copyMetadataForLoad().

◆ CostTableLookup() [1/2]

template<class CostType >
const CostTblEntryT< CostType > * llvm::CostTableLookup ( ArrayRef< CostTblEntryT< CostType > >  Tbl,
int  ISD,
MVT  Ty 
)
inline

◆ CostTableLookup() [2/2]

template<size_t N, class CostType >
const CostTblEntryT< CostType > * llvm::CostTableLookup ( const CostTblEntryT< CostType >(&)  Table[N],
int  ISD,
MVT  Ty 
)
inline

Definition at line 48 of file CostTable.h.

◆ count()

template<typename R , typename E >
auto llvm::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.

Definition at line 1914 of file STLExtras.h.

References adl_begin(), and adl_end().

Referenced by llvm::slpvectorizer::BoUpSLP::ShuffleInstructionBuilder::adjustExtracts(), checkThreadCommand(), collectGlobalObjectNameStrings(), llvm::DwarfCompileUnit::constructAbstractSubprogramScopeDIE(), llvm::DwarfCompileUnit::constructLexicalScopeDIE(), llvm::StringMap< ValueTy, AllocatorTy >::count(), countl_zero(), countr_zero(), llvm::pdb::DIARawSymbol::dump(), DuplicateInstructionsInSplitBetween(), llvm::TimeTraceProfiler::end(), llvm::OutputCategoryAggregator::EnumerateResults(), llvm::gsym::OutputAggregator::EnumerateResults(), llvm::format_provider< std::chrono::duration< Rep, Period > >::format(), format(), ForwardSwitchConditionToPHI(), llvm::BranchProbabilityInfo::getEdgeProbability(), llvm::DwarfCompileUnit::getLexicalBlockDIE(), llvm::DwarfCompileUnit::getOrCreateContextDIE(), llvm::DataExtractor::getU16(), llvm::DataExtractor::getU32(), llvm::DataExtractor::getU64(), llvm::DataExtractor::getU8(), llvm::TextInstrProfReader::hasFormat(), insertFoldCacheEntry(), llvm::ARM_AM::isNEONBytesplat(), lowerShuffleAsSplitOrBlend(), lowerV8I16GeneralSingleInputShuffle(), llvm::gsym::OutputAggregator::Merge(), nameUnamedGlobals(), llvm::MachO::ArchitectureSet::operator std::string(), llvm::BlockFrequency::operator>>=(), ParseLine(), partAsHex(), popcount(), pruneCache(), llvm::ThinLTOCodeGenerator::run(), shouldPartialUnroll(), sizeOfSPAdjustment(), llvm::DWARFVerifier::summarize(), llvm::sys::toTimeSpec(), llvm::sys::toTimeVal(), ulpsFromBoundary(), llvm::gsym::DwarfTransformer::verify(), llvm::ScheduleDAGSDNodes::VerifyScheduledSequence(), llvm::TimeTraceProfiler::write(), and llvm::ThinLTOCodeGenerator::writeGeneratedObject().

◆ count_if()

template<typename R , typename UnaryPredicate >
auto llvm::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.

Definition at line 1921 of file STLExtras.h.

References adl_begin(), adl_end(), and P.

Referenced by llvm::jitlink::LinkGraph::addAbsoluteSymbol(), llvm::jitlink::LinkGraph::addDefinedSymbol(), llvm::X86FrameLowering::assignCalleeSavedSpillSlots(), CalculateUnswitchCostMultiplier(), canRewriteGEPAsOffset(), llvm::slpvectorizer::BoUpSLP::canVectorizeLoads(), costAndCollectOperands(), llvm::GEPOperator::countNonConstantIndices(), llvm::SIFrameLowering::determineCalleeSaves(), llvm::slpvectorizer::BoUpSLP::findReusedOrderedScalars(), llvm::ScalarEvolution::getAddExpr(), llvm::LoopVectorizationPlanner::getBestPlanFor(), llvm::LoopBase< BlockT, LoopT >::getNumBackEdges(), llvm::slpvectorizer::BoUpSLP::getReorderingData(), llvm::ARMTTIImpl::getUnrollingPreferences(), llvm::HexagonSubtarget::initializeSubtargetDependencies(), llvm::slpvectorizer::BoUpSLP::isTreeTinyAndNotFullyVectorizable(), lower1BitShuffle(), lower256BitShuffle(), lower512BitShuffle(), lowerBUILD_VECTOR(), lowerBuildVectorViaDominantValues(), lowerShuffleAsPermuteAndUnpack(), lowerShuffleWithSHUFPS(), LowerToHorizontalOp(), lowerV16I32Shuffle(), lowerV16I8Shuffle(), lowerV4F32Shuffle(), lowerV4I32Shuffle(), lowerV8F16Shuffle(), lowerV8I16GeneralSingleInputShuffle(), lowerV8I16Shuffle(), lowerV8I32Shuffle(), llvm::orc::shared::numDeallocActions(), processShuffleMasks(), rematerializeLiveValuesAtUses(), llvm::slpvectorizer::BoUpSLP::reorderBottomToTop(), replaceUndefValuesInPhi(), scalarizeBinOpOfSplats(), SRAGlobal(), stripDebugLocFromLoopID(), thinLTOInternalizeAndPromoteGUID(), llvm::VFABI::tryDemangleForVFABI(), updateSuccessor(), and llvm::InstCombinerImpl::visitExtractElementInst().

◆ countl_one()

template<typename T >
int llvm::countl_one ( T  Value)

Count the number of ones from the most significant bit to the first zero bit.

Ex. countl_one(0xFF0FFF00) == 8. Only unsigned integral types are allowed.

Returns std::numeric_limits<T>::digits on an input of all ones.

Definition at line 294 of file bit.h.

Referenced by llvm::APInt::countl_one(), llvm::APInt::countLeadingOnes(), llvm::UnwindOpcodeAssembler::EmitVFPRegSave(), extractRotateInfo(), llvm::SmallBitVector::find_last_unset(), llvm::BitVector::find_last_unset_in(), llvm::APInt::getNumSignBits(), llvm::APInt::isNegatedPowerOf2(), llvm::KnownBits::makeGE(), llvm::AArch64_AM::processLogicalImmediate(), and val2MImm().

◆ countl_zero()

template<typename T >
int llvm::countl_zero ( T  Val)

Count number of 0's from the most significant bit to the least stopping at the first 1.

Only unsigned integral types are allowed.

Returns std::numeric_limits<T>::digits on an input of 0.

Definition at line 281 of file bit.h.

References count(), and T.

Referenced by bit_width(), CheckForMaskedLoad(), CombineANDShift(), combineBitcast(), llvm::SITargetLowering::computeKnownBitsForTargetInstr(), llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromRangeMetadata(), llvm::ConcurrentHashTableByPtr< KeyTy, KeyDataTy, AllocatorTy, Info >::ConcurrentHashTableByPtr(), llvm::APInt::countl_zero(), llvm::APInt::countLeadingZeros(), llvm::ScaledNumberBase::countLeadingZeros32(), llvm::ScaledNumberBase::countLeadingZeros64(), llvm::ConstantRange::ctlz(), llvm::AArch64_AM::decodeLogicalImmediate(), llvm::ScaledNumbers::divide32(), llvm::ScaledNumbers::divide64(), emitT2RegPlusImmediate(), expandMOVImmSimple(), llvm::SmallBitVector::find_last(), llvm::SparseBitVectorElement< ElementSize >::find_last(), llvm::BitVector::find_last_in(), llvm::SmallBitVector::find_prev(), FitWeights(), llvm::InstCombinerImpl::foldICmpShrConstant(), generateInstSeqLeadingZeros(), llvm::APInt::getActiveBits(), llvm::GCNSubtarget::getKnownHighZeroBitsForFrameIndex(), llvm::APIntOps::GetMostSignificantDifferentBit(), llvm::APInt::getNumSignBits(), llvm::ARM_AM::getT2SOImmValRotateVal(), getUnsignedPopCountRange(), isRunOfOnes(), isRunOfOnes64(), llvm::AArch64_AM::isValidDecodeLogicalImmediate(), llvm::SystemZVectorConstantInfo::isVectorConstantLegal(), knownBitsForWorkitemID(), KnuthDiv(), Log2_32(), Log2_32_Ceil(), Log2_64(), Log2_64_Ceil(), llvm::ScaledNumbers::matchScales(), mostAlignedValueInRange(), llvm::ScaledNumbers::multiply64(), llvm::BlockFrequencyInfoImplBase::Distribution::normalize(), PerformShiftCombine(), llvm::RISCVDAGToDAGISel::selectSHXADD_UWOp(), llvm::ConstantRange::shl(), and val2MImm().

◆ countr_one()

template<typename T >
int llvm::countr_one ( T  Value)

◆ countr_zero()

template<typename T >
int llvm::countr_zero ( T  Val)

Count number of 0's from the least significant bit to the most stopping at the first 1.

Only unsigned integral types are allowed.

Returns std::numeric_limits<T>::digits on an input of 0.

Definition at line 215 of file bit.h.

References count(), and T.

Referenced by BinomialCoefficient(), llvm::lowertypetests::BitSetBuilder::build(), llvm::PPCTargetLowering::BuildSDIVPow2(), calculateFileAlignment(), canUseShiftPair(), CheckForMaskedLoad(), CombineANDShift(), combineMulSpecial(), combineX86ShufflesRecursively(), llvm::X86InstrInfo::commuteInstructionImpl(), computeKnownBitsFromOperator(), llvm::ConcurrentHashTableByPtr< KeyTy, KeyDataTy, AllocatorTy, Info >::ConcurrentHashTableByPtr(), llvm::APInt::countr_zero(), llvm::APInt::countTrailingZeros(), llvm::object::ObjectFile::createELFObjectFile(), decodeCRBitMOperand(), llvm::ScaledNumbers::divide64(), dumpApplePropertyAttribute(), llvm::HexagonEvaluator::evaluate(), expandMOVImmSimple(), expandMul(), expandPredBlockMask(), llvm::SmallBitVector::find_first(), llvm::SparseBitVectorElement< ElementSize >::find_first(), llvm::BitVector::find_first_in(), llvm::SparseBitVectorElement< ElementSize >::find_next(), llvm::SmallBitVector::find_next(), llvm::wholeprogramdevirt::findLowestOffset(), firstCommonClass(), llvm::InstCombinerImpl::foldCmpLoadFromIndexedGlobal(), llvm::RISCVMatInt::generateInstSeq(), generateInstSeqImpl(), llvm::RISCVMatInt::generateTwoRegInstSeq(), llvm::detail::IEEEFloat::getExactLog2Abs(), llvm::DomainValue::getFirstDomain(), llvm::ARM_AM::getSOImmValRotate(), llvm::ARM_AM::getT2SOImmValRotate(), getTestUnderMaskCond(), llvm::ARM_AM::getThumbImm16ValShift(), llvm::ARM_AM::getThumbImmValShift(), llvm::rdf::PhysicalRegisterInfo::getUnits(), llvm::BasicBlockInfo::internalKnownBits(), isBitfieldPositioningOpFromAnd(), isBitfieldPositioningOpFromShl(), llvm::APInt::isNegatedPowerOf2(), llvm::APInt::isShiftedMask(), isShiftedMask_32(), isShiftedMask_64(), isShiftedUIntAtAnyPosition(), llvm::SystemZVectorConstantInfo::isVectorConstantLegal(), isWorthFoldingIntoOrrWithShift(), llvm::AMDGPUCallLowering::lowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), maximalLogicalImmWithin(), llvm::SIInstrInfo::optimizeCompareInstr(), optimizeSection(), PerformBFICombine(), PerformORCombineToBFI(), llvm::ARMInstPrinter::printBitfieldInvMaskImmOperand(), llvm::ARMInstPrinter::printThumbITMask(), llvm::ARMInstPrinter::printVPTMask(), llvm::AArch64_AM::processLogicalImmediate(), ReduceSwitchRange(), llvm::RISCVDAGToDAGISel::Select(), llvm::RISCVDAGToDAGISel::selectSHXADD_UWOp(), llvm::RISCVDAGToDAGISel::selectSHXADDOp(), llvm::jitlink::Block::setAlignment(), llvm::HexagonResource::setWeight(), simplifySwitchOfPowersOfTwo(), llvm::APInt::tcLSB(), tryBitfieldInsertOpFromOr(), tryEorOfLogicalImmediates(), TypeSizeToSizeIndex(), TypeStoreSizeToSizeIndex(), llvm::SelectionDAGBuilder::visitBitTestCase(), and llvm::InstCombinerImpl::visitGetElementPtrInst().

◆ crc32() [1/2]

uint32_t llvm::crc32 ( ArrayRef< uint8_t >  Data)

Definition at line 101 of file CRC.cpp.

References crc32().

Referenced by crc32(), llvm::objcopy::coff::createGnuDebugLinkSectionContents(), and llvm::JamCRC::update().

◆ crc32() [2/2]

uint32_t llvm::crc32 ( uint32_t  CRC,
ArrayRef< uint8_t >  Data 
)

Definition at line 75 of file CRC.cpp.

References CRCTable.

◆ createA15SDOptimizerPass()

FunctionPass * llvm::createA15SDOptimizerPass ( )

Definition at line 681 of file A15SDOptimizer.cpp.

◆ createAArch64A53Fix835769()

FunctionPass * llvm::createAArch64A53Fix835769 ( )

Definition at line 249 of file AArch64A53Fix835769.cpp.

◆ createAArch64A57FPLoadBalancing()

FunctionPass * llvm::createAArch64A57FPLoadBalancing ( )

Definition at line 720 of file AArch64A57FPLoadBalancing.cpp.

◆ createAArch64AdvSIMDScalar()

FunctionPass * llvm::createAArch64AdvSIMDScalar ( )

Definition at line 409 of file AArch64AdvSIMDScalarPass.cpp.

◆ createAArch64Arm64ECCallLoweringPass()

ModulePass * llvm::createAArch64Arm64ECCallLoweringPass ( )

◆ createAArch64AsmTargetStreamer()

MCTargetStreamer * llvm::createAArch64AsmTargetStreamer ( MCStreamer S,
formatted_raw_ostream OS,
MCInstPrinter InstPrint,
bool  isVerboseAsm 
)

Definition at line 303 of file AArch64ELFStreamer.cpp.

References OS.

Referenced by LLVMInitializeAArch64TargetMC().

◆ createAArch64beAsmBackend()

MCAsmBackend * llvm::createAArch64beAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createAArch64BranchTargetsPass()

FunctionPass * llvm::createAArch64BranchTargetsPass ( )

◆ createAArch64CleanupLocalDynamicTLSPass()

FunctionPass * llvm::createAArch64CleanupLocalDynamicTLSPass ( )

◆ createAArch64CollectLOHPass()

FunctionPass * llvm::createAArch64CollectLOHPass ( )

Definition at line 591 of file AArch64CollectLOH.cpp.

◆ createAArch64CompressJumpTablesPass()

FunctionPass * llvm::createAArch64CompressJumpTablesPass ( )

Definition at line 187 of file AArch64CompressJumpTables.cpp.

◆ createAArch64CondBrTuning()

FunctionPass * llvm::createAArch64CondBrTuning ( )

Definition at line 323 of file AArch64CondBrTuning.cpp.

◆ createAArch64ConditionalCompares()

aarch64 AArch64 CCMP false FunctionPass * llvm::createAArch64ConditionalCompares ( )

Definition at line 803 of file AArch64ConditionalCompares.cpp.

◆ createAArch64ConditionOptimizerPass()

aarch64 AArch64 CondOpt false FunctionPass * llvm::createAArch64ConditionOptimizerPass ( )

Definition at line 133 of file AArch64ConditionOptimizer.cpp.

◆ createAArch64DeadRegisterDefinitions()

FunctionPass * llvm::createAArch64DeadRegisterDefinitions ( )

Definition at line 200 of file AArch64DeadRegisterDefinitionsPass.cpp.

◆ createAArch64ELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createAArch64ELFObjectWriter ( uint8_t  OSABI,
bool  IsILP32 
)

Definition at line 485 of file AArch64ELFObjectWriter.cpp.

◆ createAArch64ELFStreamer()

MCELFStreamer * llvm::createAArch64ELFStreamer ( MCContext Context,
std::unique_ptr< MCAsmBackend TAB,
std::unique_ptr< MCObjectWriter OW,
std::unique_ptr< MCCodeEmitter Emitter,
bool  RelaxAll 
)

Definition at line 309 of file AArch64ELFStreamer.cpp.

References Context, and Emitter.

Referenced by createELFStreamer().

◆ createAArch64ExpandPseudoPass()

FunctionPass * llvm::createAArch64ExpandPseudoPass ( )

Returns an instance of the pseudo instruction expansion pass.

Definition at line 1712 of file AArch64ExpandPseudoInsts.cpp.

◆ createAArch64GlobalsTaggingPass()

aarch64 globals AArch64 Globals Tagging false ModulePass * llvm::createAArch64GlobalsTaggingPass ( )

Definition at line 164 of file AArch64GlobalsTagging.cpp.

◆ createAArch64IndirectThunks()

FunctionPass * llvm::createAArch64IndirectThunks ( )

Definition at line 444 of file AArch64SLSHardening.cpp.

◆ createAArch64InstructionSelector()

InstructionSelector * llvm::createAArch64InstructionSelector ( const AArch64TargetMachine TM,
AArch64Subtarget Subtarget,
AArch64RegisterBankInfo RBI 
)

Definition at line 7765 of file AArch64InstructionSelector.cpp.

References TM.

Referenced by llvm::AArch64Subtarget::AArch64Subtarget().

◆ createAArch64ISelDag()

FunctionPass * llvm::createAArch64ISelDag ( AArch64TargetMachine TM,
CodeGenOptLevel  OptLevel 
)

createAArch64ISelDag - This pass converts a legalized DAG into a AArch64-specific DAG, ready for instruction scheduling.

Definition at line 6852 of file AArch64ISelDAGToDAG.cpp.

References TM.

◆ createAArch64leAsmBackend()

MCAsmBackend * llvm::createAArch64leAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createAArch64LoadStoreOptimizationPass()

FunctionPass * llvm::createAArch64LoadStoreOptimizationPass ( )

createAArch64LoadStoreOptimizationPass - returns an instance of the load / store optimization pass.

Definition at line 2562 of file AArch64LoadStoreOptimizer.cpp.

◆ createAArch64LoopIdiomTransformPass()

aarch64 Transform specific loop idioms into optimized vector false Pass * llvm::createAArch64LoopIdiomTransformPass ( )

Definition at line 164 of file AArch64LoopIdiomTransform.cpp.

◆ createAArch64LowerHomogeneousPrologEpilogPass()

ModulePass * llvm::createAArch64LowerHomogeneousPrologEpilogPass ( )

Definition at line 669 of file AArch64LowerHomogeneousPrologEpilog.cpp.

◆ createAArch64MachObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createAArch64MachObjectWriter ( uint32_t  CPUType,
uint32_t  CPUSubtype,
bool  IsILP32 
)

Definition at line 409 of file AArch64MachObjectWriter.cpp.

◆ createAArch64MacroFusionDAGMutation()

std::unique_ptr< ScheduleDAGMutation > llvm::createAArch64MacroFusionDAGMutation ( )

Note that you have to add: DAG.addMutation(createAArch64MacroFusionDAGMutation()); to AArch64PassConfig::createMachineScheduler() to have an effect.

Definition at line 480 of file AArch64MacroFusion.cpp.

References createMacroFusionDAGMutation(), and shouldScheduleAdjacent().

◆ createAArch64MCCodeEmitter()

MCCodeEmitter * llvm::createAArch64MCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 751 of file AArch64MCCodeEmitter.cpp.

Referenced by LLVMInitializeAArch64TargetMC().

◆ createAArch64MIPeepholeOptPass()

FunctionPass * llvm::createAArch64MIPeepholeOptPass ( )

Definition at line 781 of file AArch64MIPeepholeOpt.cpp.

◆ createAArch64NullTargetStreamer()

MCTargetStreamer * llvm::createAArch64NullTargetStreamer ( MCStreamer S)

Definition at line 141 of file AArch64TargetStreamer.cpp.

Referenced by LLVMInitializeAArch64TargetMC().

◆ createAArch64O0PreLegalizerCombiner()

FunctionPass * llvm::createAArch64O0PreLegalizerCombiner ( )

Definition at line 185 of file AArch64O0PreLegalizerCombiner.cpp.

◆ createAArch64ObjectTargetStreamer()

MCTargetStreamer * llvm::createAArch64ObjectTargetStreamer ( MCStreamer S,
const MCSubtargetInfo STI 
)

◆ createAArch64PointerAuthPass()

FunctionPass * llvm::createAArch64PointerAuthPass ( )

◆ createAArch64PostCoalescerPass()

FunctionPass * llvm::createAArch64PostCoalescerPass ( )

Definition at line 99 of file AArch64PostCoalescerPass.cpp.

◆ createAArch64PostLegalizerCombiner()

FunctionPass * llvm::createAArch64PostLegalizerCombiner ( bool  IsOptNone)

Definition at line 711 of file AArch64PostLegalizerCombiner.cpp.

◆ createAArch64PostLegalizerLowering()

FunctionPass * llvm::createAArch64PostLegalizerLowering ( )

Definition at line 1370 of file AArch64PostLegalizerLowering.cpp.

◆ createAArch64PostSelectOptimize()

FunctionPass * llvm::createAArch64PostSelectOptimize ( )

Definition at line 257 of file AArch64PostSelectOptimize.cpp.

◆ createAArch64PreLegalizerCombiner()

FunctionPass * llvm::createAArch64PreLegalizerCombiner ( )

Definition at line 829 of file AArch64PreLegalizerCombiner.cpp.

◆ createAArch64PromoteConstantPass()

aarch64 promote AArch64 Promote Constant false ModulePass * llvm::createAArch64PromoteConstantPass ( )

Definition at line 235 of file AArch64PromoteConstant.cpp.

◆ createAArch64RedundantCopyEliminationPass()

FunctionPass * llvm::createAArch64RedundantCopyEliminationPass ( )

Definition at line 496 of file AArch64RedundantCopyElimination.cpp.

◆ createAArch64SIMDInstrOptPass()

FunctionPass * llvm::createAArch64SIMDInstrOptPass ( )

Returns an instance of the high cost ASIMD instruction replacement optimization pass.

Definition at line 739 of file AArch64SIMDInstrOpt.cpp.

◆ createAArch64SLSHardeningPass()

FunctionPass * llvm::createAArch64SLSHardeningPass ( )

Definition at line 409 of file AArch64SLSHardening.cpp.

◆ createAArch64SpeculationHardeningPass()

FunctionPass * llvm::createAArch64SpeculationHardeningPass ( )

Returns an instance of the pseudo instruction expansion pass.

Definition at line 702 of file AArch64SpeculationHardening.cpp.

◆ createAArch64StackTaggingPass()

AArch64 Stack false FunctionPass * llvm::createAArch64StackTaggingPass ( bool  IsOptNone)

Definition at line 345 of file AArch64StackTagging.cpp.

◆ createAArch64StackTaggingPreRAPass()

aarch64 stack tagging pre AArch64 Stack Tagging PreRA false FunctionPass * llvm::createAArch64StackTaggingPreRAPass ( )

Definition at line 97 of file AArch64StackTaggingPreRA.cpp.

◆ createAArch64StorePairSuppressPass()

FunctionPass * llvm::createAArch64StorePairSuppressPass ( )

◆ createAArch64WinCOFFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createAArch64WinCOFFObjectWriter ( const Triple TheTriple)

Definition at line 165 of file AArch64WinCOFFObjectWriter.cpp.

◆ createAArch64WinCOFFStreamer()

MCWinCOFFStreamer * llvm::createAArch64WinCOFFStreamer ( MCContext Context,
std::unique_ptr< MCAsmBackend TAB,
std::unique_ptr< MCObjectWriter OW,
std::unique_ptr< MCCodeEmitter Emitter,
bool  RelaxAll,
bool  IncrementalLinkerCompatible 
)

Definition at line 294 of file AArch64WinCOFFStreamer.cpp.

References Context, and Emitter.

Referenced by createWinCOFFStreamer().

◆ createAggressiveAntiDepBreaker()

AntiDepBreaker * llvm::createAggressiveAntiDepBreaker ( MachineFunction MFi,
const RegisterClassInfo RCI,
TargetSubtargetInfo::RegClassVector CriticalPathRCs 
)

Definition at line 962 of file AggressiveAntiDepBreaker.cpp.

Referenced by INITIALIZE_PASS().

◆ createAllocaHoisting()

FunctionPass * llvm::createAllocaHoisting ( )

◆ createAlwaysInlinerLegacyPass()

always Inliner for always_inline false Pass * llvm::createAlwaysInlinerLegacyPass ( bool  InsertLifetime = true)

Create a legacy pass manager instance of a pass to inline and remove functions marked as "always_inline".

Definition at line 174 of file AlwaysInliner.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ createAMDGPUAAWrapperPass()

amdgpu aa AMDGPU Address space based Alias Analysis true ImmutablePass * llvm::createAMDGPUAAWrapperPass ( )

Definition at line 33 of file AMDGPUAliasAnalysis.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ createAMDGPUAlwaysInlinePass()

ModulePass * llvm::createAMDGPUAlwaysInlinePass ( bool  GlobalOpt = true)

Definition at line 163 of file AMDGPUAlwaysInlinePass.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ createAMDGPUAnnotateKernelFeaturesPass()

Pass * llvm::createAMDGPUAnnotateKernelFeaturesPass ( )

◆ createAMDGPUAnnotateUniformValues()

FunctionPass * llvm::createAMDGPUAnnotateUniformValues ( )

Definition at line 122 of file AMDGPUAnnotateUniformValues.cpp.

◆ createAMDGPUAsmBackend()

MCAsmBackend * llvm::createAMDGPUAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createAMDGPUAtomicOptimizerPass()

AMDGPU atomic false FunctionPass * llvm::createAMDGPUAtomicOptimizerPass ( ScanOptions  ScanStrategy)

Definition at line 1018 of file AMDGPUAtomicOptimizer.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ createAMDGPUAttributorLegacyPass()

Pass * llvm::createAMDGPUAttributorLegacyPass ( )

Definition at line 1116 of file AMDGPUAttributor.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ createAMDGPUCodeGenPreparePass()

FunctionPass * llvm::createAMDGPUCodeGenPreparePass ( )

Definition at line 2318 of file AMDGPUCodeGenPrepare.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ createAMDGPUCtorDtorLoweringLegacyPass()

ModulePass * llvm::createAMDGPUCtorDtorLoweringLegacyPass ( )

◆ createAMDGPUELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createAMDGPUELFObjectWriter ( bool  Is64Bit,
uint8_t  OSABI,
bool  HasRelocationAddend 
)

Definition at line 99 of file AMDGPUELFObjectWriter.cpp.

◆ createAMDGPUELFStreamer()

MCELFStreamer * llvm::createAMDGPUELFStreamer ( const Triple T,
MCContext Context,
std::unique_ptr< MCAsmBackend MAB,
std::unique_ptr< MCObjectWriter OW,
std::unique_ptr< MCCodeEmitter Emitter,
bool  RelaxAll 
)

Definition at line 31 of file AMDGPUELFStreamer.cpp.

References Context, and Emitter.

Referenced by createMCStreamer().

◆ createAMDGPUExportClusteringDAGMutation()

std::unique_ptr< ScheduleDAGMutation > llvm::createAMDGPUExportClusteringDAGMutation ( )

Definition at line 144 of file AMDGPUExportClustering.cpp.

Referenced by createGCNMaxOccupancyMachineScheduler().

◆ createAMDGPUExternalAAWrapperPass()

ImmutablePass * llvm::createAMDGPUExternalAAWrapperPass ( )

Definition at line 37 of file AMDGPUAliasAnalysis.cpp.

◆ createAMDGPUGlobalISelDivergenceLoweringPass()

FunctionPass * llvm::createAMDGPUGlobalISelDivergenceLoweringPass ( )

Definition at line 206 of file AMDGPUGlobalISelDivergenceLowering.cpp.

◆ createAMDGPUImageIntrinsicOptimizerPass()

FunctionPass * llvm::createAMDGPUImageIntrinsicOptimizerPass ( const TargetMachine TM)

Definition at line 326 of file AMDGPUImageIntrinsicOptimizer.cpp.

References TM.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ createAMDGPUISelDag()

amdgpu AMDGPU DAG DAG Pattern Instruction false FunctionPass * llvm::createAMDGPUISelDag ( TargetMachine TM,
CodeGenOptLevel  OptLevel 
)

This pass converts a legalized DAG into a AMDGPU-specific.

Definition at line 115 of file AMDGPUISelDAGToDAG.cpp.

References TM.

Referenced by llvm::AMDGPUPassConfig::addInstSelector().

◆ createAMDGPULateCodeGenPreparePass()

FunctionPass * llvm::createAMDGPULateCodeGenPreparePass ( )

Definition at line 199 of file AMDGPULateCodeGenPrepare.cpp.

◆ createAMDGPULowerBufferFatPointersPass()

false ModulePass * llvm::createAMDGPULowerBufferFatPointersPass ( )

◆ createAMDGPULowerKernelArgumentsPass()

FunctionPass * llvm::createAMDGPULowerKernelArgumentsPass ( )

◆ createAMDGPULowerKernelAttributesPass()

ModulePass * llvm::createAMDGPULowerKernelAttributesPass ( )

Definition at line 353 of file AMDGPULowerKernelAttributes.cpp.

◆ createAMDGPULowerModuleLDSLegacyPass()

Lower uses of LDS variables from non kernel false ModulePass * llvm::createAMDGPULowerModuleLDSLegacyPass ( const AMDGPUTargetMachine TM = nullptr)

Definition at line 1640 of file AMDGPULowerModuleLDSPass.cpp.

References TM.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ createAMDGPUMachineCFGStructurizerPass()

amdgpu machine cfg AMDGPU Machine CFG false FunctionPass * llvm::createAMDGPUMachineCFGStructurizerPass ( )

Definition at line 2844 of file AMDGPUMachineCFGStructurizer.cpp.

◆ createAMDGPUMacroFusionDAGMutation()

std::unique_ptr< ScheduleDAGMutation > llvm::createAMDGPUMacroFusionDAGMutation ( )

Note that you have to add: DAG.addMutation(createAMDGPUMacroFusionDAGMutation()); to AMDGPUPassConfig::createMachineScheduler() to have an effect.

Definition at line 62 of file AMDGPUMacroFusion.cpp.

References createMacroFusionDAGMutation(), and shouldScheduleAdjacent().

Referenced by createGCNMaxOccupancyMachineScheduler(), and createIterativeILPMachineScheduler().

◆ createAMDGPUMCCodeEmitter()

MCCodeEmitter * llvm::createAMDGPUMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

◆ createAMDGPUOpenCLEnqueuedBlockLoweringPass()

ModulePass * llvm::createAMDGPUOpenCLEnqueuedBlockLoweringPass ( )

◆ createAMDGPUPostLegalizeCombiner()

FunctionPass * llvm::createAMDGPUPostLegalizeCombiner ( bool  IsOptNone)

Definition at line 567 of file AMDGPUPostLegalizerCombiner.cpp.

◆ createAMDGPUPreLegalizeCombiner()

FunctionPass * llvm::createAMDGPUPreLegalizeCombiner ( bool  IsOptNone)

Definition at line 296 of file AMDGPUPreLegalizerCombiner.cpp.

◆ createAMDGPUPrintfRuntimeBinding()

ModulePass * llvm::createAMDGPUPrintfRuntimeBinding ( )

Definition at line 79 of file AMDGPUPrintfRuntimeBinding.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ createAMDGPUPromoteAlloca()

FunctionPass * llvm::createAMDGPUPromoteAlloca ( )

Definition at line 244 of file AMDGPUPromoteAlloca.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ createAMDGPUPromoteAllocaToVector()

FunctionPass * llvm::createAMDGPUPromoteAllocaToVector ( )

Definition at line 248 of file AMDGPUPromoteAlloca.cpp.

◆ createAMDGPUPromoteKernelArgumentsPass()

FunctionPass * llvm::createAMDGPUPromoteKernelArgumentsPass ( )

Definition at line 203 of file AMDGPUPromoteKernelArguments.cpp.

◆ createAMDGPURegBankCombiner()

FunctionPass * llvm::createAMDGPURegBankCombiner ( bool  IsOptNone)

Definition at line 474 of file AMDGPURegBankCombiner.cpp.

◆ createAMDGPURemoveIncompatibleFunctionsPass()

ModulePass * llvm::createAMDGPURemoveIncompatibleFunctionsPass ( const TargetMachine )

◆ createAMDGPURewriteOutArgumentsPass()

FunctionPass * llvm::createAMDGPURewriteOutArgumentsPass ( )

Definition at line 403 of file AMDGPURewriteOutArguments.cpp.

◆ createAMDGPURewriteUndefForPHILegacyPass()

FunctionPass * llvm::createAMDGPURewriteUndefForPHILegacyPass ( )

Definition at line 193 of file AMDGPURewriteUndefForPHI.cpp.

◆ createAMDGPUSetWavePriorityPass()

FunctionPass * llvm::createAMDGPUSetWavePriorityPass ( )

◆ createAMDGPUStructurizeCFGPass()

Pass * llvm::createAMDGPUStructurizeCFGPass ( )

◆ createAMDGPUUnifyMetadataPass()

ModulePass * llvm::createAMDGPUUnifyMetadataPass ( )

◆ createAnyOfOp()

Value * llvm::createAnyOfOp ( IRBuilderBase Builder,
Value StartVal,
RecurKind  RK,
Value Left,
Value Right 
)

See RecurrenceDescriptor::isAnyOfPattern for a description of the pattern we are trying to match.

In this pattern, we are only ever selecting between two values: 1) an initial start value StartVal of the reduction PHI, and 2) a loop invariant value. If any of lane value in Left, Right is not equal to StartVal, select the loop invariant value. This is done by selecting Right iff Left is equal to StartVal.

Definition at line 1037 of file LoopUtils.cpp.

References llvm::IRBuilderBase::CreateCmp(), llvm::IRBuilderBase::CreateSelect(), llvm::IRBuilderBase::CreateVectorSplat(), llvm::CmpInst::ICMP_NE, Left, and Right.

◆ createAnyOfTargetReduction()

Value * llvm::createAnyOfTargetReduction ( IRBuilderBase B,
Value Src,
const RecurrenceDescriptor Desc,
PHINode OrigPhi 
)

◆ createARCBranchFinalizePass()

FunctionPass * llvm::createARCBranchFinalizePass ( )

Definition at line 181 of file ARCBranchFinalize.cpp.

◆ createARCExpandPseudosPass()

FunctionPass * llvm::createARCExpandPseudosPass ( )

Definition at line 163 of file ARCExpandPseudos.cpp.

◆ createARCISelDag()

FunctionPass * llvm::createARCISelDag ( ARCTargetMachine TM,
CodeGenOptLevel  OptLevel 
)

This pass converts a legalized DAG into a ARC-specific DAG, ready for instruction scheduling.

Definition at line 71 of file ARCISelDAGToDAG.cpp.

References TM.

◆ createARCOptAddrMode()

FunctionPass * llvm::createARCOptAddrMode ( )

Definition at line 530 of file ARCOptAddrMode.cpp.

◆ createARMBEAsmBackend()

MCAsmBackend * llvm::createARMBEAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

Definition at line 1368 of file ARMAsmBackend.cpp.

References big, createARMAsmBackend(), MRI, and Options.

Referenced by LLVMInitializeARMTargetMC().

◆ createARMBEMCCodeEmitter()

MCCodeEmitter * llvm::createARMBEMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 2039 of file ARMMCCodeEmitter.cpp.

Referenced by LLVMInitializeARMTargetMC().

◆ createARMBlockPlacementPass()

FunctionPass * llvm::createARMBlockPlacementPass ( )

Definition at line 57 of file ARMBlockPlacement.cpp.

◆ createARMBranchTargetsPass()

FunctionPass * llvm::createARMBranchTargetsPass ( )

◆ createARMConstantIslandPass()

FunctionPass * llvm::createARMConstantIslandPass ( )

createARMConstantIslandPass - returns an instance of the constpool island pass.

Definition at line 2529 of file ARMConstantIslandPass.cpp.

◆ createARMELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createARMELFObjectWriter ( uint8_t  OSABI)

Construct an ELF Mach-O object writer.

Definition at line 341 of file ARMELFObjectWriter.cpp.

◆ createARMELFStreamer()

MCELFStreamer * llvm::createARMELFStreamer ( MCContext Context,
std::unique_ptr< MCAsmBackend TAB,
std::unique_ptr< MCObjectWriter OW,
std::unique_ptr< MCCodeEmitter Emitter,
bool  RelaxAll,
bool  IsThumb,
bool  IsAndroid 
)

Definition at line 1486 of file ARMELFStreamer.cpp.

References Context, llvm::ELF::EF_ARM_EABI_VER5, and Emitter.

Referenced by createELFStreamer().

◆ createARMExpandPseudoPass()

FunctionPass * llvm::createARMExpandPseudoPass ( )

createARMExpandPseudoPass - returns an instance of the pseudo instruction expansion pass.

Definition at line 3275 of file ARMExpandPseudoInsts.cpp.

◆ createARMFixCortexA57AES1742098Pass()

FunctionPass * llvm::createARMFixCortexA57AES1742098Pass ( )

Definition at line 430 of file ARMFixCortexA57AES1742098Pass.cpp.

◆ createARMIndirectThunks()

FunctionPass * llvm::createARMIndirectThunks ( )

Definition at line 423 of file ARMSLSHardening.cpp.

◆ createARMInstructionSelector()

InstructionSelector * llvm::createARMInstructionSelector ( const ARMBaseTargetMachine TM,
const ARMSubtarget STI,
const ARMRegisterBankInfo RBI 
)

Definition at line 162 of file ARMInstructionSelector.cpp.

References TM.

Referenced by llvm::ARMSubtarget::ARMSubtarget().

◆ createARMISelDag()

FunctionPass * llvm::createARMISelDag ( ARMBaseTargetMachine TM,
CodeGenOptLevel  OptLevel 
)

createARMISelDag - This pass converts a legalized DAG into a ARM-specific DAG, ready for instruction scheduling.

Definition at line 5887 of file ARMISelDAGToDAG.cpp.

References TM.

◆ createARMLEAsmBackend()

MCAsmBackend * llvm::createARMLEAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

Definition at line 1361 of file ARMAsmBackend.cpp.

References createARMAsmBackend(), little, MRI, and Options.

Referenced by LLVMInitializeARMTargetMC().

◆ createARMLEMCCodeEmitter()

MCCodeEmitter * llvm::createARMLEMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 2034 of file ARMMCCodeEmitter.cpp.

Referenced by LLVMInitializeARMTargetMC().

◆ createARMLoadStoreOptimizationPass()

FunctionPass * llvm::createARMLoadStoreOptimizationPass ( bool  PreAlloc = false)

Returns an instance of the load / store optimization pass.

Definition at line 3306 of file ARMLoadStoreOptimizer.cpp.

◆ createARMLowOverheadLoopsPass()

FunctionPass * llvm::createARMLowOverheadLoopsPass ( )

Definition at line 1876 of file ARMLowOverheadLoops.cpp.

◆ createARMMachObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createARMMachObjectWriter ( bool  Is64Bit,
uint32_t  CPUType,
uint32_t  CPUSubtype 
)

Construct an ARM Mach-O object writer.

Definition at line 508 of file ARMMachObjectWriter.cpp.

Referenced by llvm::ARMAsmBackendDarwin::createObjectTargetWriter().

◆ createARMMachORelocationInfo()

MCRelocationInfo * llvm::createARMMachORelocationInfo ( MCContext Ctx)

Construct ARM Mach-O relocation info.

createARMMachORelocationInfo - Construct an ARM Mach-O RelocationInfo.

Definition at line 40 of file ARMMachORelocationInfo.cpp.

Referenced by createARMMCRelocationInfo().

◆ createARMMacroFusionDAGMutation()

std::unique_ptr< ScheduleDAGMutation > llvm::createARMMacroFusionDAGMutation ( )

Note that you have to add: DAG.addMutation(createARMMacroFusionDAGMutation()); to ARMPassConfig::createMachineScheduler() to have an effect.

Definition at line 65 of file ARMMacroFusion.cpp.

References createMacroFusionDAGMutation(), and shouldScheduleAdjacent().

◆ createARMNullTargetStreamer()

MCTargetStreamer * llvm::createARMNullTargetStreamer ( MCStreamer S)

Definition at line 1478 of file ARMELFStreamer.cpp.

Referenced by LLVMInitializeARMTargetMC().

◆ createARMObjectTargetELFStreamer()

MCTargetStreamer * llvm::createARMObjectTargetELFStreamer ( MCStreamer S)

Definition at line 1482 of file ARMELFStreamer.cpp.

Referenced by createARMObjectTargetStreamer().

◆ createARMObjectTargetStreamer()

MCTargetStreamer * llvm::createARMObjectTargetStreamer ( MCStreamer S,
const MCSubtargetInfo STI 
)

◆ createARMObjectTargetWinCOFFStreamer()

MCTargetStreamer * llvm::createARMObjectTargetWinCOFFStreamer ( MCStreamer S)

Definition at line 275 of file ARMWinCOFFStreamer.cpp.

Referenced by createARMObjectTargetStreamer().

◆ createARMOptimizeBarriersPass()

FunctionPass * llvm::createARMOptimizeBarriersPass ( )

createARMOptimizeBarriersPass - Returns an instance of the remove double barriers pass.

Definition at line 104 of file ARMOptimizeBarriersPass.cpp.

◆ createARMParallelDSPPass()

Pass * llvm::createARMParallelDSPPass ( )

Definition at line 802 of file ARMParallelDSP.cpp.

◆ createARMSLSHardeningPass()

FunctionPass * llvm::createARMSLSHardeningPass ( )

Definition at line 382 of file ARMSLSHardening.cpp.

◆ createARMTargetAsmStreamer()

MCTargetStreamer * llvm::createARMTargetAsmStreamer ( MCStreamer S,
formatted_raw_ostream OS,
MCInstPrinter InstPrint,
bool  isVerboseAsm 
)

Definition at line 1471 of file ARMELFStreamer.cpp.

References OS.

Referenced by LLVMInitializeARMTargetMC().

◆ createARMWinCOFFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createARMWinCOFFObjectWriter ( )

Construct an ARM PE/COFF object writer.

Definition at line 102 of file ARMWinCOFFObjectWriter.cpp.

◆ createARMWinCOFFStreamer()

MCStreamer * llvm::createARMWinCOFFStreamer ( MCContext Context,
std::unique_ptr< MCAsmBackend > &&  MAB,
std::unique_ptr< MCObjectWriter > &&  OW,
std::unique_ptr< MCCodeEmitter > &&  Emitter,
bool  RelaxAll,
bool  IncrementalLinkerCompatible 
)

Definition at line 69 of file ARMWinCOFFStreamer.cpp.

References Context, and Emitter.

Referenced by LLVMInitializeARMTargetMC().

◆ createAsmStreamer()

MCStreamer * llvm::createAsmStreamer ( MCContext Ctx,
std::unique_ptr< formatted_raw_ostream OS,
bool  isVerboseAsm,
bool  useDwarfDirectory,
MCInstPrinter InstPrint,
std::unique_ptr< MCCodeEmitter > &&  CE,
std::unique_ptr< MCAsmBackend > &&  TAB,
bool  ShowInst 
)

Create a machine code streamer which will print out assembly for the native target, suitable for compiling with a native assembler.

Parameters
InstPrint- If given, the instruction printer to use. If not given the MCInst representation will be printed. This method takes ownership of InstPrint.
CE- If given, a code emitter to use to show the instruction encoding inline with the assembly. This method takes ownership of CE.
TAB- If given, a target asm backend to use to show the fixup information in conjunction with encoding information. This method takes ownership of TAB.
ShowInst- Whether to show the MCInst representation inline with the assembly.

Definition at line 2637 of file MCAsmStreamer.cpp.

References Context, and OS.

Referenced by llvm::Target::createAsmStreamer().

◆ createAtomicExpandLegacyPass()

FunctionPass * llvm::createAtomicExpandLegacyPass ( )

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.

Definition at line 348 of file AtomicExpandPass.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ createAVRAsmBackend()

MCAsmBackend * llvm::createAVRAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const llvm::MCTargetOptions TO 
)

Creates an assembly backend for AVR.

Definition at line 529 of file AVRAsmBackend.cpp.

References llvm::Triple::getOS(), and llvm::MCSubtargetInfo::getTargetTriple().

Referenced by LLVMInitializeAVRTargetMC().

◆ createAVRBranchSelectionPass()

FunctionPass * llvm::createAVRBranchSelectionPass ( )

◆ createAVRELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createAVRELFObjectWriter ( uint8_t  OSABI)

Creates an ELF object writer for AVR.

Definition at line 156 of file AVRELFObjectWriter.cpp.

Referenced by llvm::AVRAsmBackend::createObjectTargetWriter().

◆ createAVRELFStreamer()

MCStreamer * llvm::createAVRELFStreamer ( Triple const TT,
MCContext Context,
std::unique_ptr< MCAsmBackend MAB,
std::unique_ptr< MCObjectWriter OW,
std::unique_ptr< MCCodeEmitter CE 
)

Definition at line 44 of file AVRMCELFStreamer.cpp.

References Context.

◆ createAVRExpandPseudoPass()

FunctionPass * llvm::createAVRExpandPseudoPass ( )

Referenced by INITIALIZE_PASS().

◆ createAVRFrameAnalyzerPass()

FunctionPass * llvm::createAVRFrameAnalyzerPass ( )

Creates instance of the frame analyzer pass.

Definition at line 496 of file AVRFrameLowering.cpp.

◆ createAVRISelDag()

FunctionPass * llvm::createAVRISelDag ( AVRTargetMachine TM,
CodeGenOptLevel  OptLevel 
)

Definition at line 587 of file AVRISelDAGToDAG.cpp.

References TM.

◆ createAVRMCCodeEmitter()

MCCodeEmitter * llvm::createAVRMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Creates a machine code emitter for AVR.

Referenced by LLVMInitializeAVRTargetMC().

◆ createAVRMCInstrInfo()

MCInstrInfo * llvm::createAVRMCInstrInfo ( )

Definition at line 41 of file AVRMCTargetDesc.cpp.

References X.

Referenced by LLVMInitializeAVRTargetMC().

◆ createAVRShiftExpandPass()

Pass * llvm::createAVRShiftExpandPass ( )

◆ createBarrierNoopPass()

ModulePass * llvm::createBarrierNoopPass ( )

createBarrierNoopPass - This pass is purely a module pass barrier in a pass manager.

Definition at line 43 of file BarrierNoopPass.cpp.

◆ createBasicAAWrapperPass()

basic Basic Alias true FunctionPass * llvm::createBasicAAWrapperPass ( )

Definition at line 1916 of file BasicAliasAnalysis.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ createBasicBlockPathCloningPass()

MachineFunctionPass * llvm::createBasicBlockPathCloningPass ( )

◆ createBasicBlockSectionsPass()

MachineFunctionPass * llvm::createBasicBlockSectionsPass ( )

createBasicBlockSections Pass - This pass assigns sections to machine basic blocks and is enabled with -fbasic-block-sections.

Definition at line 405 of file BasicBlockSections.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ createBasicBlockSectionsProfileReaderWrapperPass()

ImmutablePass * llvm::createBasicBlockSectionsProfileReaderWrapperPass ( const MemoryBuffer Buf)

◆ createBasicRegisterAllocator() [1/2]

FunctionPass * llvm::createBasicRegisterAllocator ( )

BasicRegisterAllocation Pass - This pass implements a degenerate global register allocator using the basic regalloc framework.

Definition at line 333 of file RegAllocBasic.cpp.

◆ createBasicRegisterAllocator() [2/2]

FunctionPass * llvm::createBasicRegisterAllocator ( RegClassFilterFunc  F)

Definition at line 337 of file RegAllocBasic.cpp.

References F.

◆ createBitcodeWriterPass()

write Write true ModulePass * llvm::createBitcodeWriterPass ( raw_ostream Str,
bool  ShouldPreserveUseListOrder = false 
)

Create and return a pass that writes the module to the specified ostream.

Note that this pass is designed for use with the legacy pass manager.

If ShouldPreserveUseListOrder, encode use-list order so it can be reproduced when deserialized.

Definition at line 76 of file BitcodeWriterPass.cpp.

◆ createBitMaskForGaps()

Constant * llvm::createBitMaskForGaps ( IRBuilderBase Builder,
unsigned  VF,
const InterleaveGroup< Instruction > &  Group 
)

Create a mask that filters the members of an interleave group where there are gaps.

For example, the mask for Group with interleave-factor 3 and VF 4, that has only its first member present is:

<1,0,0,1,0,0,1,0,0,1,0,0>

Note: The result is a mask of 0's and 1's, as opposed to the other create[*]Mask() utilities which create a shuffle mask (mask that consists of indices).

Definition at line 832 of file VectorUtils.cpp.

References assert(), llvm::ConstantVector::get(), llvm::InterleaveGroup< InstTy >::getFactor(), llvm::IRBuilderBase::getInt1(), llvm::InterleaveGroup< InstTy >::getMember(), llvm::InterleaveGroup< InstTy >::getNumMembers(), and llvm::InterleaveGroup< InstTy >::isReverse().

Referenced by llvm::InnerLoopVectorizer::vectorizeInterleaveGroup().

◆ createBPFAsmBackend()

MCAsmBackend * llvm::createBPFAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

Definition at line 130 of file BPFAsmBackend.cpp.

References little.

Referenced by LLVMInitializeBPFTargetMC().

◆ createBPFbeAsmBackend()

MCAsmBackend * llvm::createBPFbeAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

Definition at line 137 of file BPFAsmBackend.cpp.

References big.

Referenced by LLVMInitializeBPFTargetMC().

◆ createBPFbeMCCodeEmitter()

MCCodeEmitter * llvm::createBPFbeMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 74 of file BPFMCCodeEmitter.cpp.

References llvm::MCContext::getRegisterInfo().

Referenced by LLVMInitializeBPFTargetMC().

◆ createBPFCheckAndAdjustIR()

ModulePass * llvm::createBPFCheckAndAdjustIR ( )

◆ createBPFELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createBPFELFObjectWriter ( uint8_t  OSABI)

Definition at line 87 of file BPFELFObjectWriter.cpp.

◆ createBPFInstructionSelector()

InstructionSelector * llvm::createBPFInstructionSelector ( const BPFTargetMachine TM,
const BPFSubtarget Subtarget,
const BPFRegisterBankInfo RBI 
)

Definition at line 88 of file BPFInstructionSelector.cpp.

References TM.

Referenced by llvm::BPFSubtarget::BPFSubtarget().

◆ createBPFISelDag()

FunctionPass * llvm::createBPFISelDag ( BPFTargetMachine TM)

Definition at line 491 of file BPFISelDAGToDAG.cpp.

References TM.

◆ createBPFMCCodeEmitter()

MCCodeEmitter * llvm::createBPFMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 69 of file BPFMCCodeEmitter.cpp.

References llvm::MCContext::getRegisterInfo().

Referenced by LLVMInitializeBPFTargetMC().

◆ createBPFMIPeepholePass()

FunctionPass * llvm::createBPFMIPeepholePass ( )

◆ createBPFMIPreEmitCheckingPass()

FunctionPass * llvm::createBPFMIPreEmitCheckingPass ( )

◆ createBPFMIPreEmitPeepholePass()

FunctionPass * llvm::createBPFMIPreEmitPeepholePass ( )

◆ createBPFMISimplifyPatchablePass()

FunctionPass * llvm::createBPFMISimplifyPatchablePass ( )

◆ createBreakCriticalEdgesPass()

FunctionPass * llvm::createBreakCriticalEdgesPass ( )

◆ createBreakFalseDeps()

FunctionPass * llvm::createBreakFalseDeps ( )

Creates Break False Dependencies pass.

See also
BreakFalseDeps.cpp

Definition at line 108 of file BreakFalseDeps.cpp.

◆ createBURRListDAGScheduler()

ScheduleDAGSDNodes * llvm::createBURRListDAGScheduler ( SelectionDAGISel IS,
CodeGenOptLevel  OptLevel 
)

createBURRListDAGScheduler - This creates a bottom up register usage reduction list scheduler.

Definition at line 3145 of file ScheduleDAGRRList.cpp.

References llvm::TargetSubtargetInfo::getInstrInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), llvm::SelectionDAGISel::MF, TII, and TRI.

Referenced by createDefaultScheduler().

◆ createCallBrPass()

Prepare false FunctionPass * llvm::createCallBrPass ( )

Definition at line 103 of file CallBrPrepare.cpp.

Referenced by llvm::TargetPassConfig::addISelPrepare().

◆ createCallGraphDOTPrinterPass()

ModulePass * llvm::createCallGraphDOTPrinterPass ( )

Definition at line 355 of file CallPrinter.cpp.

◆ createCallGraphViewerPass()

ModulePass * llvm::createCallGraphViewerPass ( )

◆ createCallMatchingInvoke()

CallInst * llvm::createCallMatchingInvoke ( InvokeInst II)

◆ createCanonicalizeFreezeInLoopsPass()

canon Canonicalize Freeze Instructions in false Pass * llvm::createCanonicalizeFreezeInLoopsPass ( )

Definition at line 273 of file CanonicalizeFreezeInLoops.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ createCFAOffset()

MCCFIInstruction llvm::createCFAOffset ( const TargetRegisterInfo MRI,
unsigned  Reg,
const StackOffset OffsetFromDefCFA 
)

◆ createCFGSimplificationPass()

Simplify the false FunctionPass * llvm::createCFGSimplificationPass ( SimplifyCFGOptions  Options = SimplifyCFGOptions(),
std::function< bool(const Function &)>  Ftor = nullptr 
)

Definition at line 422 of file SimplifyCFGPass.cpp.

References Options.

◆ createCFGuardCheckPass()

FunctionPass * llvm::createCFGuardCheckPass ( )

Insert Control FLow Guard checks on indirect function calls.

Definition at line 313 of file CFGuard.cpp.

References llvm::CFGuardPass::Check.

◆ createCFGuardDispatchPass()

FunctionPass * llvm::createCFGuardDispatchPass ( )

Insert Control FLow Guard dispatches on indirect function calls.

Definition at line 317 of file CFGuard.cpp.

References llvm::CFGuardPass::Dispatch.

◆ createCFGuardLongjmpPass()

FunctionPass * llvm::createCFGuardLongjmpPass ( )

Creates CFGuard longjmp target identification pass.

See also
CFGuardLongjmp.cpp

◆ createCFIFixup()

FunctionPass * llvm::createCFIFixup ( )

Creates CFI Fixup pass.

See also
CFIFixup.cpp

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ createCFIInstrInserter()

FunctionPass * llvm::createCFIInstrInserter ( )

Creates CFI Instruction Inserter pass.

See also
CFIInstrInserter.cpp

◆ createCGSCCToFunctionPassAdaptor()

template<typename FunctionPassT >
CGSCCToFunctionPassAdaptor llvm::createCGSCCToFunctionPassAdaptor ( FunctionPassT &&  Pass,
bool  EagerlyInvalidate = false,
bool  NoRerun = false 
)

A function to deduce a function pass type and wrap it in the templated adaptor.

Definition at line 517 of file CGSCCPassManager.h.

Referenced by llvm::PassBuilder::buildInlinerPipeline(), and llvm::AMDGPUTargetMachine::registerPassBuilderCallbacks().

◆ createCheckDebugMachineModulePass()

Machine Check Debug false ModulePass * llvm::createCheckDebugMachineModulePass ( )

Creates MIR Check Debug pass.

See also
MachineCheckDebugify.cpp

Definition at line 125 of file MachineCheckDebugify.cpp.

Referenced by llvm::TargetPassConfig::addCheckDebugPass().

◆ createCleanupLocalDynamicTLSPass()

FunctionPass * llvm::createCleanupLocalDynamicTLSPass ( )

This pass combines multiple accesses to local-dynamic TLS variables so that the TLS base address for the module is only fetched once per execution path through the function.

Definition at line 10336 of file X86InstrInfo.cpp.

◆ createCodeGenPrepareLegacyPass()

Optimize for code false FunctionPass * llvm::createCodeGenPrepareLegacyPass ( )

createCodeGenPrepareLegacyPass - Transform the code to expose more pattern matching during instruction selection.

Definition at line 540 of file CodeGenPrepare.cpp.

Referenced by llvm::TargetPassConfig::addCodeGenPrepare().

◆ createCOFFAsmParser()

MCAsmParserExtension * llvm::createCOFFAsmParser ( )

Definition at line 757 of file COFFAsmParser.cpp.

◆ createCOFFMasmParser()

MCAsmParserExtension * llvm::createCOFFMasmParser ( )

Definition at line 545 of file COFFMasmParser.cpp.

◆ createComplexDeinterleavingPass()

FunctionPass * llvm::createComplexDeinterleavingPass ( const TargetMachine TM)

This pass implements generation of target-specific intrinsics to support handling of complex number arithmetic.

Definition at line 461 of file ComplexDeinterleavingPass.cpp.

References TM.

◆ createConstantHoistingPass()

Constant false FunctionPass * llvm::createConstantHoistingPass ( )

Definition at line 137 of file ConstantHoisting.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ CreateControlFlowHub()

BasicBlock * llvm::CreateControlFlowHub ( DomTreeUpdater DTU,
SmallVectorImpl< BasicBlock * > &  GuardBlocks,
const SetVector< BasicBlock * > &  Predecessors,
const SetVector< BasicBlock * > &  Successors,
const StringRef  Prefix,
std::optional< unsigned MaxControlFlowBooleans = std::nullopt 
)

Given a set of incoming and outgoing blocks, create a "hub" such that every edge from an incoming block InBB to an outgoing block OutBB is now split into two edges, one from InBB to the hub and another from the hub to OutBB.

The hub consists of a series of guard blocks, one for each outgoing block. Each guard block conditionally branches to the corresponding outgoing block, or the next guard block in the chain. These guard blocks are returned in the argument vector.

Since the control flow edges from InBB to OutBB have now been replaced, the function also updates any PHINodes in OutBB. For each such PHINode, the operands corresponding to incoming blocks are moved to a new PHINode in the hub, and the hub is made an operand of the original PHINode.

Input CFG:

               Def
                |
                v
      In1      In2
       |        |
       |        |
       v        v

Foo —> Out1 Out2 | v Use

Create hub: Incoming = {In1, In2}, Outgoing = {Out1, Out2}

        Def
         |
         v

In1 In2 Foo | Hub | | | + - - | - - + | | ' v ' V +---—> Guard1 --—> Out1 ' | ' ' v ' ' Guard2 --—> Out2 ' ' |

  • - - - - - + | v Use

Limitations:

  1. This assumes that all terminators in the CFG are direct branches (the "br" instruction). The presence of any other control flow such as indirectbr, switch or callbr will cause an assert.
  2. The updates to the PHINodes are not sufficient to restore SSA form. Consider a definition Def, its use Use, incoming block In2 and outgoing block Out2, such that: a. In2 is reachable from D or contains D. b. U is reachable from Out2 or is contained in Out2. c. U is not a PHINode if U is contained in Out2.

    Clearly, Def dominates Out2 since the program is valid SSA. But when the hub is introduced, there is a new path through the hub along which Use is reachable from entry without passing through Def, and SSA is no longer valid. To fix this, we need to look at all the blocks post-dominated by the hub on the one hand, and dominated by Out2 on the other. This is left for the caller to accomplish, since each specific use of this function may have additional information which simplifies this fixup. For example, see restoreSSA() in the UnifyLoopExits pass.

Referenced by createNaturalLoopInternal(), and unifyLoopExits().

◆ createCopyConstrainDAGMutation()

std::unique_ptr< ScheduleDAGMutation > llvm::createCopyConstrainDAGMutation ( const TargetInstrInfo TII,
const TargetRegisterInfo TRI 
)

Definition at line 2053 of file MachineScheduler.cpp.

References TII, and TRI.

Referenced by createGenericSchedLive(), createPPCMachineScheduler(), and createVLIWMachineSched().

◆ createCriticalAntiDepBreaker()

AntiDepBreaker * llvm::createCriticalAntiDepBreaker ( MachineFunction MFi,
const RegisterClassInfo RCI 
)

Definition at line 695 of file CriticalAntiDepBreaker.cpp.

Referenced by INITIALIZE_PASS().

◆ createCSKYAsmBackend()

MCAsmBackend * llvm::createCSKYAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

Definition at line 354 of file CSKYAsmBackend.cpp.

References Options.

Referenced by LLVMInitializeCSKYTargetMC().

◆ createCSKYConstantIslandPass()

FunctionPass * llvm::createCSKYConstantIslandPass ( )

Returns a pass that converts branches to long branches.

Definition at line 1366 of file CSKYConstantIslandPass.cpp.

◆ createCSKYELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createCSKYELFObjectWriter ( )

◆ createCSKYISelDag()

FunctionPass * llvm::createCSKYISelDag ( CSKYTargetMachine TM,
CodeGenOptLevel  OptLevel 
)

Definition at line 402 of file CSKYISelDAGToDAG.cpp.

References TM.

◆ createCSKYMCCodeEmitter()

MCCodeEmitter * llvm::createCSKYMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 320 of file CSKYMCCodeEmitter.cpp.

Referenced by LLVMInitializeCSKYTargetMC().

◆ createCustomBehaviour()

mca::CustomBehaviour * llvm::createCustomBehaviour ( const MCSubtargetInfo STI,
const mca::SourceMgr SrcMgr,
const MCInstrInfo MCII 
)

◆ createDAGLinearizer()

llvm::ScheduleDAGSDNodes * llvm::createDAGLinearizer ( SelectionDAGISel IS,
CodeGenOptLevel  OptLevel 
)

createDAGLinearizer - This creates a "no-scheduling" scheduler which linearize the DAG using topological order.

Definition at line 811 of file ScheduleDAGFast.cpp.

References llvm::SelectionDAGISel::MF.

Referenced by createDefaultScheduler().

◆ createDarwinAsmParser()

MCAsmParserExtension * llvm::createDarwinAsmParser ( )

Definition at line 1213 of file DarwinAsmParser.cpp.

◆ createDeadArgEliminationPass()

ModulePass * llvm::createDeadArgEliminationPass ( )

createDeadArgEliminationPass - This pass removes arguments from functions which are not used by the body of the function.

◆ createDeadArgHackingPass()

ModulePass * llvm::createDeadArgHackingPass ( )

DeadArgHacking pass - Same as DAE, but delete arguments of external functions as well.

This is definitely not safe, and should only be used by bugpoint.

Definition at line 124 of file DeadArgumentElimination.cpp.

◆ createDeadCodeEliminationPass()

FunctionPass * llvm::createDeadCodeEliminationPass ( )

Definition at line 145 of file DCE.cpp.

◆ createDebugifyMachineModulePass()

Machine Debugify false ModulePass * llvm::createDebugifyMachineModulePass ( )

Creates MIR Debugify pass.

See also
MachineDebugify.cpp

Definition at line 221 of file MachineDebugify.cpp.

Referenced by llvm::TargetPassConfig::addDebugifyPass().

◆ createDefaultPBQPRegisterAllocator()

FunctionPass * llvm::createDefaultPBQPRegisterAllocator ( )

PBQPRegisterAllocation Pass - This pass implements the Partitioned Boolean Quadratic Prograaming (PBQP) based register allocator.

Definition at line 952 of file RegAllocPBQP.cpp.

References createPBQPRegisterAllocator().

◆ createDefaultScheduler()

ScheduleDAGSDNodes * llvm::createDefaultScheduler ( SelectionDAGISel IS,
CodeGenOptLevel  OptLevel 
)

◆ createDefCFA()

MCCFIInstruction llvm::createDefCFA ( const TargetRegisterInfo TRI,
unsigned  FrameReg,
unsigned  Reg,
const StackOffset Offset,
bool  LastAdjustmentWasScalable = true 
)

◆ createDependenceAnalysisWrapperPass()

FunctionPass * llvm::createDependenceAnalysisWrapperPass ( )

createDependenceAnalysisPass - This creates an instance of the DependenceAnalysis wrapper pass.

Definition at line 152 of file DependenceAnalysis.cpp.

◆ createDevelopmentModeAdvisor()

RegAllocEvictionAdvisorAnalysis * llvm::createDevelopmentModeAdvisor ( )

◆ createDevelopmentModePriorityAdvisor()

RegAllocPriorityAdvisorAnalysis * llvm::createDevelopmentModePriorityAdvisor ( )

◆ createDevirtSCCRepeatedPass()

template<typename CGSCCPassT >
DevirtSCCRepeatedPass llvm::createDevirtSCCRepeatedPass ( CGSCCPassT &&  Pass,
int  MaxIterations 
)

A function to deduce a function pass type and wrap it in the templated adaptor.

Definition at line 588 of file CGSCCPassManager.h.

◆ createDomOnlyPrinterWrapperPassPass()

FunctionPass * llvm::createDomOnlyPrinterWrapperPassPass ( )

Definition at line 218 of file DomPrinter.cpp.

◆ createDomOnlyViewerWrapperPassPass()

FunctionPass * llvm::createDomOnlyViewerWrapperPassPass ( )

Definition at line 226 of file DomPrinter.cpp.

◆ createDomPrinterWrapperPassPass()

FunctionPass * llvm::createDomPrinterWrapperPassPass ( )

◆ createDomViewerWrapperPassPass()

FunctionPass * llvm::createDomViewerWrapperPassPass ( )

Definition at line 222 of file DomPrinter.cpp.

◆ createDwarfEHPass()

Prepare DWARF false FunctionPass * llvm::createDwarfEHPass ( CodeGenOptLevel  OptLevel)

createDwarfEHPass - This pass mulches exception handling code into a form adapted to code generation.

Required if using dwarf exception handling.

Definition at line 401 of file DwarfEHPrepare.cpp.

Referenced by llvm::TargetPassConfig::addPassesToHandleExceptions().

◆ createDXContainerGlobalsPass()

dxil DXContainer Global true ModulePass * llvm::createDXContainerGlobalsPass ( )

Pass for generating DXContainer part globals.

Definition at line 114 of file DXContainerGlobals.cpp.

Referenced by llvm::DirectXTargetMachine::addPassesToEmitFile().

◆ createDXContainerObjectWriter()

std::unique_ptr< MCObjectWriter > llvm::createDXContainerObjectWriter ( std::unique_ptr< MCDXContainerTargetWriter MOTW,
raw_pwrite_stream OS 
)

Construct a new DXContainer writer instance.

Parameters
MOTW- The target specific DXContainer writer subclass.
OS- The stream to write to.
Returns
The constructed object writer.

Definition at line 144 of file MCDXContainerWriter.cpp.

References OS.

Referenced by llvm::MCAsmBackend::createObjectWriter().

◆ createDXContainerStreamer()

MCStreamer * llvm::createDXContainerStreamer ( MCContext Ctx,
std::unique_ptr< MCAsmBackend > &&  TAB,
std::unique_ptr< MCObjectWriter > &&  OW,
std::unique_ptr< MCCodeEmitter > &&  CE,
bool  RelaxAll 
)

Definition at line 22 of file MCDXContainerStreamer.cpp.

References Context.

Referenced by llvm::Target::createMCObjectStreamer().

◆ createDXContainerTargetObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createDXContainerTargetObjectWriter ( )

Definition at line 26 of file DirectXContainerObjectWriter.cpp.

◆ createDXILEmbedderPass()

ModulePass * llvm::createDXILEmbedderPass ( )

Create and return a pass that writes the module to a global variable in the module for later emission in the MCStreamer.

Note that this pass is designed for use with the legacy pass manager because it is run in CodeGen only.

Definition at line 109 of file DXILWriterPass.cpp.

Referenced by llvm::DirectXTargetMachine::addPassesToEmitFile().

◆ createDXILIntrinsicExpansionLegacyPass()

DXIL Intrinsic false ModulePass * llvm::createDXILIntrinsicExpansionLegacyPass ( )

Pass to expand intrinsic operations that lack DXIL opCodes.

Definition at line 325 of file DXILIntrinsicExpansion.cpp.

Referenced by DirectXPassConfig::addCodeGenPrepare().

◆ createDXILOpLoweringLegacyPass()

DXIL Op false ModulePass * llvm::createDXILOpLoweringLegacyPass ( )

Pass to lowering LLVM intrinsic call to DXIL op function call.

Definition at line 159 of file DXILOpLowering.cpp.

Referenced by DirectXPassConfig::addCodeGenPrepare().

◆ createDXILPrepareModulePass()

DXIL Prepare false ModulePass * llvm::createDXILPrepareModulePass ( )

Pass to convert modules into DXIL-compatable modules.

Definition at line 187 of file DXILPrepare.cpp.

Referenced by DirectXPassConfig::addCodeGenPrepare().

◆ createDXILPrettyPrinterPass()

ModulePass * llvm::createDXILPrettyPrinterPass ( raw_ostream OS)

Pass to pretty print DXIL metadata.

Definition at line 62 of file DXILPrettyPrinter.cpp.

References OS.

Referenced by llvm::DirectXTargetMachine::addPassesToEmitFile().

◆ createDXILTranslateMetadataPass()

ModulePass * llvm::createDXILTranslateMetadataPass ( )

Pass to emit metadata for DXIL.

Definition at line 65 of file DXILTranslateMetadata.cpp.

Referenced by DirectXPassConfig::addCodeGenPrepare().

◆ createDXILWriterPass()

dxil write Write true ModulePass * llvm::createDXILWriterPass ( raw_ostream Str)

Create and return a pass that writes the module to the specified ostream.

Note that this pass is designed for use with the legacy pass manager.

Definition at line 102 of file DXILWriterPass.cpp.

Referenced by llvm::DirectXTargetMachine::addPassesToEmitFile().

◆ createEarlyCSEPass()

FunctionPass * llvm::createEarlyCSEPass ( bool  UseMemorySSA = false)

◆ createEHContGuardCatchretPass()

FunctionPass * llvm::createEHContGuardCatchretPass ( )

Creates EHContGuard catchret target identification pass.

See also
EHContGuardCatchret.cpp

◆ createELFAsmParser()

MCAsmParserExtension * llvm::createELFAsmParser ( )

Definition at line 940 of file ELFAsmParser.cpp.

◆ createELFDwoObjectWriter()

std::unique_ptr< MCObjectWriter > llvm::createELFDwoObjectWriter ( std::unique_ptr< MCELFObjectTargetWriter MOTW,
raw_pwrite_stream OS,
raw_pwrite_stream DwoOS,
bool  IsLittleEndian 
)

Definition at line 1551 of file ELFObjectWriter.cpp.

References OS.

Referenced by llvm::MCAsmBackend::createDwoObjectWriter().

◆ createELFObjectWriter()

std::unique_ptr< MCObjectWriter > llvm::createELFObjectWriter ( std::unique_ptr< MCELFObjectTargetWriter MOTW,
raw_pwrite_stream OS,
bool  IsLittleEndian 
)

Construct a new ELF writer instance.

Parameters
MOTW- The target specific ELF writer subclass.
OS- The stream to write to.
Returns
The constructed object writer.

Definition at line 1544 of file ELFObjectWriter.cpp.

References OS.

Referenced by llvm::MCAsmBackend::createObjectWriter().

◆ createELFStreamer()

MCStreamer * llvm::createELFStreamer ( MCContext Ctx,
std::unique_ptr< MCAsmBackend > &&  TAB,
std::unique_ptr< MCObjectWriter > &&  OW,
std::unique_ptr< MCCodeEmitter > &&  CE,
bool  RelaxAll 
)

◆ createError()

static Error llvm::createError ( const Twine Err)
inlinestatic

◆ createExpandLargeDivRemPass()

expand large div Expand large div false FunctionPass * llvm::createExpandLargeDivRemPass ( )

Definition at line 181 of file ExpandLargeDivRem.cpp.

Referenced by llvm::TargetPassConfig::addISelPasses().

◆ createExpandLargeFpConvertPass()

expand large fp Expand large fp false FunctionPass * llvm::createExpandLargeFpConvertPass ( )

Definition at line 706 of file ExpandLargeFpConvert.cpp.

Referenced by llvm::TargetPassConfig::addISelPasses().

◆ createExpandMemCmpLegacyPass()

Expand false FunctionPass * llvm::createExpandMemCmpLegacyPass ( )

Definition at line 1023 of file ExpandMemCmp.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ createExpandReductionsPass()

expand Expand reduction false FunctionPass * llvm::createExpandReductionsPass ( )

This pass expands the reduction intrinsics into sequences of shuffles.

Definition at line 180 of file ExpandReductions.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ createExpandVectorPredicationPass()

Expand vector predication false FunctionPass * llvm::createExpandVectorPredicationPass ( )

This pass expands the vector predication intrinsics into unpredicated instructions with selects or just the explicit vector length into the predicate mask.

Definition at line 887 of file ExpandVectorPredication.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ createExternalAAWrapperPass()

ImmutablePass * llvm::createExternalAAWrapperPass ( 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.

The callback provided here will be used each time we prepare an AAResults object, and will receive a reference to the function wrapper pass, the function, and the AAResults object to populate. This should be used when setting up a custom pass pipeline to inject a hook into the AA results.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ createFalkorHWPFFixPass()

FunctionPass * llvm::createFalkorHWPFFixPass ( )

Definition at line 837 of file AArch64FalkorHWPFFix.cpp.

◆ createFalkorMarkStridedAccessesPass()

Falkor HW Prefetch false FunctionPass * llvm::createFalkorMarkStridedAccessesPass ( )

Definition at line 113 of file AArch64FalkorHWPFFix.cpp.

◆ createFastDAGScheduler()

llvm::ScheduleDAGSDNodes * llvm::createFastDAGScheduler ( SelectionDAGISel IS,
CodeGenOptLevel  OptLevel 
)

createFastDAGScheduler - This creates a "fast" scheduler.

Definition at line 806 of file ScheduleDAGFast.cpp.

References llvm::SelectionDAGISel::MF.

Referenced by createDefaultScheduler().

◆ createFastRegisterAllocator() [1/2]

FunctionPass * llvm::createFastRegisterAllocator ( )

FastRegisterAllocation Pass - This pass register allocates as fast as possible.

It is best suited for debug code where live ranges are short.

Definition at line 1774 of file RegAllocFast.cpp.

Referenced by llvm::TargetPassConfig::addRegAssignAndRewriteFast(), and llvm::TargetPassConfig::createTargetRegisterAllocator().

◆ createFastRegisterAllocator() [2/2]

FunctionPass * llvm::createFastRegisterAllocator ( RegClassFilterFunc  F,
bool  ClearVirtRegs 
)

Definition at line 1776 of file RegAllocFast.cpp.

◆ createFileError() [1/5]

Error llvm::createFileError ( const Twine F,
Error  E 
)
inline

◆ createFileError() [2/5]

Error llvm::createFileError ( const Twine F,
ErrorSuccess   
)
delete

◆ createFileError() [3/5]

Error llvm::createFileError ( const Twine F,
size_t  Line,
Error  E 
)
inline

Concatenate a source file path and/or name with line number and an Error.

The resulting Error is unchecked.

Definition at line 1345 of file Error.h.

◆ createFileError() [4/5]

Error llvm::createFileError ( const Twine F,
size_t  Line,
std::error_code  EC 
)
inline

Concatenate a source file path and/or name with line number and std::error_code to form an Error object.

Definition at line 1357 of file Error.h.

References createFileError(), errorCodeToError(), and F.

◆ createFileError() [5/5]

Error llvm::createFileError ( const Twine F,
std::error_code  EC 
)
inline

Concatenate a source file path and/or name with a std::error_code to form an Error object.

Definition at line 1351 of file Error.h.

References createFileError(), errorCodeToError(), and F.

◆ createFixIrreduciblePass()

FunctionPass * llvm::createFixIrreduciblePass ( )

Definition at line 102 of file FixIrreducible.cpp.

◆ createFlattenCFGPass()

Flatten the false FunctionPass * llvm::createFlattenCFGPass ( )

Definition at line 81 of file FlattenCFGPass.cpp.

Referenced by llvm::AMDGPUPassConfig::addPreISel().

◆ createFreeMachineFunctionPass()

FunctionPass * llvm::createFreeMachineFunctionPass ( )

This pass frees the memory occupied by the MachineFunction.

Definition at line 167 of file MachineModuleInfo.cpp.

Referenced by llvm::LLVMTargetMachine::addPassesToEmitFile(), and llvm::LLVMTargetMachine::addPassesToEmitMC().

◆ createFunctionToLoopPassAdaptor() [1/2]

template<typename LoopNestPassT >
std::enable_if_t<!is_detected< HasRunOnLoopT, LoopNestPassT >::value, FunctionToLoopPassAdaptor > llvm::createFunctionToLoopPassAdaptor ( LoopNestPassT &&  Pass,
bool  UseMemorySSA = false,
bool  UseBlockFrequencyInfo = false,
bool  UseBranchProbabilityInfo = false 
)
inline

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.

Definition at line 497 of file LoopPassManager.h.

References llvm::PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >::addPass().

◆ createFunctionToLoopPassAdaptor() [2/2]

template<typename LoopPassT >
std::enable_if_t< is_detected< HasRunOnLoopT, LoopPassT >::value, FunctionToLoopPassAdaptor > llvm::createFunctionToLoopPassAdaptor ( LoopPassT &&  Pass,
bool  UseMemorySSA = false,
bool  UseBlockFrequencyInfo = false,
bool  UseBranchProbabilityInfo = false 
)
inline

A function to deduce a loop pass type and wrap it in the templated adaptor.

If Pass is a loop pass, the returned adaptor will be in loop mode.

Definition at line 478 of file LoopPassManager.h.

Referenced by llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::addIRPasses(), llvm::PassBuilder::buildFunctionSimplificationPipeline(), llvm::PassBuilder::buildLTODefaultPipeline(), llvm::PassBuilder::buildModuleOptimizationPipeline(), and llvm::PassBuilder::buildO0DefaultPipeline().

◆ createFunctionToLoopPassAdaptor< LoopPassManager >()

template<>
FunctionToLoopPassAdaptor llvm::createFunctionToLoopPassAdaptor< LoopPassManager > ( LoopPassManager &&  LPM,
bool  UseMemorySSA,
bool  UseBlockFrequencyInfo,
bool  UseBranchProbabilityInfo 
)
inline

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.

Definition at line 516 of file LoopPassManager.h.

◆ createGCEmptyBasicBlocksPass()

MachineFunctionPass * llvm::createGCEmptyBasicBlocksPass ( )

createGCEmptyBasicblocksPass - Empty basic blocks (basic blocks without real code) appear as the result of optimization passes removing instructions.

These blocks confuscate profile analysis (e.g., basic block sections) since they will share the address of their fallthrough blocks. This pass garbage-collects such basic blocks.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ createGCLoweringPass()

FunctionPass * llvm::createGCLoweringPass ( )

GCLowering Pass - Used by gc.root to perform its default lowering operations.

◆ createGCNDPPCombinePass()

FunctionPass * llvm::createGCNDPPCombinePass ( )

Definition at line 113 of file GCNDPPCombine.cpp.

◆ createGCNMCRegisterInfo()

MCRegisterInfo * llvm::createGCNMCRegisterInfo ( AMDGPUDwarfFlavour  DwarfFlavour)

Definition at line 71 of file AMDGPUMCTargetDesc.cpp.

References X.

Referenced by llvm::AMDGPUTargetMachine::AMDGPUTargetMachine().

◆ createGCNPreRAOptimizationsPass()

FunctionPass * llvm::createGCNPreRAOptimizationsPass ( )

Definition at line 81 of file GCNPreRAOptimizations.cpp.

◆ createGenericSchedLive()

ScheduleDAGMILive * llvm::createGenericSchedLive ( MachineSchedContext C)

Create the standard converging machine scheduler.

This will be used as the default scheduler if the target does not set a default. Adds default DAG mutations.

This will be used as the default scheduler if the target does not set a default.

Definition at line 3835 of file MachineScheduler.cpp.

References llvm::ScheduleDAGMI::addMutation(), llvm::CallingConv::C, createCopyConstrainDAGMutation(), createMacroFusionDAGMutation(), llvm::TargetSubtargetInfo::getMacroFusions(), llvm::ScheduleDAG::TII, and llvm::ScheduleDAG::TRI.

Referenced by createConvergingSched(), and llvm::AMDGPUPassConfig::createMachineScheduler().

◆ createGenericSchedPostRA()

ScheduleDAGMI * llvm::createGenericSchedPostRA ( MachineSchedContext C)

Create a generic scheduler with no vreg liveness or DAG mutation passes.

Definition at line 4125 of file MachineScheduler.cpp.

References llvm::ScheduleDAGMI::addMutation(), llvm::CallingConv::C, createMacroFusionDAGMutation(), and llvm::TargetSubtargetInfo::getMacroFusions().

◆ createGenericToNVVMLegacyPass()

ModulePass * llvm::createGenericToNVVMLegacyPass ( )

Definition at line 295 of file NVPTXGenericToNVVM.cpp.

◆ createGlobalMergePass()

Pass * llvm::createGlobalMergePass ( const TargetMachine TM,
unsigned  MaximalOffset,
bool  OnlyOptimizeForSize = false,
bool  MergeExternalByDefault = false 
)

GlobalMerge - This pass merges internal (by default) globals into structs to enable reuse of a base pointer by indexed addressing modes.

It can also be configured to focus on size optimizations only.

Definition at line 700 of file GlobalMerge.cpp.

References llvm::cl::BOU_TRUE, llvm::cl::BOU_UNSET, EnableGlobalMergeOnExternal, Offset, and TM.

◆ createGlobalsAAWrapperPass()

globals Globals Alias true ModulePass * llvm::createGlobalsAAWrapperPass ( )

Definition at line 1024 of file GlobalsModRef.cpp.

◆ createGOFFAsmParser()

MCAsmParserExtension * llvm::createGOFFAsmParser ( )

Definition at line 37 of file GOFFAsmParser.cpp.

◆ createGOFFObjectWriter()

std::unique_ptr< MCObjectWriter > llvm::createGOFFObjectWriter ( std::unique_ptr< MCGOFFObjectTargetWriter MOTW,
raw_pwrite_stream OS 
)

Construct a new GOFF writer instance.

Parameters
MOTW- The target-specific GOFF writer subclass.
OS- The stream to write to.
Returns
The constructed object writer.

Definition at line 294 of file GOFFObjectWriter.cpp.

References OS.

Referenced by llvm::MCAsmBackend::createObjectWriter().

◆ createGOFFStreamer()

MCStreamer * llvm::createGOFFStreamer ( MCContext Ctx,
std::unique_ptr< MCAsmBackend > &&  TAB,
std::unique_ptr< MCObjectWriter > &&  OW,
std::unique_ptr< MCCodeEmitter > &&  CE,
bool  RelaxAll 
)

◆ createGraphFilename()

std::string llvm::createGraphFilename ( const Twine Name,
int &  FD 
)

Definition at line 112 of file GraphWriter.cpp.

References llvm::sys::fs::createTemporaryFile(), errs(), N, Name, and replaceIllegalFilenameChars().

Referenced by WriteGraph().

◆ createGreedyRegisterAllocator() [1/2]

FunctionPass * llvm::createGreedyRegisterAllocator ( )

Greedy register allocation pass - This pass implements a global register allocator for optimized builds.

Definition at line 191 of file RegAllocGreedy.cpp.

Referenced by llvm::TargetPassConfig::createTargetRegisterAllocator().

◆ createGreedyRegisterAllocator() [2/2]

FunctionPass * llvm::createGreedyRegisterAllocator ( RegClassFilterFunc  F)

Definition at line 195 of file RegAllocGreedy.cpp.

◆ createGVNPass()

FunctionPass * llvm::createGVNPass ( bool  NoMemDepAnalysis = false)

Create a legacy GVN pass.

This also allows parameterizing whether or not MemDep is enabled.

Definition at line 3339 of file GVN.cpp.

References llvm::GVNPass::gvn::GVNLegacyPass.

Referenced by llvm::AMDGPUPassConfig::addEarlyCSEOrGVNPass().

◆ createHardwareLoopsLegacyPass()

FunctionPass * llvm::createHardwareLoopsLegacyPass ( )

Create Hardware Loop pass.

See also
HardwareLoops.cpp

Definition at line 614 of file HardwareLoops.cpp.

◆ createHexagonAsmBackend()

MCAsmBackend * llvm::createHexagonAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createHexagonBitSimplify()

FunctionPass * llvm::createHexagonBitSimplify ( )

Definition at line 3401 of file HexagonBitSimplify.cpp.

◆ createHexagonBranchRelaxation()

FunctionPass * llvm::createHexagonBranchRelaxation ( )

◆ createHexagonCallFrameInformation()

FunctionPass * llvm::createHexagonCallFrameInformation ( )

◆ createHexagonCFGOptimizer()

FunctionPass * llvm::createHexagonCFGOptimizer ( )

◆ createHexagonCommonGEP()

FunctionPass * llvm::createHexagonCommonGEP ( )

Definition at line 1291 of file HexagonCommonGEP.cpp.

◆ createHexagonConstExtenders()

FunctionPass * llvm::createHexagonConstExtenders ( )

Definition at line 2022 of file HexagonConstExtenders.cpp.

◆ createHexagonConstPropagationPass()

FunctionPass * llvm::createHexagonConstPropagationPass ( )

Definition at line 3184 of file HexagonConstPropagation.cpp.

◆ createHexagonCopyToCombine()

FunctionPass * llvm::createHexagonCopyToCombine ( )

Definition at line 877 of file HexagonCopyToCombine.cpp.

◆ createHexagonEarlyIfConversion()

FunctionPass * llvm::createHexagonEarlyIfConversion ( )

Definition at line 1075 of file HexagonEarlyIfConv.cpp.

◆ createHexagonELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createHexagonELFObjectWriter ( uint8_t  OSABI,
StringRef  CPU 
)

Definition at line 301 of file HexagonELFObjectWriter.cpp.

◆ createHexagonELFStreamer()

MCStreamer * llvm::createHexagonELFStreamer ( Triple const TT,
MCContext Context,
std::unique_ptr< MCAsmBackend MAB,
std::unique_ptr< MCObjectWriter OW,
std::unique_ptr< MCCodeEmitter CE 
)

Definition at line 212 of file HexagonMCELFStreamer.cpp.

References Context.

Referenced by createMCStreamer().

◆ createHexagonExpandCondsets()

FunctionPass * llvm::createHexagonExpandCondsets ( )

Definition at line 1361 of file HexagonExpandCondsets.cpp.

◆ createHexagonFixupHwLoops()

FunctionPass * llvm::createHexagonFixupHwLoops ( )

◆ createHexagonGenExtract()

FunctionPass * llvm::createHexagonGenExtract ( )

Definition at line 268 of file HexagonGenExtract.cpp.

◆ createHexagonGenInsert()

FunctionPass * llvm::createHexagonGenInsert ( )

Definition at line 1600 of file HexagonGenInsert.cpp.

◆ createHexagonGenMemAbsolute()

FunctionPass * llvm::createHexagonGenMemAbsolute ( )

Definition at line 272 of file HexagonGenMemAbsolute.cpp.

◆ createHexagonGenMux()

FunctionPass * llvm::createHexagonGenMux ( )

Definition at line 382 of file HexagonGenMux.cpp.

◆ createHexagonGenPredicate()

FunctionPass * llvm::createHexagonGenPredicate ( )

Definition at line 536 of file HexagonGenPredicate.cpp.

◆ createHexagonHardwareLoops()

FunctionPass * llvm::createHexagonHardwareLoops ( )

Definition at line 376 of file HexagonHardwareLoops.cpp.

◆ createHexagonISelDag()

FunctionPass * llvm::createHexagonISelDag ( HexagonTargetMachine TM,
CodeGenOptLevel  OptLevel 
)

createHexagonISelDag - This pass converts a legalized DAG into a Hexagon-specific DAG, ready for instruction scheduling.

Definition at line 61 of file HexagonISelDAGToDAG.cpp.

References TM.

◆ createHexagonLoopAlign()

FunctionPass * llvm::createHexagonLoopAlign ( )

◆ createHexagonLoopIdiomPass()

Pass * llvm::createHexagonLoopIdiomPass ( )

Definition at line 2452 of file HexagonLoopIdiomRecognition.cpp.

◆ createHexagonLoopRescheduling()

FunctionPass * llvm::createHexagonLoopRescheduling ( )

Definition at line 3397 of file HexagonBitSimplify.cpp.

◆ createHexagonMCCodeEmitter()

MCCodeEmitter * llvm::createHexagonMCCodeEmitter ( const MCInstrInfo MCII,
MCContext MCT 
)

Definition at line 789 of file HexagonMCCodeEmitter.cpp.

Referenced by LLVMInitializeHexagonTargetMC().

◆ createHexagonMCInstrInfo()

llvm::MCInstrInfo * llvm::createHexagonMCInstrInfo ( )

Definition at line 341 of file HexagonMCTargetDesc.cpp.

References X.

Referenced by LLVMInitializeHexagonTargetMC().

◆ createHexagonMCRegisterInfo()

MCRegisterInfo * llvm::createHexagonMCRegisterInfo ( StringRef  TT)

◆ createHexagonNewValueJump()

FunctionPass * llvm::createHexagonNewValueJump ( )

Definition at line 720 of file HexagonNewValueJump.cpp.

◆ createHexagonOptAddrMode()

FunctionPass * llvm::createHexagonOptAddrMode ( )

Definition at line 912 of file HexagonOptAddrMode.cpp.

◆ createHexagonOptimizeSZextends()

FunctionPass * llvm::createHexagonOptimizeSZextends ( )

Definition at line 143 of file HexagonOptimizeSZextends.cpp.

◆ createHexagonPacketizer()

FunctionPass * llvm::createHexagonPacketizer ( bool  Minimal)

Definition at line 1953 of file HexagonVLIWPacketizer.cpp.

◆ createHexagonPeephole()

FunctionPass * llvm::createHexagonPeephole ( )

Definition at line 291 of file HexagonPeephole.cpp.

◆ createHexagonRDFOpt()

FunctionPass * llvm::createHexagonRDFOpt ( )

Definition at line 357 of file HexagonRDFOpt.cpp.

◆ createHexagonSplitConst32AndConst64()

FunctionPass * llvm::createHexagonSplitConst32AndConst64 ( )

Definition at line 109 of file HexagonSplitConst32AndConst64.cpp.

◆ createHexagonSplitDoubleRegs()

FunctionPass * llvm::createHexagonSplitDoubleRegs ( )

Definition at line 1231 of file HexagonSplitDouble.cpp.

◆ createHexagonStoreWidening()

FunctionPass * llvm::createHexagonStoreWidening ( )

Definition at line 604 of file HexagonStoreWidening.cpp.

◆ createHexagonTargetTransformInfoPass()

ImmutablePass * llvm::createHexagonTargetTransformInfoPass ( const HexagonTargetMachine TM)

Creates a Hexagon-specific Target Transformation Info pass.

◆ createHexagonTfrCleanup()

FunctionPass * llvm::createHexagonTfrCleanup ( )

◆ createHexagonVectorCombineLegacyPass()

Hexagon Vector false FunctionPass * llvm::createHexagonVectorCombineLegacyPass ( )

Definition at line 2989 of file HexagonVectorCombine.cpp.

◆ createHexagonVectorLoopCarriedReuseLegacyPass()

Pass * llvm::createHexagonVectorLoopCarriedReuseLegacyPass ( )

Definition at line 665 of file HexagonVectorLoopCarriedReuse.cpp.

◆ createHexagonVectorPrint()

FunctionPass * llvm::createHexagonVectorPrint ( )

◆ createHexagonVExtract()

FunctionPass * llvm::createHexagonVExtract ( )

Definition at line 193 of file HexagonVExtract.cpp.

◆ createHybridListDAGScheduler()

ScheduleDAGSDNodes * llvm::createHybridListDAGScheduler ( SelectionDAGISel IS,
CodeGenOptLevel  OptLevel 
)

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.

In high register pressure mode it schedules to reduce register pressure.

Definition at line 3173 of file ScheduleDAGRRList.cpp.

References llvm::TargetSubtargetInfo::getInstrInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), llvm::SelectionDAGISel::MF, TII, llvm::SelectionDAGISel::TLI, and TRI.

Referenced by createDefaultScheduler().

◆ createIfConverter()

FunctionPass * llvm::createIfConverter ( std::function< bool(const MachineFunction &)>  Ftor)

Definition at line 2357 of file IfConversion.cpp.

◆ createIGroupLPDAGMutation()

std::unique_ptr< ScheduleDAGMutation > llvm::createIGroupLPDAGMutation ( AMDGPU::SchedulingPhase  Phase)

Phase specifes whether or not this is a reentry into the IGroupLPDAGMutation.

Since there may be multiple scheduling passes on the same scheduling region (e.g. pre and post-RA scheduling / multiple scheduling "phases"), we can reenter this mutation framework more than once for a given region.

Definition at line 2699 of file AMDGPUIGroupLP.cpp.

References Phase.

Referenced by createGCNMaxILPMachineScheduler(), createGCNMaxOccupancyMachineScheduler(), llvm::GCNSchedStage::initGCNRegion(), llvm::UnclusteredHighRPStage::initGCNSchedStage(), and llvm::GCNPostScheduleDAGMILive::schedule().

◆ createILPListDAGScheduler()

ScheduleDAGSDNodes * llvm::createILPListDAGScheduler ( SelectionDAGISel IS,
CodeGenOptLevel  OptLevel 
)

createILPListDAGScheduler - This creates a bottom up register pressure aware list scheduler that tries to increase instruction level parallelism in low register pressure mode.

In high register pressure mode it schedules to reduce register pressure.

Definition at line 3188 of file ScheduleDAGRRList.cpp.

References llvm::TargetSubtargetInfo::getInstrInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), llvm::SelectionDAGISel::MF, TII, llvm::SelectionDAGISel::TLI, and TRI.

Referenced by createDefaultScheduler().

◆ createImmutableModuleSummaryIndexWrapperPass()

ImmutablePass * llvm::createImmutableModuleSummaryIndexWrapperPass ( const ModuleSummaryIndex Index)

Definition at line 1158 of file ModuleSummaryAnalysis.cpp.

Referenced by codegen().

◆ createIndirectBrExpandPass()

Expand indirectbr false FunctionPass * llvm::createIndirectBrExpandPass ( )

Definition at line 98 of file IndirectBrExpandPass.cpp.

◆ createInferAddressSpacesPass()

FunctionPass * llvm::createInferAddressSpacesPass ( unsigned  AddressSpace = ~0u)

Definition at line 1350 of file InferAddressSpaces.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ CreateInfoOutputFile()

std::unique_ptr< raw_fd_ostream > llvm::CreateInfoOutputFile ( )

Return a file stream to print our output on.

Definition at line 96 of file Timer.cpp.

References errs(), getLibSupportInfoOutputFilename(), llvm::sys::fs::OF_Append, llvm::sys::fs::OF_TextWithCRLF, and OutputFilename.

Referenced by llvm::TimePassesHandler::print(), and PrintStatistics().

◆ createInlineSpiller()

Spiller * llvm::createInlineSpiller ( MachineFunctionPass Pass,
MachineFunction MF,
VirtRegMap VRM,
VirtRegAuxInfo VRAI 
)

Create and return a spiller that will insert spill code directly instead of deferring though VirtRegMap.

Definition at line 235 of file InlineSpiller.cpp.

Referenced by llvm::RAGreedy::runOnMachineFunction().

◆ createInstrPostProcess()

mca::InstrPostProcess * llvm::createInstrPostProcess ( const MCSubtargetInfo STI,
const MCInstrInfo MCII 
)

◆ createInstructionCombiningPass()

FunctionPass * llvm::createInstructionCombiningPass ( )

Definition at line 5429 of file InstructionCombining.cpp.

◆ createInstrumentManager()

mca::InstrumentManager * llvm::createInstrumentManager ( const MCSubtargetInfo STI,
const MCInstrInfo MCII 
)

◆ createInstSimplifyLegacyPass()

Remove redundant false FunctionPass * llvm::createInstSimplifyLegacyPass ( )

Definition at line 119 of file InstSimplifyPass.cpp.

◆ createInterleavedAccessPass()

Lower interleaved memory accesses to target specific false FunctionPass * llvm::createInterleavedAccessPass ( )

InterleavedAccess Pass - This pass identifies and matches interleaved memory accesses to target specific intrinsics.

Definition at line 199 of file InterleavedAccessPass.cpp.

◆ createInterleavedLoadCombinePass()

Combine interleaved loads into wide loads and shufflevector false FunctionPass * llvm::createInterleavedLoadCombinePass ( )

InterleavedLoadCombines Pass - This pass identifies interleaved loads and combines them into wide loads detectable by InterleavedAccessPass.

Definition at line 1366 of file InterleavedLoadCombinePass.cpp.

References P.

◆ createInterleaveMask()

llvm::SmallVector< int, 16 > llvm::createInterleaveMask ( unsigned  VF,
unsigned  NumVecs 
)

Create an interleave shuffle mask.

This function creates a shuffle mask for interleaving NumVecs vectors of vectorization factor VF into a single wide vector. The mask is of the form:

<0, VF, VF * 2, ..., VF * (NumVecs - 1), 1, VF + 1, VF * 2 + 1, ...>

For example, the mask for VF = 4 and NumVecs = 2 is:

<0, 4, 1, 5, 2, 6, 3, 7>.

Definition at line 861 of file VectorUtils.cpp.

Referenced by llvm::RISCVTTIImpl::getInterleavedMemoryOpCost(), and interleaveVectors().

◆ createIVUsersPass()

iv Induction Variable true Pass * llvm::createIVUsersPass ( )

Definition at line 51 of file IVUsers.cpp.

◆ createJMCInstrumenterPass()

ModulePass * llvm::createJMCInstrumenterPass ( )

JMC instrument pass.

◆ createKCFIPass()

FunctionPass * llvm::createKCFIPass ( )

Lowers KCFI operand bundles for indirect calls.

Definition at line 61 of file KCFI.cpp.

◆ createLanaiAsmBackend()

MCAsmBackend * llvm::createLanaiAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createLanaiDelaySlotFillerPass()

FunctionPass * llvm::createLanaiDelaySlotFillerPass ( const LanaiTargetMachine TM)

Definition at line 84 of file LanaiDelaySlotFiller.cpp.

◆ createLanaiELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createLanaiELFObjectWriter ( uint8_t  OSABI)

Definition at line 91 of file LanaiELFObjectWriter.cpp.

◆ createLanaiISelDag()

FunctionPass * llvm::createLanaiISelDag ( LanaiTargetMachine TM)

Definition at line 368 of file LanaiISelDAGToDAG.cpp.

References TM.

◆ createLanaiMCCodeEmitter()

llvm::MCCodeEmitter * llvm::createLanaiMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 306 of file LanaiMCCodeEmitter.cpp.

Referenced by LLVMInitializeLanaiTargetMC().

◆ createLanaiMemAluCombinerPass()

FunctionPass * llvm::createLanaiMemAluCombinerPass ( )

Definition at line 420 of file LanaiMemAluCombiner.cpp.

◆ createLanaiSetflagAluCombinerPass()

FunctionPass * llvm::createLanaiSetflagAluCombinerPass ( )

◆ createLaneMaskReg()

Register llvm::createLaneMaskReg ( MachineRegisterInfo MRI,
MachineRegisterInfo::VRegAttrs  LaneMaskRegAttrs 
)

Definition at line 416 of file SILowerI1Copies.cpp.

References MRI.

Referenced by insertUndefLaneMask(), and llvm::PhiLoweringHelper::lowerPhis().

◆ createLazyValueInfoPass()

FunctionPass * llvm::createLazyValueInfoPass ( )

createLazyValueInfoPass - This creates an instance of the LazyValueInfo pass.

Definition at line 63 of file LazyValueInfo.cpp.

◆ createLCSSAPass()

Loop Closed SSA Form false Pass * llvm::createLCSSAPass ( )

Definition at line 506 of file LCSSA.cpp.

◆ createLibcall() [1/2]

LegalizerHelper::LegalizeResult llvm::createLibcall ( MachineIRBuilder MIRBuilder,
const char Name,
const CallLowering::ArgInfo Result,
ArrayRef< CallLowering::ArgInfo Args,
CallingConv::ID  CC,
LostDebugLocObserver LocObserver,
MachineInstr MI = nullptr 
)

◆ createLibcall() [2/2]

LegalizerHelper::LegalizeResult llvm::createLibcall ( MachineIRBuilder MIRBuilder,
RTLIB::Libcall  Libcall,
const CallLowering::ArgInfo Result,
ArrayRef< CallLowering::ArgInfo Args,
LostDebugLocObserver LocObserver,
MachineInstr MI = nullptr 
)

◆ createLICMPass()

Loop Invariant Code false Pass * llvm::createLICMPass ( )

Definition at line 379 of file LICM.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses().

◆ createLoadClusterDAGMutation()

std::unique_ptr< ScheduleDAGMutation > llvm::createLoadClusterDAGMutation ( 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.

Definition at line 1824 of file MachineScheduler.cpp.

References EnableMemOpCluster, TII, and TRI.

Referenced by createGCNMaxOccupancyMachineScheduler(), createIterativeGCNMaxOccupancyMachineScheduler(), createIterativeILPMachineScheduler(), and llvm::AMDGPUPassConfig::createMachineScheduler().

◆ createLoadStoreVectorizerPass()

Pass * llvm::createLoadStoreVectorizerPass ( )

Create a legacy pass manager instance of the LoadStoreVectorizer pass.

Referenced by llvm::AMDGPUPassConfig::addCodeGenPrepare().

◆ createLoongArchAsmBackend()

MCAsmBackend * llvm::createLoongArchAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createLoongArchELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createLoongArchELFObjectWriter ( uint8_t  OSABI,
bool  Is64Bit,
bool  Relax 
)

◆ createLoongArchELFStreamer()

MCELFStreamer * llvm::createLoongArchELFStreamer ( MCContext C,
std::unique_ptr< MCAsmBackend MAB,
std::unique_ptr< MCObjectWriter MOW,
std::unique_ptr< MCCodeEmitter MCE,
bool  RelaxAll 
)

Definition at line 82 of file LoongArchELFStreamer.cpp.

References llvm::CallingConv::C.

Referenced by LLVMInitializeLoongArchTargetMC().

◆ createLoongArchExpandAtomicPseudoPass()

FunctionPass * llvm::createLoongArchExpandAtomicPseudoPass ( )

Referenced by INITIALIZE_PASS().

◆ createLoongArchExpandPseudoPass()

FunctionPass * llvm::createLoongArchExpandPseudoPass ( )

Definition at line 649 of file LoongArchExpandPseudoInsts.cpp.

◆ createLoongArchISelDag()

FunctionPass * llvm::createLoongArchISelDag ( LoongArchTargetMachine TM)

Definition at line 416 of file LoongArchISelDAGToDAG.cpp.

References TM.

◆ createLoongArchMCCodeEmitter()

MCCodeEmitter * llvm::createLoongArchMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 352 of file LoongArchMCCodeEmitter.cpp.

Referenced by LLVMInitializeLoongArchTargetMC().

◆ createLoongArchPreRAExpandPseudoPass()

FunctionPass * llvm::createLoongArchPreRAExpandPseudoPass ( )

Definition at line 646 of file LoongArchExpandPseudoInsts.cpp.

◆ createLoopDataPrefetchPass()

loop data Loop Data false FunctionPass * llvm::createLoopDataPrefetchPass ( )

◆ createLoopExtractorPass()

Pass * llvm::createLoopExtractorPass ( )

createLoopExtractorPass - This pass extracts all natural loops from the program into a function if it can.

◆ createLoopSimplifyPass()

Pass * llvm::createLoopSimplifyPass ( )

Definition at line 790 of file LoopSimplify.cpp.

◆ createLoopStrengthReducePass()

loop Loop Strength false Pass * llvm::createLoopStrengthReducePass ( )

Definition at line 7146 of file LoopStrengthReduce.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ createLoopUnrollPass()

Pass * llvm::createLoopUnrollPass ( 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 
)

Definition at line 1460 of file LoopUnrollPass.cpp.

References Runtime.

◆ createLowerAggrCopies()

FunctionPass * llvm::createLowerAggrCopies ( )

◆ createLowerAtomicPass()

Pass * llvm::createLowerAtomicPass ( )

◆ createLowerConstantIntrinsicsPass()

lower constant Lower constant false FunctionPass * llvm::createLowerConstantIntrinsicsPass ( )

Definition at line 207 of file LowerConstantIntrinsics.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ createLowerEmuTLSPass()

ModulePass * llvm::createLowerEmuTLSPass ( )

LowerEmuTLS - This pass generates __emutls_[vt].xyz variables for all TLS variables for the emulated TLS model.

Referenced by llvm::TargetPassConfig::addISelPasses().

◆ createLowerGlobalDtorsLegacyPass()

ModulePass * llvm::createLowerGlobalDtorsLegacyPass ( )

◆ createLowerInvokePass()

FunctionPass * llvm::createLowerInvokePass ( )

Definition at line 85 of file LowerInvoke.cpp.

Referenced by llvm::TargetPassConfig::addPassesToHandleExceptions().

◆ createLowerSwitchPass()

Lower SwitchInst s to false FunctionPass * llvm::createLowerSwitchPass ( )

Definition at line 594 of file LowerSwitch.cpp.

Referenced by llvm::AMDGPUPassConfig::addCodeGenPrepare().

◆ createLowerWWMCopiesPass()

FunctionPass * llvm::createLowerWWMCopiesPass ( )

◆ createLVLGenPass()

FunctionPass * llvm::createLVLGenPass ( )

Definition at line 38 of file LVLGen.cpp.

◆ createM68kAsmBackend()

MCAsmBackend * llvm::createM68kAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createM68kCollapseMOVEMPass()

FunctionPass * llvm::createM68kCollapseMOVEMPass ( )

Finds sequential MOVEM instruction and collapse them into a single one.

Returns an instance of the pseudo instruction expansion pass.

This pass has to be run after all pseudo expansions and prologue/epilogue emission so that all possible MOVEM are already in place.

Definition at line 306 of file M68kCollapseMOVEMPass.cpp.

◆ createM68kELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createM68kELFObjectWriter ( uint8_t  OSABI)

Construct an M68k ELF object writer.

Definition at line 169 of file M68kELFObjectWriter.cpp.

◆ createM68kExpandPseudoPass()

FunctionPass * llvm::createM68kExpandPseudoPass ( )

Return a Machine IR pass that expands M68k-specific pseudo instructions into a sequence of actual instructions.

Returns an instance of the pseudo instruction expansion pass.

This pass must run after prologue/epilogue insertion and before lowering the MachineInstr to MC.

Definition at line 326 of file M68kExpandPseudo.cpp.

◆ createM68kGlobalBaseRegPass()

FunctionPass * llvm::createM68kGlobalBaseRegPass ( )

This pass initializes a global base register for PIC on M68k.

Definition at line 869 of file M68kInstrInfo.cpp.

◆ createM68kInstructionSelector()

InstructionSelector * llvm::createM68kInstructionSelector ( const M68kTargetMachine TM,
const M68kSubtarget Subtarget,
const M68kRegisterBankInfo RBI 
)

Definition at line 85 of file M68kInstructionSelector.cpp.

References TM.

Referenced by llvm::M68kSubtarget::M68kSubtarget().

◆ createM68kISelDag()

FunctionPass * llvm::createM68kISelDag ( M68kTargetMachine TM)

This pass converts a legalized DAG into a M68k-specific DAG, ready for instruction scheduling.

Definition at line 359 of file M68kISelDAGToDAG.cpp.

References TM.

◆ createM68kMCCodeEmitter()

MCCodeEmitter * llvm::createM68kMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 250 of file M68kMCCodeEmitter.cpp.

Referenced by LLVMInitializeM68kTargetMC().

◆ createMachineCopyPropagationPass()

MachineFunctionPass * llvm::createMachineCopyPropagationPass ( bool  UseCopyInstr = false)

Definition at line 1487 of file MachineCopyPropagation.cpp.

◆ createMachineFunctionPrinterPass()

MachineFunctionPass * llvm::createMachineFunctionPrinterPass ( raw_ostream OS,
const std::string &  Banner = "" 
)

MachineFunctionPrinter pass - This pass prints out the machine function to the given stream as a debugging tool.

Referenced by llvm::TargetPassConfig::addPrintPass(), and INITIALIZE_PASS().

◆ createMachineFunctionSplitterPass()

MachineFunctionPass * llvm::createMachineFunctionSplitterPass ( )

createMachineFunctionSplitterPass - This pass splits machine functions using profile information.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ createMachineOutlinerPass()

ModulePass * llvm::createMachineOutlinerPass ( bool  RunOnAllFunctions = true)

This pass performs outlining on machine instructions directly before printing assembly.

Definition at line 506 of file MachineOutliner.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ createMachineRegionInfoPass()

FunctionPass * llvm::createMachineRegionInfoPass ( )

Definition at line 145 of file MachineRegionInfo.cpp.

◆ createMachineVerifierPass()

FunctionPass * llvm::createMachineVerifierPass ( const std::string &  Banner)

createMachineVerifierPass - This pass verifies cenerated machine code instructions for correctness.

Referenced by llvm::TargetPassConfig::addVerifyPass().

◆ createMachObjectWriter()

std::unique_ptr< MCObjectWriter > llvm::createMachObjectWriter ( std::unique_ptr< MCMachObjectTargetWriter MOTW,
raw_pwrite_stream OS,
bool  IsLittleEndian 
)

Construct a new Mach-O writer instance.

This routine takes ownership of the target writer subclass.

Parameters
MOTW- The target specific Mach-O writer subclass.
OS- The stream to write to.
Returns
The constructed object writer.

Definition at line 1086 of file MachObjectWriter.cpp.

References OS.

Referenced by llvm::MCAsmBackend::createObjectWriter().

◆ createMachOStreamer()

MCStreamer * llvm::createMachOStreamer ( MCContext Ctx,
std::unique_ptr< MCAsmBackend > &&  TAB,
std::unique_ptr< MCObjectWriter > &&  OW,
std::unique_ptr< MCCodeEmitter > &&  CE,
bool  RelaxAll,
bool  DWARFMustBeAtTheEnd,
bool  LabelSections = false 
)

Definition at line 563 of file MCMachOStreamer.cpp.

References Context.

Referenced by createARMMachOStreamer(), and llvm::Target::createMCObjectStreamer().

◆ createMacroFusionDAGMutation()

std::unique_ptr< ScheduleDAGMutation > llvm::createMacroFusionDAGMutation ( 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.

shouldScheduleAdjacent will be true if any of the provided predicates are true. If BranchOnly is true, only branch instructions with one of their predecessors will be fused.

Definition at line 215 of file MacroFusion.cpp.

References EnableMacroFusion.

Referenced by createAArch64MacroFusionDAGMutation(), createAMDGPUMacroFusionDAGMutation(), createARMMacroFusionDAGMutation(), createGenericSchedLive(), createGenericSchedPostRA(), createPowerPCMacroFusionDAGMutation(), createX86MacroFusionDAGMutation(), and llvm::RISCVSubtarget::getPostRAMutations().

◆ createMCAsmParser()

MCAsmParser * llvm::createMCAsmParser ( SourceMgr SM,
MCContext C,
MCStreamer Out,
const MCAsmInfo MAI,
unsigned  CB = 0 
)

Create an MCAsmParser instance for parsing assembly similar to gas syntax.

Create an MCAsmParser instance.

Definition at line 6458 of file AsmParser.cpp.

References llvm::CallingConv::C.

Referenced by initializeRecordStreamer().

◆ createMCMasmParser()

MCAsmParser * llvm::createMCMasmParser ( SourceMgr SM,
MCContext C,
MCStreamer Out,
const MCAsmInfo MAI,
struct tm  TM,
unsigned  CB = 0 
)

Create an MCAsmParser instance for parsing Microsoft MASM-style assembly.

Create an MCAsmParser instance.

Definition at line 7689 of file MasmParser.cpp.

References llvm::CallingConv::C, and TM.

◆ createMCRelocationInfo()

MCRelocationInfo * llvm::createMCRelocationInfo ( const Triple TT,
MCContext Ctx 
)

◆ createMCSymbolizer()

MCSymbolizer * llvm::createMCSymbolizer ( const Triple TT,
LLVMOpInfoCallback  GetOpInfo,
LLVMSymbolLookupCallback  SymbolLookUp,
void *  DisInfo,
MCContext Ctx,
std::unique_ptr< MCRelocationInfo > &&  RelInfo 
)

Definition at line 186 of file MCExternalSymbolizer.cpp.

References assert().

Referenced by llvm::Target::createMCSymbolizer().

◆ createMemCpyLoopKnownSize()

void llvm::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 
)

◆ createMemCpyLoopUnknownSize()

void llvm::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.

Loop will be insterted at InsertBefore.

Referenced by expandAtomicMemCpyAsLoop(), expandMemCpyAsLoop(), and expandMemMoveAsLoop().

◆ createMemLibcall()

LegalizerHelper::LegalizeResult llvm::createMemLibcall ( MachineIRBuilder MIRBuilder,
MachineRegisterInfo MRI,
MachineInstr MI,
LostDebugLocObserver LocObserver 
)

◆ createMergeICmpsLegacyPass()

Merge contiguous icmps into a false Pass * llvm::createMergeICmpsLegacyPass ( )

Definition at line 913 of file MergeICmps.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ createMicroMipsSizeReducePass()

FunctionPass * llvm::createMicroMipsSizeReducePass ( )

Returns an instance of the MicroMips size reduction pass.

Definition at line 795 of file MicroMipsSizeReduction.cpp.

◆ createMinMaxOp()

Value * llvm::createMinMaxOp ( IRBuilderBase Builder,
RecurKind  RK,
Value Left,
Value Right 
)

Returns a Min/Max operation corresponding to MinMaxRecurrenceKind.

The Builder's fast-math-flags must be set to propagate the expected values.

Definition at line 1046 of file LoopUtils.cpp.

References llvm::IRBuilderBase::CreateCmp(), llvm::IRBuilderBase::CreateIntrinsic(), llvm::IRBuilderBase::CreateSelect(), getMinMaxReductionIntrinsicOp(), getMinMaxReductionPredicate(), llvm::Type::isIntOrIntVectorTy(), Left, Right, and Select.

Referenced by llvm::VPReductionRecipe::execute(), getOrderedReduction(), and getShuffleReduction().

◆ createMips16FrameLowering()

const MipsFrameLowering * llvm::createMips16FrameLowering ( const MipsSubtarget ST)

Create MipsFrameLowering objects.

Definition at line 173 of file Mips16FrameLowering.cpp.

Referenced by llvm::MipsFrameLowering::create().

◆ createMips16HardFloatPass()

ModulePass * llvm::createMips16HardFloatPass ( )

Definition at line 531 of file Mips16HardFloat.cpp.

◆ createMips16InstrInfo()

const MipsInstrInfo * llvm::createMips16InstrInfo ( const MipsSubtarget STI)

Create MipsInstrInfo objects.

Definition at line 466 of file Mips16InstrInfo.cpp.

Referenced by llvm::MipsInstrInfo::create().

◆ createMips16ISelDag()

FunctionPass * llvm::createMips16ISelDag ( MipsTargetMachine TM,
CodeGenOptLevel  OptLevel 
)

Definition at line 222 of file Mips16ISelDAGToDAG.cpp.

References TM.

◆ createMips16TargetLowering()

const MipsTargetLowering * llvm::createMips16TargetLowering ( const MipsTargetMachine TM,
const MipsSubtarget STI 
)

Create MipsTargetLowering objects.

Definition at line 153 of file Mips16ISelLowering.cpp.

References TM.

Referenced by llvm::MipsTargetLowering::create().

◆ createMipsAsmBackend()

MCAsmBackend * llvm::createMipsAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createMipsBranchExpansion()

FunctionPass * llvm::createMipsBranchExpansion ( )

◆ createMipsConstantIslandPass()

FunctionPass * llvm::createMipsConstantIslandPass ( )

Returns a pass that converts branches to long branches.

Definition at line 1671 of file MipsConstantIslandPass.cpp.

◆ createMipsDelaySlotFillerPass()

FunctionPass * llvm::createMipsDelaySlotFillerPass ( )

createMipsDelaySlotFillerPass - Returns a pass that fills in delay slots in Mips MachineFunctions

Definition at line 966 of file MipsDelaySlotFiller.cpp.

◆ createMipsELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createMipsELFObjectWriter ( const Triple TT,
bool  IsN32 
)

◆ createMipsELFStreamer()

MCELFStreamer * llvm::createMipsELFStreamer ( MCContext Context,
std::unique_ptr< MCAsmBackend MAB,
std::unique_ptr< MCObjectWriter OW,
std::unique_ptr< MCCodeEmitter Emitter,
bool  RelaxAll 
)

Definition at line 115 of file MipsELFStreamer.cpp.

References Context, and Emitter.

Referenced by createMCStreamer().

◆ createMipsExpandPseudoPass()

FunctionPass * llvm::createMipsExpandPseudoPass ( )

createMipsExpandPseudoPass - returns an instance of the pseudo instruction expansion pass.

Definition at line 952 of file MipsExpandPseudo.cpp.

◆ createMipsInstructionSelector()

InstructionSelector * llvm::createMipsInstructionSelector ( const MipsTargetMachine TM,
MipsSubtarget Subtarget,
MipsRegisterBankInfo RBI 
)

Definition at line 930 of file MipsInstructionSelector.cpp.

References TM.

Referenced by llvm::MipsSubtarget::MipsSubtarget().

◆ createMipsMCCodeEmitterEB()

MCCodeEmitter * llvm::createMipsMCCodeEmitterEB ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 45 of file MipsMCCodeEmitter.cpp.

Referenced by LLVMInitializeMipsTargetMC().

◆ createMipsMCCodeEmitterEL()

MCCodeEmitter * llvm::createMipsMCCodeEmitterEL ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 50 of file MipsMCCodeEmitter.cpp.

Referenced by LLVMInitializeMipsTargetMC().

◆ createMipsModuleISelDagPass()

llvm::FunctionPass * llvm::createMipsModuleISelDagPass ( )

Definition at line 55 of file MipsModuleISelDAGToDAG.cpp.

◆ createMipsMulMulBugPass()

FunctionPass * llvm::createMipsMulMulBugPass ( )

Definition at line 136 of file MipsMulMulBugPass.cpp.

◆ createMipsNaClELFStreamer()

MCELFStreamer * llvm::createMipsNaClELFStreamer ( MCContext Context,
std::unique_ptr< MCAsmBackend TAB,
std::unique_ptr< MCObjectWriter OW,
std::unique_ptr< MCCodeEmitter Emitter,
bool  RelaxAll 
)

Definition at line 262 of file MipsNaClELFStreamer.cpp.

References Context, Emitter, and MIPS_NACL_BUNDLE_ALIGN.

Referenced by createMCStreamer().

◆ createMipsOptimizePICCallPass()

FunctionPass * llvm::createMipsOptimizePICCallPass ( )

Return an OptimizeCall object.

Definition at line 317 of file MipsOptimizePICCall.cpp.

◆ createMipsOs16Pass()

ModulePass * llvm::createMipsOs16Pass ( )

Definition at line 160 of file MipsOs16.cpp.

◆ createMipsPostLegalizeCombiner()

FunctionPass * llvm::createMipsPostLegalizeCombiner ( bool  IsOptNone)

Definition at line 161 of file MipsPostLegalizerCombiner.cpp.

◆ createMipsPreLegalizeCombiner()

FunctionPass * llvm::createMipsPreLegalizeCombiner ( )

Definition at line 146 of file MipsPreLegalizerCombiner.cpp.

◆ createMipsSEFrameLowering()

const MipsFrameLowering * llvm::createMipsSEFrameLowering ( const MipsSubtarget ST)

Definition at line 919 of file MipsSEFrameLowering.cpp.

Referenced by llvm::MipsFrameLowering::create().

◆ createMipsSEInstrInfo()

const MipsInstrInfo * llvm::createMipsSEInstrInfo ( const MipsSubtarget STI)

Definition at line 883 of file MipsSEInstrInfo.cpp.

Referenced by llvm::MipsInstrInfo::create().

◆ createMipsSEISelDag()

FunctionPass * llvm::createMipsSEISelDag ( MipsTargetMachine TM,
CodeGenOptLevel  OptLevel 
)

◆ createMipsSETargetLowering()

const MipsTargetLowering * llvm::createMipsSETargetLowering ( const MipsTargetMachine TM,
const MipsSubtarget STI 
)

Definition at line 300 of file MipsSEISelLowering.cpp.

References TM.

Referenced by llvm::MipsTargetLowering::create().

◆ createMIRAddFSDiscriminatorsPass()

FunctionPass * llvm::createMIRAddFSDiscriminatorsPass ( sampleprof::FSDiscriminatorPass  P)

Add Flow Sensitive Discriminators.

PassNum specifies the sequence number of this pass (starting from 1).

Referenced by llvm::TargetPassConfig::addBlockPlacement(), and llvm::TargetPassConfig::addMachinePasses().

◆ createMIRParser()

std::unique_ptr< MIRParser > llvm::createMIRParser ( std::unique_ptr< MemoryBuffer Contents,
LLVMContext Context,
std::function< void(Function &)>  ProcessIRFunction = nullptr 
)

This function is another interface to the MIR serialization format parser.

It returns a MIR parser that works with the given memory buffer and that can parse the embedded LLVM IR module and initialize the machine functions by parsing the machine function's state.

Parameters
Contents- The MemoryBuffer containing the machine level IR.
Context- Context which will be used for the parsed LLVM IR module.

Definition at line 1118 of file MIRParser.cpp.

References Context, llvm::LLVMContext::diagnose(), llvm::SourceMgr::DK_Error, DS_Error, and llvm::LLVMContext::shouldDiscardValueNames().

Referenced by createMIRParserFromFile().

◆ createMIRParserFromFile()

std::unique_ptr< MIRParser > llvm::createMIRParserFromFile ( StringRef  Filename,
SMDiagnostic Error,
LLVMContext Context,
std::function< void(Function &)>  ProcessIRFunction = nullptr 
)

This function is the main interface to the MIR serialization format parser.

It reads in a MIR file and returns a MIR parser that can parse the embedded LLVM IR module and initialize the machine functions by parsing the machine function's state.

Parameters
Filename- The name of the file to parse.
Error- Error result info.
Context- Context which will be used for the parsed LLVM IR module.
ProcessIRFunction- function to run on every IR function or stub loaded from the MIR file.

Definition at line 1104 of file MIRParser.cpp.

References Context, createMIRParser(), llvm::SourceMgr::DK_Error, and llvm::MemoryBuffer::getFileOrSTDIN().

◆ createMIRProfileLoaderPass()

FunctionPass * llvm::createMIRProfileLoaderPass ( std::string  File,
std::string  RemappingFile,
sampleprof::FSDiscriminatorPass  P,
IntrusiveRefCntPtr< vfs::FileSystem FS 
)

Read Flow Sensitive Profile.

Definition at line 83 of file MIRSampleProfile.cpp.

References P.

Referenced by llvm::TargetPassConfig::addBlockPlacement(), and llvm::TargetPassConfig::addMachinePasses().

◆ createMLxExpansionPass()

FunctionPass * llvm::createMLxExpansionPass ( )

Definition at line 390 of file MLxExpansionPass.cpp.

◆ createModuleSummaryIndexWrapperPass()

module summary Module Summary true ModulePass * llvm::createModuleSummaryIndexWrapperPass ( )

Definition at line 1103 of file ModuleSummaryAnalysis.cpp.

◆ createModuleToFunctionPassAdaptor()

template<typename FunctionPassT >
ModuleToFunctionPassAdaptor llvm::createModuleToFunctionPassAdaptor ( FunctionPassT &&  Pass,
bool  EagerlyInvalidate = false 
)

◆ createModuleToMachineFunctionPassAdaptor()

template<typename MachineFunctionPassT >
ModuleToMachineFunctionPassAdaptor llvm::createModuleToMachineFunctionPassAdaptor ( MachineFunctionPassT &&  Pass)

◆ createModuleToPostOrderCGSCCPassAdaptor()

template<typename CGSCCPassT >
ModuleToPostOrderCGSCCPassAdaptor llvm::createModuleToPostOrderCGSCCPassAdaptor ( CGSCCPassT &&  Pass)

A function to deduce a function pass type and wrap it in the templated adaptor.

Definition at line 373 of file CGSCCPassManager.h.

Referenced by llvm::PassBuilder::buildLTODefaultPipeline(), llvm::PassBuilder::buildModuleInlinerPipeline(), and llvm::PassBuilder::buildO0DefaultPipeline().

◆ createMSP430BranchSelectionPass()

FunctionPass * llvm::createMSP430BranchSelectionPass ( )

Returns an instance of the Branch Selection Pass.

Definition at line 255 of file MSP430BranchSelector.cpp.

◆ createMSP430ELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createMSP430ELFObjectWriter ( uint8_t  OSABI)

Definition at line 55 of file MSP430ELFObjectWriter.cpp.

◆ createMSP430ISelDag()

FunctionPass * llvm::createMSP430ISelDag ( MSP430TargetMachine TM,
CodeGenOptLevel  OptLevel 
)

createMSP430ISelDag - This pass converts a legalized DAG into a MSP430-specific DAG, ready for instruction scheduling.

Definition at line 131 of file MSP430ISelDAGToDAG.cpp.

References TM.

◆ createMSP430MCAsmBackend()

MCAsmBackend * llvm::createMSP430MCAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

Definition at line 166 of file MSP430AsmBackend.cpp.

References llvm::ELF::ELFOSABI_STANDALONE.

Referenced by LLVMInitializeMSP430TargetMC().

◆ createMSP430MCCodeEmitter()

MCCodeEmitter * llvm::createMSP430MCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Creates a machine code emitter for MSP430.

Definition at line 204 of file MSP430MCCodeEmitter.cpp.

Referenced by LLVMInitializeMSP430TargetMC().

◆ createMSP430ObjectTargetStreamer()

MCTargetStreamer * llvm::createMSP430ObjectTargetStreamer ( MCStreamer S,
const MCSubtargetInfo STI 
)

◆ createMVEGatherScatterLoweringPass()

Pass * llvm::createMVEGatherScatterLoweringPass ( )

◆ createMVELaneInterleavingPass()

Pass * llvm::createMVELaneInterleavingPass ( )

◆ createMVETailPredicationPass()

Pass * llvm::createMVETailPredicationPass ( )

Definition at line 455 of file MVETailPredication.cpp.

◆ createMVETPAndVPTOptimisationsPass()

FunctionPass * llvm::createMVETPAndVPTOptimisationsPass ( )

createMVETPAndVPTOptimisationsPass

Definition at line 1090 of file MVETPAndVPTOptimisationsPass.cpp.

◆ createMVEVPTBlockPass()

FunctionPass * llvm::createMVEVPTBlockPass ( )

createMVEVPTBlock - Returns an instance of the MVE VPT block insertion pass.

Definition at line 335 of file MVEVPTBlockPass.cpp.

◆ createNaryReassociatePass()

nary Nary false FunctionPass * llvm::createNaryReassociatePass ( )

◆ createNullStreamer()

MCStreamer * llvm::createNullStreamer ( MCContext Ctx)

Create a dummy machine code streamer, which does nothing.

This is useful for timing the assembler front end.

Definition at line 56 of file MCNullStreamer.cpp.

References Context.

Referenced by llvm::LLVMTargetMachine::createMCStreamer(), and llvm::Target::createNullStreamer().

◆ createNVPTXAAWrapperPass()

nvptx aa NVPTX Address space based Alias Analysis true ImmutablePass * llvm::createNVPTXAAWrapperPass ( )

Definition at line 34 of file NVPTXAliasAnalysis.cpp.

◆ createNVPTXAssignValidGlobalNamesPass()

ModulePass * llvm::createNVPTXAssignValidGlobalNamesPass ( )

Definition at line 89 of file NVPTXAssignValidGlobalNames.cpp.

◆ createNVPTXAtomicLowerPass()

FunctionPass * llvm::createNVPTXAtomicLowerPass ( )

◆ createNVPTXCtorDtorLoweringLegacyPass()

ModulePass * llvm::createNVPTXCtorDtorLoweringLegacyPass ( )

◆ createNVPTXExternalAAWrapperPass()

ImmutablePass * llvm::createNVPTXExternalAAWrapperPass ( )

Definition at line 38 of file NVPTXAliasAnalysis.cpp.

◆ createNVPTXImageOptimizerPass()

FunctionPass * llvm::createNVPTXImageOptimizerPass ( )

Definition at line 175 of file NVPTXImageOptimizer.cpp.

◆ createNVPTXISelDag()

FunctionPass * llvm::createNVPTXISelDag ( NVPTXTargetMachine TM,
llvm::CodeGenOptLevel  OptLevel 
)

createNVPTXISelDag - This pass converts a legalized DAG into a NVPTX-specific DAG, ready for instruction scheduling.

Definition at line 35 of file NVPTXISelDAGToDAG.cpp.

References TM.

◆ createNVPTXLowerAllocaPass()

FunctionPass * llvm::createNVPTXLowerAllocaPass ( )

Definition at line 115 of file NVPTXLowerAlloca.cpp.

◆ createNVPTXLowerArgsPass()

FunctionPass * llvm::createNVPTXLowerArgsPass ( )

Definition at line 488 of file NVPTXLowerArgs.cpp.

◆ createNVPTXLowerUnreachablePass()

FunctionPass * llvm::createNVPTXLowerUnreachablePass ( bool  TrapUnreachable,
bool  NoTrapAfterNoreturn 
)

Definition at line 153 of file NVPTXLowerUnreachable.cpp.

◆ createNVPTXPeephole()

MachineFunctionPass * llvm::createNVPTXPeephole ( )

Definition at line 167 of file NVPTXPeephole.cpp.

◆ createNVPTXPrologEpilogPass()

MachineFunctionPass * llvm::createNVPTXPrologEpilogPass ( )

Definition at line 46 of file NVPTXPrologEpilogPass.cpp.

◆ createNVPTXProxyRegErasurePass()

MachineFunctionPass * llvm::createNVPTXProxyRegErasurePass ( )

Definition at line 117 of file NVPTXProxyRegErasure.cpp.

◆ createNVPTXReplaceImageHandlesPass()

MachineFunctionPass * llvm::createNVPTXReplaceImageHandlesPass ( )

Definition at line 1859 of file NVPTXReplaceImageHandles.cpp.

◆ createNVVMIntrRangePass()

FunctionPass * llvm::createNVVMIntrRangePass ( unsigned int  SmVersion)

Definition at line 51 of file NVVMIntrRange.cpp.

References SmVersion.

◆ createNVVMReflectPass()

FunctionPass * llvm::createNVVMReflectPass ( unsigned int  SmVersion)

Definition at line 68 of file NVVMReflect.cpp.

References SmVersion.

◆ createObjCARCContractPass()

Pass * llvm::createObjCARCContractPass ( )

Definition at line 735 of file ObjCARCContract.cpp.

Referenced by llvm::LTOCodeGenerator::LTOCodeGenerator().

◆ createOrderedReduction()

Value * llvm::createOrderedReduction ( IRBuilderBase B,
const RecurrenceDescriptor Desc,
Value Src,
Value Start 
)

Create an ordered reduction intrinsic using the given recurrence descriptor Desc.

Definition at line 1223 of file LoopUtils.cpp.

References assert(), and B.

Referenced by llvm::VPReductionRecipe::execute().

◆ createPartiallyInlineLibCallsPass()

partially inline Partially calls to library false FunctionPass * llvm::createPartiallyInlineLibCallsPass ( )

Definition at line 215 of file PartiallyInlineLibCalls.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ createPBQPRegisterAllocator()

FunctionPass * llvm::createPBQPRegisterAllocator ( char customPassID = nullptr)

Create a PBQP register allocator instance.

Definition at line 948 of file RegAllocPBQP.cpp.

Referenced by createDefaultPBQPRegisterAllocator().

◆ createPGOFuncNameMetadata()

void llvm::createPGOFuncNameMetadata ( Function F,
StringRef  PGOFuncName 
)

Create the PGOFuncName meta data if PGOFuncName is different from function's raw name.

This should only apply to internal linkage functions declared by users only.

Definition at line 1364 of file InstrProf.cpp.

References llvm::CallingConv::C, F, llvm::MDNode::get(), llvm::MDString::get(), getPGOFuncNameMetadata(), getPGOFuncNameMetadataName(), and N.

◆ createPGOFuncNameVar() [1/2]

GlobalVariable * llvm::createPGOFuncNameVar ( Function F,
StringRef  PGOFuncName 
)

Create and return the global variable for function name used in PGO instrumentation.

FuncName is the IRPGO function name (returned by getIRPGOFuncName) for LLVM IR instrumentation and PGO function name (returned by getPGOFuncName) for front-end instrumentation.

Definition at line 462 of file InstrProf.cpp.

References createPGOFuncNameVar(), and F.

Referenced by createPGOFuncNameVar().

◆ createPGOFuncNameVar() [2/2]

GlobalVariable * llvm::createPGOFuncNameVar ( Module M,
GlobalValue::LinkageTypes  Linkage,
StringRef  PGOFuncName 
)

Create and return the global variable for function name used in PGO instrumentation.

FuncName is the IRPGO function name (returned by getIRPGOFuncName) for LLVM IR instrumentation and PGO function name (returned by getPGOFuncName) for front-end instrumentation.

Definition at line 435 of file InstrProf.cpp.

References llvm::GlobalValue::AvailableExternallyLinkage, llvm::GlobalValue::ExternalLinkage, llvm::GlobalValue::ExternalWeakLinkage, getPGOFuncNameVarName(), llvm::ConstantDataArray::getString(), llvm::Value::getType(), llvm::GlobalValue::HiddenVisibility, llvm::GlobalValue::InternalLinkage, llvm::GlobalValue::isLocalLinkage(), llvm::GlobalValue::LinkOnceAnyLinkage, llvm::GlobalValue::LinkOnceODRLinkage, and llvm::GlobalValue::PrivateLinkage.

◆ createPHIsForSplitLoopExit()

void llvm::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.

This function inserts the new PHIs, as needed. Preds is a list of preds inside the loop, SplitBB is the new loop exit block, and DestBB is the old loop exit, now the successor of SplitBB.

Definition at line 980 of file BasicBlockUtils.cpp.

References llvm::PHINode::addIncoming(), assert(), llvm::BasicBlock::begin(), llvm::PHINode::Create(), llvm::BasicBlock::getFirstNonPHI(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::BasicBlock::getTerminator(), Idx, llvm::Instruction::insertBefore(), llvm::BasicBlock::isLandingPad(), llvm::BasicBlock::phis(), and llvm::ArrayRef< T >::size().

Referenced by ehAwareSplitEdge(), and SplitKnownCriticalEdge().

◆ createPostDomOnlyPrinterWrapperPassPass()

FunctionPass * llvm::createPostDomOnlyPrinterWrapperPassPass ( )

Definition at line 234 of file DomPrinter.cpp.

◆ createPostDomOnlyViewerWrapperPassPass()

FunctionPass * llvm::createPostDomOnlyViewerWrapperPassPass ( )

Definition at line 242 of file DomPrinter.cpp.

◆ createPostDomPrinterWrapperPassPass()

FunctionPass * llvm::createPostDomPrinterWrapperPassPass ( )

Definition at line 230 of file DomPrinter.cpp.

◆ createPostDomTree()

FunctionPass * llvm::createPostDomTree ( )

Definition at line 92 of file PostDominators.cpp.

◆ createPostDomViewerWrapperPassPass()

FunctionPass * llvm::createPostDomViewerWrapperPassPass ( )

Definition at line 238 of file DomPrinter.cpp.

◆ createPowerPCMacroFusionDAGMutation()

std::unique_ptr< ScheduleDAGMutation > llvm::createPowerPCMacroFusionDAGMutation ( )

Note that you have to add: DAG.addMutation(createPowerPCMacroFusionDAGMutation()); to PPCPassConfig::createMachineScheduler() to have an effect.

Definition at line 289 of file PPCMacroFusion.cpp.

References createMacroFusionDAGMutation(), and shouldScheduleAdjacent().

Referenced by createPPCMachineScheduler(), and createPPCPostMachineScheduler().

◆ createPPCAsmBackend()

MCAsmBackend * llvm::createPPCAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createPPCBoolRetToIntPass()

FunctionPass * llvm::createPPCBoolRetToIntPass ( )

◆ createPPCBranchCoalescingPass()

FunctionPass * llvm::createPPCBranchCoalescingPass ( )

createPPCBranchCoalescingPass - returns an instance of the Branch Coalescing Pass

Definition at line 192 of file PPCBranchCoalescing.cpp.

◆ createPPCBranchSelectionPass()

FunctionPass * llvm::createPPCBranchSelectionPass ( )

◆ createPPCCTRLoopsPass()

PowerPC CTR loops false FunctionPass * llvm::createPPCCTRLoopsPass ( )

Definition at line 93 of file PPCCTRLoops.cpp.

◆ createPPCCTRLoopsVerify()

ppc ctr loops PowerPC CTR Loops false FunctionPass * llvm::createPPCCTRLoopsVerify ( )

Definition at line 77 of file PPCCTRLoopsVerify.cpp.

◆ createPPCEarlyReturnPass()

FunctionPass * llvm::createPPCEarlyReturnPass ( )

◆ createPPCELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createPPCELFObjectWriter ( bool  Is64Bit,
uint8_t  OSABI 
)

Construct an PPC ELF object writer.

Definition at line 495 of file PPCELFObjectWriter.cpp.

◆ createPPCELFStreamer()

MCELFStreamer * llvm::createPPCELFStreamer ( MCContext Context,
std::unique_ptr< MCAsmBackend MAB,
std::unique_ptr< MCObjectWriter OW,
std::unique_ptr< MCCodeEmitter Emitter 
)

Definition at line 223 of file PPCELFStreamer.cpp.

References Context, and Emitter.

Referenced by createPPCELFStreamer(), and LLVMInitializePowerPCTargetMC().

◆ createPPCExpandAtomicPseudoPass()

FunctionPass * llvm::createPPCExpandAtomicPseudoPass ( )

◆ createPPCExpandISELPass()

FunctionPass * llvm::createPPCExpandISELPass ( )

◆ createPPCGenScalarMASSEntriesPass()

ModulePass * llvm::createPPCGenScalarMASSEntriesPass ( )

◆ createPPCInstructionSelector()

InstructionSelector * llvm::createPPCInstructionSelector ( const PPCTargetMachine TM,
const PPCSubtarget Subtarget,
const PPCRegisterBankInfo RBI 
)

Definition at line 784 of file PPCInstructionSelector.cpp.

References TM.

Referenced by llvm::PPCSubtarget::PPCSubtarget().

◆ createPPCISelDag()

FunctionPass * llvm::createPPCISelDag ( PPCTargetMachine TM,
CodeGenOptLevel  OL 
)

createPPCISelDag - This pass converts a legalized DAG into a PowerPC-specific DAG, ready for instruction scheduling.

Definition at line 7922 of file PPCISelDAGToDAG.cpp.

References TM.

◆ createPPCLoopInstrFormPrepPass()

FunctionPass * llvm::createPPCLoopInstrFormPrepPass ( PPCTargetMachine TM)

Definition at line 352 of file PPCLoopInstrFormPrep.cpp.

References TM.

◆ createPPCLowerMASSVEntriesPass()

ModulePass * llvm::createPPCLowerMASSVEntriesPass ( )

◆ createPPCMachObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createPPCMachObjectWriter ( bool  Is64Bit,
uint32_t  CPUType,
uint32_t  CPUSubtype 
)

Construct a PPC Mach-O object writer.

◆ createPPCMCCodeEmitter()

MCCodeEmitter * llvm::createPPCMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 38 of file PPCMCCodeEmitter.cpp.

Referenced by LLVMInitializePowerPCTargetMC().

◆ createPPCMergeStringPoolPass()

ModulePass * llvm::createPPCMergeStringPoolPass ( )

◆ createPPCMIPeepholePass()

FunctionPass * llvm::createPPCMIPeepholePass ( )

Definition at line 2026 of file PPCMIPeephole.cpp.

◆ createPPCPreEmitPeepholePass()

FunctionPass * llvm::createPPCPreEmitPeepholePass ( )

◆ createPPCReduceCRLogicalsPass()

FunctionPass * llvm::createPPCReduceCRLogicalsPass ( )

Definition at line 739 of file PPCReduceCRLogicals.cpp.

◆ createPPCTLSDynamicCallPass()

FunctionPass * llvm::createPPCTLSDynamicCallPass ( )

Definition at line 344 of file PPCTLSDynamicCall.cpp.

◆ createPPCTOCRegDepsPass()

FunctionPass * llvm::createPPCTOCRegDepsPass ( )

◆ createPPCVSXCopyPass()

FunctionPass * llvm::createPPCVSXCopyPass ( )

◆ createPPCVSXFMAMutatePass()

FunctionPass * llvm::createPPCVSXFMAMutatePass ( )

Definition at line 389 of file PPCVSXFMAMutate.cpp.

◆ createPPCVSXSwapRemovalPass()

FunctionPass * llvm::createPPCVSXSwapRemovalPass ( )

Definition at line 1074 of file PPCVSXSwapRemoval.cpp.

◆ createPPCXCOFFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createPPCXCOFFObjectWriter ( bool  Is64Bit)

Construct a PPC XCOFF object writer.

Definition at line 37 of file PPCXCOFFObjectWriter.cpp.

◆ createPPCXCOFFStreamer()

MCXCOFFStreamer * llvm::createPPCXCOFFStreamer ( MCContext Context,
std::unique_ptr< MCAsmBackend MAB,
std::unique_ptr< MCObjectWriter OW,
std::unique_ptr< MCCodeEmitter Emitter 
)

Definition at line 72 of file PPCXCOFFStreamer.cpp.

References Context, and Emitter.

Referenced by createPPCXCOFFStreamer(), and LLVMInitializePowerPCTargetMC().

◆ createPreISelIntrinsicLoweringPass()

pre isel intrinsic Pre ISel Intrinsic false ModulePass * llvm::createPreISelIntrinsicLoweringPass ( )

This pass lowers the @llvm.load.relative and @llvm.objc.

  • intrinsics to instructions. This is unsafe to do earlier because a pass may combine the constant initializer into the load, which may result in an overflowing evaluation.

Definition at line 405 of file PreISelIntrinsicLowering.cpp.

Referenced by llvm::TargetPassConfig::addISelPasses().

◆ createPrintFunctionPass()

FunctionPass * llvm::createPrintFunctionPass ( llvm::raw_ostream OS,
const std::string &  Banner = "" 
)

Create and return a pass that prints functions to the specified raw_ostream as they are processed.

Definition at line 133 of file IRPrintingPasses.cpp.

References OS.

Referenced by llvm::TargetPassConfig::addIRPasses(), llvm::TargetPassConfig::addISelPrepare(), llvm::legacy::FunctionPassManagerImpl::createPrinterPass(), and llvm::FunctionPass::createPrinterPass().

◆ createPrintMIRPass()

MachineFunctionPass * llvm::createPrintMIRPass ( raw_ostream OS)

MIRPrinting pass - this pass prints out the LLVM IR into the given stream using the MIR serialization format.

Definition at line 75 of file MIRPrintingPass.cpp.

References OS.

Referenced by llvm::LLVMTargetMachine::addPassesToEmitFile().

◆ createPrintModulePass()

ModulePass * llvm::createPrintModulePass ( raw_ostream OS,
const std::string &  Banner = "",
bool  ShouldPreserveUseListOrder = false 
)

◆ createPrivateGlobalForString()

GlobalVariable * llvm::createPrivateGlobalForString ( Module M,
StringRef  Str,
bool  AllowMerging,
const char NamePrefix = "" 
)

◆ createProfileFileNameVar()

void llvm::createProfileFileNameVar ( Module M,
StringRef  InstrProfileOutput 
)

◆ createPrologEpilogInserterPass()

Prologue Epilogue Insertion &Frame false MachineFunctionPass * llvm::createPrologEpilogInserterPass ( )

Definition at line 160 of file PrologEpilogInserter.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ createPromoteMemoryToRegisterPass()

Promote Memory to false FunctionPass * llvm::createPromoteMemoryToRegisterPass ( )

Definition at line 114 of file Mem2Reg.cpp.

◆ createPseudoProbeInserter()

Insert pseudo probe annotations for value false FunctionPass * llvm::createPseudoProbeInserter ( )

This pass inserts pseudo probe annotation for callsite profiling.

Definition at line 148 of file PseudoProbeInserter.cpp.

◆ createR600AsmPrinterPass()

AsmPrinter * llvm::createR600AsmPrinterPass ( TargetMachine TM,
std::unique_ptr< MCStreamer > &&  Streamer 
)

Definition at line 31 of file R600AsmPrinter.cpp.

References TM.

Referenced by LLVMInitializeAMDGPUAsmPrinter().

◆ createR600ClauseMergePass()

llvm::FunctionPass * llvm::createR600ClauseMergePass ( )

Definition at line 208 of file R600ClauseMergePass.cpp.

◆ createR600ControlFlowFinalizer()

FunctionPass * llvm::createR600ControlFlowFinalizer ( )

Definition at line 687 of file R600ControlFlowFinalizer.cpp.

◆ createR600EmitClauseMarkers()

R600 Emit Clause false FunctionPass * llvm::createR600EmitClauseMarkers ( )

Definition at line 335 of file R600EmitClauseMarkers.cpp.

◆ createR600ExpandSpecialInstrsPass()

FunctionPass * llvm::createR600ExpandSpecialInstrsPass ( )

Definition at line 59 of file R600ExpandSpecialInstrs.cpp.

◆ createR600ISelDag()

FunctionPass * llvm::createR600ISelDag ( TargetMachine TM,
CodeGenOptLevel  OptLevel 
)

This pass converts a legalized DAG into a R600-specific.

Definition at line 185 of file R600ISelDAGToDAG.cpp.

References TM.

◆ createR600MachineCFGStructurizerPass()

AMDGPU CFG false FunctionPass * llvm::createR600MachineCFGStructurizerPass ( )

Definition at line 1638 of file R600MachineCFGStructurizer.cpp.

◆ createR600MCCodeEmitter()

MCCodeEmitter * llvm::createR600MCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 81 of file R600MCCodeEmitter.cpp.

References llvm::MCContext::getRegisterInfo().

Referenced by LLVMInitializeAMDGPUTargetMC().

◆ createR600MCInstrInfo()

MCInstrInfo * llvm::createR600MCInstrInfo ( )

Definition at line 24 of file R600MCTargetDesc.cpp.

References X.

Referenced by LLVMInitializeAMDGPUTargetMC().

◆ createR600OpenCLImageTypeLoweringPass()

ModulePass * llvm::createR600OpenCLImageTypeLoweringPass ( )

◆ createR600Packetizer()

llvm::FunctionPass * llvm::createR600Packetizer ( )

Definition at line 402 of file R600Packetizer.cpp.

◆ createR600VectorRegMerger()

llvm::FunctionPass * llvm::createR600VectorRegMerger ( )

Definition at line 375 of file R600OptimizeVectorRegisters.cpp.

◆ createReassociatePass()

FunctionPass * llvm::createReassociatePass ( )

◆ createRegAllocScoringPass()

FunctionPass * llvm::createRegAllocScoringPass ( )

When learning an eviction policy, extract score(reward) information, otherwise this does nothing.

Definition at line 121 of file MLRegAllocEvictAdvisor.cpp.

Referenced by llvm::TargetPassConfig::addRegAssignAndRewriteOptimized().

◆ createRegionInfoPass()

FunctionPass * llvm::createRegionInfoPass ( )

Definition at line 176 of file RegionInfo.cpp.

◆ createRegionOnlyPrinterPass()

FunctionPass * llvm::createRegionOnlyPrinterPass ( )

Definition at line 206 of file RegionPrinter.cpp.

◆ createRegionOnlyViewerPass()

FunctionPass * llvm::createRegionOnlyViewerPass ( )

Definition at line 214 of file RegionPrinter.cpp.

Referenced by viewRegionOnly().

◆ createRegionPrinterPass()

dot regions Print regions of function to dot true view regions View regions of true FunctionPass * llvm::createRegionPrinterPass ( )

Definition at line 204 of file RegionPrinter.cpp.

◆ createRegionViewerPass()

FunctionPass * llvm::createRegionViewerPass ( )

Definition at line 210 of file RegionPrinter.cpp.

Referenced by viewRegion().

◆ createRegUsageInfoCollector()

Register Usage Information false FunctionPass * llvm::createRegUsageInfoCollector ( )

This pass is executed POST-RA to collect which physical registers are preserved by given machine function.

Definition at line 75 of file RegUsageInfoCollector.cpp.

References RegUsageInfoCollector.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ createRegUsageInfoPropPass()

FunctionPass * llvm::createRegUsageInfoPropPass ( )

Return a MachineFunction pass that identifies call sites and propagates register usage information of callee to caller if available with PysicalRegisterUsageInfo pass.

Definition at line 152 of file RegUsageInfoPropagate.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ createReleaseModeAdvisor()

RegAllocEvictionAdvisorAnalysis * llvm::createReleaseModeAdvisor ( )

◆ createReleaseModePriorityAdvisor()

RegAllocPriorityAdvisorAnalysis * llvm::createReleaseModePriorityAdvisor ( )

◆ createRepeatedPass()

template<typename PassT >
RepeatedPass< PassT > llvm::createRepeatedPass ( int  Count,
PassT &&  P 
)

Definition at line 1050 of file PassManager.h.

References P.

◆ createReplaceWithVeclibLegacyPass()

Replace intrinsics with calls to vector false FunctionPass * llvm::createReplaceWithVeclibLegacyPass ( )

Definition at line 298 of file ReplaceWithVeclib.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ createReplicatedMask()

llvm::SmallVector< int, 16 > llvm::createReplicatedMask ( unsigned  ReplicationFactor,
unsigned  VF 
)

Create a mask with replicated elements.

This function creates a shuffle mask for replicating each of the VF elements in a vector ReplicationFactor times. It can be used to transform a mask of VF elements into a mask of VF * ReplicationFactor elements used by a predicated interleaved-group of loads/stores whose Interleaved-factor == ReplicationFactor.

For example, the mask for ReplicationFactor=3 and VF=4 is:

<0,0,0,1,1,1,2,2,2,3,3,3>

Definition at line 852 of file VectorUtils.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by llvm::InnerLoopVectorizer::vectorizeInterleaveGroup().

◆ createResetMachineFunctionPass()

MachineFunctionPass * llvm::createResetMachineFunctionPass ( bool  EmitFallbackDiag,
bool  AbortOnFailedISel 
)

This pass resets a MachineFunction when it has the FailedISel property as if it was just created.

If EmitFallbackDiag is true, the pass will emit a DiagnosticInfoISelFallback for every MachineFunction it resets. If AbortOnFailedISel is true, abort compilation instead of resetting.

Referenced by llvm::TargetPassConfig::addCoreISelPasses().

◆ createRISCVAsmBackend()

MCAsmBackend * llvm::createRISCVAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createRISCVCodeGenPreparePass()

FunctionPass * llvm::createRISCVCodeGenPreparePass ( )

Definition at line 182 of file RISCVCodeGenPrepare.cpp.

◆ createRISCVDeadRegisterDefinitionsPass()

FunctionPass * llvm::createRISCVDeadRegisterDefinitionsPass ( )

◆ createRISCVELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createRISCVELFObjectWriter ( uint8_t  OSABI,
bool  Is64Bit 
)

◆ createRISCVELFStreamer()

MCELFStreamer * llvm::createRISCVELFStreamer ( MCContext C,
std::unique_ptr< MCAsmBackend MAB,
std::unique_ptr< MCObjectWriter MOW,
std::unique_ptr< MCCodeEmitter MCE,
bool  RelaxAll 
)

◆ createRISCVExpandAtomicPseudoPass()

FunctionPass * llvm::createRISCVExpandAtomicPseudoPass ( )

Referenced by INITIALIZE_PASS().

◆ createRISCVExpandPseudoPass()

FunctionPass * llvm::createRISCVExpandPseudoPass ( )

Definition at line 632 of file RISCVExpandPseudoInsts.cpp.

◆ createRISCVFoldMasksPass()

FunctionPass * llvm::createRISCVFoldMasksPass ( )

Definition at line 224 of file RISCVFoldMasks.cpp.

◆ createRISCVGatherScatterLoweringPass()

FunctionPass * llvm::createRISCVGatherScatterLoweringPass ( )

◆ createRISCVInsertReadWriteCSRPass()

FunctionPass * llvm::createRISCVInsertReadWriteCSRPass ( )

Definition at line 194 of file RISCVInsertReadWriteCSR.cpp.

◆ createRISCVInsertVSETVLIPass()

FunctionPass * llvm::createRISCVInsertVSETVLIPass ( )

Returns an instance of the Insert VSETVLI pass.

Definition at line 1683 of file RISCVInsertVSETVLI.cpp.

◆ createRISCVInsertWriteVXRMPass()

FunctionPass * llvm::createRISCVInsertWriteVXRMPass ( )

Definition at line 466 of file RISCVInsertWriteVXRM.cpp.

◆ createRISCVInstructionSelector()

InstructionSelector * llvm::createRISCVInstructionSelector ( const RISCVTargetMachine TM,
RISCVSubtarget Subtarget,
RISCVRegisterBankInfo RBI 
)

Definition at line 1313 of file RISCVInstructionSelector.cpp.

References TM.

Referenced by llvm::RISCVSubtarget::RISCVSubtarget().

◆ createRISCVISelDag()

FunctionPass * llvm::createRISCVISelDag ( RISCVTargetMachine TM,
CodeGenOptLevel  OptLevel 
)

Definition at line 3884 of file RISCVISelDAGToDAG.cpp.

References TM.

◆ createRISCVMakeCompressibleOptPass()

FunctionPass * llvm::createRISCVMakeCompressibleOptPass ( )

Returns an instance of the Make Compressible Optimization pass.

Definition at line 440 of file RISCVMakeCompressible.cpp.

◆ createRISCVMCCodeEmitter()

MCCodeEmitter * llvm::createRISCVMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 106 of file RISCVMCCodeEmitter.cpp.

Referenced by LLVMInitializeRISCVTargetMC().

◆ createRISCVMergeBaseOffsetOptPass()

FunctionPass * llvm::createRISCVMergeBaseOffsetOptPass ( )

Returns an instance of the Merge Base Offset Optimization pass.

Definition at line 532 of file RISCVMergeBaseOffset.cpp.

◆ createRISCVMoveMergePass()

FunctionPass * llvm::createRISCVMoveMergePass ( )

createRISCVMoveMergePass - returns an instance of the move merge pass.

Definition at line 236 of file RISCVMoveMerger.cpp.

◆ createRISCVO0PreLegalizerCombiner()

FunctionPass * llvm::createRISCVO0PreLegalizerCombiner ( )

Definition at line 152 of file RISCVO0PreLegalizerCombiner.cpp.

◆ createRISCVOptWInstrsPass()

FunctionPass * llvm::createRISCVOptWInstrsPass ( )

◆ createRISCVPostLegalizerCombiner()

FunctionPass * llvm::createRISCVPostLegalizerCombiner ( )

Definition at line 170 of file RISCVPostLegalizerCombiner.cpp.

◆ createRISCVPostRAExpandPseudoPass()

FunctionPass * llvm::createRISCVPostRAExpandPseudoPass ( )

Referenced by INITIALIZE_PASS().

◆ createRISCVPreLegalizerCombiner()

FunctionPass * llvm::createRISCVPreLegalizerCombiner ( )

Definition at line 166 of file RISCVPreLegalizerCombiner.cpp.

◆ createRISCVPreRAExpandPseudoPass()

FunctionPass * llvm::createRISCVPreRAExpandPseudoPass ( )

Definition at line 633 of file RISCVExpandPseudoInsts.cpp.

◆ createRISCVPushPopOptimizationPass()

FunctionPass * llvm::createRISCVPushPopOptimizationPass ( )

createRISCVPushPopOptimizationPass - returns an instance of the Push/Pop optimization pass.

Definition at line 151 of file RISCVPushPopOptimizer.cpp.

◆ createRISCVRedundantCopyEliminationPass()

FunctionPass * llvm::createRISCVRedundantCopyEliminationPass ( )

Definition at line 179 of file RISCVRedundantCopyElimination.cpp.

◆ createRuntimeDyldCOFF()

static std::unique_ptr< RuntimeDyldCOFF > llvm::createRuntimeDyldCOFF ( Triple::ArchType  Arch,
RuntimeDyld::MemoryManager MM,
JITSymbolResolver Resolver,
bool  ProcessAllSections,
RuntimeDyld::NotifyStubEmittedFunction  NotifyStubEmitted 
)
static

Definition at line 1311 of file RuntimeDyld.cpp.

References llvm::RuntimeDyldCOFF::create().

Referenced by llvm::RuntimeDyld::loadObject().

◆ createRuntimeDyldELF()

static std::unique_ptr< RuntimeDyldELF > llvm::createRuntimeDyldELF ( Triple::ArchType  Arch,
RuntimeDyld::MemoryManager MM,
JITSymbolResolver Resolver,
bool  ProcessAllSections,
RuntimeDyld::NotifyStubEmittedFunction  NotifyStubEmitted 
)
static

Definition at line 1323 of file RuntimeDyld.cpp.

References llvm::RuntimeDyldELF::create().

Referenced by llvm::RuntimeDyld::loadObject().

◆ createRuntimeDyldMachO()

static std::unique_ptr< RuntimeDyldMachO > llvm::createRuntimeDyldMachO ( Triple::ArchType  Arch,
RuntimeDyld::MemoryManager MM,
JITSymbolResolver Resolver,
bool  ProcessAllSections,
RuntimeDyld::NotifyStubEmittedFunction  NotifyStubEmitted 
)
static

Definition at line 1334 of file RuntimeDyld.cpp.

References llvm::RuntimeDyldMachO::create().

Referenced by llvm::RuntimeDyld::loadObject().

◆ createSafepointIRVerifierPass()

FunctionPass * llvm::createSafepointIRVerifierPass ( )

Create an instance of the safepoint verifier pass which can be added to a pass pipeline to check for relocation bugs.

Definition at line 243 of file SafepointIRVerifier.cpp.

◆ createSafeStackPass()

Safe Stack instrumentation false FunctionPass * llvm::createSafeStackPass ( )

This pass splits the stack into a safe stack and an unsafe stack to protect against stack-based overflow vulnerabilities.

Definition at line 974 of file SafeStack.cpp.

Referenced by llvm::TargetPassConfig::addISelPrepare().

◆ createSanitizerCtor()

Function * llvm::createSanitizerCtor ( Module M,
StringRef  CtorName 
)

◆ createSanitizerCtorAndInitFunctions()

std::pair< Function *, FunctionCallee > llvm::createSanitizerCtorAndInitFunctions ( Module M,
StringRef  CtorName,
StringRef  InitName,
ArrayRef< Type * >  InitArgTypes,
ArrayRef< Value * >  InitArgs,
StringRef  VersionCheckName = StringRef(),
bool  Weak = false 
)

◆ createScalarizeMaskedMemIntrinLegacyPass()

Scalarize unsupported masked memory false FunctionPass * llvm::createScalarizeMaskedMemIntrinLegacyPass ( )

Definition at line 87 of file ScalarizeMaskedMemIntrin.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ createSCEVAAWrapperPass()

scev ScalarEvolution based Alias true FunctionPass * llvm::createSCEVAAWrapperPass ( )

Creates an instance of SCEVAAWrapperPass.

Definition at line 152 of file ScalarEvolutionAliasAnalysis.cpp.

◆ createScopedNoAliasAAWrapperPass()

ImmutablePass * llvm::createScopedNoAliasAAWrapperPass ( )

◆ createSelectOptimizePass()

Optimize false FunctionPass * llvm::createSelectOptimizePass ( )

This pass converts conditional moves to conditional jumps when profitable.

Definition at line 382 of file SelectOptimize.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ createSeparateConstOffsetFromGEPPass()

separate const offset from Split GEPs to a variadic base and a constant offset for better false FunctionPass * llvm::createSeparateConstOffsetFromGEPPass ( bool  LowerGEP = false)

◆ createSequentialMask()

llvm::SmallVector< int, 16 > llvm::createSequentialMask ( unsigned  Start,
unsigned  NumInts,
unsigned  NumUndefs 
)

Create a sequential shuffle mask.

This function creates shuffle mask whose elements are sequential and begin at Start. The mask contains NumInts integers and is padded with NumUndefs undef values. The mask is of the form:

<Start, Start + 1, ... Start + NumInts - 1, undef_1, ... undef_NumUndefs>

For example, the mask for Start = 0, NumInsts = 4, and NumUndefs = 4 is:

<0, 1, 2, 3, undef, undef, undef, undef>

Definition at line 880 of file VectorUtils.cpp.

Referenced by concatenateTwoVectors(), llvm::AArch64TargetLowering::lowerInterleavedStore(), llvm::ARMTargetLowering::lowerInterleavedStore(), and llvm::RISCVTargetLowering::lowerInterleavedStore().

◆ createShadowStackGCLoweringPass()

Shadow Stack GC false FunctionPass * llvm::createShadowStackGCLoweringPass ( )

ShadowStackGCLowering - Implements the custom lowering mechanism used by the shadow stack GC.

Only runs on functions which opt in to the shadow stack collector.

Definition at line 143 of file ShadowStackGCLowering.cpp.

◆ createSIAnnotateControlFlowPass()

FunctionPass * llvm::createSIAnnotateControlFlowPass ( )

Create the annotation pass.

Definition at line 401 of file SIAnnotateControlFlow.cpp.

◆ createSIFixControlFlowLiveIntervalsPass()

FunctionPass * llvm::createSIFixControlFlowLiveIntervalsPass ( )

◆ createSIFixSGPRCopiesPass()

FunctionPass * llvm::createSIFixSGPRCopiesPass ( )

Definition at line 184 of file SIFixSGPRCopies.cpp.

◆ createSIFoldOperandsPass()

FunctionPass * llvm::createSIFoldOperandsPass ( )

Definition at line 199 of file SIFoldOperands.cpp.

◆ createSIFormMemoryClausesPass()

FunctionPass * llvm::createSIFormMemoryClausesPass ( )

Definition at line 93 of file SIFormMemoryClauses.cpp.

◆ createSIInsertWaitcntsPass()

FunctionPass * llvm::createSIInsertWaitcntsPass ( )

Definition at line 1131 of file SIInsertWaitcnts.cpp.

◆ createSILoadStoreOptimizerPass()

FunctionPass * llvm::createSILoadStoreOptimizerPass ( )

Definition at line 839 of file SILoadStoreOptimizer.cpp.

◆ createSILowerI1CopiesPass()

FunctionPass * llvm::createSILowerI1CopiesPass ( )

Definition at line 411 of file SILowerI1Copies.cpp.

◆ createSIMemoryLegalizerPass()

FunctionPass * llvm::createSIMemoryLegalizerPass ( )

Definition at line 2673 of file SIMemoryLegalizer.cpp.

◆ createSIModeRegisterPass()

FunctionPass * llvm::createSIModeRegisterPass ( )

Definition at line 158 of file SIModeRegister.cpp.

◆ createSimpleTargetReduction()

Value * llvm::createSimpleTargetReduction ( IRBuilderBase B,
Value Src,
RecurKind  RdxKind 
)

Create a target reduction of the given vector.

The reduction operation is described by the Opcode parameter. min/max reductions require additional information supplied in RdxKind. The target is queried to determine if intrinsics or shuffle sequences are required to implement the reduction. Fast-math-flags are propagated using the IRBuilder's setting.

Definition at line 1166 of file LoopUtils.cpp.

References llvm::IRBuilderBase::CreateAddReduce(), llvm::IRBuilderBase::CreateAndReduce(), llvm::IRBuilderBase::CreateFAddReduce(), llvm::IRBuilderBase::CreateFMulReduce(), llvm::IRBuilderBase::CreateFPMaximumReduce(), llvm::IRBuilderBase::CreateFPMaxReduce(), llvm::IRBuilderBase::CreateFPMinimumReduce(), llvm::IRBuilderBase::CreateFPMinReduce(), llvm::IRBuilderBase::CreateIntMaxReduce(), llvm::IRBuilderBase::CreateIntMinReduce(), llvm::IRBuilderBase::CreateMulReduce(), llvm::IRBuilderBase::CreateOrReduce(), llvm::IRBuilderBase::CreateXorReduce(), llvm::ConstantFP::getNegativeZero(), and llvm_unreachable.

Referenced by createTargetReduction().

◆ createSingleLoopExtractorPass()

Pass * llvm::createSingleLoopExtractorPass ( )

createSingleLoopExtractorPass - This pass extracts one natural loop from the program into a function if it can.

This is used by bugpoint.

Definition at line 257 of file LoopExtractor.cpp.

◆ createSinkingPass()

FunctionPass * llvm::createSinkingPass ( )

Definition at line 277 of file Sink.cpp.

◆ createSIOptimizeExecMaskingPreRAPass()

FunctionPass * llvm::createSIOptimizeExecMaskingPreRAPass ( )

Definition at line 77 of file SIOptimizeExecMaskingPreRA.cpp.

◆ createSIOptimizeVGPRLiveRangePass()

FunctionPass * llvm::createSIOptimizeVGPRLiveRangePass ( )

Definition at line 629 of file SIOptimizeVGPRLiveRange.cpp.

◆ createSIPeepholeSDWAPass()

FunctionPass * llvm::createSIPeepholeSDWAPass ( )

Definition at line 194 of file SIPeepholeSDWA.cpp.

◆ createSIPostRABundlerPass()

FunctionPass * llvm::createSIPostRABundlerPass ( )

Definition at line 71 of file SIPostRABundler.cpp.

◆ createSIPreAllocateWWMRegsPass()

FunctionPass * llvm::createSIPreAllocateWWMRegsPass ( )

Definition at line 88 of file SIPreAllocateWWMRegs.cpp.

◆ createSIShrinkInstructionsPass()

FunctionPass * llvm::createSIShrinkInstructionsPass ( )

◆ createSIWholeQuadModePass()

FunctionPass * llvm::createSIWholeQuadModePass ( )

Definition at line 266 of file SIWholeQuadMode.cpp.

◆ createSjLjEHPreparePass()

FunctionPass * llvm::createSjLjEHPreparePass ( const TargetMachine TM)

createSjLjEHPreparePass - This pass adapts exception handling code to use the GCC-style builtin setjmp/longjmp (sjlj) to handling EH control flow.

Referenced by llvm::TargetPassConfig::addPassesToHandleExceptions().

◆ createSMEABIPass()

FunctionPass * llvm::createSMEABIPass ( )

Definition at line 53 of file SMEABIPass.cpp.

◆ createSourceListDAGScheduler()

ScheduleDAGSDNodes * llvm::createSourceListDAGScheduler ( SelectionDAGISel IS,
CodeGenOptLevel  OptLevel 
)

createSourceListDAGScheduler - This creates a bottom up list scheduler that schedules nodes in source code order when possible.

Definition at line 3159 of file ScheduleDAGRRList.cpp.

References llvm::TargetSubtargetInfo::getInstrInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), llvm::SelectionDAGISel::MF, TII, and TRI.

Referenced by createDefaultScheduler().

◆ createSparcAsmBackend()

MCAsmBackend * llvm::createSparcAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createSparcDelaySlotFillerPass()

FunctionPass * llvm::createSparcDelaySlotFillerPass ( )

createSparcDelaySlotFillerPass - Returns a pass that fills in delay slots in Sparc MachineFunctions

Definition at line 97 of file DelaySlotFiller.cpp.

◆ createSparcELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createSparcELFObjectWriter ( bool  Is64Bit,
uint8_t  OSABI 
)

Definition at line 149 of file SparcELFObjectWriter.cpp.

◆ createSparcISelDag()

FunctionPass * llvm::createSparcISelDag ( SparcTargetMachine TM)

createSparcISelDag - This pass converts a legalized DAG into a SPARC-specific DAG, ready for instruction scheduling.

Definition at line 399 of file SparcISelDAGToDAG.cpp.

References TM.

◆ createSparcMCCodeEmitter()

MCCodeEmitter * llvm::createSparcMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 247 of file SparcMCCodeEmitter.cpp.

Referenced by LLVMInitializeSparcTargetMC().

◆ createSpeculativeExecutionIfHasBranchDivergencePass()

FunctionPass * llvm::createSpeculativeExecutionIfHasBranchDivergencePass ( )

Definition at line 340 of file SpeculativeExecution.cpp.

◆ createSpeculativeExecutionPass()

FunctionPass * llvm::createSpeculativeExecutionPass ( )

Definition at line 336 of file SpeculativeExecution.cpp.

◆ createSPIRVAsmBackend()

MCAsmBackend * llvm::createSPIRVAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

Definition at line 58 of file SPIRVAsmBackend.cpp.

References little.

Referenced by LLVMInitializeSPIRVTargetMC().

◆ createSPIRVEmitIntrinsicsPass()

ModulePass * llvm::createSPIRVEmitIntrinsicsPass ( SPIRVTargetMachine TM)

Definition at line 1285 of file SPIRVEmitIntrinsics.cpp.

References TM.

◆ createSPIRVInstructionSelector()

InstructionSelector * llvm::createSPIRVInstructionSelector ( const SPIRVTargetMachine TM,
const SPIRVSubtarget Subtarget,
const RegisterBankInfo RBI 
)

Definition at line 2253 of file SPIRVInstructionSelector.cpp.

References TM.

Referenced by llvm::SPIRVSubtarget::SPIRVSubtarget().

◆ createSPIRVMCCodeEmitter()

MCCodeEmitter * llvm::createSPIRVMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 53 of file SPIRVMCCodeEmitter.cpp.

Referenced by LLVMInitializeSPIRVTargetMC().

◆ createSPIRVObjectTargetWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createSPIRVObjectTargetWriter ( )

Definition at line 23 of file SPIRVObjectTargetWriter.cpp.

◆ createSPIRVObjectWriter()

std::unique_ptr< MCObjectWriter > llvm::createSPIRVObjectWriter ( std::unique_ptr< MCSPIRVObjectTargetWriter MOTW,
raw_pwrite_stream OS 
)

Construct a new SPIR-V writer instance.

Parameters
MOTW- The target specific SPIR-V writer subclass.
OS- The stream to write to.
Returns
The constructed object writer.

Definition at line 71 of file SPIRVObjectWriter.cpp.

References OS.

Referenced by llvm::MCAsmBackend::createObjectWriter().

◆ createSPIRVPostLegalizerPass()

FunctionPass * llvm::createSPIRVPostLegalizerPass ( )

◆ createSPIRVPreLegalizerPass()

FunctionPass * llvm::createSPIRVPreLegalizerPass ( )

◆ createSPIRVPrepareFunctionsPass()

ModulePass * llvm::createSPIRVPrepareFunctionsPass ( const SPIRVTargetMachine TM)

Definition at line 430 of file SPIRVPrepareFunctions.cpp.

References TM.

◆ createSPIRVRegularizerPass()

FunctionPass * llvm::createSPIRVRegularizerPass ( )

Definition at line 259 of file SPIRVRegularizer.cpp.

◆ createSPIRVStreamer()

MCStreamer * llvm::createSPIRVStreamer ( MCContext Ctx,
std::unique_ptr< MCAsmBackend > &&  TAB,
std::unique_ptr< MCObjectWriter > &&  OW,
std::unique_ptr< MCCodeEmitter > &&  CE,
bool  RelaxAll 
)

◆ createSPIRVStripConvergenceIntrinsicsPass()

FunctionPass * llvm::createSPIRVStripConvergenceIntrinsicsPass ( )

◆ createSplat2ShuffleMask()

void llvm::createSplat2ShuffleMask ( MVT  VT,
SmallVectorImpl< int > &  Mask,
bool  Lo 
)

Similar to unpacklo/unpackhi, but without the 128-bit lane limitation imposed by AVX and specific to the unary pattern.

Example: v8iX Lo --> <0, 0, 1, 1, 2, 2, 3, 3> v8iX Hi --> <4, 4, 5, 5, 6, 6, 7, 7>

Definition at line 4504 of file X86ISelLowering.cpp.

References assert(), llvm::MVT::getVectorNumElements(), and Lo.

Referenced by lowerShuffleWithUNPCK256().

◆ createSROAPass()

FunctionPass * llvm::createSROAPass ( bool  PreserveCFG = true)

Definition at line 5529 of file SROA.cpp.

References ModifyCFG, and PreserveCFG.

◆ createStackFrameLayoutAnalysisPass()

MachineFunctionPass * llvm::createStackFrameLayoutAnalysisPass ( )

StackFramePrinter pass - This pass prints out the machine function's stack frame to the given stream as a debugging tool.

Referenced by llvm::TargetPassConfig::addMachinePasses(), and INITIALIZE_PASS().

◆ createStackProtectorPass()

Insert stack true FunctionPass * llvm::createStackProtectorPass ( )

createStackProtectorPass - This pass adds stack protectors to functions.

Definition at line 164 of file StackProtector.cpp.

Referenced by llvm::TargetPassConfig::addISelPrepare().

◆ createStepForVF()

Value * llvm::createStepForVF ( IRBuilderBase B,
Type Ty,
ElementCount  VF,
int64_t  Step 
)

◆ createStoreClusterDAGMutation()

std::unique_ptr< ScheduleDAGMutation > llvm::createStoreClusterDAGMutation ( 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.

Definition at line 1833 of file MachineScheduler.cpp.

References EnableMemOpCluster, TII, and TRI.

Referenced by createGCNMaxOccupancyMachineScheduler(), createIterativeGCNMaxOccupancyMachineScheduler(), createIterativeILPMachineScheduler(), llvm::AMDGPUPassConfig::createMachineScheduler(), createPPCMachineScheduler(), and createPPCPostMachineScheduler().

◆ createStraightLineStrengthReducePass()

Straight line strength false FunctionPass * llvm::createStraightLineStrengthReducePass ( )

◆ createStrideMask()

llvm::SmallVector< int, 16 > llvm::createStrideMask ( unsigned  Start,
unsigned  Stride,
unsigned  VF 
)

Create a stride shuffle mask.

This function creates a shuffle mask whose elements begin at Start and are incremented by Stride. The mask can be used to deinterleave an interleaved vector into separate vectors of vectorization factor VF. The mask is of the form:

<Start, Start + Stride, ..., Start + Stride * (VF - 1)>

For example, the mask for Start = 0, Stride = 2, and VF = 4 is:

<0, 2, 4, 6>

Definition at line 872 of file VectorUtils.cpp.

Referenced by llvm::RISCVTTIImpl::getInterleavedMemoryOpCost(), llvm::RISCVTTIImpl::getShuffleCost(), and llvm::InnerLoopVectorizer::vectorizeInterleaveGroup().

◆ createStringError() [1/4]

template<typename... Ts>
Error llvm::createStringError ( std::errc  EC,
char const Fmt,
const Ts &...  Vals 
)
inline

Definition at line 1273 of file Error.h.

References createStringError().

◆ createStringError() [2/4]

template<typename... Ts>
Error llvm::createStringError ( std::error_code  EC,
char const Fmt,
const Ts &...  Vals 
)
inline

Create formatted StringError object.

Definition at line 1258 of file Error.h.

References format(), and llvm::raw_string_ostream::str().

Referenced by llvm::dwarf_linker::parallel::SyntheticTypeNameBuilder::addReferencedODRDies(), llvm::SpecialCaseList::addSection(), advanceToMetaBlock(), llvm::BitcodeReaderValueList::assignValue(), buildFatArchList(), llvm::MachO::TextAPIReader::canRead(), checkChars(), checkCombinedSummaryForTesting(), llvm::gsym::Header::checkForError(), checkOperandCount(), checkRecord(), llvm::objcopy::elf::ASCIIHexWriter::checkSection(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::cloneAndEmitDebugFrame(), llvm::DWARFUnit::collectAddressRanges(), llvm::objcopy::elf::Object::compressOrDecompressSections(), llvm::xray::LogBuilderConsumer::consume(), llvm::xray::PipelineConsumer::consume(), llvm::objcopy::coff::COFFReader::create(), llvm::objcopy::xcoff::XCOFFReader::create(), llvm::objcopy::elf::ELFReader::create(), llvm::object::Slice::create(), llvm::dwarf::UnwindTable::create(), llvm::gsym::GsymReader::create(), llvm::objcopy::NameOrPattern::create(), llvm::remarks::createRemarkParser(), llvm::remarks::createRemarkParserFromMeta(), llvm::remarks::createRemarkSerializer(), llvm::logicalview::LVDWARFReader::createScopes(), llvm::gsym::GsymCreator::createSegment(), llvm::logicalview::LVSplitContext::createSplitFolder(), createStringError(), llvm::codegen::createTargetMachineForTriple(), llvm::remarks::createYAMLParserFromMeta(), llvm::gsym::Header::decode(), decode(), llvm::gsym::FunctionInfo::decode(), llvm::object::BBAddrMap::BBEntry::Metadata::decode(), llvm::object::BBAddrMap::Features::decode(), decodeBase64(), llvm::logicalview::LVScope::doPrint(), llvm::logicalview::LVScopeRoot::doPrintMatches(), llvm::dwarf::CIE::dump(), llvm::dwarf::FDE::dump(), dumpAttribute(), llvm::objcopy::coff::dumpSection(), dumpSectionToFile(), llvm::objcopy::wasm::dumpSectionToFile(), dumpStringOffsetsSection(), llvm::DWARFYAML::emitDebugAddr(), llvm::DWARFYAML::emitDebugAranges(), llvm::DWARFYAML::emitDebugRanges(), llvm::DWARFYAML::emitDebugSections(), llvm::gsym::FunctionInfo::encode(), llvm::gsym::GsymCreator::encode(), llvm::gsym::InlineInfo::encode(), llvm::gsym::LineTable::encode(), llvm::BitstreamCursor::EnterSubBlock(), error(), llvm::objcopy::macho::executeObjcopyOnBinary(), llvm::objcopy::executeObjcopyOnBinary(), llvm::objcopy::macho::executeObjcopyOnMachOUniversalBinary(), llvm::cl::ExpansionContext::expandResponseFiles(), llvm::DWARFDebugNames::NameIndex::extract(), llvm::AppleAcceleratorTable::extract(), llvm::DWARFDebugNames::Header::extract(), llvm::DWARFDebugRangeList::extract(), llvm::DWARFDebugAddrTable::extract(), llvm::DWARFUnitHeader::extract(), llvm::DWARFDebugPubTable::extract(), llvm::DWARFDebugArangeSet::extract(), llvm::RangeListEntry::extract(), llvm::DWARFListTableHeader::extract(), llvm::DWARFListType< ListEntryType >::extract(), llvm::DWARFDebugInfoEntry::extractFast(), llvm::DWARFDebugAddrTable::extractV5(), llvm::SimpleBitstreamCursor::fillCurWord(), llvm::objcopy::elf::ELFWriter< ELFT >::finalize(), llvm::objcopy::elf::BinaryWriter::finalize(), llvm::objcopy::elf::ASCIIHexWriter::finalize(), llvm::gsym::GsymCreator::finalize(), llvm::object::MachOObjectFile::findDsymObjectMembers(), llvm::orc::LazyCallThroughManager::findReexport(), llvm::DWARFUnit::findRnglistFromIndex(), findSection(), llvm::dwarf_linker::finiteLoop(), llvm::BitstreamCursor::getAbbrev(), llvm::DWARFYAML::Data::getAbbrevTableInfoByID(), llvm::DWARFDebugAddrTable::getAddrEntry(), llvm::gsym::GsymReader::getAddressIndex(), getBitcodeFileMachine(), getCachedOrDownloadArtifact(), llvm::objcopy::ConfigManager::getCOFFConfig(), getCOFFFileMachine(), llvm::object::ResourceSectionRef::getContents(), llvm::object::Record::getContinuousData(), llvm::DataExtractor::getCStrRef(), llvm::object::COFFObjectFile::getDebugPDBInfo(), getDefaultDebuginfodCacheDirectory(), llvm::DWARFYAML::getDWARFEmitterByName(), llvm::object::ELFFile< ELFT >::getDynSymtabSize(), llvm::object::getDynSymtabSizeFromGnuHash(), llvm::DWARFDebugNames::NameIndex::getEntry(), llvm::json::Path::Root::getError(), getExtensionVersion(), llvm::gsym::GsymReader::getFunctionInfoDataAtIndex(), llvm::gsym::GsymReader::getFunctionInfoDataForAddress(), llvm::DWARFDataExtractor::getInitialLength(), getLEB128(), llvm::DWARFDie::getLocations(), llvm::objcopy::ConfigManager::getMachOConfig(), llvm::ExpressionFormat::getMatchingString(), llvm::object::Elf_Sym_Impl< ELFT >::getName(), getNewShfFlags(), llvm::dwarf::CFIProgram::Instruction::getOperandAsSigned(), llvm::dwarf::CFIProgram::Instruction::getOperandAsUnsigned(), llvm::DWARFDebugLine::getOrParseLineTable(), getRemarksSectionName(), llvm::object::COFFObjectFile::getRvaAndSizeAsBytes(), llvm::object::COFFObjectFile::getRvaPtr(), llvm::object::COFFObjectFile::getSection(), llvm::logicalview::LVBinaryReader::getSection(), llvm::objcopy::elf::SectionTableRef::getSection(), llvm::object::XCOFFObjectFile::getSectionByNum(), llvm::object::COFFObjectFile::getSectionName(), llvm::object::WasmObjectFile::getSectionName(), llvm::objcopy::elf::SectionTableRef::getSectionOfType(), getStringErrorForInvalidExt(), llvm::objcopy::elf::SymbolTableSection::getSymbolByIndex(), llvm::object::ResourceSectionRef::getTableEntry(), llvm::objcopy::ConfigManager::getWasmConfig(), llvm::ExpressionFormat::getWildcardRegex(), llvm::objcopy::ConfigManager::getXCOFFConfig(), llvm::object::GOFFObjectFile::GOFFObjectFile(), llvm::objcopy::coff::handleArgs(), hasInvalidBitcodeHeader(), llvm::FunctionImporter::importFunctions(), llvm::dwarf_linker::classic::DwarfStreamer::init(), llvm::dwarf_linker::parallel::DwarfEmitterImpl::init(), initRelocations(), llvm::SpecialCaseList::Matcher::insert(), isBlock(), llvm::object::ExportDirectoryEntryRef::isForwarder(), isValidMachOCannonicalName(), llvm::coverage::CoverageMapping::load(), llvm::object::ResourceSectionRef::load(), llvm::logicalview::LVBinaryReader::loadGenericTargetInfo(), localCache(), lookup(), llvm::gsym::FunctionInfo::lookup(), llvm::gsym::LineTable::lookup(), llvm::remarks::magicToFormat(), makeStringError(), malformedRecord(), llvm::objcopy::coff::Object::markSymbols(), llvm::remarks::ParsedStringTable::operator[](), llvm::ELFAttributeParser::parse(), parse(), llvm::DWARFDebugLine::LineTable::parse(), llvm::DWARFDebugFrame::parse(), llvm::dwarf::CFIProgram::parse(), llvm::DWARFDebugLine::Prologue::parse(), llvm::objcopy::elf::IHexRecord::parse(), llvm::RISCVISAInfo::parseArchString(), llvm::ELFAttributeParser::parseAttributeList(), parseBlock(), llvm::remarks::BitstreamParserHelper::parseBlockInfoBlock(), parseDWARF32StringOffsetsTableHeader(), parseDWARF64StringOffsetsTableHeader(), parseDWARFStringOffsetsTableHeader(), llvm::remarks::parseFormat(), llvm::remarks::parseHotnessThresholdOption(), parseMagic(), llvm::RISCVISAInfo::parseNormalizedArchString(), llvm::XCOFF::parseParmsType(), llvm::XCOFF::parseParmsTypeWithVecInfo(), llvm::remarks::YAMLRemarkParser::parseRemark(), llvm::MCSectionMachO::ParseSectionSpecifier(), llvm::ELFAttributeParser::parseStringAttribute(), parseStrTab(), parseStrTabSize(), llvm::ELFAttributeParser::parseSubsection(), parseV2DirFileTables(), parseV5DirFileTables(), parseV5EntryFormat(), llvm::XCOFF::parseVectorParmsType(), parseVersion(), llvm::ifs::populateDynamic(), processLoadCommands(), processMultiLetterExtension(), processRemarkVersion(), processSingleLetterExtension(), processStrTab(), llvm::xray::FileBasedRecordProducer::produce(), llvm::SimpleBitstreamCursor::Read(), llvm::xray::readBinaryFormatHeader(), llvm::ifs::readELFFile(), llvm::ifs::readIFSFromBuffer(), llvm::SimpleBitstreamCursor::ReadVBR(), llvm::SimpleBitstreamCursor::ReadVBR64(), llvm::objcopy::elf::Section::removeSectionReferences(), llvm::objcopy::elf::SymbolTableSection::removeSectionReferences(), llvm::objcopy::elf::RelocationSection::removeSectionReferences(), llvm::objcopy::elf::GroupSection::removeSectionReferences(), llvm::objcopy::elf::DynamicRelocationSection::removeSectionReferences(), llvm::objcopy::macho::Object::removeSections(), llvm::objcopy::elf::RelocationSection::removeSymbols(), llvm::objcopy::elf::GroupSection::removeSymbols(), reportError(), llvm::remarks::RemarkStreamer::setFilter(), llvm::dwarf_linker::classic::DWARFLinker::setTargetDWARFVersion(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::setTargetDWARFVersion(), llvm::BitstreamCursor::SkipBlock(), llvm::BitstreamCursor::skipRecord(), splitExtsByUnderscore(), timeTraceProfilerWrite(), llvm::DWARFUnit::tryExtractDIEsIfNeeded(), unknownRecord(), unsupported(), updateSection(), llvm::objcopy::elf::Object::updateSection(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::validateAndUpdateOptions(), llvm::StrOffsetsContributionDescriptor::validateContributionSize(), validateMagicNumber(), llvm::GISelCSEInfo::verify(), llvm::xray::BlockVerifier::verify(), llvm::gsym::DwarfTransformer::verify(), llvm::xray::RecordInitializer::visit(), llvm::objcopy::elf::ELFSectionWriter< ELFT >::visit(), llvm::objcopy::elf::BinarySectionWriter::visit(), llvm::DWARFDebugLoclists::visitLocationList(), llvm::codeview::CVSymbolVisitor::visitSymbolStreamFiltered(), llvm::offloading::wrapCudaBinary(), llvm::offloading::wrapHIPBinary(), llvm::offloading::wrapOpenMPBinaries(), llvm::objcopy::coff::COFFWriter::write(), llvm::objcopy::macho::MachOWriter::write(), llvm::objcopy::xcoff::XCOFFWriter::write(), writeDIE(), writeDWARFExpression(), llvm::ifs::writeELFBinaryToFile(), writeListEntryAddress(), and writeVariableSizedInteger().

◆ createStringError() [3/4]

Error llvm::createStringError ( std::error_code  EC,
char const Msg 
)

Definition at line 152 of file Error.cpp.

◆ createStringError() [4/4]

Error llvm::createStringError ( std::error_code  EC,
const Twine S 
)
inline

Definition at line 1268 of file Error.h.

References createStringError(), and llvm::Twine::str().

◆ createStripDebugMachineModulePass()

Machine Strip Debug false ModulePass * llvm::createStripDebugMachineModulePass ( bool  OnlyDebugified)

Creates MIR Strip Debug pass.

See also
MachineStripDebug.cpp If OnlyDebugified is true then it will only strip debug info if it was added by a Debugify pass. The module will be left unchanged if the debug info was generated by another source such as clang.

Definition at line 106 of file MachineStripDebug.cpp.

Referenced by llvm::TargetPassConfig::addStripDebugPass().

◆ createStructurizeCFGPass()

Pass * llvm::createStructurizeCFGPass ( bool  SkipUniformRegions = false)

When SkipUniformRegions is true the structizer will not structurize regions that only contain uniform branches.

Definition at line 1205 of file StructurizeCFG.cpp.

◆ createSVEIntrinsicOptsPass()

ModulePass * llvm::createSVEIntrinsicOptsPass ( )

Definition at line 80 of file SVEIntrinsicOpts.cpp.

◆ createSystemZCopyPhysRegsPass()

FunctionPass * llvm::createSystemZCopyPhysRegsPass ( SystemZTargetMachine TM)

◆ createSystemZELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createSystemZELFObjectWriter ( uint8_t  OSABI)

Definition at line 203 of file SystemZELFObjectWriter.cpp.

◆ createSystemZElimComparePass()

FunctionPass * llvm::createSystemZElimComparePass ( SystemZTargetMachine TM)

Definition at line 734 of file SystemZElimCompare.cpp.

◆ createSystemZGOFFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createSystemZGOFFObjectWriter ( )

Definition at line 25 of file SystemZGOFFObjectWriter.cpp.

◆ createSystemZISelDag()

FunctionPass * llvm::createSystemZISelDag ( SystemZTargetMachine TM,
CodeGenOptLevel  OptLevel 
)

Definition at line 391 of file SystemZISelDAGToDAG.cpp.

References TM.

◆ createSystemZLDCleanupPass()

FunctionPass * llvm::createSystemZLDCleanupPass ( SystemZTargetMachine TM)

◆ createSystemZLongBranchPass()

FunctionPass * llvm::createSystemZLongBranchPass ( SystemZTargetMachine TM)

Definition at line 485 of file SystemZLongBranch.cpp.

◆ createSystemZMCAsmBackend()

MCAsmBackend * llvm::createSystemZMCAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createSystemZMCCodeEmitter()

MCCodeEmitter * llvm::createSystemZMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 224 of file SystemZMCCodeEmitter.cpp.

Referenced by LLVMInitializeSystemZTargetMC().

◆ createSystemZPostRewritePass()

FunctionPass * llvm::createSystemZPostRewritePass ( SystemZTargetMachine TM)

◆ createSystemZShortenInstPass()

FunctionPass * llvm::createSystemZShortenInstPass ( SystemZTargetMachine TM)

◆ createSystemZTDCPass()

FunctionPass * llvm::createSystemZTDCPass ( )

◆ createTailCallEliminationPass()

Tail Call false FunctionPass * llvm::createTailCallEliminationPass ( )

Definition at line 936 of file TailRecursionElimination.cpp.

◆ createTargetReduction()

Value * llvm::createTargetReduction ( IRBuilderBase B,
const RecurrenceDescriptor Desc,
Value Src,
PHINode OrigPhi = nullptr 
)

Create a generic target reduction using a recurrence descriptor Desc The target is queried to determine if intrinsics or shuffle sequences are required to implement the reduction.

Fast-math-flags are propagated using the RecurrenceDescriptor.

Definition at line 1207 of file LoopUtils.cpp.

References B, createAnyOfTargetReduction(), createSimpleTargetReduction(), and llvm::RecurrenceDescriptor::isAnyOfRecurrenceKind().

Referenced by llvm::VPReductionRecipe::execute().

◆ createTargetTransformInfoWrapperPass()

ImmutablePass * llvm::createTargetTransformInfoWrapperPass ( TargetIRAnalysis  TIRA)

Create an analysis pass wrapper around a TTI object.

This analysis pass just holds the TTI instance and makes it available to clients.

Definition at line 1374 of file TargetTransformInfo.cpp.

Referenced by llvm::TargetPassConfig::addISelPasses(), and LLVMAddAnalysisPasses().

◆ createThumb2ITBlockPass()

FunctionPass * llvm::createThumb2ITBlockPass ( )

createThumb2ITBlockPass - Returns an instance of the Thumb2 IT blocks insertion pass.

Definition at line 309 of file Thumb2ITBlockPass.cpp.

◆ createThumb2SizeReductionPass()

FunctionPass * llvm::createThumb2SizeReductionPass ( std::function< bool(const Function &)>  Ftor = nullptr)

createThumb2SizeReductionPass - Returns an instance of the Thumb2 size reduction pass.

Definition at line 1161 of file Thumb2SizeReduction.cpp.

◆ createTLSVariableHoistPass()

TLS Variable false FunctionPass * llvm::createTLSVariableHoistPass ( )

Definition at line 83 of file TLSVariableHoist.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ createTripCountSCEV()

const SCEV * llvm::createTripCountSCEV ( Type IdxTy,
PredicatedScalarEvolution PSE,
Loop OrigLoop 
)

◆ createTypeBasedAAWrapperPass()

ImmutablePass * llvm::createTypeBasedAAWrapperPass ( )

◆ createTypePromotionLegacyPass()

FunctionPass * llvm::createTypePromotionLegacyPass ( )

Create IR Type Promotion pass.

See also
TypePromotion.cpp

Definition at line 1038 of file TypePromotion.cpp.

◆ createUnaryMask()

llvm::SmallVector< int, 16 > llvm::createUnaryMask ( ArrayRef< int >  Mask,
unsigned  NumElts 
)

Given a shuffle mask for a binary shuffle, create the equivalent shuffle mask assuming both operands are identical.

This assumes that the unary shuffle will use elements from operand 0 (operand 1 will be unused).

Definition at line 893 of file VectorUtils.cpp.

References assert(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by llvm::InstCombinerImpl::visitShuffleVectorInst().

◆ createUnifyLoopExitsPass()

FunctionPass * llvm::createUnifyLoopExitsPass ( )

Definition at line 59 of file UnifyLoopExits.cpp.

◆ createUnpackMachineBundles()

FunctionPass * llvm::createUnpackMachineBundles ( std::function< bool(const MachineFunction &)>  Ftor)

Definition at line 80 of file MachineInstrBundle.cpp.

◆ createUnpackShuffleMask()

void llvm::createUnpackShuffleMask ( EVT  VT,
SmallVectorImpl< int > &  Mask,
bool  Lo,
bool  Unary 
)

◆ createUnreachableBlockEliminationPass()

FunctionPass * llvm::createUnreachableBlockEliminationPass ( )

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?).

As such, a code generator should either not instruction select unreachable blocks, or run this pass as its last LLVM modifying pass to clean up blocks that are not reachable from the entry block.

Referenced by llvm::TargetPassConfig::addIRPasses(), and llvm::TargetPassConfig::addPassesToHandleExceptions().

◆ createVEAsmBackend()

MCAsmBackend * llvm::createVEAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createVEELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createVEELFObjectWriter ( uint8_t  OSABI)

Definition at line 159 of file VEELFObjectWriter.cpp.

◆ createVEISelDag()

FunctionPass * llvm::createVEISelDag ( VETargetMachine TM)

createVEISelDag - This pass converts a legalized DAG into a VE-specific DAG, ready for instruction scheduling.

Definition at line 338 of file VEISelDAGToDAG.cpp.

References TM.

◆ createVEMCCodeEmitter()

MCCodeEmitter * llvm::createVEMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 151 of file VEMCCodeEmitter.cpp.

Referenced by LLVMInitializeVETargetMC().

◆ createVerifierPass()

FunctionPass * llvm::createVerifierPass ( bool  FatalErrors = true)

◆ createVirtRegRewriter()

FunctionPass * llvm::createVirtRegRewriter ( bool  ClearVirtRegs = true)

Definition at line 645 of file VirtRegMap.cpp.

◆ createVLIWDAGScheduler()

ScheduleDAGSDNodes * llvm::createVLIWDAGScheduler ( SelectionDAGISel IS,
CodeGenOptLevel  OptLevel 
)

createVLIWDAGScheduler - Scheduler for VLIW targets.

createVLIWDAGScheduler - This creates a top-down list scheduler.

This creates top down DFA driven list scheduler with clustering heuristic to control register pressure.

Definition at line 268 of file ScheduleDAGVLIW.cpp.

References llvm::SelectionDAGISel::AA, and llvm::SelectionDAGISel::MF.

Referenced by createDefaultScheduler().

◆ createVOPDPairingMutation()

std::unique_ptr< ScheduleDAGMutation > llvm::createVOPDPairingMutation ( )

Definition at line 189 of file GCNVOPDUtils.cpp.

References shouldScheduleVOPDAdjacent().

◆ createWasmAsmParser()

MCAsmParserExtension * llvm::createWasmAsmParser ( )

Definition at line 318 of file WasmAsmParser.cpp.

◆ createWasmDwoObjectWriter()

std::unique_ptr< MCObjectWriter > llvm::createWasmDwoObjectWriter ( std::unique_ptr< MCWasmObjectTargetWriter MOTW,
raw_pwrite_stream OS,
raw_pwrite_stream DwoOS 
)

Definition at line 1976 of file WasmObjectWriter.cpp.

References OS.

Referenced by llvm::MCAsmBackend::createDwoObjectWriter().

◆ createWasmEHPass()

Prepare WebAssembly false FunctionPass * llvm::createWasmEHPass ( )

createWasmEHPass - This pass adapts exception handling code to use WebAssembly's exception handling scheme.

Definition at line 160 of file WasmEHPrepare.cpp.

Referenced by llvm::TargetPassConfig::addPassesToHandleExceptions().

◆ createWasmObjectWriter()

std::unique_ptr< MCObjectWriter > llvm::createWasmObjectWriter ( std::unique_ptr< MCWasmObjectTargetWriter MOTW,
raw_pwrite_stream OS 
)

Construct a new Wasm writer instance.

Parameters
MOTW- The target specific Wasm writer subclass.
OS- The stream to write to.
Returns
The constructed object writer.

Definition at line 1970 of file WasmObjectWriter.cpp.

References OS.

Referenced by llvm::MCAsmBackend::createObjectWriter().

◆ createWasmStreamer()

MCStreamer * llvm::createWasmStreamer ( MCContext Ctx,
std::unique_ptr< MCAsmBackend > &&  TAB,
std::unique_ptr< MCObjectWriter > &&  OW,
std::unique_ptr< MCCodeEmitter > &&  CE,
bool  RelaxAll 
)

◆ createWebAssemblyAddMissingPrototypes()

ModulePass * llvm::createWebAssemblyAddMissingPrototypes ( )

◆ createWebAssemblyArgumentMove()

FunctionPass * llvm::createWebAssemblyArgumentMove ( )

◆ createWebAssemblyAsmBackend()

MCAsmBackend * llvm::createWebAssemblyAsmBackend ( const Triple TT)

Definition at line 127 of file WebAssemblyAsmBackend.cpp.

Referenced by createAsmBackend().

◆ createWebAssemblyCFGSort()

FunctionPass * llvm::createWebAssemblyCFGSort ( )

◆ createWebAssemblyCFGStackify()

FunctionPass * llvm::createWebAssemblyCFGStackify ( )

◆ createWebAssemblyDebugFixup()

FunctionPass * llvm::createWebAssemblyDebugFixup ( )

◆ createWebAssemblyExplicitLocals()

FunctionPass * llvm::createWebAssemblyExplicitLocals ( )

◆ createWebAssemblyFixBrTableDefaults()

FunctionPass * llvm::createWebAssemblyFixBrTableDefaults ( )

◆ createWebAssemblyFixFunctionBitcasts()

ModulePass * llvm::createWebAssemblyFixFunctionBitcasts ( )

◆ createWebAssemblyFixIrreducibleControlFlow()

FunctionPass * llvm::createWebAssemblyFixIrreducibleControlFlow ( )

◆ createWebAssemblyISelDag()

FunctionPass * llvm::createWebAssemblyISelDag ( WebAssemblyTargetMachine TM,
CodeGenOptLevel  OptLevel 
)

This pass converts a legalized DAG into a WebAssembly-specific DAG, ready for instruction scheduling.

Definition at line 410 of file WebAssemblyISelDAGToDAG.cpp.

References TM.

◆ createWebAssemblyLateEHPrepare()

FunctionPass * llvm::createWebAssemblyLateEHPrepare ( )

◆ createWebAssemblyLowerBrUnless()

FunctionPass * llvm::createWebAssemblyLowerBrUnless ( )

◆ createWebAssemblyLowerEmscriptenEHSjLj()

ModulePass * llvm::createWebAssemblyLowerEmscriptenEHSjLj ( )

◆ createWebAssemblyLowerRefTypesIntPtrConv()

FunctionPass * llvm::createWebAssemblyLowerRefTypesIntPtrConv ( )

◆ createWebAssemblyMCCodeEmitter()

MCCodeEmitter * llvm::createWebAssemblyMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 58 of file WebAssemblyMCCodeEmitter.cpp.

Referenced by createCodeEmitter().

◆ createWebAssemblyMCLowerPrePass()

ModulePass * llvm::createWebAssemblyMCLowerPrePass ( )

◆ createWebAssemblyMemIntrinsicResults()

FunctionPass * llvm::createWebAssemblyMemIntrinsicResults ( )

◆ createWebAssemblyNullifyDebugValueLists()

FunctionPass * llvm::createWebAssemblyNullifyDebugValueLists ( )

◆ createWebAssemblyOptimizeLiveIntervals()

FunctionPass * llvm::createWebAssemblyOptimizeLiveIntervals ( )

◆ createWebAssemblyOptimizeReturned()

FunctionPass * llvm::createWebAssemblyOptimizeReturned ( )

◆ createWebAssemblyPeephole()

FunctionPass * llvm::createWebAssemblyPeephole ( )

◆ createWebAssemblyRefTypeMem2Local()

FunctionPass * llvm::createWebAssemblyRefTypeMem2Local ( )

◆ createWebAssemblyRegColoring()

FunctionPass * llvm::createWebAssemblyRegColoring ( )

◆ createWebAssemblyRegNumbering()

FunctionPass * llvm::createWebAssemblyRegNumbering ( )

◆ createWebAssemblyRegStackify()

FunctionPass * llvm::createWebAssemblyRegStackify ( )

◆ createWebAssemblyReplacePhysRegs()

FunctionPass * llvm::createWebAssemblyReplacePhysRegs ( )

◆ createWebAssemblySetP2AlignOperands()

FunctionPass * llvm::createWebAssemblySetP2AlignOperands ( )

◆ createWebAssemblyWasmObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createWebAssemblyWasmObjectWriter ( bool  Is64Bit,
bool  IsEmscripten 
)

Definition at line 164 of file WebAssemblyWasmObjectWriter.cpp.

◆ createWideIV()

PHINode * llvm::createWideIV ( const WideIVInfo WI,
LoopInfo LI,
ScalarEvolution SE,
SCEVExpander Rewriter,
DominatorTree DT,
SmallVectorImpl< WeakTrackingVH > &  DeadInsts,
unsigned NumElimExt,
unsigned NumWidened,
bool  HasGuards,
bool  UsePostIncrementRanges 
)

Widen Induction Variables - Extend the width of an IV to cover its widest uses.

Definition at line 2250 of file SimplifyIndVar.cpp.

References Rewriter, UsePostIncrementRanges, and WidenIV.

Referenced by CanWidenIV().

◆ createWinCOFFDwoObjectWriter()

std::unique_ptr< MCObjectWriter > llvm::createWinCOFFDwoObjectWriter ( std::unique_ptr< MCWinCOFFObjectTargetWriter MOTW,
raw_pwrite_stream OS,
raw_pwrite_stream DwoOS 
)

Definition at line 1261 of file WinCOFFObjectWriter.cpp.

References OS.

Referenced by llvm::MCAsmBackend::createDwoObjectWriter().

◆ createWinCOFFObjectWriter()

std::unique_ptr< MCObjectWriter > llvm::createWinCOFFObjectWriter ( std::unique_ptr< MCWinCOFFObjectTargetWriter MOTW,
raw_pwrite_stream OS 
)

Construct a new Win COFF writer instance.

Parameters
MOTW- The target specific WinCOFF writer subclass.
OS- The stream to write to.
Returns
The constructed object writer.

Definition at line 1256 of file WinCOFFObjectWriter.cpp.

References OS.

Referenced by llvm::MCAsmBackend::createObjectWriter().

◆ createWinEHPass()

FunctionPass * llvm::createWinEHPass ( bool  DemoteCatchSwitchPHIOnly = false)

createWinEHPass - Prepares personality functions used by MSVC on Windows, in addition to the Itanium LSDA based personalities.

Referenced by llvm::TargetPassConfig::addPassesToHandleExceptions().

◆ createX86_32AsmBackend()

MCAsmBackend * llvm::createX86_32AsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createX86_64AsmBackend()

MCAsmBackend * llvm::createX86_64AsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createX86ArgumentStackSlotPass()

FunctionPass * llvm::createX86ArgumentStackSlotPass ( )

◆ createX86AsmTargetStreamer()

MCTargetStreamer * llvm::createX86AsmTargetStreamer ( MCStreamer S,
formatted_raw_ostream OS,
MCInstPrinter InstPrinter,
bool  IsVerboseAsm 
)

Implements X86-only directives for assembly emission.

Definition at line 446 of file X86WinCOFFTargetStreamer.cpp.

References OS.

Referenced by LLVMInitializeX86TargetMC().

◆ createX86AvoidStoreForwardingBlocks()

Machine code false FunctionPass * llvm::createX86AvoidStoreForwardingBlocks ( )

Return a pass that avoids creating store forward block issues in the hardware.

Definition at line 129 of file X86AvoidStoreForwardingBlocks.cpp.

◆ createX86AvoidTrailingCallPass()

FunctionPass * llvm::createX86AvoidTrailingCallPass ( )

Return a pass that inserts int3 at the end of the function if it ends with a CALL instruction.

The pass does the same for each funclet as well. This ensures that the open interval of function start and end PCs contains all return addresses for the benefit of the Windows x64 unwinder.

Definition at line 64 of file X86AvoidTrailingCall.cpp.

◆ createX86CallFrameOptimization()

FunctionPass * llvm::createX86CallFrameOptimization ( )

Return a pass that optimizes the code-size of x86 call sequences.

This is done by replacing esp-relative movs with pushes.

Definition at line 629 of file X86CallFrameOptimization.cpp.

◆ createX86CmovConverterPass()

X86 cmov false FunctionPass * llvm::createX86CmovConverterPass ( )

This pass converts X86 cmov instructions into branch when profitable.

Definition at line 896 of file X86CmovConversion.cpp.

◆ createX86CompressEVEXPass()

FunctionPass * llvm::createX86CompressEVEXPass ( )

This pass compress instructions from EVEX space to legacy/VEX/EVEX space when possible in order to reduce code size or facilitate HW decoding.

Definition at line 304 of file X86CompressEVEX.cpp.

◆ createX86DiscriminateMemOpsPass()

FunctionPass * llvm::createX86DiscriminateMemOpsPass ( )

This pass ensures instructions featuring a memory operand have distinctive <LineNumber, Discriminator> (with respect to eachother)

Definition at line 185 of file X86DiscriminateMemOps.cpp.

◆ createX86DomainReassignmentPass()

FunctionPass * llvm::createX86DomainReassignmentPass ( )

Return a Machine IR pass that reassigns instruction chains from one domain to another, when profitable.

◆ createX86DynAllocaExpander()

FunctionPass * llvm::createX86DynAllocaExpander ( )

Return a pass that expands DynAlloca pseudo-instructions.

Definition at line 75 of file X86DynAllocaExpander.cpp.

◆ createX86ELFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createX86ELFObjectWriter ( bool  IsELF64,
uint8_t  OSABI,
uint16_t  EMachine 
)

Construct an X86 ELF object writer.

Definition at line 362 of file X86ELFObjectWriter.cpp.

◆ createX86ExpandPseudoPass()

FunctionPass * llvm::createX86ExpandPseudoPass ( )

Return a Machine IR pass that expands X86-specific pseudo instructions into a sequence of actual instructions.

Returns an instance of the pseudo instruction expansion pass.

This pass must run after prologue/epilogue insertion and before lowering the MachineInstr to MC.

Definition at line 847 of file X86ExpandPseudo.cpp.

◆ createX86FastPreTileConfigPass()

FunctionPass * llvm::createX86FastPreTileConfigPass ( )

Return a pass that preconfig the tile registers before fast reg allocation.

Definition at line 708 of file X86FastPreTileConfig.cpp.

◆ createX86FastTileConfigPass()

FunctionPass * llvm::createX86FastTileConfigPass ( )

Return a pass that config the tile registers after fast reg allocation.

Definition at line 186 of file X86FastTileConfig.cpp.

◆ createX86FixupBWInsts()

FunctionPass * llvm::createX86FixupBWInsts ( )

Return a Machine IR pass that selectively replaces certain byte and word instructions by equivalent 32 bit instructions, in order to eliminate partial register usage, false dependences on the upper portions of registers, and to save code size.

Definition at line 158 of file X86FixupBWInsts.cpp.

◆ createX86FixupInstTuning()

FunctionPass * llvm::createX86FixupInstTuning ( )

Return a pass that replaces equivalent slower instructions with faster ones.

Definition at line 68 of file X86FixupInstTuning.cpp.

◆ createX86FixupLEAs()

FunctionPass * llvm::createX86FixupLEAs ( )

Return a pass that selectively replaces certain instructions (like add, sub, inc, dec, some shifts, and some multiplies) by equivalent LEA instructions, in order to eliminate execution delays in some processors.

Definition at line 214 of file X86FixupLEAs.cpp.

◆ createX86FixupSetCC()

FunctionPass * llvm::createX86FixupSetCC ( )

Return a pass that transforms setcc + movzx pairs into xor + setcc.

Definition at line 59 of file X86FixupSetCC.cpp.

◆ createX86FixupVectorConstants()

FunctionPass * llvm::createX86FixupVectorConstants ( )

Return a pass that reduces the size of vector constant pool loads.

Definition at line 63 of file X86FixupVectorConstants.cpp.

◆ createX86FlagsCopyLoweringPass()

X86 EFLAGS copy false FunctionPass * llvm::createX86FlagsCopyLoweringPass ( )

Return a pass that lowers EFLAGS copy pseudo instructions.

Definition at line 136 of file X86FlagsCopyLowering.cpp.

◆ createX86FloatingPointStackifierPass()

X86 FP false FunctionPass * llvm::createX86FloatingPointStackifierPass ( )

This function returns a pass which converts floating-point register references and pseudo instructions into floating-point stack references and physical instructions.

Definition at line 310 of file X86FloatingPoint.cpp.

◆ createX86GlobalBaseRegPass()

FunctionPass * llvm::createX86GlobalBaseRegPass ( )

This pass initializes a global base register for PIC on x86-32.

Definition at line 10225 of file X86InstrInfo.cpp.

◆ createX86IndirectBranchTrackingPass()

FunctionPass * llvm::createX86IndirectBranchTrackingPass ( )

This pass inserts ENDBR instructions before indirect jump/call destinations as part of CET IBT mechanism.

Definition at line 68 of file X86IndirectBranchTracking.cpp.

◆ createX86IndirectThunksPass()

FunctionPass * llvm::createX86IndirectThunksPass ( )

This pass creates the thunks for the retpoline feature.

Definition at line 257 of file X86IndirectThunks.cpp.

◆ createX86InsertPrefetchPass()

FunctionPass * llvm::createX86InsertPrefetchPass ( )

This pass applies profiling information to insert cache prefetches.

Definition at line 259 of file X86InsertPrefetch.cpp.

References PrefetchHintsFile.

◆ createX86InsertX87waitPass()

FunctionPass * llvm::createX86InsertX87waitPass ( )

This pass insert wait instruction after X87 instructions which could raise fp exceptions when strict-fp enabled.

Definition at line 56 of file X86InsertWait.cpp.

◆ createX86InstructionSelector()

InstructionSelector * llvm::createX86InstructionSelector ( const X86TargetMachine TM,
X86Subtarget Subtarget,
X86RegisterBankInfo RBI 
)

Definition at line 1834 of file X86InstructionSelector.cpp.

References TM.

Referenced by llvm::X86Subtarget::X86Subtarget().

◆ createX86ISelDag()

FunctionPass * llvm::createX86ISelDag ( X86TargetMachine TM,
CodeGenOptLevel  OptLevel 
)

This pass converts a legalized DAG into a X86-specific DAG, ready for instruction scheduling.

Definition at line 6556 of file X86ISelDAGToDAG.cpp.

References TM.

◆ createX86IssueVZeroUpperPass()

FunctionPass * llvm::createX86IssueVZeroUpperPass ( )

This pass inserts AVX vzeroupper instructions before each call to avoid transition penalty between functions encoded with AVX and SSE.

Definition at line 116 of file X86VZeroUpper.cpp.

◆ createX86LoadValueInjectionLoadHardeningPass()

X86 LVI load false FunctionPass * llvm::createX86LoadValueInjectionLoadHardeningPass ( )

Definition at line 809 of file X86LoadValueInjectionLoadHardening.cpp.

◆ createX86LoadValueInjectionRetHardeningPass()

FunctionPass * llvm::createX86LoadValueInjectionRetHardeningPass ( )

◆ createX86LowerAMXIntrinsicsPass()

false FunctionPass * llvm::createX86LowerAMXIntrinsicsPass ( )

The pass transforms amx intrinsics to scalar operation if the function has optnone attribute or it is O0.

Definition at line 676 of file X86LowerAMXIntrinsics.cpp.

◆ createX86LowerAMXTypePass()

false FunctionPass * llvm::createX86LowerAMXTypePass ( )

The pass transforms load/store <256 x i32> to AMX load/store intrinsics or split the data to two <128 x i32>.

Definition at line 1282 of file X86LowerAMXType.cpp.

◆ createX86LowerTileCopyPass()

FunctionPass * llvm::createX86LowerTileCopyPass ( )

Return a pass that lower the tile copy instruction.

Definition at line 68 of file X86LowerTileCopy.cpp.

◆ createX86MachObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createX86MachObjectWriter ( bool  Is64Bit,
uint32_t  CPUType,
uint32_t  CPUSubtype 
)

Construct an X86 Mach-O object writer.

Definition at line 603 of file X86MachObjectWriter.cpp.

◆ createX86MacroFusionDAGMutation()

std::unique_ptr< ScheduleDAGMutation > llvm::createX86MacroFusionDAGMutation ( )

Note that you have to add: DAG.addMutation(createX86MacroFusionDAGMutation()); to X86PassConfig::createMachineScheduler() to have an effect.

Definition at line 70 of file X86MacroFusion.cpp.

References createMacroFusionDAGMutation(), and shouldScheduleAdjacent().

Referenced by llvm::X86Subtarget::getPostRAMutations().

◆ createX86MCCodeEmitter()

MCCodeEmitter * llvm::createX86MCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 2010 of file X86MCCodeEmitter.cpp.

Referenced by LLVMInitializeX86TargetMC().

◆ createX86NullTargetStreamer()

MCTargetStreamer * llvm::createX86NullTargetStreamer ( MCStreamer S)
inline

Implements X86-only null emission.

Definition at line 39 of file X86TargetStreamer.h.

Referenced by LLVMInitializeX86TargetMC().

◆ createX86ObjectTargetStreamer()

MCTargetStreamer * llvm::createX86ObjectTargetStreamer ( MCStreamer S,
const MCSubtargetInfo STI 
)

Implements X86-only directives for object files.

Definition at line 456 of file X86WinCOFFTargetStreamer.cpp.

References llvm::MCSubtargetInfo::getTargetTriple(), and llvm::Triple::isOSBinFormatCOFF().

Referenced by LLVMInitializeX86TargetMC().

◆ createX86OptimizeLEAs()

FunctionPass * llvm::createX86OptimizeLEAs ( )

Return a pass that removes redundant LEA instructions and redundant address recalculations.

Definition at line 314 of file X86OptimizeLEAs.cpp.

◆ createX86PadShortFunctions()

FunctionPass * llvm::createX86PadShortFunctions ( )

Return a pass that pads short functions with NOOPs.

This will prevent a stall when returning on the Atom.

Definition at line 99 of file X86PadShortFunction.cpp.

◆ createX86PartialReductionPass()

FunctionPass * llvm::createX86PartialReductionPass ( )

This pass optimizes arithmetic based on knowledge that is only used by a reduction sequence and is therefore safe to reassociate in interesting ways.

Definition at line 60 of file X86PartialReduction.cpp.

◆ createX86PreTileConfigPass()

FunctionPass * llvm::createX86PreTileConfigPass ( )

Return a pass that insert pseudo tile config instruction.

Definition at line 411 of file X86PreTileConfig.cpp.

◆ createX86ReturnThunksPass()

FunctionPass * llvm::createX86ReturnThunksPass ( )

This pass replaces ret instructions with jmp's to __x86_return thunk.

Definition at line 98 of file X86ReturnThunks.cpp.

◆ createX86SpeculativeExecutionSideEffectSuppression()

FunctionPass * llvm::createX86SpeculativeExecutionSideEffectSuppression ( )

◆ createX86SpeculativeLoadHardeningPass()

X86 speculative load false FunctionPass * llvm::createX86SpeculativeLoadHardeningPass ( )

Definition at line 2266 of file X86SpeculativeLoadHardening.cpp.

◆ createX86TileConfigPass()

FunctionPass * llvm::createX86TileConfigPass ( )

Return a pass that config the tile registers.

Definition at line 201 of file X86TileConfig.cpp.

◆ createX86WinCOFFObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createX86WinCOFFObjectWriter ( bool  Is64Bit)

Construct an X86 Win COFF object writer.

Definition at line 118 of file X86WinCOFFObjectWriter.cpp.

◆ createX86WinCOFFStreamer()

MCStreamer * llvm::createX86WinCOFFStreamer ( MCContext C,
std::unique_ptr< MCAsmBackend > &&  AB,
std::unique_ptr< MCObjectWriter > &&  OW,
std::unique_ptr< MCCodeEmitter > &&  CE,
bool  RelaxAll,
bool  IncrementalLinkerCompatible 
)

Construct an X86 Windows COFF machine code streamer which will generate PE/COFF format object files.

Takes ownership of AB and CE.

Definition at line 69 of file X86WinCOFFStreamer.cpp.

References llvm::CallingConv::C.

Referenced by LLVMInitializeX86TargetMC().

◆ createX86WinEHStatePass()

FunctionPass * llvm::createX86WinEHStatePass ( )

Return an IR pass that inserts EH registration stack objects and explicit EH state updates.

This pass must run after EH preparation, which does Windows-specific but architecture-neutral preparation.

Definition at line 114 of file X86WinEHState.cpp.

◆ createXCOFFAsmParser()

MCAsmParserExtension * llvm::createXCOFFAsmParser ( )

Definition at line 48 of file XCOFFAsmParser.cpp.

◆ createXCOFFObjectWriter()

std::unique_ptr< MCObjectWriter > llvm::createXCOFFObjectWriter ( std::unique_ptr< MCXCOFFObjectTargetWriter MOTW,
raw_pwrite_stream OS 
)

Definition at line 1751 of file XCOFFObjectWriter.cpp.

References OS.

Referenced by llvm::MCAsmBackend::createObjectWriter().

◆ createXCOFFStreamer()

MCStreamer * llvm::createXCOFFStreamer ( MCContext Ctx,
std::unique_ptr< MCAsmBackend > &&  TAB,
std::unique_ptr< MCObjectWriter > &&  OW,
std::unique_ptr< MCCodeEmitter > &&  CE,
bool  RelaxAll 
)

◆ createXCoreFrameToArgsOffsetEliminationPass()

FunctionPass * llvm::createXCoreFrameToArgsOffsetEliminationPass ( )

createXCoreFrameToArgsOffsetEliminationPass - returns an instance of the Frame to args offset elimination pass

Definition at line 43 of file XCoreFrameToArgsOffsetElim.cpp.

◆ createXCoreISelDag()

FunctionPass * llvm::createXCoreISelDag ( XCoreTargetMachine TM,
CodeGenOptLevel  OptLevel 
)

createXCoreISelDag - This pass converts a legalized DAG into a XCore-specific DAG, ready for instruction scheduling.

Definition at line 90 of file XCoreISelDAGToDAG.cpp.

References TM.

◆ createXCoreLowerThreadLocalPass()

ModulePass * llvm::createXCoreLowerThreadLocalPass ( )

◆ createXtensaISelDag()

FunctionPass * llvm::createXtensaISelDag ( XtensaTargetMachine TM,
CodeGenOptLevel  OptLevel 
)

Definition at line 64 of file XtensaISelDAGToDAG.cpp.

References TM.

◆ createXtensaMCAsmBackend()

MCAsmBackend * llvm::createXtensaMCAsmBackend ( const Target T,
const MCSubtargetInfo STI,
const MCRegisterInfo MRI,
const MCTargetOptions Options 
)

◆ createXtensaMCCodeEmitter()

MCCodeEmitter * llvm::createXtensaMCCodeEmitter ( const MCInstrInfo MCII,
MCContext Ctx 
)

Definition at line 120 of file XtensaMCCodeEmitter.cpp.

Referenced by LLVMInitializeXtensaTargetMC().

◆ createXtensaObjectWriter()

std::unique_ptr< MCObjectTargetWriter > llvm::createXtensaObjectWriter ( uint8_t  OSABI,
bool  IsLittleEndian 
)

◆ CreateZ3Solver()

llvm::SMTSolverRef llvm::CreateZ3Solver ( )

Convenience method to create and Z3Solver object.

Definition at line 905 of file Z3Solver.cpp.

References report_fatal_error().

◆ CTLog2()

template<size_t kValue>
constexpr size_t llvm::CTLog2 ( )
inlineconstexpr

Compile time Log2.

Valid only for positive powers of two.

Definition at line 302 of file MathExtras.h.

References CTLog2(), and isPowerOf2_64().

Referenced by CTLog2().

◆ CTLog2< 1 >()

template<>
constexpr size_t llvm::CTLog2< 1 > ( )
inlineconstexpr

Definition at line 308 of file MathExtras.h.

◆ dbgs()

raw_ostream & llvm::dbgs ( )

dbgs() - This returns a reference to a raw_ostream for debugging messages.

dbgs - Return a circular-buffered debug stream.

If debugging is disabled it returns errs(). Use it like: dbgs() << "foo" << "bar";

Definition at line 163 of file Debug.cpp.

References llvm::sys::AddSignalHandler(), debug_user_sig_handler(), DebugBufferSize, DebugFlag, EnableDebugBuffering, and errs().

Referenced by llvm::InstructionWorklist::add(), llvm::orc::CtorDtorRunner::add(), llvm::logicalview::LVSymbolTable::add(), llvm::AA::PointerInfo::State::addAccess(), llvm::AArch64::ExtensionSet::addArchDefaults(), llvm::SSAUpdaterBulk::AddAvailableValue(), llvm::DwarfExpression::addConstantFP(), llvm::AArch64::ExtensionSet::addCPUDefaults(), addData(), addDiscriminators(), addEdge(), llvm::orc::addFunctionPointerRelocationsToCurrentSymbol(), llvm::ExecutionEngine::addGlobalMapping(), addInstToMergeableList(), llvm::TargetPassConfig::addIRPasses(), llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::addIRPasses(), llvm::TargetPassConfig::addISelPrepare(), llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::addISelPrepare(), llvm::PMDataManager::addLowerLevelRequiredPass(), llvm::DwarfExpression::addMachineRegExpression(), llvm::logicalview::LVScope::addMissingElements(), addNonNullAttrs(), llvm::logicalview::LVPatterns::addPatterns(), llvm::TargetPassConfig::addPrintPass(), llvm::RecurrenceDescriptor::AddReductionVar(), llvm::mca::RegisterFile::addRegisterWrite(), llvm::SPIRV::RequirementHandler::addRequirements(), llvm::logicalview::LVScopeCompileUnit::addSize(), llvm::DIEHash::addSLEB128(), llvm::BlockFrequencyInfoImplBase::addToDist(), llvm::DIEHash::addULEB128(), llvm::SSAUpdaterBulk::AddUse(), llvm::IVUsers::AddUsersIfInteresting(), llvm::SSAUpdaterBulk::AddVariable(), addVariantDeclaration(), llvm::ARMBasicBlockUtils::adjustBBOffsetsAfter(), adjustByValArgAlignment(), llvm::SystemZTTIImpl::adjustInliningThreshold(), llvm::MipsTargetLowering::AdjustInstrPostInstrSelection(), llvm::BlockFrequencyInfoImplBase::adjustLoopHeaderMass(), AdjustStackOffset(), llvm::HexagonHazardRecognizer::AdvanceCycle(), llvm::AggressiveAntiDepBreaker::AggressiveAntiDepBreaker(), llvm::AAResults::alias(), alignOutputBlockWithAggFunc(), llvm::jitlink::InProcessMemoryManager::allocate(), llvm::orc::EPCGenericRTDyldMemoryManager::allocateCodeSection(), llvm::orc::EPCGenericRTDyldMemoryManager::allocateDataSection(), llvm::RegAllocBase::allocatePhysRegs(), llvm::LoopVectorizeHints::allowVectorization(), llvm::GISelCSEInfo::analyze(), llvm::HexagonInstrInfo::analyzeBranch(), llvm::CCState::AnalyzeCallOperands(), llvm::CCState::AnalyzeCallResult(), llvm::GenericUniformityAnalysisImpl< ContextT >::analyzeControlDivergence(), llvm::InterleavedAccessInfo::analyzeInterleaving(), analyzeLoopUnrollCost(), analyzeParsePointLiveness(), annotateAllFunctions(), llvm::ModifiedPostOrder< ContextT >::appendBlock(), appendFoldCandidate(), appendJITDebugDescriptor(), llvm::LegalizeRuleSet::apply(), llvm::A57ChainingConstraint::apply(), llvm::CombinerHelper::applyCombineIndexedLoadStore(), llvm::RegisterBankInfo::applyDefaultMapping(), llvm::RuntimeDyldImpl::applyExternalSymbolRelocations(), llvm::jitlink::ppc64::applyFixup(), llvm::RegBankSelect::applyMapping(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::ApplyNextUpdate(), llvm::AMDGPUCallLowering::areCalleeOutgoingArgsTailCallable(), llvm::MemoryDepChecker::areDepsSafe(), areRuntimeChecksProfitable(), assertBranchOrSelectConditionHoisted(), llvm::LiveRegMatrix::assign(), llvm::ARCFrameLowering::assignCalleeSavedSpillSlots(), llvm::HexagonFrameLowering::assignCalleeSavedSpillSlots(), llvm::RegBankSelect::assignInstr(), llvm::RegBankSelect::assignmentMatch(), llvm::SelectionDAG::AssignTopologicalOrder(), llvm::lto::backend(), BadConditionCode(), llvm::jitlink::BasicLayout::BasicLayout(), llvm::LegalizerHelper::bitcast(), bitTrackingDCE(), llvm::AggressiveAntiDepBreaker::BreakAntiDependencies(), llvm::CriticalAntiDepBreaker::BreakAntiDependencies(), BreakUpSubtract(), BUCompareLatency(), buildAnyextOrCopy(), llvm::SPIRVGeneralDuplicatesTracker::buildDepsGraph(), llvm::slpvectorizer::BoUpSLP::buildExternalUses(), buildExtractionBlockSet(), llvm::VPlanSlp::buildGraph(), llvm::VPlanHCFGBuilder::buildHierarchicalCFG(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::jitlink::buildTables_ELF_aarch32(), llvm::jitlink::buildTables_MachO_arm64(), llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::bumpCycle(), llvm::SchedBoundary::bumpCycle(), llvm::SchedBoundary::bumpNode(), llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::bumpNode(), BURRSort(), calcPredicateUsingBooleans(), llvm::BlockFrequencyInfo::calculate(), llvm::BranchProbabilityInfo::calculate(), llvm::BlockFrequencyInfoImpl< BT >::calculate(), llvm::MachineBlockFrequencyInfo::calculate(), calculateCXXStateNumbers(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::CalculateFromScratch(), calculatePrevailingSummary(), llvm::LiveRangeEdit::calculateRegClassAndHint(), llvm::LoopVectorizationCostModel::calculateRegisterUsage(), llvm::ResourceManager::calculateResMII(), calculateSEHStateNumbers(), llvm::VirtRegAuxInfo::calculateSpillWeightsAndHints(), CalculateUnswitchCostMultiplier(), callBufferedPrintfArgPush(), llvm::RegAllocEvictionAdvisor::canAllocatePhysReg(), canCreateThunkFor(), CanFlattenLoopPair(), canFoldTermCondOfLoop(), CanGenerateTest(), llvm::HexagonPacketizerList::canPromoteToDotCur(), CanPropagatePredecessorsForPHIs(), llvm::RegAllocEvictionAdvisor::canReassign(), canRenameMOP(), canRenameUpToDef(), llvm::ResourceManager::canReserveResources(), llvm::MachineBasicBlock::canSplitCriticalEdge(), canTailPredicateLoop(), llvm::LoopVectorizationLegality::canVectorize(), CanWidenIV(), llvm::Combiner::WorkListMaintainer::changedInstr(), llvm::Combiner::WorkListMaintainer::changingInstr(), llvm::RuntimeDyldCheckerImpl::check(), llvm::GenericScheduler::checkAcyclicLatency(), llvm::TargetRegisterInfo::checkAllSuperRegsMarked(), CheckAndCreateOffsetAdd(), checkBiasedBranch(), checkBiasedSelect(), checkCondition(), checkDebugInfoMetadata(), checkDependency(), llvm::Attributor::checkForAllCallSites(), checkForAllInstructionsImpl(), llvm::Attributor::checkForAllUses(), checkForCyclesHelper(), checkFrameBase(), llvm::SchedBoundary::checkHazard(), checkHoistValue(), checkIfSafeAddSequence(), checkIntegrityScopesTree(), checkIVUsers(), checkOrderedReduction(), checkOuterLoopInsts(), checkOverflow(), checkPHIs(), llvm::SPIRV::RequirementHandler::checkSatisfiable(), llvm::GCNSchedStage::checkScheduling(), checkVOPDRegConstraints(), clampReturnedValueStates(), clampStackAlignment(), llvm::HexagonPacketizerList::cleanUpDotCur(), llvm::objcarc::PtrState::ClearKnownPositiveRefCount(), cloneAndAdaptNoAliasScopes(), llvm::FunctionComparator::cmpConstants(), llvm::jitlink::COFFLinkGraphBuilder::COFFLinkGraphBuilder(), llvm::rdf::DeadCodeElimination::collect(), collectBitParts(), collectDebugInfoMetadata(), llvm::LoopVectorizationCostModel::collectInLoopReductions(), collectMergeableInsts(), collectParametricTerms(), collectSRATypes(), collectUnswitchCandidates(), llvm::mca::RegisterFile::collectWrites(), colorEHFunclets(), combineInstructionsOverFunction(), llvm::Combiner::combineMachineInstrs(), llvm::PPCInstrInfo::combineRLWINM(), completeEphemeralValues(), llvm::HexagonEvaluator::composeWithSubRegIndex(), llvm::GenericUniformityAnalysisImpl< ContextT >::compute(), computeAccessFunctions(), llvm::ARMBasicBlockUtils::computeBlockSize(), llvm::SampleProfileLoaderBaseImpl< FT >::computeBlockWeights(), ComputeCrossModuleImport(), ComputeCrossModuleImportForModuleForTest(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), llvm::HexagonBlockRanges::computeDeadMap(), computeDeadSymbolsAndUpdateIndirectCalls(), computeHeuristicUnrollFactor(), computeImportForFunction(), ModuleImportsManager::computeImportForModule(), llvm::DivergencePropagator< ContextT >::computeJoin(), llvm::DivergencePropagator< ContextT >::computeJoinPoints(), llvm::GISelKnownBits::computeKnownBitsImpl(), llvm::safestack::StackLayout::computeLayout(), llvm::rdf::Liveness::computeLiveIns(), llvm::HexagonBlockRanges::computeLiveMap(), llvm::BlockFrequencyInfoImplBase::computeLoopScale(), llvm::RegBankSelect::computeMapping(), llvm::LoopVectorizationCostModel::computeMaxVF(), computePeelCount(), llvm::rdf::Liveness::computePhiInfo(), llvm::mca::computeProcResourceMasks(), llvm::IndexedReference::computeRefCost(), llvm::DeadLaneDetector::computeSubRegisterLaneBitInfo(), computeTripCount(), llvm::SMSchedule::computeUnpipelineableNodes(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::ComputeUnreachableDominators(), computeUnrollAndJamCount(), computeUnrollCount(), constrainSelectedInstRegOperands(), constructPointer(), ConvertDebugDeclareToDebugValue(), convertFloatingToInteger(), convertOrWithNoCommonBitsToAdd(), convertToDeclaration(), copyDebugInfoToPredecessor(), copyDebugInfoToSuccessor(), llvm::BranchProbabilityInfo::copyEdgeProbabilities(), llvm::SelectionDAG::copyExtraInfo(), llvm::HexagonInstrInfo::copyPhysReg(), llvm::VEInstrInfo::copyPhysReg(), llvm::CSKYInstrInfo::copyPhysReg(), llvm::M68kInstrInfo::copyPhysReg(), llvm::X86InstrInfo::copyPhysReg(), llvm::SchedBoundary::countResource(), ModuleImportsManager::create(), createAtomicLibcall(), llvm::AbstractDependenceGraphBuilder< GraphType >::createDefUseEdges(), llvm::Combiner::WorkListMaintainer::createdInstr(), llvm::orc::createDWARFContext(), llvm::logicalview::LVBinaryReader::createInstructions(), llvm::mca::RISCVInstrumentManager::createInstrument(), llvm::mca::RISCVInstrumentManager::createInstruments(), createIrreducibleLoop(), llvm::jitlink::createLinkGraphFromCOFFObject(), llvm::jitlink::createLinkGraphFromCOFFObject_x86_64(), llvm::jitlink::createLinkGraphFromELFObject_aarch32(), llvm::jitlink::createLinkGraphFromELFObject_aarch64(), llvm::jitlink::createLinkGraphFromELFObject_i386(), llvm::jitlink::createLinkGraphFromELFObject_loongarch(), llvm::jitlink::createLinkGraphFromELFObject_ppc64(), llvm::jitlink::createLinkGraphFromELFObject_riscv(), llvm::jitlink::createLinkGraphFromELFObject_x86_64(), llvm::jitlink::createLinkGraphFromMachOObject(), createMemLibcall(), createNaturalLoopInternal(), llvm::OpenMPIRBuilder::createParallel(), llvm::AbstractDependenceGraphBuilder< GraphType >::createPiBlocks(), createSwitchStatement(), createUnreachableSwitchDefault(), CreateVPTBlock(), createWrapper(), llvm::mca::ExecuteStage::cycleEnd(), DbgRewriteSalvageableDVIs(), LiveDebugValues::DbgValue::DbgValue(), debug_user_sig_handler(), debugAssign(), debugHWLoopFailure(), debugVectorizationMessage(), DecodeCCRU6Instruction(), decodeFPUV3Instruction(), DecodeGPR32RegisterClass(), DecodeLdLImmInstruction(), DecodeLdRLImmInstruction(), DecodeMoveHRegInstruction(), DecodeStLImmInstruction(), llvm::orc::JITDylib::define(), llvm::orc::LLJIT::deinitialize(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::DeleteEdge(), deleteIfDead(), deleteLoopIfDead(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::DeleteReachable(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::DeleteUnreachable(), delinearize(), llvm::DependenceInfo::depends(), llvm::Constant::destroyConstant(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::ARCFrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), determineSVEStackObjectOffsets(), llvm::AArch64::ExtensionSet::disable(), llvm::mca::LSUnit::dispatch(), llvm::mca::Scheduler::dispatch(), llvm::BlockFrequencyInfoImplBase::distributeMass(), llvm::orc::MaterializationUnit::doDiscard(), DoFlattenLoopPair(), doPromotion(), doRematerializations(), llvm::SelectionDAGBuilder::dropDanglingDebugInfo(), llvm::ModuloSchedule::dump(), llvm::logicalview::LVOperation::dump(), LiveDebugValues::MLocTracker::dump(), llvm::ScheduleDAGInstrs::Value2SUsMap::dump(), llvm::APFloat::dump(), llvm::APInt::dump(), llvm::CoalescingBitVector< IndexT >::dump(), llvm::GenericCycleInfo< ContextT >::dump(), llvm::Twine::dump(), llvm::AliasSet::dump(), llvm::AliasSetTracker::dump(), llvm::bfi_detail::BlockMass::dump(), llvm::BlockFrequencyInfoImplBase::dump(), llvm::CallGraph::dump(), llvm::CallGraphNode::dump(), llvm::CallGraphWrapperPass::dump(), llvm::ConstraintSystem::dump(), llvm::DominanceFrontierBase< BlockT, IsPostDom >::dump(), llvm::DominanceFrontierWrapperPass::dump(), llvm::DomTreeUpdater::dump(), llvm::IVUsers::dump(), llvm::Loop::dump(), llvm::MemoryAccess::dump(), llvm::MemorySSA::dump(), llvm::PHITransAddr::dump(), llvm::RegionBase< Tr >::dump(), llvm::RegionInfoBase< Tr >::dump(), llvm::SCEV::dump(), llvm::StackSafetyGlobalInfo::dump(), llvm::Trace::dump(), llvm::AccelTableBase::HashData::dump(), llvm::AccelTableBase::dump(), llvm::AppleAccelTableData::Atom::dump(), llvm::DIEAbbrev::dump(), llvm::DIEValue::dump(), llvm::DIE::dump(), llvm::RegBankSelect::MappingCost::dump(), llvm::LiveDebugVariables::dump(), llvm::LiveRange::Segment::dump(), llvm::LiveRange::dump(), llvm::LiveInterval::SubRange::dump(), llvm::LiveInterval::dump(), llvm::LivePhysRegs::dump(), llvm::LiveVariables::VarInfo::dump(), llvm::MachineBasicBlock::dump(), llvm::MachineConstantPool::dump(), llvm::MachineFunction::dump(), llvm::MachineInstr::dump(), llvm::MachineJumpTableInfo::dump(), llvm::MachineLoop::dump(), llvm::MachineOperand::dump(), llvm::NodeSet::dump(), llvm::SMSchedule::dump(), llvm::ReadyQueue::dump(), llvm::PBQP::RegAlloc::PBQPRAGraph::dump(), llvm::RegisterBankInfo::PartialMapping::dump(), llvm::RegisterBankInfo::ValueMapping::dump(), llvm::RegisterBankInfo::InstructionMapping::dump(), llvm::RegisterBankInfo::OperandsMapper::dump(), llvm::PressureChange::dump(), llvm::RegPressureDelta::dump(), llvm::RegPressureTracker::dump(), llvm::ILPValue::dump(), llvm::SelectionDAG::dump(), llvm::BaseIndexOffset::dump(), llvm::SlotIndex::dump(), llvm::SlotIndexes::dump(), llvm::EVT::dump(), llvm::VirtRegMap::dump(), llvm::LLT::dump(), llvm::MVT::dump(), llvm::logicalview::LVCompare::dump(), llvm::logicalview::LVObject::dump(), llvm::logicalview::LVOptions::dump(), llvm::logicalview::LVPatterns::dump(), llvm::logicalview::LVReader::dump(), llvm::logicalview::LVStringPool::dump(), llvm::logicalview::LVReaderHandler::dump(), llvm::logicalview::LVBinaryReader::dump(), llvm::logicalview::LVCodeViewReader::dump(), llvm::logicalview::LVDWARFReader::dump(), llvm::AttributeSet::dump(), llvm::AttributeList::dump(), llvm::Comdat::dump(), llvm::ConstantRange::dump(), llvm::DebugLoc::dump(), llvm::DbgRecord::dump(), llvm::DbgMarker::dump(), llvm::PMStack::dump(), llvm::NamedMDNode::dump(), llvm::Module::dump(), llvm::ModuleSummaryIndex::dump(), llvm::Value::dump(), llvm::MCAsmMacroParameter::dump(), llvm::MCAsmMacro::dump(), llvm::MCExpr::dump(), llvm::MCOperand::dump(), llvm::MCInst::dump(), llvm::MCLabel::dump(), llvm::MCParsedAsmOperand::dump(), llvm::MCSymbol::dump(), llvm::MCValue::dump(), llvm::mca::LSUnitBase::dump(), llvm::mca::WriteRef::dump(), llvm::mca::RegisterFile::dump(), llvm::mca::ResourceState::dump(), llvm::mca::RetireControlUnit::dump(), llvm::mca::Scheduler::dump(), llvm::mca::WriteState::dump(), llvm::object::WasmSymbol::dump(), llvm::opt::Arg::dump(), llvm::opt::ArgList::dump(), llvm::opt::Option::dump(), llvm::Pass::dump(), llvm::GCOVFile::dump(), llvm::GCOVFunction::dump(), llvm::GCOVBlock::dump(), llvm::sampleprof::LineLocation::dump(), llvm::sampleprof::SampleRecord::dump(), llvm::sampleprof::FunctionSamples::dump(), llvm::BranchProbability::dump(), llvm::GraphDiff< NodePtr, InverseGraph >::dump(), llvm::cfg::Update< NodePtr >::dump(), llvm::DebugCounter::dump(), llvm::KnownBits::dump(), llvm::vfs::FileSystem::dump(), llvm::SubtargetFeatures::dump(), llvm::AbstractAttribute::dump(), llvm::GVNExpression::Expression::dump(), llvm::PredicateInfo::dump(), llvm::BasicAAResult::DecomposedGEP::dump(), llvm::ValueEnumerator::dump(), llvm::DbgValueLocEntry::dump(), llvm::SDDbgValue::dump(), llvm::SpillPlacement::BlockConstraint::dump(), llvm::SplitAnalysis::BlockInfo::dump(), llvm::SplitEditor::dump(), llvm::ConstantUniqueMap< ConstantClass >::dump(), llvm::GCNRegPressure::dump(), llvm::dxil::Resources::dump(), llvm::WebAssemblyException::dump(), llvm::slpvectorizer::BoUpSLP::EdgeInfo::dump(), llvm::slpvectorizer::BoUpSLP::VLOperands::dump(), llvm::VPBlockBase::dump(), llvm::VPInstruction::dump(), llvm::VPlan::dump(), llvm::VPValue::dump(), llvm::VPDef::dump(), llvm::ScheduleDAGMILive::dump(), llvm::logicalview::LVLine::dump(), llvm::logicalview::LVLocation::dump(), llvm::logicalview::LVRange::dump(), llvm::logicalview::LVScope::dump(), llvm::logicalview::LVSymbol::dump(), llvm::logicalview::LVType::dump(), llvm::ImportedFunctionsInliningStatistics::dump(), llvm::coverage::CounterMappingContext::dump(), llvm::MachineFrameInfo::dump(), LiveDebugValues::DbgOp::dump(), LiveDebugValues::ResolvedDbgOp::dump(), LiveDebugValues::DbgOpID::dump(), LiveDebugValues::DbgValue::dump(), llvm::Metadata::dump(), llvm::SDNode::dump(), llvm::PressureDiff::dump(), llvm::RegisterPressure::dump(), llvm::RegisterBank::dump(), llvm::SDep::dump(), llvm::SPIRV::ConvergenceRegion::dump(), llvm::LatencyPriorityQueue::dump(), llvm::DbgValueHistoryMap::dump(), llvm::ScaledNumberBase::dump(), llvm::LexicalScope::dump(), LiveDebugValues::MLocTracker::dump_mloc_map(), LiveDebugValues::InstrRefBasedLDV::dump_mloc_transfer(), dump_registers(), dumpAllocas(), llvm::PMTopLevelManager::dumpArguments(), llvm::SUnit::dumpAttributes(), dumpBytes(), llvm::SystemZHazardRecognizer::dumpCurrGroup(), llvm::BasicBlock::dumpDbgValues(), dumpEdges(), dumpImportListForModule(), dumpIR(), llvm::PMDataManager::dumpLastUses(), dumpMachineInstrRangeWithSlotIndex(), llvm::slpvectorizer::BoUpSLP::VLOperands::dumpMode(), llvm::ContextTrieNode::dumpNode(), llvm::ScheduleDAGInstrs::dumpNode(), llvm::ScheduleDAGSDNodes::dumpNode(), llvm::ScheduleDAG::dumpNodeAll(), llvm::ScheduleDAG::dumpNodeName(), DumpNodes(), dumpOrder(), llvm::PMDataManager::dumpPassArguments(), llvm::PMDataManager::dumpPassInfo(), llvm::FPPassManager::dumpPassStructure(), llvm::Pass::dumpPassStructure(), llvm::GenericScheduler::dumpPolicy(), llvm::SystemZHazardRecognizer::dumpProcResourceCounters(), llvm::SDNode::dumpr(), llvm::TargetRegisterInfo::dumpReg(), dumpRegSetPressure(), llvm::RuntimeDyldMachO::dumpRelocationToResolve(), dumpRelocs(), dumpRemats(), llvm::Twine::dumpRepr(), llvm::SchedBoundary::dumpReservedCycles(), dumpResult(), llvm::SDNode::dumprWithDepth(), llvm::ScheduleDAGMI::dumpSchedule(), llvm::ScheduleDAGSDNodes::dumpSchedule(), llvm::SchedBoundary::dumpScheduledState(), llvm::ScheduleDAGMI::dumpScheduleTraceBottomUp(), llvm::ScheduleDAGMI::dumpScheduleTraceTopDown(), dumpScopes(), dumpSectionMemory(), dumpSmallBitVector(), dumpSpills(), llvm::SystemZHazardRecognizer::dumpState(), dumpSUList(), llvm::ContextTrieNode::dumpTree(), llvm::MDNode::dumpTree(), llvm::Loop::dumpVerbose(), llvm::JumpThreadingPass::duplicateCondBranchOnPHIIntoPred(), llvm::jitlink::ELFLinkGraphBuilder< ELFT >::ELFLinkGraphBuilder(), llvm::ARCFrameLowering::eliminateCallFramePseudoInstr(), eliminateDeadSwitchCases(), llvm::ARCRegisterInfo::eliminateFrameIndex(), llvm::DIEAbbrev::Emit(), llvm::MCPseudoProbeInlineTree::emit(), llvm::MCPseudoProbe::emit(), llvm::PPCRegisterInfo::emitAccCopyInfo(), emitAccSpillRestoreInfo(), EmitAndPrintRemark(), llvm::RuntimeDyldImpl::emitCommonSymbols(), llvm::DwarfDebug::emitDebugLocValue(), llvm::ARCFrameLowering::emitEpilogue(), llvm::M68kAsmPrinter::emitInstruction(), llvm::WebAssemblyAsmPrinter::emitInstruction(), llvm::HexagonHazardRecognizer::EmitInstruction(), llvm::PPCDispatchGroupSBHazardRecognizer::EmitInstruction(), llvm::SystemZHazardRecognizer::EmitInstruction(), llvm::TargetLowering::EmitInstrWithCustomInserter(), llvm::X86TargetLowering::EmitInstrWithCustomInserter(), llvm::AArch64FrameLowering::emitPrologue(), llvm::ARCFrameLowering::emitPrologue(), llvm::RuntimeDyldImpl::emitSection(), emitWAccSpillRestoreInfo(), llvm::AArch64::ExtensionSet::enable(), llvm::HexagonMCCodeEmitter::encodeInstruction(), llvm::HexagonMCCodeEmitter::encodeSingleInstruction(), llvm::orc::ExecutionSession::endSession(), llvm::RegAllocBase::enqueue(), ensurePromotedGV(), llvm::SplitEditor::enterIntvAfter(), llvm::SplitEditor::enterIntvAtEnd(), llvm::SplitEditor::enterIntvBefore(), llvm::SystemZPostRASchedStrategy::enterMBB(), llvm::orc::EPCGenericRTDyldMemoryManager::EPCGenericRTDyldMemoryManager(), llvm::logicalview::LVElement::equals(), llvm::rdf::DeadCodeElimination::erase(), llvm::BranchProbabilityInfo::eraseBlock(), llvm::InstCombinerImpl::eraseInstFromFunction(), llvm::Combiner::WorkListMaintainer::erasingInstr(), llvm::Evaluator::EvaluateFunction(), EvaluateStaticConstructor(), llvm::logicalview::LVCompare::execute(), llvm::VPWidenRecipe::execute(), llvm::VPBasicBlock::execute(), llvm::VPRegionBlock::execute(), executeCmpInst(), llvm::orc::JITCompileCallbackManager::executeCompileCallback(), executeFAddInst(), executeFCMP_OEQ(), executeFCMP_OGE(), executeFCMP_OGT(), executeFCMP_OLE(), executeFCMP_OLT(), executeFCMP_ONE(), executeFDivInst(), executeFMulInst(), executeFRemInst(), executeFSubInst(), executeICMP_EQ(), executeICMP_NE(), executeICMP_SGE(), executeICMP_SGT(), executeICMP_SLE(), executeICMP_SLT(), executeICMP_UGE(), executeICMP_UGT(), executeICMP_ULE(), executeICMP_ULT(), llvm::GIMatchTableExecutor::executeMatchTable(), llvm::LoopVectorizationPlanner::executePlan(), expandBounds(), expandMemMoveAsLoop(), llvm::M68kInstrInfo::ExpandMOVSZX_RM(), llvm::M68kInstrInfo::ExpandMOVSZX_RR(), llvm::M68kInstrInfo::ExpandMOVX_RR(), llvm::ARMBaseInstrInfo::expandPostRAPseudo(), llvm::LoopVectorizationCostModel::expectedCost(), extractInteger(), extractVector(), llvm::AArch64CallLowering::fallBackToDAGISel(), fdbgs(), fillOverallFunction(), llvm::SchedDFSImpl::finalize(), llvm::OpenMPIRBuilder::finalize(), llvm::GCNSchedStage::finalizeGCNSchedStage(), llvm::UnclusteredHighRPStage::finalizeGCNSchedStage(), llvm::RuntimeDyldELF::finalizeLoad(), llvm::orc::EPCGenericRTDyldMemoryManager::finalizeMemory(), llvm::orc::ELFDebugObject::finalizeWorkingMemory(), find_best(), llvm::CodeExtractor::findAllocas(), findArgParts(), findArgumentCopyElisionCandidates(), findArrayDimensions(), llvm::SSAUpdaterImpl< UpdaterT >::FindAvailableVals(), llvm::MustBeExecutedContextExplorer::findBackwardJoinPoint(), findBaseDefiningValueCached(), findBasePointer(), llvm::RegBankSelect::findBestMapping(), findBestNonTrivialUnswitchCandidate(), findCostForOutputBlocks(), llvm::SampleProfileLoaderBaseImpl< FT >::findEquivalenceClasses(), findForkedPointer(), findForkedSCEVs(), llvm::MustBeExecutedContextExplorer::findForwardJoinPoint(), findGCD(), findIrreducibleHeaders(), findLoopComponents(), llvm::SchedBoundary::findMaxLatency(), findPartitions(), findReturnsToZap(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::FindRoots(), llvm::RegScavenger::FindUnusedReg(), llvm::ARMBlockPlacement::fixBackwardsWLS(), fixFuncEntryCount(), FixIrreducibleImpl(), llvm::PeelingModuloScheduleExpander::fixupBranches(), llvm::ScheduleDAGInstrs::fixupKills(), fixupReg(), FlattenLoopPair(), llvm::AMDGPULibCalls::fold(), FoldCondBranchOnValueKnownInPredecessorImpl(), llvm::PPCInstrInfo::foldFrameOffset(), llvm::VEInstrInfo::foldImmediate(), llvm::InstCombinerImpl::FoldShiftByConstant(), FoldTwoEntryPHINode(), for(), forceAttributes(), llvm::jitlink::ELFLinkGraphBuilder< ELFT >::forEachRelaRelocation(), llvm::jitlink::COFFLinkGraphBuilder::forEachRelocation(), llvm::jitlink::ELFLinkGraphBuilder< ELFT >::forEachRelRelocation(), formDedicatedExitBlocks(), llvm::ARMTargetLowering::functionArgumentNeedsConsecutiveRegisters(), fuseInstructionPair(), llvm::GCNScheduleDAGMILive::GCNScheduleDAGMILive(), llvm::HexagonInstrInfo::genAllInsnTimingClasses(), llvm::ARMAsmBackendDarwin::generateCompactUnwindEncoding(), generateLoopLatchCheck(), llvm::RuntimeDyldCOFFAArch64::generateRelocationStub(), llvm::RuntimeDyldCOFFX86_64::generateRelocationStub(), generateReproducer(), generateStackAdjustment(), llvm::LegacyLegalizerInfo::getAction(), llvm::LegalizerInfo::getActionDefinitionsIdx(), llvm::ReplayInlineAdvisor::getAdviceImpl(), getAllLexicalIndexes(), llvm::FunctionLoweringInfo::getArgumentFrameIndex(), llvm::SampleContextTracker::getBaseSamplesFor(), getBoundsCheckCond(), getBranchHint(), llvm::CacheCost::getCacheCost(), llvm::SampleContextTracker::getCalleeContextSamplesFor(), llvm::HexagonRegisterInfo::getCallerSavedRegs(), llvm::MemorySSA::ClobberWalkerBase::getClobberingMemoryAccessBase(), getCompoundInsn(), llvm::coverage::CoverageMapping::getCoverageForExpansion(), llvm::coverage::CoverageMapping::getCoverageForFile(), llvm::coverage::CoverageMapping::getCoverageForFunction(), getDefaultInlineOrder(), getDependenceDistanceStrideAndSize(), llvm::RuntimeDyldCOFF::getDLLImportOffset(), llvm::HexagonMCInstrInfo::getDuplexPossibilties(), llvm::logicalview::LVRange::getEntry(), llvm::jitlink::TableManager< TableManagerImplT >::getEntryForTarget(), getExtDivCycle(), getFalkorUnrollingPreferences(), llvm::PPCInstrInfo::getFMAPatterns(), llvm::AArch64FrameLowering::getFrameIndexReferencePreferSP(), llvm::jitlink::PerGraphGOTAndPLTStubsBuilder< BuilderImplT >::getGOTEntry(), llvm::ScoreboardHazardRecognizer::getHazardType(), llvm::HexagonHazardRecognizer::getHazardType(), getInlineCost(), getInlineOrder(), getInnerLoopGuardCmp(), getInstructionID(), llvm::SampleProfileLoaderBaseImpl< FT >::getInstWeightImpl(), getIntDivCycle(), llvm::LoopNest::getInterveningInstructions(), llvm::GenericSyncDependenceAnalysis< ContextT >::getJoinBlocks(), getLaneCopyOpcode(), llvm::LoopNest::getMaxPerfectDepth(), llvm::RegPressureTracker::getMaxUpwardPressureDelta(), llvm::MustBeExecutedContextExplorer::getMustBeExecutedNextInstruction(), llvm::MustBeExecutedContextExplorer::getMustBeExecutedPrevInstruction(), getNegatibleInsts(), getNewAlignment(), getNewAlignmentDiff(), getNewSource(), llvm::SchedBoundary::getNextResourceCycle(), llvm::OpenMPIRBuilder::getOrCreateRuntimeFunction(), llvm::RegAllocEvictionAdvisor::getOrderLimit(), llvm::SchedBoundary::getOtherResourceCount(), getOuterLoopLatchCmp(), getOutliningPenalty(), llvm::jitlink::PerGraphGOTAndPLTStubsBuilder< BuilderImplT >::getPLTStub(), getPotentialCopiesOfMemoryValue(), llvm::HexagonInstrInfo::getPredReg(), llvm::SampleProfileLoaderBaseImpl< FT >::getProbeWeight(), getPtrStride(), GetQuadraticEquation(), llvm::X86RegisterInfo::getRegAllocationHints(), llvm::GCNIterativeScheduler::getRegionPressure(), llvm::CCState::getRemainingRegParmsForType(), llvm::mca::RISCVInstrumentManager::getSchedClassID(), llvm::GCNSchedStage::getScheduleMetrics(), llvm::InstCostVisitor::getSpecializationBonus(), llvm::slpvectorizer::BoUpSLP::getSpillCost(), llvm::DependenceInfo::getSplitIteration(), getStoreOffset(), getSubRegForClass(), llvm::object::WasmObjectFile::getSymbolFlags(), getTLIFunction(), llvm::slpvectorizer::BoUpSLP::getTreeCost(), llvm::logicalview::getTrueType(), llvm::AMDGPUTTIImpl::getUnrollingPreferences(), llvm::ARMTTIImpl::getUnrollingPreferences(), llvm::RISCVTTIImpl::getUnrollingPreferences(), llvm::LazyValueInfoImpl::getValueAt(), llvm::LazyValueInfoImpl::getValueInBlock(), llvm::SSAUpdater::GetValueInMiddleOfBlock(), llvm::MachineSSAUpdater::GetValueInMiddleOfBlock(), llvm::LazyValueInfoImpl::getValueOnEdge(), getVariantMatchScore(), getVectorSHLImm(), llvm::VFABI::getVectorVariantNames(), getVGPRSpillLaneOrTempRegister(), giveUpWithRemarks(), llvm::object::GOFFObjectFile::GOFFObjectFile(), llvm::jitlink::COFFLinkGraphBuilder::graphifySections(), llvm::jitlink::ELFLinkGraphBuilder< ELFT >::graphifySections(), llvm::jitlink::COFFLinkGraphBuilder::graphifySymbols(), llvm::jitlink::ELFLinkGraphBuilder< ELFT >::graphifySymbols(), handleADRP(), llvm::FastISel::handleDbgInfo(), llvm::SelectionDAGBuilder::handleDebugDeclare(), llvm::orc::SimpleRemoteEPC::handleDisconnect(), llvm::IRChangedTester::handleIR(), llvm::orc::SimpleRemoteEPC::handleMessage(), llvm::orc::SimpleRemoteEPCServer::handleMessage(), llvm::objcarc::BottomUpPtrState::HandlePotentialAlterRefCount(), llvm::objcarc::TopDownPtrState::HandlePotentialAlterRefCount(), llvm::objcarc::BottomUpPtrState::HandlePotentialUse(), llvm::objcarc::TopDownPtrState::HandlePotentialUse(), llvm::GISelCSEInfo::handleRecordedInst(), llvm::VPRecipeBuilder::handleReplication(), handleValVerMetadata(), hasOnlyUniformBranches(), hasOutsideLoopUser(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::HasProperSupport(), llvm::mca::hasResourceHazard(), llvm::IndexedReference::hasSpacialReuse(), llvm::IndexedReference::hasTemporalReuse(), hasVRegCycleUse(), HexagonMCShuffle(), hoist(), hoistAndMergeSGPRInits(), hoistRegion(), hoistValue(), hostParallelCallback(), if(), llvm::FunctionImporter::importFunctions(), llvm::logicalview::LVBinaryReader::includeInlineeLines(), incorporateNewSCCRange(), llvm::IndexedReference::IndexedReference(), inferAttrsFromFunctionBodies(), inferConvergent(), llvm::objcarc::BottomUpPtrState::InitBottomUp(), llvm::GenericScheduler::initCandidate(), llvm::GCNSchedStage::initGCNRegion(), llvm::GCNSchedStage::initGCNSchedStage(), llvm::UnclusteredHighRPStage::initGCNSchedStage(), llvm::ClusteredLowOccStage::initGCNSchedStage(), llvm::PreRARematStage::initGCNSchedStage(), llvm::orc::LLJIT::initialize(), llvm::GCNSchedStrategy::initialize(), INITIALIZE_PASS(), INITIALIZE_PASS_END(), llvm::ExecutionEngine::InitializeMemory(), llvm::GCNSubtarget::initializeSubtargetDependencies(), llvm::HexagonSubtarget::initializeSubtargetDependencies(), llvm::mca::initializeUsedResources(), llvm::ResourceManager::initProcResourceVectors(), llvm::ScheduleDAGMILive::initRegPressure(), initVRegCycle(), injectPendingInvariantConditions(), llvm::logicalview::LVLogicalVisitor::inlineSiteAnnotation(), llvm::SMSchedule::insert(), llvm::HexagonInstrInfo::insertBranch(), insertCopy(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::InsertEdge(), insertInteger(), insertNewDbgInst(), InsertPreheaderForLoop(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::InsertReachable(), insertTrivialPHIs(), insertUniqueBackedgeBlock(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::InsertUnreachable(), insertVector(), instrumentOneFunc(), llvm::SampleProfileProber::instrumentOneFunc(), llvm::InternalizePass::internalizeModule(), llvm::MachineTraceMetrics::Ensemble::invalidate(), llvm::MachineTraceMetrics::invalidate(), llvm::InterleavedAccessInfo::invalidateGroupsRequiringScalarEpilogue(), llvm::HexagonInstrInfo::invertAndChangeJumpTarget(), llvm::AA::isAssumedThreadLocalObject(), llvm::mca::RegisterFile::isAvailable(), llvm::ScalarEvolution::isBasicBlockEntryGuardedByCond(), llvm::ARMBasicBlockUtils::isBBInRange(), isBitfieldExtractOpFromAnd(), isBitfieldExtractOpFromShr(), isBitfieldPositioningOpFromAnd(), llvm::AMDGPU::isClobberedInFunction(), isControlFlowEquivalent(), llvm::AArch64CallLowering::isEligibleForTailCallOptimization(), llvm::AMDGPUCallLowering::isEligibleForTailCallOptimization(), isEligibleLoopForm(), isExplicitVecOuterLoop(), llvm::AArch64TargetLowering::isFPImmLegal(), llvm::HexagonTargetObjectFile::isGlobalInSmallSection(), llvm::ARMTTIImpl::isHardwareLoopProfitable(), llvm::InductionDescriptor::isInductionPHI(), llvm::AArch64TargetLowering::isLegalAddImmediate(), isLegalArithImmed(), isLoadCombineCandidateImpl(), llvm::ScalarEvolution::isLoopBackedgeGuardedByCond(), isLoopDead(), isPartialOverwrite(), llvm::AA::isPotentiallyAffectedByBarrier(), isPotentiallyReachable(), isProfitableChain(), isProfitableToInterleave(), llvm::RecurrenceDescriptor::isReductionPHI(), isSafeDecreasingBound(), isSafeForNoNTrivialUnswitching(), isSafeIncreasingBound(), isSafeToUnrollAndJam(), isUniformLoop(), llvm::GCNUpwardRPTracker::isValid(), llvm::Attributor::isValidFunctionSignatureRewrite(), llvm::HexagonInstrInfo::isValidOffset(), isVariantApplicableInContextHelper(), iterativelySinkInstructions(), KnuthDiv(), llvm::LazyCallGraph::LazyCallGraph(), llvm::SplitEditor::leaveIntvAfter(), llvm::SplitEditor::leaveIntvAtTop(), llvm::SplitEditor::leaveIntvBefore(), llvm::SystemZPostRASchedStrategy::leaveMBB(), llvm::LegalizerHelper::legalizeInstrStep(), llvm::VETargetLowering::legalizeInternalLoadStoreOp(), llvm::VETargetLowering::legalizeInternalVectorOp(), llvm::Legalizer::legalizeMachineFunction(), llvm::VETargetLowering::legalizePackedAVL(), llvm::LegalizerHelper::libcall(), LinearizeExprTree(), llvm::jitlink::JITLinkerBase::linkPhase1(), llvm::jitlink::JITLinkerBase::linkPhase2(), llvm::jitlink::JITLinkerBase::linkPhase3(), llvm::jitlink::JITLinkerBase::linkPhase4(), llvm_unreachable_internal(), loadFile(), llvm::RuntimeDyldImpl::loadObjectImpl(), llvm::ARCInstrInfo::loadRegFromStackSlot(), lookForCompound(), llvm::orc::ExecutionSession::lookup(), llvm::orc::Platform::lookupInitSymbols(), llvm::orc::Platform::lookupInitSymbolsAsync(), llvm::LoopVectorizeHints::LoopVectorizeHints(), llvm::SelectionDAGBuilder::LowerAsSTATEPOINT(), llvm::SPIRV::lowerBuiltin(), llvm::SPIRV::lowerBuiltinType(), llvm::AArch64CallLowering::lowerCall(), llvm::AMDGPUCallLowering::lowerCall(), llvm::HexagonTargetLowering::LowerCall(), llvm::SelectionDAGBuilder::LowerCallSiteWithDeoptBundleImpl(), lowerConstantIntrinsics(), llvm::FastISel::lowerDbgDeclare(), llvm::FastISel::lowerDbgValue(), llvm::HexagonTargetLowering::LowerDYNAMIC_STACKALLOC(), llvm::LegalizerHelper::lowerExtractInsertVectorElt(), lowerGlobalIFuncUsersAsGlobalCtor(), llvm::InlineAsmLowering::lowerInlineAsm(), llvm::LegalizerHelper::lowerInsert(), llvm::LegalizerHelper::lowerMergeValues(), llvm::AArch64TargetLowering::LowerOperation(), llvm::ARMTargetLowering::LowerOperation(), llvm::VETargetLowering::LowerOperation(), llvm::PhiLoweringHelper::lowerPhis(), llvm::AArch64CallLowering::lowerReturn(), lowerStatepointMetaArgs(), makeReducible(), llvm::logicalview::LVBinaryReader::mapVirtualAddress(), llvm::SparseSolver< LatticeKey, LatticeVal, KeyInfo >::MarkBlockExecutable(), llvm::SCCPInstVisitor::markBlockExecutable(), llvm::SampleContextTracker::markContextSamplesInlined(), llvm::GenericUniformityAnalysisImpl< ContextT >::markDivergent(), llvm::logicalview::LVLine::markMissingParents(), llvm::logicalview::LVScope::markMissingParents(), llvm::logicalview::LVSymbol::markMissingParents(), llvm::logicalview::LVType::markMissingParents(), markTails(), llvm::HexagonEvaluator::mask(), llvm::gvn::AvailableValue::MaterializeAdjustedValue(), mayAlias(), llvm::JumpThreadingPass::maybethreadThroughTwoBasicBlocks(), llvm::GCNSchedStage::mayCauseSpilling(), llvm::ConstraintSystem::mayHaveSolution(), mayUseP9Setb(), MergeBlockIntoPredecessor(), mergeConstants(), migrateDebugInfo(), llvm::orc::GDBJITDebugInfoRegistrationPlugin::modifyPassConfig(), llvm::ModuleInlinerWrapperPass::ModuleInlinerWrapperPass(), moveAndTeeForMultiUse(), llvm::ARMBlockPlacement::moveBasicBlock(), moveForSingleUse(), llvm::object::MachORebaseEntry::moveNext(), llvm::object::MachOBindEntry::moveNext(), MoveVPNOTBeforeFirstUser(), llvm::LegalizerHelper::narrowScalar(), nearest_common_dominator(), needsFP(), llvm::Negator::Negate(), NewSDValueDbgMsg(), llvm::FullDependence::normalize(), llvm::SMSchedule::normalizeNonPipelinedInstructions(), llvm::orc::COFFPlatform::notifyAdding(), llvm::orc::ELFNixPlatform::notifyAdding(), llvm::orc::MachOPlatform::notifyAdding(), llvm::mca::ExecuteStage::notifyInstructionExecuted(), llvm::mca::ExecuteStage::notifyInstructionIssued(), llvm::mca::ExecuteStage::notifyInstructionPending(), llvm::mca::ExecuteStage::notifyInstructionReady(), llvm::mca::RetireStage::notifyInstructionRetired(), llvm::orc::DebugObjectManagerPlugin::notifyMaterializing(), llvm::orc::EPCGenericRTDyldMemoryManager::notifyObjectLoaded(), llvm::mca::ExecuteStage::notifyResourceAvailable(), llvm::AggressiveAntiDepBreaker::Observe(), llvm::omp::OMPContext::OMPContext(), llvm::mca::LSUnitBase::onInstructionRetired(), llvm::PPCInstrInfo::onlyFoldImmediate(), llvm::jitlink::DWARFRecordSectionSplitter::operator()(), llvm::jitlink::EHFrameEdgeFixer::operator()(), llvm::jitlink::EHFrameNullTerminator::operator()(), llvm::jitlink::CompactUnwindSplitter::operator()(), llvm::orc::DumpObjects::operator()(), operator<<(), llvm::lto::opt(), OptimizeAwayTrappingUsesOfLoads(), optimizeBranch(), llvm::PPCInstrInfo::optimizeCmpPostRA(), llvm::slpvectorizer::BoUpSLP::optimizeGatherSequence(), optimizeGlobalCtorsList(), llvm::jitlink::i386::optimizeGOTAndStubAccesses(), llvm::jitlink::x86_64::optimizeGOTAndStubAccesses(), optimizeLoopExitWithUnknownExitCount(), optimizeSection(), llvm::OptLevelChanger::OptLevelChanger(), llvm::AArch64FrameLowering::orderFrameObjects(), llvm::SplitEditor::overlapIntv(), llvm::BlockFrequencyInfoImplBase::packageLoop(), llvm::VLIWPacketizerList::PacketizeMIs(), llvm::CallLowering::parametersInCSRMatch(), llvm::jitlink::COFFDirectiveParser::parse(), llvm::AArch64::ExtensionSet::parseModifier(), parseSymbolString(), llvm::AMDGPUCallLowering::passSpecialInputs(), performBranchToCommonDestFolding(), performConcatVectorsCombine(), performCopyPropagation(), llvm::AArch64TargetLowering::PerformDAGCombine(), llvm::MipsSETargetLowering::PerformDAGCombine(), performORCombine(), PerformSHLSimplify(), llvm::GenericScheduler::pickNode(), llvm::PostGenericScheduler::pickNode(), llvm::ConvergingVLIWScheduler::pickNode(), llvm::GCNSchedStrategy::pickNode(), llvm::R600SchedStrategy::pickNode(), llvm::SystemZPostRASchedStrategy::pickNode(), llvm::GenericScheduler::pickNodeBidirectional(), llvm::PostGenericScheduler::pickNodeBidirectional(), llvm::GCNSchedStrategy::pickNodeBidirectional(), llvm::ConvergingVLIWScheduler::pickNodeBidrectional(), llvm::LoopVectorizationPlanner::plan(), llvm::LoopVectorizationPlanner::planInVPlanNativePath(), PointerMayBeCaptured(), populateDependencyMatrix(), llvm::RuntimeDyldMachO::populateIndirectSymbolPointersSection(), populateWorklist(), llvm::HexagonInstrInfo::PredicateInstruction(), llvm::ARMTTIImpl::preferPredicateOverEpilogue(), llvm::jitlink::ELFLinkGraphBuilder< ELFT >::prepare(), llvm::orc::LLJITBuilderState::prepareForConstruction(), llvm::LoopVectorizationLegality::prepareToFoldTailByMasking(), llvm::InstCombinerImpl::prepareWorklist(), AMDGPUDAGToDAGISel::PreprocessISelDAG(), llvm::HexagonDAGToDAGISel::PreprocessISelDAG(), llvm::RISCVDAGToDAGISel::PreprocessISelDAG(), llvm::orc::preserveDebugSections(), llvm::GISelCSEInfo::print(), llvm::logicalview::LVPatterns::print(), llvm::logicalview::LVReader::print(), llvm::logicalview::LVBinaryReader::print(), llvm::logicalview::LVCodeViewReader::print(), llvm::logicalview::LVDWARFReader::print(), llvm::SpillPlacement::BlockConstraint::print(), llvm::BitTracker::print_cells(), llvm::SIScheduleBlock::printDebug(), PrintDebugDomInfo(), llvm::EpilogueVectorizerMainLoop::printDebugTracesAtEnd(), llvm::EpilogueVectorizerEpilogueLoop::printDebugTracesAtEnd(), llvm::EpilogueVectorizerMainLoop::printDebugTracesAtStart(), llvm::EpilogueVectorizerEpilogueLoop::printDebugTracesAtStart(), printFailMsgforFold(), PrintOps(), printScheduleModel(), llvm::AlignmentFromAssumptionsPass::processAssumption(), llvm::JumpThreadingPass::processBlock(), processDbgDeclare(), llvm::ARCFrameLowering::processFunctionBeforeFrameFinalized(), llvm::LoongArchFrameLowering::processFunctionBeforeFrameFinalized(), processIfEntryValueDbgDeclare(), processInternalGlobal(), llvm::logicalview::LVBinaryReader::processLines(), llvm::LoopVectorizePass::processLoop(), processLoopInVPlanNativePath(), llvm::RuntimeDyldCOFFAArch64::processRelocationRef(), llvm::RuntimeDyldCOFFI386::processRelocationRef(), llvm::RuntimeDyldCOFFThumb::processRelocationRef(), llvm::RuntimeDyldCOFFX86_64::processRelocationRef(), llvm::RuntimeDyldELF::processRelocationRef(), llvm::JumpThreadingPass::processThreadableEdges(), producesFalseLanesZero(), ProfitableToMerge(), promoteIndirectCalls(), promoteLoopAccessesToScalars(), llvm::SampleContextTracker::promoteMergeContextSamplesTree(), llvm::SampleProfileLoaderBaseImpl< FT >::propagateThroughEdges(), llvm::jitlink::prune(), pruneCache(), llvm::InstructionWorklist::push(), readDisplacement(), readImmediate(), readMaskRegister(), readMemprof(), readModRM(), readOpcode(), readOpcodeRegister(), readOperands(), readPrefixes(), readSection(), readSIB(), readVVVV(), llvm::ConvergingVLIWScheduler::readyQueueVerboseDump(), llvm::RuntimeDyldImpl::reassignSectionAddress(), llvm::WebAssemblyExceptionInfo::recalculate(), reconnectChildLoops(), llvm::AArch64TargetLowering::ReconstructShuffle(), llvm::GISelCSEInfo::recordNewInstruction(), llvm::orc::ELFDebugObject::recordSection(), reduceDbgValsBackwardScan(), reduceDbgValsForwardScan(), llvm::ScheduleDAGInstrs::reduceHugeMemNodeMaps(), llvm::LegalizerHelper::reduceLoadStoreWidth(), ReduceLoopStrength(), llvm::VerifyInstrumentation::registerCallbacks(), llvm::DotCfgChangeReporter::registerCallbacks(), llvm::PreservedCFGCheckerInstrumentation::registerCallbacks(), llvm::orc::EPCGenericRTDyldMemoryManager::registerEHFrames(), llvm::Attributor::registerFunctionSignatureRewrite(), llvm::orc::ExecutionSession::registerJITDispatchHandlers(), llvm::GenericScheduler::registerRoots(), llvm::PostGenericScheduler::registerRoots(), llvm::R600SchedStrategy::releaseBottomNode(), llvm::ScheduleDAGMI::releasePred(), llvm::ScheduleDAGMI::releaseSucc(), llvm::R600SchedStrategy::releaseTopNode(), rematerializeCheapDef(), rematerializeLiveValuesAtUses(), llvm::HexagonInstrInfo::removeBranch(), RemoveDeadAddBetweenLEAAndJT(), llvm::PMDataManager::removeDeadPasses(), removeExternalCFGEdges(), llvm::PMDataManager::removeNotPreservedAnalysis(), RemoveRedundantDbgInstrs(), removeRedundantDbgLocs(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::RemoveRedundantRoots(), llvm::RegBankSelect::repairReg(), replace(), replaceArgumentUses(), replaceCalledFunction(), llvm::SCEVExpander::replaceCongruentIVs(), replaceConstants(), replaceDominatedUses(), replaceDominatedUsesWith(), replaceExitCond(), replaceFrameIndex(), llvm::InstCombiner::replaceInstUsesWith(), llvm::X86TargetLowering::ReplaceNodeResults(), replaceSymbolicStrideSCEV(), replaceWithCallToVeclib(), llvm::PrintCrashIRInstrumentation::reportCrashIR(), reportFastISelFailure(), llvm::Combiner::WorkListMaintainer::reportFullyCreatedInstrs(), reportInvalidCandidate(), llvm::PPCRegisterInfo::requiresFrameIndexScavenging(), rescheduleCanonically(), rescheduleLexographically(), llvm::GenericScheduler::reschedulePhysReg(), llvm::orc::EPCGenericRTDyldMemoryManager::reserveAllocationSpace(), llvm::ResourceManager::reserveResources(), llvm::VLIWResourceModel::reserveResources(), llvm::HexagonHazardRecognizer::Reset(), llvm::objcarc::PtrState::ResetSequenceProgress(), llvm::MipsTargetMachine::resetSubtarget(), llvm::SelectionDAGBuilder::resolveDanglingDebugInfo(), llvm::SCCPInstVisitor::resolvedUndefsIn(), llvm::logicalview::LVElement::resolveFullname(), llvm::RuntimeDyldImpl::resolveLocalRelocations(), llvm::RuntimeDyldELFMips::resolveMIPSO32Relocation(), llvm::RuntimeDyldCOFFI386::resolveRelocation(), llvm::RuntimeDyldCOFFThumb::resolveRelocation(), llvm::AArch64FrameLowering::restoreCalleeSavedRegisters(), llvm::ARCFrameLowering::restoreCalleeSavedRegisters(), restorePreTransformState(), restoreSSA(), llvm::HexagonInstrInfo::reversePredSense(), llvm::GCNSchedStage::revertScheduling(), llvm::ARMBlockPlacement::revertWhileToDoLoop(), llvm::SSAUpdaterBulk::RewriteAllUses(), rewriteDebugUsers(), rewriteFunction(), rewriteLoopExitValues(), rewriteMemOpOfSelect(), rewriteSelectInstMemOps(), rewriteUses(), llvm::ThinLTOCodeGenerator::run(), llvm::FunctionSpecializer::run(), llvm::LoopConstrainer::run(), llvm::DAGTypeLegalizer::run(), llvm::Interpreter::run(), llvm::jitlink::PerGraphGOTAndPLTStubsBuilder< BuilderImplT >::run(), llvm::BitTracker::run(), llvm::rdf::CopyPropagation::run(), llvm::InstCombinerImpl::run(), llvm::TruncInstCombine::run(), llvm::InstCountPass::run(), llvm::LintPass::run(), llvm::ReplaceWithVeclib::run(), llvm::AMDGPUSimplifyLibCallsPass::run(), llvm::SafeStackPass::run(), llvm::CGSCCToFunctionPassAdaptor::run(), llvm::CoroSplitPass::run(), llvm::OpenMPOptCGSCCPass::run(), llvm::DevirtSCCRepeatedPass::run(), llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::run(), llvm::LoopBoundSplitPass::run(), llvm::LoopDeletionPass::run(), llvm::SimpleLoopUnswitchPass::run(), llvm::ModuleInlinerPass::run(), llvm::HotColdSplitting::run(), llvm::VerifierAnalysis::run(), llvm::DeadArgumentEliminationPass::run(), llvm::ModuleToPostOrderCGSCCPassAdaptor::run(), llvm::MemProfUsePass::run(), llvm::OpenMPOptPass::run(), llvm::BalancedPartitioning::run(), llvm::PseudoProbeVerifier::runAfterPass(), runAttributorLightOnFunctions(), runAttributorOnFunctions(), llvm::Float2IntPass::runImpl(), llvm::JumpThreadingPass::runImpl(), llvm::SLPVectorizerPass::runImpl(), llvm::SpeculativeExecutionPass::runImpl(), runImpl(), runIPSCCP(), runOnBasicBlock(), llvm::RGPassManager::runOnFunction(), llvm::AssignmentTrackingAnalysis::runOnFunction(), llvm::WebAssemblyExceptionInfo::runOnMachineFunction(), llvm::SlotIndexes::runOnMachineFunction(), llvm::ExecutionDomainFix::runOnMachineFunction(), llvm::InstructionSelect::runOnMachineFunction(), llvm::Legalizer::runOnMachineFunction(), llvm::LoadStoreOpt::runOnMachineFunction(), llvm::Localizer::runOnMachineFunction(), llvm::RegBankSelect::runOnMachineFunction(), llvm::ReachingDefAnalysis::runOnMachineFunction(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::BreakFalseDeps::runOnMachineFunction(), GCEmptyBasicBlocks::runOnMachineFunction(), llvm::RAGreedy::runOnMachineFunction(), llvm::AMDGPURegBankSelect::runOnMachineFunction(), llvm::GCNRegPressurePrinter::runOnMachineFunction(), llvm::ARMBlockPlacement::runOnMachineFunction(), runSCCP(), llvm::LoopVectorizationCostModel::runtimeChecksRequired(), llvm::SelectionDAG::salvageDebugInfo(), salvageDebugInfoForDbgValue(), salvageDebugInfoForDbgValues(), SalvageDVI(), llvm::SelectionDAGBuilder::salvageUnresolvedDbgValue(), llvm::SampleContextTracker::SampleContextTracker(), saveUsesAndErase(), scavengeFrameVirtualRegs(), llvm::RegScavenger::scavengeRegisterBackwards(), scavengeStackSlot(), llvm::BranchProbabilityInfo::SccInfo::SccInfo(), llvm::R600SchedStrategy::schedNode(), llvm::SystemZPostRASchedStrategy::schedNode(), llvm::GCNIterativeScheduler::OverrideLegacyStrategy::schedule(), llvm::SwingSchedulerDAG::schedule(), llvm::ScheduleDAGMI::schedule(), llvm::ScheduleDAGMILive::schedule(), llvm::VLIWMachineScheduler::schedule(), llvm::GCNIterativeScheduler::schedule(), llvm::SIScheduleDAGMI::schedule(), llvm::GCNIterativeScheduler::scheduleILP(), llvm::GCNIterativeScheduler::scheduleLegacyMaxOccupancy(), llvm::ScheduleDAGMILive::scheduleMI(), llvm::GCNIterativeScheduler::scheduleMinReg(), llvm::PMTopLevelManager::schedulePass(), llvm::GCNIterativeScheduler::scheduleRegion(), llvm::SchedDFSResult::scheduleTree(), llvm::ConvergingVLIWScheduler::SchedulingCost(), llvm::HexagonConvergingVLIWScheduler::SchedulingCost(), llvm::ScoreboardHazardRecognizer::ScoreboardHazardRecognizer(), llvm::LoongArchDAGToDAGISel::Select(), llvm::RISCVDAGToDAGISel::Select(), llvm::SelectionDAGISel::SelectCodeCommon(), selectCopy(), selectDebugInstr(), llvm::LoopVectorizationPlanner::selectEpilogueVectorizationFactor(), llvm::LoopVectorizationCostModel::selectInterleaveCount(), llvm::FastISel::selectIntrinsicCall(), llvm::SplitEditor::selectIntv(), llvm::HvxSelector::selectShuffle(), separateNestedLoop(), llvm::FaultMaps::serializeToFaultMapSection(), llvm::StackMaps::serializeToStackMapSection(), llvm::MIRProfileLoader::setBranchProbs(), setDanglingDebugValuesUndef(), llvm::VPTransformState::setDebugLocFrom(), llvm::BranchProbabilityInfo::setEdgeProbability(), llvm::objcarc::PtrState::SetKnownPositiveRefCount(), llvm::SCCPInstVisitor::setLatticeValueForSpecializationArguments(), setLoopComponents(), llvm::GenericSchedulerBase::setPolicy(), setProfMetadata(), llvm::objcarc::PtrState::SetSeq(), llvm::LoopVectorizationCostModel::setTailFoldingStyles(), llvm::orc::setUpInactivePlatform(), llvm::orc::setUpOrcPlatformManually(), llvm::VFABI::setVectorVariantNames(), llvm::ARMBaseRegisterInfo::shouldCoalesce(), shouldInline(), shouldPartialUnroll(), shouldPragmaUnroll(), llvm::UnclusteredHighRPStage::shouldRevertScheduling(), shouldSplit(), llvm::LiveIntervals::shrinkToUses(), llvm::HexagonShuffler::shuffle(), llvm::AbstractDependenceGraphBuilder< GraphType >::simplify(), SimplifyCondBranchToCondBranch(), simplifyOneLoop(), sink(), sinkAndCmp0Expression(), SinkCommonCodeFromPredecessors(), SinkInstruction(), sinkInstruction(), sinkRegion(), llvm::SIScheduleBlockScheduler::SIScheduleBlockScheduler(), llvm::FunctionPass::skipFunction(), llvm::LoopPass::skipLoop(), skipPGOUse(), llvm::RegionPass::skipRegion(), llvm::InstCombinerImpl::SliceUpIllegalIntegerPHI(), llvm::SparseSolver< LatticeKey, LatticeVal, KeyInfo >::Solve(), llvm::SCCPInstVisitor::solve(), solveDIType(), SolveQuadraticAddRecExact(), SolveQuadraticAddRecRange(), llvm::APIntOps::SolveQuadraticEquationWrap(), speculatePHINodeLoads(), speculateSelectInstLoads(), llvm::AArch64FrameLowering::spillCalleeSavedRegisters(), llvm::ARCFrameLowering::spillCalleeSavedRegisters(), splitCallSite(), llvm::MachineBasicBlock::SplitCriticalEdge(), splitEdge(), llvm::SplitEditor::splitLiveThroughBlock(), splitMBB(), llvm::SplitEditor::splitRegInBlock(), llvm::SplitEditor::splitRegOutBlock(), llvm::LiveIntervals::splitSeparateComponents(), SRAGlobal(), llvm::DbgValueHistoryMap::startDbgValue(), llvm::logicalview::LVRange::startSearch(), llvm::ARCInstrInfo::storeRegToStackSlot(), llvm::ExecutionEngine::StoreValueToMemory(), llvm::TailDuplicator::tailDuplicateBlocks(), targetParallelCallback(), llvm::lto::thinBackend(), thinLTOFinalizeInModule(), thinLTOPropagateFunctionAttrs(), llvm::JumpThreadingPass::threadEdge(), llvm::JumpThreadingPass::threadGuard(), llvm::JumpThreadingPass::threadThroughTwoBasicBlocks(), llvm::ConvergingVLIWScheduler::traceCandidate(), llvm::GenericSchedulerBase::traceCandidate(), tracePick(), llvm::DbgValueHistoryMap::trimLocationRanges(), llvm::HexagonShuffler::tryAuction(), llvm::LegalizationArtifactCombiner::tryCombineAnyExt(), llvm::LegalizationArtifactCombiner::tryCombineSExt(), llvm::LegalizationArtifactCombiner::tryCombineTrunc(), llvm::LegalizationArtifactCombiner::tryCombineZExt(), llvm::HexagonMCInstrInfo::tryCompound(), llvm::InlineAdvisorAnalysis::Result::tryCreate(), llvm::LegalizationArtifactCombiner::tryFoldImplicitDef(), tryInterleave(), tryLowerToSLI(), llvm::GCNIterativeScheduler::tryMaximizeOccupancy(), llvm::JumpThreadingPass::tryThreadEdge(), tryToElideArgumentCopy(), tryToFindRegisterToRename(), llvm::orc::EPCDynamicLibrarySearchGenerator::tryToGenerate(), tryToMergePartialOverlappingStores(), tryToRecognizePopCount(), llvm::SCCPSolver::tryToReplaceWithConstant(), tryToShorten(), TryToShrinkGlobalToBoolean(), TryToSimplifyUncondBranchFromEmptyBlock(), llvm::InstCombinerImpl::tryToSinkInstructionDbgValues(), llvm::InstCombinerImpl::tryToSinkInstructionDbgVariableRecords(), tryToUnrollAndJamLoop(), tryToUnrollLoop(), tryToVectorizeSequence(), turnGuardIntoBranch(), turnSelectIntoBranch(), llvm::LiveRegMatrix::unassign(), undefInvalidDbgValues(), unifyLoopExits(), llvm::ValueSimplifyStateType::unionAssumed(), UnrollAndJamLoop(), UnrollLoop(), UnrollRuntimeLoopRemainder(), unsupportedBinOp(), unswitchBestCondition(), unswitchLoop(), unswitchTrivialBranch(), unswitchTrivialSwitch(), unwrapLoop(), llvm::AbstractAttribute::update(), llvm::logicalview::LVSymbolTable::update(), llvm::LiveIntervals::HMEditor::updateAllRanges(), updateCGAndAnalysisManagerForPass(), llvm::MachineTraceMetrics::Ensemble::updateDepth(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::UpdateInsertion(), updateOperandRegConstraints(), llvm::ScheduleDAGMILive::updatePressureDiffs(), llvm::CallInst::updateProfWeight(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::UpdateRootsAfterUpdate(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::UpdateRootsBeforeInsertion(), llvm::ScheduleDAGMILive::updateScheduledPressure(), llvm::JumpThreadingPass::updateSSA(), llvm::MachineBasicBlock::updateTerminator(), llvm::MipsSubtarget::useConstantIslands(), llvm::SplitEditor::useIntv(), llvm::AMDGPULibCalls::useNative(), value(), llvm::ValueHandleBase::ValueIsDeleted(), llvm::ValueHandleBase::ValueIsRAUWd(), values(), llvm::slpvectorizer::BoUpSLP::vectorizeTree(), llvm::ScalarEvolution::verify(), llvm::LoopInfoBase< BlockT, LoopT >::verify(), Verify(), llvm::LegalizerInfo::verify(), llvm::RegisterBankInfo::verify(), verifyCTRBranch(), llvm::LegalizeRuleSet::verifyImmIdxsCoverage(), llvm::SIInstrInfo::verifyInstruction(), llvm::BlockFrequencyInfoImpl< BT >::verifyMatch(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::verifyParentProperty(), VerifyPHIs(), llvm::ScheduleDAG::VerifyScheduledDAG(), verifyTripCount(), llvm::LegalizeRuleSet::verifyTypeIdxsCoverage(), llvm::InstCombinerImpl::visitAllocaInst(), llvm::Interpreter::visitAllocaInst(), llvm::Interpreter::visitBinaryOperator(), llvm::DivergencePropagator< ContextT >::visitCycleExitEdge(), llvm::SelectionDAGBuilder::visitDbgInfo(), llvm::DivergencePropagator< ContextT >::visitEdge(), llvm::jitlink::aarch32::GOTBuilder::visitEdge(), llvm::jitlink::aarch32::StubsManager_prev7::visitEdge(), llvm::jitlink::aarch32::StubsManager_v7::visitEdge(), llvm::jitlink::aarch64::GOTTableManager::visitEdge(), llvm::jitlink::aarch64::PLTTableManager::visitEdge(), llvm::jitlink::i386::GOTTableManager::visitEdge(), llvm::jitlink::i386::PLTTableManager::visitEdge(), llvm::jitlink::loongarch::GOTTableManager::visitEdge(), llvm::jitlink::loongarch::PLTTableManager::visitEdge(), llvm::jitlink::x86_64::GOTTableManager::visitEdge(), llvm::jitlink::x86_64::PLTTableManager::visitEdge(), llvm::Interpreter::visitExtractElementInst(), llvm::Interpreter::visitFCmpInst(), llvm::Interpreter::visitICmpInst(), llvm::ObjectSizeOffsetVisitor::visitInstruction(), llvm::ObjectSizeOffsetEvaluator::visitInstruction(), llvm::Interpreter::visitLoadInst(), llvm::InstCombinerImpl::visitSExt(), llvm::Interpreter::visitStoreInst(), llvm::InstCombinerImpl::visitTrunc(), llvm::Interpreter::visitVAArgInst(), llvm::InstCombinerImpl::visitZExt(), warnAboutLeftoverTransformations(), WorkloadImportsManager::WorkloadImportsManager(), llvm::orc::OrcLoongArch64::writeIndirectStubsBlock(), llvm::MachObjectWriter::writeObject(), llvm::orc::OrcX86_64_SysV::writeResolverCode(), llvm::orc::OrcLoongArch64::writeResolverCode(), llvm::orc::OrcLoongArch64::writeTrampolines(), llvm::sampleprof::SampleProfileWriter::writeWithSizeLimitInternal(), llvm::slpvectorizer::BoUpSLP::~BoUpSLP(), llvm::orc::EPCGenericRTDyldMemoryManager::~EPCGenericRTDyldMemoryManager(), llvm::FunctionSpecializer::~FunctionSpecializer(), llvm::orc::JITDylib::~JITDylib(), llvm::OptLevelChanger::~OptLevelChanger(), llvm::Value::~Value(), and llvm::ValueSymbolTable::~ValueSymbolTable().

◆ deallocate_buffer()

void llvm::deallocate_buffer ( void *  Ptr,
size_t  Size,
size_t  Alignment 
)

Deallocate a buffer of memory with the given size and alignment.

If supported, this will used the sized delete operator. Also if supported, this will pass the alignment to the delete operator.

The pointer must have been allocated with the corresponding new operator, most likely using the above helper.

Definition at line 24 of file MemAlloc.cpp.

References Ptr, and Size.

Referenced by llvm::DenseMap< KeyT, ValueT, KeyInfoT, BucketT >::copyFrom(), llvm::MallocAllocator::Deallocate(), llvm::DenseMap< KeyT, ValueT, KeyInfoT, BucketT >::grow(), llvm::SmallDenseMap< KeyT, ValueT, InlineBuckets, KeyInfoT, BucketT >::grow(), llvm::DenseMap< KeyT, ValueT, KeyInfoT, BucketT >::operator=(), llvm::DenseMap< KeyT, ValueT, KeyInfoT, BucketT >::shrink_and_clear(), llvm::DenseMap< KeyT, ValueT, KeyInfoT, BucketT >::~DenseMap(), and llvm::detail::UniqueFunctionBase< ReturnT, ParamTs >::~UniqueFunctionBase().

◆ DEBUG_COUNTER()

llvm::DEBUG_COUNTER ( NumAbstractAttributes  ,
"num-abstract-attributes"  ,
"How many AAs should be initialized"   
)

A debug counter to limit the number of AAs created.

◆ DebugInfoCorrelate()

cl::opt< bool > llvm::DebugInfoCorrelate ( "debug-info-correlate"  ,
cl::desc("Use debug info to correlate profiles. (Deprecated, use " "-profile-correlate=debug-info)")  ,
cl::init(false)   
)

◆ debuginfoShouldUseDebugInstrRef()

bool llvm::debuginfoShouldUseDebugInstrRef ( const Triple T)

◆ DebugStr() [1/2]

std::string llvm::DebugStr ( const Align A)
inline

Definition at line 312 of file Alignment.h.

References A.

◆ DebugStr() [2/2]

std::string llvm::DebugStr ( const MaybeAlign MA)
inline

Definition at line 316 of file Alignment.h.

◆ decDigitValue()

static unsigned int llvm::decDigitValue ( unsigned int  c)
inlinestatic

Definition at line 367 of file APFloat.cpp.

Referenced by interpretDecimal(), readExponent(), and totalExponent().

◆ declareSanitizerInitFunction()

FunctionCallee llvm::declareSanitizerInitFunction ( Module M,
StringRef  InitName,
ArrayRef< Type * >  InitArgTypes,
bool  Weak = false 
)

◆ decodeBase64()

llvm::Error llvm::decodeBase64 ( llvm::StringRef  Input,
std::vector< char > &  Output 
)

◆ DecodeBLENDMask()

void llvm::DecodeBLENDMask ( unsigned  NumElts,
unsigned  Imm,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a BLEND immediate mask into a shuffle mask.

Definition at line 314 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ DecodeEXTRQIMask()

void llvm::DecodeEXTRQIMask ( unsigned  NumElts,
unsigned  EltSize,
int  Len,
int  Idx,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a SSE4A EXTRQ instruction as a shuffle mask.

Definition at line 399 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorImpl< T >::append(), Idx, llvm::SmallVectorTemplateBase< T, bool >::push_back(), SM_SentinelUndef, and SM_SentinelZero.

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ DecodeInsertElementMask()

void llvm::DecodeInsertElementMask ( unsigned  NumElts,
unsigned  Idx,
unsigned  Len,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ DecodeINSERTPSMask()

void llvm::DecodeINSERTPSMask ( unsigned  Imm,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a 128-bit INSERTPS instruction as a v4f32 shuffle mask.

Definition at line 26 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back(), and SM_SentinelZero.

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ DecodeINSERTQIMask()

void llvm::DecodeINSERTQIMask ( unsigned  NumElts,
unsigned  EltSize,
int  Len,
int  Idx,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a SSE4A INSERTQ instruction as a shuffle mask.

Definition at line 436 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorImpl< T >::append(), Idx, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and SM_SentinelUndef.

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ decodeMaybeAlign()

MaybeAlign llvm::decodeMaybeAlign ( unsigned  Value)
inline

◆ DecodeMOVDDUPMask()

void llvm::DecodeMOVDDUPMask ( unsigned  NumElts,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ DecodeMOVHLPSMask()

void llvm::DecodeMOVHLPSMask ( unsigned  NElts,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a MOVHLPS instruction as a v2f64/v4f32 shuffle mask.

i.e. <3,1> or <6,7,2,3>

Definition at line 60 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ DecodeMOVLHPSMask()

void llvm::DecodeMOVLHPSMask ( unsigned  NElts,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a MOVLHPS instruction as a v2f64/v4f32 shuffle mask.

i.e. <0,2> or <0,1,4,5>

Definition at line 69 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ DecodeMOVSHDUPMask()

void llvm::DecodeMOVSHDUPMask ( unsigned  NumElts,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ DecodeMOVSLDUPMask()

void llvm::DecodeMOVSLDUPMask ( unsigned  NumElts,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ decodePackedBCD() [1/2]

int64_t llvm::decodePackedBCD ( const uint8_t *  Ptr,
size_t  ByteLen,
bool  IsSigned = true 
)
inline

Definition at line 26 of file BCD.h.

References assert(), I, and Ptr.

Referenced by decodePackedBCD().

◆ decodePackedBCD() [2/2]

template<typename ResultT , typename ValT >
ResultT llvm::decodePackedBCD ( const ValT  Val,
bool  IsSigned = true 
)
inline

Definition at line 46 of file BCD.h.

References decodePackedBCD().

◆ DecodePALIGNRMask()

void llvm::DecodePALIGNRMask ( unsigned  NumElts,
unsigned  Imm,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ DecodePSHUFBMask() [1/2]

void llvm::DecodePSHUFBMask ( ArrayRef< uint64_t RawMask,
const APInt UndefElts,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a PSHUFB mask from a raw array of constants such as from BUILD_VECTOR.

Definition at line 292 of file X86ShuffleDecode.cpp.

References llvm::sampleprof::Base, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::ArrayRef< T >::size(), SM_SentinelUndef, and SM_SentinelZero.

Referenced by addConstantComments(), and getTargetShuffleMask().

◆ DecodePSHUFBMask() [2/2]

void llvm::DecodePSHUFBMask ( const Constant C,
unsigned  Width,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ DecodePSHUFHWMask()

void llvm::DecodePSHUFHWMask ( unsigned  NumElts,
unsigned  Imm,
SmallVectorImpl< int > &  ShuffleMask 
)

Decodes the shuffle masks for pshufhw.

Definition at line 163 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ DecodePSHUFLWMask()

void llvm::DecodePSHUFLWMask ( unsigned  NumElts,
unsigned  Imm,
SmallVectorImpl< int > &  ShuffleMask 
)

Decodes the shuffle masks for pshuflw.

Definition at line 177 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ DecodePSHUFMask()

void llvm::DecodePSHUFMask ( unsigned  NumElts,
unsigned  ScalarBits,
unsigned  Imm,
SmallVectorImpl< int > &  ShuffleMask 
)

Decodes the shuffle masks for pshufd/pshufw/vpermilpd/vpermilps.

Definition at line 147 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back(), and Size.

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ DecodePSLLDQMask()

void llvm::DecodePSLLDQMask ( unsigned  NumElts,
unsigned  Imm,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ DecodePSRLDQMask()

void llvm::DecodePSRLDQMask ( unsigned  NumElts,
unsigned  Imm,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ DecodePSWAPMask()

void llvm::DecodePSWAPMask ( unsigned  NumElts,
SmallVectorImpl< int > &  ShuffleMask 
)

Decodes a PSWAPD 3DNow! instruction.

Definition at line 191 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by EmitAnyX86InstComments().

◆ DecodeScalarMoveMask()

void llvm::DecodeScalarMoveMask ( unsigned  NumElts,
bool  IsLoad,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a scalar float move instruction as a shuffle mask.

Definition at line 390 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back(), and SM_SentinelZero.

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ DecodeSHUFPMask()

void llvm::DecodeSHUFPMask ( unsigned  NumElts,
unsigned  ScalarBits,
unsigned  Imm,
SmallVectorImpl< int > &  ShuffleMask 
)

Decodes the shuffle masks for shufp*.

Definition at line 200 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ decodeSLEB128()

int64_t llvm::decodeSLEB128 ( const uint8_t *  p,
unsigned n = nullptr,
const uint8_t *  end = nullptr,
const char **  error = nullptr 
)
inline

Utility function to decode a SLEB128 value.

If error is non-null, it will point to a static error message, if an error occured. It will not be modified on success.

Definition at line 165 of file LEB128.h.

References error, LLVM_UNLIKELY, and UINT64_MAX.

Referenced by decodeSLEB128AndInc(), getExpressionFrameOffset(), llvm::DataExtractor::getSLEB128(), nextLEB(), readLEB128(), and llvm::BinaryStreamReader::readSLEB128().

◆ decodeSLEB128AndInc()

int64_t llvm::decodeSLEB128AndInc ( const uint8_t *&  p)
inline

Definition at line 210 of file LEB128.h.

References decodeSLEB128().

◆ DecodeSubVectorBroadcast()

void llvm::DecodeSubVectorBroadcast ( unsigned  DstNumElts,
unsigned  SrcNumElts,
SmallVectorImpl< int > &  ShuffleMask 
)

Decodes a broadcast of a subvector to a larger vector type.

Definition at line 254 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by EmitAnyX86InstComments().

◆ decodeULEB128()

uint64_t llvm::decodeULEB128 ( const uint8_t *  p,
unsigned n = nullptr,
const uint8_t *  end = nullptr,
const char **  error = nullptr 
)
inline

◆ decodeULEB128AndInc()

uint64_t llvm::decodeULEB128AndInc ( const uint8_t *&  p)
inline

Definition at line 203 of file LEB128.h.

References decodeULEB128().

◆ DecodeUNPCKHMask()

void llvm::DecodeUNPCKHMask ( unsigned  NumElts,
unsigned  ScalarBits,
SmallVectorImpl< int > &  ShuffleMask 
)

Decodes the shuffle masks for unpckhps/unpckhpd and punpckh*.

Definition at line 217 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ DecodeUNPCKLMask()

void llvm::DecodeUNPCKLMask ( unsigned  NumElts,
unsigned  ScalarBits,
SmallVectorImpl< int > &  ShuffleMask 
)

Decodes the shuffle masks for unpcklps/unpcklpd and punpckl*.

Definition at line 233 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ DecodeVALIGNMask()

void llvm::DecodeVALIGNMask ( unsigned  NumElts,
unsigned  Imm,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ DecodeVectorBroadcast()

void llvm::DecodeVectorBroadcast ( unsigned  NumElts,
SmallVectorImpl< int > &  ShuffleMask 
)

Decodes a broadcast of the first element of a vector.

Definition at line 249 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorImpl< T >::append().

Referenced by getTargetShuffleMask().

◆ DecodeVPERM2X128Mask()

void llvm::DecodeVPERM2X128Mask ( unsigned  NumElts,
unsigned  Imm,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ DecodeVPERMIL2PMask() [1/2]

void llvm::DecodeVPERMIL2PMask ( const Constant C,
unsigned  M2Z,
unsigned  ElSize,
unsigned  Width,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ DecodeVPERMIL2PMask() [2/2]

void llvm::DecodeVPERMIL2PMask ( unsigned  NumElts,
unsigned  ScalarBits,
unsigned  M2Z,
ArrayRef< uint64_t RawMask,
const APInt UndefElts,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a VPERMIL2PD/VPERMIL2PS variable mask from a raw array of constants.

Definition at line 498 of file X86ShuffleDecode.cpp.

References assert(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::ArrayRef< T >::size(), SM_SentinelUndef, and SM_SentinelZero.

Referenced by addConstantComments(), and getTargetShuffleMask().

◆ DecodeVPERMILPMask() [1/2]

void llvm::DecodeVPERMILPMask ( const Constant C,
unsigned  ElSize,
unsigned  Width,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a VPERMILP variable mask from an IR-level vector constant.

Definition at line 154 of file X86ShuffleDecodeConstantPool.cpp.

References assert(), llvm::CallingConv::C, extractConstantMask(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and SM_SentinelUndef.

◆ DecodeVPERMILPMask() [2/2]

void llvm::DecodeVPERMILPMask ( unsigned  NumElts,
unsigned  ScalarBits,
ArrayRef< uint64_t RawMask,
const APInt UndefElts,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a VPERMILPD/VPERMILPS variable mask from a raw array of constants.

Definition at line 476 of file X86ShuffleDecode.cpp.

References assert(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::ArrayRef< T >::size(), and SM_SentinelUndef.

Referenced by addConstantComments(), and getTargetShuffleMask().

◆ DecodeVPERMMask()

void llvm::DecodeVPERMMask ( unsigned  NumElts,
unsigned  Imm,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ DecodeVPERMV3Mask()

void llvm::DecodeVPERMV3Mask ( ArrayRef< uint64_t RawMask,
const APInt UndefElts,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a VPERMT2 W/D/Q/PS/PD mask from a raw array of constants.

Definition at line 558 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::ArrayRef< T >::size(), and SM_SentinelUndef.

Referenced by getTargetShuffleMask().

◆ DecodeVPERMVMask()

void llvm::DecodeVPERMVMask ( ArrayRef< uint64_t RawMask,
const APInt UndefElts,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a VPERM W/D/Q/PS/PD mask from a raw array of constants.

Definition at line 544 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::ArrayRef< T >::size(), and SM_SentinelUndef.

Referenced by getTargetShuffleMask().

◆ DecodeVPPERMMask() [1/2]

void llvm::DecodeVPPERMMask ( ArrayRef< uint64_t RawMask,
const APInt UndefElts,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a VPPERM mask from a raw array of constants such as from BUILD_VECTOR.

This can only basic masks (permutes + zeros), not any of the other operations that VPPERM can perform.

Definition at line 324 of file X86ShuffleDecode.cpp.

References assert(), llvm::SmallVectorImpl< T >::clear(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::ArrayRef< T >::size(), SM_SentinelUndef, and SM_SentinelZero.

Referenced by addConstantComments(), and getTargetShuffleMask().

◆ DecodeVPPERMMask() [2/2]

void llvm::DecodeVPPERMMask ( const Constant C,
unsigned  Width,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ decodeVSHUF64x2FamilyMask()

void llvm::decodeVSHUF64x2FamilyMask ( unsigned  NumElts,
unsigned  ScalarSize,
unsigned  Imm,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a shuffle packed values at 128-bit granularity (SHUFF32x4/SHUFF64x2/SHUFI32x4/SHUFI64x2) immediate mask into a shuffle mask.

Definition at line 263 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ DecodeZeroExtendMask()

void llvm::DecodeZeroExtendMask ( unsigned  SrcScalarBits,
unsigned  DstScalarBits,
unsigned  NumDstElts,
bool  IsAnyExtend,
SmallVectorImpl< int > &  ShuffleMask 
)

◆ DecodeZeroMoveLowMask()

void llvm::DecodeZeroMoveLowMask ( unsigned  NumElts,
SmallVectorImpl< int > &  ShuffleMask 
)

Decode a move lower and zero upper instruction as a shuffle mask.

Definition at line 384 of file X86ShuffleDecode.cpp.

References llvm::SmallVectorImpl< T >::append(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and SM_SentinelZero.

Referenced by EmitAnyX86InstComments(), and getTargetShuffleMask().

◆ decomposeBitTestICmp()

bool llvm::decomposeBitTestICmp ( Value LHS,
Value RHS,
CmpInst::Predicate Pred,
Value *&  X,
APInt Mask,
bool  LookThroughTrunc = true 
)

◆ def_chain()

template<class T >
iterator_range< def_chain_iterator< T > > llvm::def_chain ( T  MA,
MemoryAccess UpTo = nullptr 
)
inline

Definition at line 1350 of file MemorySSA.h.

References assert(), def_chain(), find(), and make_range().

Referenced by checkClobberSanity(), and def_chain().

◆ deleteConstant()

void llvm::deleteConstant ( Constant C)

◆ DeleteDeadBlock()

void llvm::DeleteDeadBlock ( BasicBlock BB,
DomTreeUpdater DTU = nullptr,
bool  KeepOneInputPHIs = false 
)

Delete the specified block, which must have no predecessors.

Definition at line 96 of file BasicBlockUtils.cpp.

References DeleteDeadBlocks().

Referenced by eraseDeadBBsAndChildren(), MergeBlockIntoPredecessor(), removeEmptyCleanup(), llvm::JumpThreadingPass::runImpl(), and TryToSimplifyUncondBranchFromEmptyBlock().

◆ DeleteDeadBlocks()

void llvm::DeleteDeadBlocks ( ArrayRef< BasicBlock * >  BBs,
DomTreeUpdater DTU = nullptr,
bool  KeepOneInputPHIs = false 
)

Delete the specified blocks from BB.

The set of deleted blocks must have no predecessors that are not being deleted themselves. BBs must have no duplicating blocks. If there are loops among this set of blocks, all relevant loop info updates should be done before this function is called. If KeepOneInputPHIs is true, one-input Phis in successors of blocks being deleted will be preserved.

Definition at line 101 of file BasicBlockUtils.cpp.

References llvm::DomTreeUpdater::applyUpdates(), assert(), llvm::ArrayRef< T >::begin(), llvm::DomTreeUpdater::deleteBB(), detachDeadBlocks(), llvm::ArrayRef< T >::end(), predecessors(), and llvm::ArrayRef< T >::size().

Referenced by CloneAndPruneIntoFromInst(), DeleteDeadBlock(), EliminateUnreachableBlocks(), removeUnreachableBlocks(), removeUnusedBlocksFromParent(), and workshareLoopTargetCallback().

◆ deleteDeadLoop()

void llvm::deleteDeadLoop ( Loop L,
DominatorTree DT,
ScalarEvolution SE,
LoopInfo LI,
MemorySSA MSSA = nullptr 
)

This function deletes dead loops.

The caller of this function needs to guarantee that the loop is infact dead. The function requires a bunch or prerequisites to be present:

  • The loop needs to be in LCSSA form
  • The loop needs to have a Preheader
  • A unique dedicated exit block must exist

This also updates the relevant analysis information in DT, SE, LI and MSSA if pointers to those are provided. It also updates the loop PM if an updater struct is provided.

Definition at line 483 of file LoopUtils.cpp.

References llvm::DomTreeUpdater::applyUpdates(), assert(), Block, blocks, llvm::IRBuilderBase::CreateBr(), llvm::IRBuilderBase::CreateCondBr(), llvm::IRBuilderBase::CreateUnreachable(), llvm::LoopInfoBase< BlockT, LoopT >::destroy(), llvm::LoopInfoBase< BlockT, LoopT >::end(), llvm::Instruction::eraseFromParent(), filterDbgVars(), find(), llvm::ScalarEvolution::forgetBlockAndLoopDispositions(), llvm::ScalarEvolution::forgetLoop(), llvm::PoisonValue::get(), llvm::IRBuilderBase::getFalse(), llvm::Instruction::getNumSuccessors(), I, Idx, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), llvm::DominatorTree::isReachableFromEntry(), make_early_inc_range(), llvm::Instruction::mayHaveSideEffects(), P, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::LoopInfoBase< BlockT, LoopT >::removeBlock(), llvm::LoopInfoBase< BlockT, LoopT >::removeLoop(), reverse(), llvm::IRBuilderBase::SetInsertPoint(), llvm::MemorySSA::verifyMemorySSA(), and VerifyMemorySSA.

Referenced by deleteLoopIfDead().

◆ DeleteDeadPHIs()

bool llvm::DeleteDeadPHIs ( BasicBlock BB,
const TargetLibraryInfo TLI = nullptr,
MemorySSAUpdater MSSAU = nullptr 
)

Examine each PHI in the given block and delete it if it is dead.

Also recursively delete any operands that become dead as a result. This includes tracing the def-use list from the PHI to see if it is ultimately unused or if it reaches an unused cycle. Return true if any PHIs were deleted.

Definition at line 164 of file BasicBlockUtils.cpp.

References llvm::BasicBlock::phis(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), RecursivelyDeleteDeadPHINode(), and llvm::SmallVectorBase< Size_T >::size().

Referenced by ReduceLoopStrength().

◆ delinearize()

void llvm::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.

Splits the SCEV into two vectors of SCEVs representing the subscripts and sizes of an array access.

The delinearization is a 3 step process: the first two steps compute the sizes of each subscript and the third step computes the access functions for the delinearized array:

  1. Find the terms in the step functions
  2. Compute the array size
  3. Compute the access function: divide the SCEV by the array size starting with the innermost dimensions found in step 2. The Quotient is the SCEV to be divided in the next step of the recursion. The Remainder is the subscript of the innermost dimension. Loop over all array dimensions computed in step 2.

To compute a uniform array size for several memory accesses to the same object, one can collect in step 1 all the step terms for all the memory accesses, and compute in step 2 a unique array shape. This guarantees that the array shape will be the same across all memory accesses.

FIXME: We could derive the result of steps 1 and 2 from a description of the array shape given in metadata.

Example:

A[][n][m]

for i for j for k A[j+k][2i][5i] =

The initial SCEV:

A[{{{0,+,2*m+5}_i, +, n*m}_j, +, n*m}_k]

  1. Find the different terms in the step functions: -> [2*m, 5, n*m, n*m]
  2. Compute the array size: sort and unique them -> [n*m, 2*m, 5] find the GCD of all the terms = 1 divide by the GCD and erase constant terms -> [n*m, 2*m] GCD = m divide by GCD -> [n, 2] remove constant terms -> [n] size of the array is A[unknown][n][m]
  3. Compute the access function a. Divide {{{0,+,2*m+5}_i, +, n*m}_j, +, n*m}_k by the innermost size m Quotient: {{{0,+,2}_i, +, n}_j, +, n}_k Remainder: {{{0,+,5}_i, +, 0}_j, +, 0}_k The remainder is the subscript of the innermost array dimension: [5i].

b. Divide Quotient: {{{0,+,2}_i, +, n}_j, +, n}_k by next outer size n Quotient: {{{0,+,0}_i, +, 1}_j, +, 1}_k Remainder: {{{0,+,2}_i, +, 0}_j, +, 0}_k The Remainder is the subscript of the next array dimension: [2i].

The subscript of the outermost dimension is the Quotient: [j+k].

Overall, we have: A[][n][m], and the access function: A[j+k][2i][5i].

Returns the remainder of the delinearization that is the offset start of the array. The SCEV->delinearize algorithm computes the multiples of SCEV coefficients: that is a pattern matching of sub expressions in the stride and base of a SCEV corresponding to the computation of a GCD (greatest common divisor) of base and stride. When SCEV->delinearize fails, it returns the SCEV unchanged.

For example: when analyzing the memory access A[i][j][k] in this loop nest

void foo(long n, long m, long o, double A[n][m][o]) {

for (long i = 0; i < n; i++) for (long j = 0; j < m; j++) for (long k = 0; k < o; k++) A[i][j][k] = 1.0; }

the delinearization input is the following AddRec SCEV:

AddRec: {{{A,+,(8 * m * o)}<for.i>,+,(8 * o)}<for.j>,+,8}<for.k>

From this SCEV, we are able to say that the base offset of the access is A because it appears as an offset that does not divide any of the strides in the loops:

CHECK: Base offset: A

and then SCEV->delinearize determines the size of some of the dimensions of the array as these are the multiples by which the strides are happening:

CHECK: ArrayDecl[UnknownSize][m][o] with elements of sizeof(double) bytes.

Note that the outermost dimension remains of UnknownSize because there are no strides that would help identifying the size of the last dimension: when the array has been statically allocated, one could compute the size of that dimension by dividing the overall size of the array by the size of the known dimensions: m * o * 8.

Finally delinearize provides the access functions for the array reference that does correspond to A[i][j][k] of the above C testcase:

CHECK: ArrayRef[{0,+,1}<for.i>][{0,+,1}<for.j>][{0,+,1}<for.k>]

The testcases are checking the output of a function pass: DelinearizationPass that walks through all loads and stores of a function asking for the SCEV of the memory access with respect to all enclosing loops, calling SCEV->delinearize on that and printing the results.

Definition at line 448 of file Delinearization.cpp.

References collectParametricTerms(), computeAccessFunctions(), dbgs(), llvm::SmallVectorBase< Size_T >::empty(), findArrayDimensions(), and LLVM_DEBUG.

◆ demangle()

bool Demangler::demangle ( std::string_view  MangledName)

Attempt to demangle a string using different demangling schemes.

The function uses heuristics to determine which demangling scheme to use.

Parameters
MangledName- reference to string to demangle.
Returns
- the demangled string, or a copy of the input string if no demangling occurred.

Definition at line 20 of file Demangle.cpp.

References microsoftDemangle(), nonMicrosoftDemangle(), and starts_with().

Referenced by llvm::GCOVFunction::getName(), llvm::DiagnosticInfoDontCall::print(), and llvm::logicalview::LVSymbolVisitor::visitKnownRecord().

◆ DemotePHIToStack()

AllocaInst * llvm::DemotePHIToStack ( 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.

DemotePHIToStack - This function takes a virtual register computed by a PHI node and replaces it with a slot in the stack frame allocated via alloca.

The phi node is deleted and it returns the pointer to the alloca inserted.

The PHI node is deleted. It returns the pointer to the alloca inserted.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 117 of file DemoteRegToStack.cpp.

References assert(), DL, F, P, llvm::User::replaceUsesOfWith(), and Users.

Referenced by runPass().

◆ DemoteRegToStack()

AllocaInst * llvm::DemoteRegToStack ( Instruction I,
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.

DemoteRegToStack - This function takes a virtual register computed by an Instruction and replaces it with a slot in the stack frame, allocated via alloca.

This allows the CFG to be changed around without fear of invalidating the SSA information for the value. It returns the pointer to the alloca inserted to create a stack slot for X.

This allows the CFG to be changed around without fear of invalidating the SSA information for the value. It returns the pointer to the alloca inserted to create a stack slot for I.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 22 of file DemoteRegToStack.cpp.

References assert(), DL, F, llvm::BasicBlock::getFirstInsertionPt(), llvm::InvokeInst::getNormalDest(), GetSuccessorNumber(), I, isCriticalEdge(), SplitCriticalEdge(), and successors().

Referenced by runPass().

◆ denormalizeForPostIncUse()

const SCEV * llvm::denormalizeForPostIncUse ( const SCEV S,
const PostIncLoopSet Loops,
ScalarEvolution SE 
)

Denormalize S to be post-increment for all loops present in Loops.

Definition at line 120 of file ScalarEvolutionNormalization.cpp.

References Denormalize, llvm::SCEVAddRecExpr::getLoop(), and Loops.

Referenced by llvm::IVUsers::AddUsersIfInteresting(), getAnyExtendConsideringPostIncUses(), and normalizeForPostIncUse().

◆ denormalModeKindName()

StringRef llvm::denormalModeKindName ( DenormalMode::DenormalModeKind  Mode)
inline

Return the name used for the denormal handling mode used by the expected names from the denormal-fp-math attribute.

Definition at line 202 of file FloatingPointMode.h.

References llvm::DenormalMode::Dynamic, llvm::DenormalMode::IEEE, Mode, llvm::DenormalMode::PositiveZero, and llvm::DenormalMode::PreserveSign.

Referenced by llvm::DenormalMode::print().

◆ depth_first()

template<class T >
iterator_range< df_iterator< T > > llvm::depth_first ( const T G)

◆ depth_first_ext()

template<class T , class SetTy >
iterator_range< df_ext_iterator< T, SetTy > > llvm::depth_first_ext ( const T G,
SetTy &  S 
)

◆ describeFuzzerAggregateOps()

void llvm::describeFuzzerAggregateOps ( std::vector< fuzzerop::OpDescriptor > &  Ops)

◆ describeFuzzerControlFlowOps()

void llvm::describeFuzzerControlFlowOps ( std::vector< fuzzerop::OpDescriptor > &  Ops)

◆ describeFuzzerFloatOps()

void llvm::describeFuzzerFloatOps ( std::vector< fuzzerop::OpDescriptor > &  Ops)

◆ describeFuzzerIntOps()

void llvm::describeFuzzerIntOps ( std::vector< fuzzerop::OpDescriptor > &  Ops)

◆ describeFuzzerOtherOps()

void llvm::describeFuzzerOtherOps ( std::vector< fuzzerop::OpDescriptor > &  Ops)

Definition at line 80 of file Operations.cpp.

References llvm::fuzzerop::selectDescriptor().

◆ describeFuzzerPointerOps()

void llvm::describeFuzzerPointerOps ( std::vector< fuzzerop::OpDescriptor > &  Ops)

Definition at line 84 of file Operations.cpp.

References llvm::fuzzerop::gepDescriptor().

Referenced by llvm::InjectorIRStrategy::getDefaultOps().

◆ describeFuzzerUnaryOperations()

void llvm::describeFuzzerUnaryOperations ( std::vector< fuzzerop::OpDescriptor > &  Ops)

Definition at line 70 of file Operations.cpp.

References llvm::fuzzerop::fnegDescriptor().

◆ describeFuzzerVectorOps()

void llvm::describeFuzzerVectorOps ( std::vector< fuzzerop::OpDescriptor > &  Ops)

◆ deserializeSectionKind()

DWARFSectionKind llvm::deserializeSectionKind ( uint32_t  Value,
unsigned  IndexVersion 
)

Convert a value read from an index section to the internal representation.

The conversion depends on the index section version, which is expected to be either 2 for pre-standard GNU proposal or 5 for DWARFv5 package file.

Definition at line 68 of file DWARFUnitIndex.cpp.

References assert(), CASE, DW_SECT_EXT_unknown, isKnownV5SectionID(), and TYPES.

◆ detachDeadBlocks()

void llvm::detachDeadBlocks ( ArrayRef< BasicBlock * >  BBs,
SmallVectorImpl< DominatorTree::UpdateType > *  Updates,
bool  KeepOneInputPHIs = false 
)

Replace contents of every block in BBs with single unreachable instruction.

If Updates is specified, collect all necessary DT updates into this vector. If KeepOneInputPHIs is true, one-input Phis in successors of blocks being deleted will be preserved.

Definition at line 62 of file BasicBlockUtils.cpp.

References assert(), llvm::PoisonValue::get(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and successors().

Referenced by DeleteDeadBlocks().

◆ DetermineUseCaptureKind()

UseCaptureKind llvm::DetermineUseCaptureKind ( const Use U,
llvm::function_ref< bool(Value *, const DataLayout &)>  IsDereferenceableOrNull 
)

Determine what kind of capture behaviour U may exhibit.

A use can be no-capture, a use can potentially capture, or a use can be passthrough such that the uses of the user or U should be inspected. The IsDereferenceableOrNull callback is used to rule out capturing for certain comparisons.

Definition at line 277 of file CaptureTracking.cpp.

References DL, I, Idx, isIntrinsicReturningPointerAliasingArgumentWithoutCapturing(), isNoAliasCall(), MAY_CAPTURE, MI, NO_CAPTURE, and PASSTHROUGH.

Referenced by PointerMayBeCaptured().

◆ df_begin()

template<class T >
df_iterator< T > llvm::df_begin ( const T G)

◆ df_end()

template<class T >
df_iterator< T > llvm::df_end ( const T G)

◆ df_ext_begin()

template<class T , class SetTy >
df_ext_iterator< T, SetTy > llvm::df_ext_begin ( const T G,
SetTy &  S 
)

◆ df_ext_end()

template<class T , class SetTy >
df_ext_iterator< T, SetTy > llvm::df_ext_end ( const T G,
SetTy &  S 
)

◆ diagnoseDontCall()

void llvm::diagnoseDontCall ( const CallInst CI)

◆ dieNeedsChildrenToBeMeaningful()

static bool llvm::dieNeedsChildrenToBeMeaningful ( uint32_t  Tag)
static

Definition at line 371 of file DWARFLinker.cpp.

References llvm_unreachable.

◆ DiffFilesWithTolerance()

int llvm::DiffFilesWithTolerance ( StringRef  NameA,
StringRef  NameB,
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.

This function allows you to specify an absolute and relative FP error that is allowed to exist. If you specify a string to fill in for the error option, it will set the string to an error message if an error occurs, or if the files are different.

This function differs from DiffFiles in that you can specify an absolute and relative FP error that is allowed to exist. If you specify a string to fill in for the error option, it will set the string to an error message if an error occurs, allowing the caller to distinguish between a failed diff and a file system error.

Definition at line 178 of file FileUtilities.cpp.

References BackupNumber(), CompareNumbers(), llvm::ErrorOr< T >::get(), llvm::MemoryBuffer::getBufferEnd(), llvm::MemoryBuffer::getBufferSize(), llvm::MemoryBuffer::getBufferStart(), llvm::ErrorOr< T >::getError(), llvm::MemoryBuffer::getFile(), and isNumberChar().

◆ discoverAndMapSubloop()

template<class BlockT , class LoopT >
static void llvm::discoverAndMapSubloop ( LoopT *  L,
ArrayRef< BlockT * >  Backedges,
LoopInfoBase< BlockT, LoopT > *  LI,
const DomTreeBase< BlockT > &  DomTree 
)
static

Stable LoopInfo Analysis - Build a loop tree using stable iterators so the result does / not depend on use list (block predecessor) order.

Discover a subloop with the specified backedges such that: All blocks within this loop are mapped to this loop or a subloop. And all subloops within this loop have their parent loop set to this loop or a subloop.

Definition at line 447 of file GenericLoopInfoImpl.h.

References llvm::ArrayRef< T >::begin(), llvm::ArrayRef< T >::end(), and llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor().

Referenced by llvm::LoopInfoBase< BlockT, LoopT >::analyze().

◆ DisplayGraph()

bool llvm::DisplayGraph ( StringRef  Filename,
bool  wait = true,
GraphProgram::Name  program = GraphProgram::DOT 
)

Definition at line 190 of file GraphWriter.cpp.

References args, errs(), ExecGraphViewer(), getProgramName(), llvm_unreachable, and OutputFilename.

Referenced by ViewGraph().

◆ DistributeRange()

template<typename LiveRangeT , typename EqClassesT >
static void llvm::DistributeRange ( LiveRangeT &  LR,
LiveRangeT *  SplitLRs[],
EqClassesT  VNIClasses 
)
static

Helper function that distributes live range value numbers and the corresponding segments of a primary live range LR to a list of newly created live ranges SplitLRs.

VNIClasses maps each value number in LR to 0 meaning it should stay or to 1..N meaning it should go to a specific live range in the SplitLRs array.

Definition at line 26 of file LiveRangeUtils.h.

References assert(), E, I, and llvm::VNInfo::id.

Referenced by llvm::ConnectedVNInfoEqClasses::Distribute().

◆ divideCeil()

uint64_t llvm::divideCeil ( uint64_t  Numerator,
uint64_t  Denominator 
)
inline

Returns the integer ceil(Numerator / Denominator).

Definition at line 417 of file MathExtras.h.

References alignTo().

Referenced by llvm::FoldingSetNodeID::AddString(), areRuntimeChecksProfitable(), llvm::msf::bytesToBlocks(), llvm::DwarfCompileUnit::createBaseTypeDIEs(), llvm::OpenMPIRBuilder::createTask(), llvm::ARMBaseInstrInfo::extraSizeToPredicateInstructions(), llvm::AMDGPU::getAddrSizeMIMGOp(), getDepthOfOptCmov(), llvm::msf::getFpmStreamLayout(), llvm::AMDGPU::IsaInfo::getGranulatedNumRegisterBlocks(), llvm::DataLayout::getIndexSize(), llvm::BasicTTIImplBase< T >::getInterleavedMemoryOpCost(), llvm::SystemZTTIImpl::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getIntImmCostInst(), llvm::RISCVTargetLowering::getLMULCost(), llvm::DataLayout::getMaxIndexSize(), llvm::X86TTIImpl::getMemoryOpCost(), llvm::msf::getNumFpmIntervals(), llvm::MipsTargetLowering::getNumRegistersForCallingConv(), llvm::AMDGPUSubtarget::getOccupancyWithLocalMemSize(), llvm::DataLayout::getPointerSize(), llvm::RISCVTTIImpl::getRegUsageForType(), llvm::X86TTIImpl::getReplicationShuffleCost(), llvm::SIRegisterInfo::getReservedRegs(), llvm::RISCVTTIImpl::getShuffleCost(), llvm::DataLayout::getTypeStoreSize(), llvm::TargetLoweringBase::getVectorTypeBreakdown(), llvm::AMDGPU::IsaInfo::getWavesPerEUForWorkGroup(), llvm::AMDGPU::IsaInfo::getWavesPerWorkGroup(), INITIALIZE_PASS(), llvm::AMDGPULegalizerInfo::legalizeBufferLoad(), lowerBuildVectorOfConstants(), optimizeSection(), llvm::OpenMPIRBuilder::registerTargetGlobalVariable(), removeRedundantDbgLocsUsingBackwardScan(), useRVVForFixedLengthVectorVT(), and llvm::SIInstrInfo::verifyInstruction().

◆ divideNearest()

uint64_t llvm::divideNearest ( uint64_t  Numerator,
uint64_t  Denominator 
)
inline

Returns the integer nearest(Numerator / Denominator).

Definition at line 422 of file MathExtras.h.

Referenced by getEstimatedTripCount().

◆ djbHash()

uint32_t llvm::djbHash ( StringRef  Buffer,
uint32_t  H = 5381 
)
inline

The Bernstein hash function used by the DWARF accelerator tables.

Definition at line 21 of file DJB.h.

References llvm::StringRef::bytes(), llvm::CallingConv::C, and H.

Referenced by caseFoldingDjbHash(), llvm::AppleAcceleratorTable::equal_range(), llvm::AppleAccelTableData::hash(), and hashFullyQualifiedName().

◆ dlangDemangle()

char * llvm::dlangDemangle ( std::string_view  MangledName)

Definition at line 565 of file DLangDemangle.cpp.

References D, and starts_with().

Referenced by nonMicrosoftDemangle().

◆ dlltoolDriverMain()

int llvm::dlltoolDriverMain ( llvm::ArrayRef< const char * >  ArgsArr)

◆ doesNotNeedToBeScheduled()

static bool llvm::doesNotNeedToBeScheduled ( Value V)
static

Checks if the specified value does not require scheduling.

It does not require scheduling if all operands and all users do not need to be scheduled in the current basic block.

Definition at line 1014 of file SLPVectorizer.cpp.

References areAllOperandsNonInsts(), and isUsedOutsideBlock().

Referenced by llvm::slpvectorizer::BoUpSLP::canVectorizeLoads(), and needToScheduleSingleInstruction().

◆ doesNotNeedToSchedule()

static bool llvm::doesNotNeedToSchedule ( ArrayRef< Value * >  VL)
static

Checks if the specified array of instructions does not require scheduling.

It is so if all either instructions have operands that do not require scheduling or their users do not require scheduling since they are phis or in other basic blocks.

Definition at line 1022 of file SLPVectorizer.cpp.

References all_of(), areAllOperandsNonInsts(), llvm::ArrayRef< T >::empty(), and isUsedOutsideBlock().

◆ DoInstrProfNameCompression()

cl::opt< bool > llvm::DoInstrProfNameCompression ( "enable-name-compression"  ,
cl::desc("Enable name/filename string compression")  ,
cl::init(true  
)

◆ doSystemDiff()

std::string llvm::doSystemDiff ( StringRef  Before,
StringRef  After,
StringRef  OldLineFormat,
StringRef  NewLineFormat,
StringRef  UnchangedLineFormat 
)

◆ drop_begin()

template<typename T >
auto llvm::drop_begin ( T &&  RangeOrContainer,
size_t  N = 1 
)

Return a range covering RangeOrContainer with the first N elements excluded.

Definition at line 329 of file STLExtras.h.

References adl_begin(), adl_end(), make_range(), and N.

Referenced by llvm::GEPOperator::accumulateConstantOffset(), addBasicBlockMetadata(), addVCallToSet(), llvm::ScheduleDAGInstrs::addVRegDefDeps(), llvm::X86InstrInfo::analyzeBranchPredicate(), llvm::CombinerHelper::applyExtendThroughPhis(), buildOrChain(), llvm::HexagonMCInstrInfo::bundleInstructions(), llvm::MDNodeOpsKey::calculateHash(), canFoldAsPredicatedOp(), canFoldIntoSelect(), CollectAddOperandsWithScales(), llvm::safestack::StackLayout::computeLayout(), llvm::SimpleLoopSafetyInfo::computeLoopSafetyInfo(), llvm::MachO::convertToInterfaceFile(), llvm::MachineInstr::copyImplicitOps(), createCall(), llvm::mca::EntryStage::cycleEnd(), DoInitialMatch(), emitDirectiveRelocJalr(), llvm::R600TargetLowering::EmitInstrWithCustomInserter(), llvm::AVRFrameLowering::emitPrologue(), llvm::MSP430FrameLowering::emitPrologue(), llvm::SystemZELFFrameLowering::emitPrologue(), llvm::SystemZXPLINKFrameLowering::emitPrologue(), llvm::TimeTraceProfiler::end(), llvm::sampleprof::DefaultFunctionPruningStrategy::Erase(), llvm::SIInstrInfo::expandMovDPP64(), llvm::cl::ExpansionContext::expandResponseFiles(), llvm::objcopy::elf::ELFWriter< ELFT >::finalize(), findLoadCallsAtConstantOffset(), findOptionMDForLoopID(), fixupPHIOpBanks(), llvm::InstCombinerImpl::foldPHIArgBinOpIntoPHI(), llvm::InstCombinerImpl::foldPHIArgExtractValueInstructionIntoPHI(), llvm::InstCombinerImpl::foldPHIArgGEPIntoPHI(), llvm::InstCombinerImpl::foldPHIArgInsertValueInstructionIntoPHI(), llvm::InstCombinerImpl::foldPHIArgLoadIntoPHI(), llvm::InstCombinerImpl::foldPHIArgOpIntoPHI(), FuseTwoAddrInst(), llvm::MachO::TextAPIReader::get(), llvm::LegalizerInfo::getActionDefinitionsBuilder(), getConstantAtOffset(), getExactSDiv(), llvm::SCEVExpander::getIVIncOperand(), llvm::Loop::getLocRange(), llvm::DILocation::getMergedLocations(), llvm::VPlan::getName(), llvm::AArch64TTIImpl::getShuffleCost(), llvm::ScalarEvolution::getUDivExactExpr(), getVectorSplat(), incorporateNewSCCRange(), insertSEH(), llvm::Loop::isAnnotatedParallel(), llvm::SITargetLowering::isCanonicalized(), llvm::IRSimilarity::isClose(), isKnownToBeAPowerOfTwo(), isSafeToMove(), LowerBUILD_VECTOR_i1(), makeFollowupLoopID(), makeGuardControlFlowExplicit(), makePostTransformationMetadata(), moveInstructionsToTheBeginning(), llvm::orc::operator<<(), performBuildShuffleExtendCombine(), llvm::InstCombinerImpl::PHIArgMergedDebugLoc(), llvm::ARMInstPrinter::printRegisterList(), llvm::ValueEnumerator::purgeFunction(), llvm::PHINode::removeIncomingValue(), llvm::slpvectorizer::BoUpSLP::VLOperands::reorder(), llvm::slpvectorizer::BoUpSLP::reorderBottomToTop(), setMemoryPhiValueForBlock(), simpleLibcall(), llvm::InstCombinerImpl::SliceUpIllegalIntegerPHI(), stripDebugLocFromLoopID(), llvm::LazyCallGraph::RefSCC::switchInternalEdgeToRef(), llvm::TailDuplicator::tailDuplicateBlocks(), unswitchTrivialSwitch(), updateCGAndAnalysisManagerForPass(), UpdateDbgValueInst(), updateOperands(), llvm::objcopy::elf::SymbolTableSection::updateSymbols(), VerifyPHIs(), and llvm::InstCombinerImpl::visitGEPOfGEP().

◆ drop_end()

template<typename T >
auto llvm::drop_end ( T &&  RangeOrContainer,
size_t  N = 1 
)

Return a range covering RangeOrContainer with the last N elements excluded.

Definition at line 336 of file STLExtras.h.

References adl_begin(), adl_end(), make_range(), and N.

Referenced by llvm::InstCombinerImpl::visitGEPOfGEP(), and llvm::VPlanTransforms::VPInstructionsToVPRecipes().

◆ dropDebugUsers()

void llvm::dropDebugUsers ( Instruction I)

Remove the debug intrinsic instructions for the given instruction.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 3562 of file Local.cpp.

References llvm::Instruction::eraseFromParent(), findDbgUsers(), and I.

Referenced by hoistAllInstructionsInto().

◆ dump()

template<unsigned ElementSize>
void llvm::dump ( const SparseBitVector< ElementSize > &  LHS,
raw_ostream out 
)

◆ dumpAmdKernelCode()

void llvm::dumpAmdKernelCode ( const amd_kernel_code_t C,
raw_ostream OS,
const char tab 
)

◆ dumpBytes()

void llvm::dumpBytes ( ArrayRef< uint8_t >  Bytes,
raw_ostream OS 
)

Convert ‘Bytes’ to a hex string and output to ‘OS’.

Definition at line 25 of file MCInstPrinter.cpp.

References First, and OS.

◆ dumpDotGraphToFile()

template<typename GraphType >
LLVM_DUMP_METHOD void llvm::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.

Definition at line 416 of file GraphWriter.h.

References G, Name, llvm::Twine::str(), and WriteGraph().

Referenced by llvm::SelectionDAG::dumpDotGraph().

◆ dumpMessage()

void llvm::dumpMessage ( SMLoc  Loc,
Init Message 
)

Definition at line 174 of file Error.cpp.

References assert(), and PrintNote().

Referenced by llvm::Record::emitRecordDumps().

◆ dumpRegSetPressure()

LLVM_DUMP_METHOD void llvm::dumpRegSetPressure ( ArrayRef< unsigned SetPressure,
const TargetRegisterInfo TRI 
)

◆ dumpSectionMemory()

static void llvm::dumpSectionMemory ( const SectionEntry S,
StringRef  State 
)
static

◆ dumpTypeQualifiedName()

void llvm::dumpTypeQualifiedName ( const DWARFDie DIE,
raw_ostream OS 
)

Definition at line 776 of file DWARFDie.cpp.

References llvm::DWARFTypePrinter::appendQualifiedName(), and OS.

Referenced by dumpAttribute().

◆ dumpTypeUnqualifiedName()

void llvm::dumpTypeUnqualifiedName ( const DWARFDie DIE,
raw_ostream OS,
std::string *  OriginalFullName = nullptr 
)

Definition at line 780 of file DWARFDie.cpp.

References llvm::DWARFTypePrinter::appendUnqualifiedName(), and OS.

Referenced by llvm::DWARFDie::getFullName().

◆ DuplicateInstructionsInSplitBetween()

BasicBlock * llvm::DuplicateInstructionsInSplitBetween ( 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.

Duplicate non-Phi instructions from the beginning of block up to StopAt instruction into a split block between BB and its predecessor.

Phi nodes are not duplicated, but their uses are handled correctly: we replace them with the uses of corresponding Phi inputs. ValueMapping is used to map the original instructions from BB to their newly-created copies. Returns the split block.

Definition at line 1093 of file CloneFunction.cpp.

References llvm::DomTreeUpdater::applyUpdates(), assert(), llvm::BasicBlock::begin(), count(), llvm::ValueMap< KeyT, ValueT, Config >::end(), llvm::ValueMap< KeyT, ValueT, Config >::find(), llvm::PHINode::getIncomingValueForBlock(), llvm::Value::getName(), llvm::BasicBlock::getTerminator(), I, llvm::Value::setName(), SplitEdge(), and successors().

Referenced by splitCallSite(), and llvm::JumpThreadingPass::threadGuard().

◆ dyn_cast() [1/4]

template<typename To , typename From >
decltype(auto) llvm::dyn_cast ( const From Val)
inline

dyn_cast<X> - Return the argument parameter cast to the specified type.

This casting operator returns null if the argument is of the wrong type, so it can be used to test for a type as well as cast if successful. The value passed in must be present, if not, use dyn_cast_if_present. This should be used in the context of an if statement like this:

if (const Instruction *I = dyn_cast<Instruction>(myVal)) { ... }

Definition at line 649 of file Casting.h.

References assert(), llvm::CastInfo< To, From, Enable >::doCastIfPossible(), and llvm::detail::isPresent().

Referenced by llvm::objcopy::elf::ELFReader::create(), llvm::OpenMPIRBuilder::createOffloadEntriesAndInfoMetadata(), llvm::object::getBuildID(), llvm::InstrProfCorrelator::getDataSize(), and llvm::ifs::readELFFile().

◆ dyn_cast() [2/4]

template<typename To , typename From >
decltype(auto) llvm::dyn_cast ( From Val)
inline

◆ dyn_cast() [3/4]

template<typename To , typename From >
decltype(auto) llvm::dyn_cast ( From Val)
inline

◆ dyn_cast() [4/4]

template<typename To , typename From >
decltype(auto) llvm::dyn_cast ( std::unique_ptr< From > &  Val)
inline

Definition at line 667 of file Casting.h.

References assert(), and llvm::detail::isPresent().

◆ dyn_cast_if_present() [1/3]

template<class X , class Y >
auto llvm::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.

Definition at line 738 of file Casting.h.

References llvm::CastInfo< To, From, Enable >::castFailed(), llvm::CastInfo< To, From, Enable >::doCastIfPossible(), llvm::detail::isPresent(), and llvm::detail::unwrapValue().

◆ dyn_cast_if_present() [2/3]

template<class X , class Y >
auto llvm::dyn_cast_if_present ( Y Val)

◆ dyn_cast_if_present() [3/3]

template<class X , class Y >
auto llvm::dyn_cast_if_present ( Y Val)

◆ dyn_cast_or_null() [1/3]

template<class X , class Y >
auto llvm::dyn_cast_or_null ( const Y Val)

Definition at line 759 of file Casting.h.

◆ dyn_cast_or_null() [2/3]

template<class X , class Y >
auto llvm::dyn_cast_or_null ( Y Val)

Definition at line 763 of file Casting.h.

◆ dyn_cast_or_null() [3/3]

template<class X , class Y >
auto llvm::dyn_cast_or_null ( Y Val)

Definition at line 767 of file Casting.h.

◆ ehAwareSplitEdge()

BasicBlock * llvm::ehAwareSplitEdge ( BasicBlock BB,
BasicBlock Succ,
LandingPadInst OriginalPad = nullptr,
PHINode LandingPadReplacement = nullptr,
const CriticalEdgeSplittingOptions Options = CriticalEdgeSplittingOptions(),
const Twine BBName = "" 
)

◆ EliminateDuplicatePHINodes() [1/2]

bool llvm::EliminateDuplicatePHINodes ( BasicBlock BB)

Check for and eliminate duplicate PHI nodes in this block.

This doesn't try to be clever about PHI nodes which differ only in the order of the incoming values, but instcombine orders them so it usually won't matter.

This overload removes the duplicate PHI nodes directly.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 1486 of file Local.cpp.

References EliminateDuplicatePHINodes(), and ToRemove.

Referenced by EliminateDuplicatePHINodes().

◆ EliminateDuplicatePHINodes() [2/2]

bool llvm::EliminateDuplicatePHINodes ( BasicBlock BB,
SmallPtrSetImpl< PHINode * > &  ToRemove 
)

Check for and eliminate duplicate PHI nodes in this block.

This doesn't try to be clever about PHI nodes which differ only in the order of the incoming values, but instcombine orders them so it usually won't matter.

This overload collects the PHI nodes to be removed into the ToRemove set.

Definition at line 1475 of file Local.cpp.

References EliminateDuplicatePHINodesNaiveImpl(), EliminateDuplicatePHINodesSetBasedImpl(), hasNItemsOrLess(), NDEBUG, PHICSEDebugHash, PHICSENumPHISmallSize, llvm::BasicBlock::phis(), and ToRemove.

◆ EliminateUnreachableBlocks()

bool llvm::EliminateUnreachableBlocks ( Function F,
DomTreeUpdater DTU = nullptr,
bool  KeepOneInputPHIs = false 
)

Delete all basic blocks from F that are not reachable from its entry node.

If KeepOneInputPHIs is true, one-input Phis in successors of blocks being deleted will be preserved.

Definition at line 125 of file BasicBlockUtils.cpp.

References llvm::SmallPtrSetImpl< PtrType >::count(), DeleteDeadBlocks(), depth_first_ext(), and F.

Referenced by llvm::UnreachableBlockElimPass::run().

◆ embedBitcodeInModule()

void llvm::embedBitcodeInModule ( llvm::Module M,
llvm::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).

If available, pass the serialized module via the Buf parameter. If not, pass an empty (default-initialized) MemoryBufferRef, and the serialization will be handled by this API. The same behavior happens if the provided Buf is not bitcode (i.e. if it's invalid data or even textual LLVM assembly). If EmbedCmdline is set, the command line is also exported in the corresponding section (__LLVM,_cmdline / .llvmcmd) - even if CmdArgs were empty.

Definition at line 5315 of file BitcodeWriter.cpp.

References llvm::GlobalValue::AppendingLinkage, assert(), collectUsedGlobalVariables(), Data, EmbedBitcode, llvm::SmallVectorBase< Size_T >::empty(), llvm::ConstantArray::get(), llvm::ConstantDataArray::get(), llvm::ArrayType::get(), llvm::MemoryBufferRef::getBufferEnd(), llvm::MemoryBufferRef::getBufferSize(), llvm::MemoryBufferRef::getBufferStart(), llvm::ConstantExpr::getPointerBitCastOrAddrSpaceCast(), getSectionNameForBitcode(), getSectionNameForCommandline(), llvm::Value::getType(), llvm::PointerType::getUnqual(), isBitcode(), OS, llvm::GlobalValue::PrivateLinkage, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::GlobalObject::setAlignment(), llvm::Value::setName(), llvm::GlobalObject::setSection(), llvm::SmallVectorBase< Size_T >::size(), llvm::Value::takeName(), and WriteBitcodeToFile().

Referenced by codegen(), and llvm::lto::opt().

◆ embedBufferInModule()

void llvm::embedBufferInModule ( Module M,
MemoryBufferRef  Buf,
StringRef  SectionName,
Align  Alignment = Align(1) 
)

◆ emitAMDGPUPrintfCall()

Value * llvm::emitAMDGPUPrintfCall ( IRBuilder<> &  Builder,
ArrayRef< Value * >  Args,
bool  isBuffered 
)

◆ EmitAnyX86InstComments()

bool llvm::EmitAnyX86InstComments ( const MCInst MI,
raw_ostream OS,
const MCInstrInfo MCII 
)

◆ emitAppleAccelTable()

template<typename DataT >
void llvm::emitAppleAccelTable ( AsmPrinter Asm,
AccelTable< DataT > &  Contents,
StringRef  Prefix,
const MCSymbol SecBegin 
)

◆ emitAppleAccelTableImpl()

void llvm::emitAppleAccelTableImpl ( AsmPrinter Asm,
AccelTableBase Contents,
StringRef  Prefix,
const MCSymbol SecBegin,
ArrayRef< AppleAccelTableData::Atom Atoms 
)

Definition at line 638 of file AccelTable.cpp.

References llvm::AccelTableBase::finalize().

Referenced by emitAppleAccelTable().

◆ emitARMRegPlusImmediate()

void llvm::emitARMRegPlusImmediate ( MachineBasicBlock MBB,
MachineBasicBlock::iterator MBBI,
const DebugLoc dl,
Register  DestReg,
Register  BaseReg,
int  NumBytes,
ARMCC::CondCodes  Pred,
Register  PredReg,
const ARMBaseInstrInfo TII,
unsigned  MIFlags = 0 
)

◆ emitBCmp()

Value * llvm::emitBCmp ( Value Ptr1,
Value Ptr2,
Value Len,
IRBuilderBase B,
const DataLayout DL,
const TargetLibraryInfo TLI 
)

Emit a call to the bcmp function.

Definition at line 1583 of file BuildLibCalls.cpp.

References B, emitLibCall(), getIntTy(), and getSizeTTy().

◆ emitBinaryFloatFnCall() [1/2]

Value * llvm::emitBinaryFloatFnCall ( 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.

Definition at line 1786 of file BuildLibCalls.cpp.

References B, emitBinaryFloatFnCallHelper(), getFloatFn(), llvm::Value::getType(), and Name.

◆ emitBinaryFloatFnCall() [2/2]

Value * llvm::emitBinaryFloatFnCall ( 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.

'fmin'). This function is known to take type matching 'Op1' and 'Op2' and return one value with the same type. If 'Op1/Op2' are long double, 'l' is added as the suffix of name, if 'Op1/Op2' are float, we add a 'f' suffix.

Definition at line 1771 of file BuildLibCalls.cpp.

References appendTypeSuffix(), assert(), B, emitBinaryFloatFnCallHelper(), llvm::TargetLibraryInfo::getLibFunc(), and Name.

Referenced by optimizeDoubleFP().

◆ emitCalloc()

Value * llvm::emitCalloc ( Value Num,
Value Size,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

◆ EmitDetailedRecords()

void llvm::EmitDetailedRecords ( RecordKeeper RK,
raw_ostream OS 
)

Definition at line 198 of file DetailedRecordsBackend.cpp.

References OS.

◆ emitDWARF5AccelTable() [1/2]

void llvm::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.

The CUs contains either symbols keeping offsets to the start of compilation unit, either offsets to the start of compilation unit themselves.

Definition at line 713 of file AccelTable.cpp.

References llvm::AccelTableBase::finalize().

◆ emitDWARF5AccelTable() [2/2]

void llvm::emitDWARF5AccelTable ( AsmPrinter Asm,
DWARF5AccelTable Contents,
const DwarfDebug DD,
ArrayRef< std::unique_ptr< DwarfCompileUnit > >  CUs 
)

◆ emitFPutC()

Value * llvm::emitFPutC ( Value Char,
Value File,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the fputc function.

This assumes that Char is an 'int', and File is a pointer to FILE.

Definition at line 1839 of file BuildLibCalls.cpp.

References B, F, getIntTy(), llvm::TargetLibraryInfo::getName(), getOrInsertLibFunc(), inferNonMandatoryLibFuncAttrs(), isLibFuncEmittable(), and llvm::CallBase::setCallingConv().

◆ emitFPutS()

Value * llvm::emitFPutS ( Value Str,
Value File,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the fputs function.

Str is required to be a pointer and File is a pointer to FILE.

Definition at line 1859 of file BuildLibCalls.cpp.

References B, F, getIntTy(), llvm::TargetLibraryInfo::getName(), getOrInsertLibFunc(), inferNonMandatoryLibFuncAttrs(), isLibFuncEmittable(), and llvm::CallBase::setCallingConv().

◆ emitFrameOffset()

void llvm::emitFrameOffset ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MBBI,
const DebugLoc DL,
unsigned  DestReg,
unsigned  SrcReg,
StackOffset  Offset,
const TargetInstrInfo TII,
MachineInstr::MIFlag  Flag = MachineInstr::NoFlags,
bool  SetNZCV = false,
bool  NeedsWinCFI = false,
bool HasWinCFI = nullptr,
bool  EmitCFAOffset = false,
StackOffset  InitialOffset = {},
unsigned  FrameReg = AArch64::SP 
)

emitFrameOffset - Emit instructions as needed to set DestReg to SrcReg plus Offset.

This is intended to be used from within the prolog/epilog insertion (PEI) pass, where a virtual scratch register may be allocated if necessary, to be replaced by the scavenger at the end of PEI.

Definition at line 5413 of file AArch64InstrInfo.cpp.

References assert(), llvm::AArch64InstrInfo::decomposeStackOffsetForFrameOffsets(), DL, emitFrameOffsetAdj(), F, llvm::StackOffset::getFixed(), llvm::MachineFunction::getFunction(), llvm::MachineBasicBlock::getParent(), llvm::StackOffset::getScalable(), MBB, MBBI, Offset, and TII.

Referenced by convertCalleeSaveRestoreToSPPrePostIncDec(), llvm::AArch64FrameLowering::eliminateCallFramePseudoInstr(), llvm::AArch64RegisterInfo::eliminateFrameIndex(), llvm::AArch64FrameLowering::emitEpilogue(), llvm::AArch64FrameLowering::emitPrologue(), llvm::AArch64InstrInfo::probedStackAlloc(), and rewriteAArch64FrameIndex().

◆ emitFWrite()

Value * llvm::emitFWrite ( Value Ptr,
Value Size,
Value File,
IRBuilderBase B,
const DataLayout DL,
const TargetLibraryInfo TLI 
)

Emit a call to the fwrite function.

This assumes that Ptr is a pointer, Size is an 'size_t', and File is a pointer to FILE.

Definition at line 1879 of file BuildLibCalls.cpp.

References B, F, llvm::TargetLibraryInfo::getName(), getOrInsertLibFunc(), getSizeTTy(), inferNonMandatoryLibFuncAttrs(), isLibFuncEmittable(), Ptr, llvm::CallBase::setCallingConv(), and Size.

◆ emitGEPOffset()

Value * llvm::emitGEPOffset ( 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).

Return the result as a signed integer of intptr size. When NoAssumptions is true, no assumptions about index computation not overflowing is made.

Definition at line 22 of file Local.cpp.

References llvm::IRBuilderBase::CreateAdd(), llvm::IRBuilderBase::CreateIntCast(), llvm::IRBuilderBase::CreateMul(), llvm::IRBuilderBase::CreateTypeSize(), llvm::IRBuilderBase::CreateVectorSplat(), DL, GEP, gep_type_begin(), llvm::TypeSize::getFixed(), llvm::Constant::getNullValue(), llvm::Type::getScalarType(), llvm::generic_gep_type_iterator< ItTy >::getSequentialElementStride(), llvm::generic_gep_type_iterator< ItTy >::getStructTypeOrNull(), llvm::GEPOperator::isInBounds(), llvm::Type::isVectorTy(), Offset, and Size.

Referenced by rewriteGEPAsOffset(), and llvm::ObjectSizeOffsetEvaluator::visitGEPOperator().

◆ emitHotColdNew()

Value * llvm::emitHotColdNew ( Value Num,
IRBuilderBase B,
const TargetLibraryInfo TLI,
LibFunc  NewFunc,
uint8_t  HotCold 
)

Emit a call to the hot/cold operator new function.

Definition at line 1943 of file BuildLibCalls.cpp.

References B, F, llvm::TargetLibraryInfo::getName(), llvm::Value::getType(), inferNonMandatoryLibFuncAttrs(), isLibFuncEmittable(), Name, and llvm::CallBase::setCallingConv().

◆ emitHotColdNewAligned()

Value * llvm::emitHotColdNewAligned ( Value Num,
Value Align,
IRBuilderBase B,
const TargetLibraryInfo TLI,
LibFunc  NewFunc,
uint8_t  HotCold 
)

◆ emitHotColdNewAlignedNoThrow()

Value * llvm::emitHotColdNewAlignedNoThrow ( Value Num,
Value Align,
Value NoThrow,
IRBuilderBase B,
const TargetLibraryInfo TLI,
LibFunc  NewFunc,
uint8_t  HotCold 
)

◆ emitHotColdNewNoThrow()

Value * llvm::emitHotColdNewNoThrow ( Value Num,
Value NoThrow,
IRBuilderBase B,
const TargetLibraryInfo TLI,
LibFunc  NewFunc,
uint8_t  HotCold 
)

◆ EmitImportsFiles()

std::error_code llvm::EmitImportsFiles ( StringRef  ModulePath,
StringRef  OutputFilename,
const std::map< std::string, GVSummaryMapTy > &  ModuleToSummariesForIndex 
)

Emit into OutputFilename the files module ModulePath will import from.

Emit the files ModulePath will import from into OutputFilename.

Definition at line 1354 of file FunctionImport.cpp.

References OutputFilename.

Referenced by llvm::lto::ThinBackendProc::emitFiles(), and llvm::ThinLTOCodeGenerator::emitImports().

◆ emitInlinedInto()

void llvm::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.

Definition at line 490 of file InlineAdvisor.cpp.

References addLocationToRemarks(), Block, DEBUG_TYPE, llvm::OptimizationRemarkEmitter::emit(), PassName, and Remark.

Referenced by emitInlinedIntoBasedOnCost().

◆ emitInlinedIntoBasedOnCost()

void llvm::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).

Definition at line 508 of file InlineAdvisor.cpp.

References Block, emitInlinedInto(), llvm::InlineCost::isAlways(), PassName, and Remark.

◆ EmitJSON()

void llvm::EmitJSON ( RecordKeeper RK,
raw_ostream OS 
)

Definition at line 189 of file JSONBackend.cpp.

References OS.

◆ emitLinkerFlagsForGlobalCOFF()

void llvm::emitLinkerFlagsForGlobalCOFF ( raw_ostream OS,
const GlobalValue GV,
const Triple TT,
Mangler Mangler 
)

◆ emitLinkerFlagsForUsedCOFF()

void llvm::emitLinkerFlagsForUsedCOFF ( raw_ostream OS,
const GlobalValue GV,
const Triple T,
Mangler M 
)

◆ emitMalloc()

Value * llvm::emitMalloc ( Value Num,
IRBuilderBase B,
const DataLayout DL,
const TargetLibraryInfo TLI 
)

◆ emitMemCCpy()

Value * llvm::emitMemCCpy ( Value Ptr1,
Value Ptr2,
Value Val,
Value Len,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the memccpy function.

Definition at line 1593 of file BuildLibCalls.cpp.

References B, emitLibCall(), getIntTy(), and getSizeTTy().

◆ emitMemChr()

Value * llvm::emitMemChr ( Value Ptr,
Value Val,
Value Len,
IRBuilderBase B,
const DataLayout DL,
const TargetLibraryInfo TLI 
)

Emit a call to the memchr function.

This assumes that Ptr is a pointer, Val is an 'int' value, and Len is an 'size_t' value.

Definition at line 1553 of file BuildLibCalls.cpp.

References B, emitLibCall(), getIntTy(), getSizeTTy(), and Ptr.

◆ emitMemCmp()

Value * llvm::emitMemCmp ( Value Ptr1,
Value Ptr2,
Value Len,
IRBuilderBase B,
const DataLayout DL,
const TargetLibraryInfo TLI 
)

Emit a call to the memcmp function.

Definition at line 1573 of file BuildLibCalls.cpp.

References B, emitLibCall(), getIntTy(), and getSizeTTy().

◆ emitMemCpyChk()

Value * llvm::emitMemCpyChk ( 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.

This expects that the Len and ObjSize have type 'size_t' and Dst/Src are pointers.

Definition at line 1522 of file BuildLibCalls.cpp.

References B, F, llvm::AttributeList::FunctionIndex, llvm::AttributeList::get(), llvm::FunctionCallee::getCallee(), getOrInsertLibFunc(), getSizeTTy(), isLibFuncEmittable(), llvm::CallBase::setCallingConv(), and llvm::Value::stripPointerCasts().

◆ emitMemPCpy()

Value * llvm::emitMemPCpy ( Value Dst,
Value Src,
Value Len,
IRBuilderBase B,
const DataLayout DL,
const TargetLibraryInfo TLI 
)

Emit a call to the mempcpy function.

Definition at line 1544 of file BuildLibCalls.cpp.

References B, emitLibCall(), and getSizeTTy().

◆ emitMemRChr()

Value * llvm::emitMemRChr ( Value Ptr,
Value Val,
Value Len,
IRBuilderBase B,
const DataLayout DL,
const TargetLibraryInfo TLI 
)

Emit a call to the memrchr function, analogously to emitMemChr.

Definition at line 1563 of file BuildLibCalls.cpp.

References B, emitLibCall(), getIntTy(), getSizeTTy(), and Ptr.

◆ emitPutChar()

Value * llvm::emitPutChar ( Value Char,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

◆ emitPutS()

Value * llvm::emitPutS ( Value Str,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

◆ emitSNPrintf()

Value * llvm::emitSNPrintf ( Value Dest,
Value Size,
Value Fmt,
ArrayRef< Value * >  Args,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the snprintf function.

Definition at line 1603 of file BuildLibCalls.cpp.

References append_range(), B, emitLibCall(), getIntTy(), getSizeTTy(), and Size.

◆ emitSourceFileHeader()

void llvm::emitSourceFileHeader ( StringRef  Desc,
raw_ostream OS,
const RecordKeeper Record = RecordKeeper() 
)

emitSourceFileHeader - Output an LLVM style file header to the specified raw_ostream.

Definition at line 44 of file TableGenBackend.cpp.

References assert(), llvm::sys::path::filename(), Length, MAX_LINE_LEN, OS, printLine(), and llvm::StringRef::size().

◆ emitSPrintf()

Value * llvm::emitSPrintf ( Value Dest,
Value Fmt,
ArrayRef< Value * >  VariadicArgs,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the sprintf function.

Definition at line 1616 of file BuildLibCalls.cpp.

References append_range(), B, emitLibCall(), and getIntTy().

◆ emitStpCpy()

Value * llvm::emitStpCpy ( Value Dst,
Value Src,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the stpcpy function to the builder, for the specified pointer arguments.

Definition at line 1499 of file BuildLibCalls.cpp.

References B, and emitLibCall().

◆ emitStpNCpy()

Value * llvm::emitStpNCpy ( 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.

Definition at line 1514 of file BuildLibCalls.cpp.

References B, emitLibCall(), and getSizeTTy().

◆ emitStrCat()

Value * llvm::emitStrCat ( Value Dest,
Value Src,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the strcat function.

Definition at line 1628 of file BuildLibCalls.cpp.

References B, and emitLibCall().

◆ emitStrChr()

Value * llvm::emitStrChr ( 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.

Ptr is required to be some pointer type, and the return value has 'i8*' type.

Definition at line 1473 of file BuildLibCalls.cpp.

References B, llvm::CallingConv::C, emitLibCall(), getIntTy(), and Ptr.

◆ emitStrCpy()

Value * llvm::emitStrCpy ( Value Dst,
Value Src,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the strcpy function to the builder, for the specified pointer arguments.

Definition at line 1492 of file BuildLibCalls.cpp.

References B, and emitLibCall().

◆ emitStrDup()

Value * llvm::emitStrDup ( Value Ptr,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the strdup function to the builder, for the specified pointer.

Ptr is required to be some pointer type, and the return value has 'i8*' type.

Definition at line 1467 of file BuildLibCalls.cpp.

References B, emitLibCall(), and Ptr.

◆ emitStrLCat()

Value * llvm::emitStrLCat ( Value Dest,
Value Src,
Value Size,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the strlcat function.

Definition at line 1645 of file BuildLibCalls.cpp.

References B, emitLibCall(), getSizeTTy(), and Size.

◆ emitStrLCpy()

Value * llvm::emitStrLCpy ( Value Dest,
Value Src,
Value Size,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the strlcpy function.

Definition at line 1636 of file BuildLibCalls.cpp.

References B, emitLibCall(), getSizeTTy(), and Size.

◆ emitStrLen()

Value * llvm::emitStrLen ( Value Ptr,
IRBuilderBase B,
const DataLayout DL,
const TargetLibraryInfo TLI 
)

Emit a call to the strlen function to the builder, for the specified pointer.

Ptr is required to be some pointer type, and the return value has 'size_t' type.

Definition at line 1460 of file BuildLibCalls.cpp.

References B, emitLibCall(), getSizeTTy(), and Ptr.

◆ emitStrNCat()

Value * llvm::emitStrNCat ( Value Dest,
Value Src,
Value Size,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the strncat function.

Definition at line 1654 of file BuildLibCalls.cpp.

References B, emitLibCall(), getSizeTTy(), and Size.

◆ emitStrNCmp()

Value * llvm::emitStrNCmp ( Value Ptr1,
Value Ptr2,
Value Len,
IRBuilderBase B,
const DataLayout DL,
const TargetLibraryInfo TLI 
)

Emit a call to the strncmp function to the builder.

Definition at line 1481 of file BuildLibCalls.cpp.

References B, emitLibCall(), getIntTy(), and getSizeTTy().

◆ emitStrNCpy()

Value * llvm::emitStrNCpy ( 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.

Definition at line 1506 of file BuildLibCalls.cpp.

References B, emitLibCall(), and getSizeTTy().

◆ emitT2RegPlusImmediate()

void llvm::emitT2RegPlusImmediate ( MachineBasicBlock MBB,
MachineBasicBlock::iterator MBBI,
const DebugLoc dl,
Register  DestReg,
Register  BaseReg,
int  NumBytes,
ARMCC::CondCodes  Pred,
Register  PredReg,
const ARMBaseInstrInfo TII,
unsigned  MIFlags = 0 
)

◆ emitThumbRegPlusImmediate()

void llvm::emitThumbRegPlusImmediate ( MachineBasicBlock MBB,
MachineBasicBlock::iterator MBBI,
const DebugLoc dl,
Register  DestReg,
Register  BaseReg,
int  NumBytes,
const TargetInstrInfo TII,
const ARMBaseRegisterInfo MRI,
unsigned  MIFlags = 0 
)

emitThumbRegPlusImmediate - Emits a series of instructions to materialize a destreg = basereg + immediate in Thumb code.

Tries a series of ADDs or SUBs first, and uses a constant pool value if the instruction sequence would be too long. This is allowed to modify the condition flags.

Definition at line 251 of file ThumbRegisterInfo.cpp.

References llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::ARMCC::AL, alignTo(), assert(), BuildMI(), emitThumbRegPlusImmInReg(), isARMLowRegister(), llvm::RegState::Kill, MBB, MBBI, MRI, predOps(), llvm::MachineInstrBuilder::setMIFlags(), t1CondCodeOp(), and TII.

Referenced by llvm::ThumbRegisterInfo::eliminateFrameIndex(), emitCallSPUpdate(), llvm::Thumb1FrameLowering::emitEpilogue(), emitPrologueEpilogueSPUpdate(), and llvm::ThumbRegisterInfo::rewriteFrameIndex().

◆ emitUnaryFloatFnCall() [1/2]

Value * llvm::emitUnaryFloatFnCall ( 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.

Definition at line 1733 of file BuildLibCalls.cpp.

References B, emitUnaryFloatFnCallHelper(), getFloatFn(), and Name.

◆ emitUnaryFloatFnCall() [2/2]

Value * llvm::emitUnaryFloatFnCall ( Value Op,
const TargetLibraryInfo TLI,
StringRef  Name,
IRBuilderBase B,
const AttributeList Attrs 
)

Emit a call to the unary function named 'Name' (e.g.

'floor'). This function is known to take a single of type matching 'Op' and returns one value with the same type. If 'Op' is a long double, 'l' is added as the suffix of name, if 'Op' is a float, we add a 'f' suffix.

Definition at line 1721 of file BuildLibCalls.cpp.

References appendTypeSuffix(), B, emitUnaryFloatFnCallHelper(), llvm::TargetLibraryInfo::getLibFunc(), and Name.

Referenced by getSqrtCall(), optimizeDoubleFP(), and llvm::InstCombinerImpl::visitFDiv().

◆ emitVSNPrintf()

Value * llvm::emitVSNPrintf ( Value Dest,
Value Size,
Value Fmt,
Value VAList,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the vsnprintf function.

Definition at line 1663 of file BuildLibCalls.cpp.

References B, emitLibCall(), getIntTy(), getSizeTTy(), llvm::Value::getType(), and Size.

◆ emitVSPrintf()

Value * llvm::emitVSPrintf ( Value Dest,
Value Fmt,
Value VAList,
IRBuilderBase B,
const TargetLibraryInfo TLI 
)

Emit a call to the vsprintf function.

Definition at line 1674 of file BuildLibCalls.cpp.

References B, emitLibCall(), getIntTy(), and llvm::Value::getType().

◆ EnableExtTspBlockPlacement()

cl::opt< bool > llvm::EnableExtTspBlockPlacement ( "enable-ext-tsp-block-placement"  ,
cl::Hidden  ,
cl::init(false)  ,
cl::desc("Enable machine block placement based on the ext-tsp model, " "optimizing I-cache utilization.")   
)

◆ EnableFSDiscriminator()

cl::opt< bool > llvm::EnableFSDiscriminator ( "enable-fs-discriminator"  ,
cl::Hidden  ,
cl::desc("Enable adding flow sensitive discriminators")   
)

◆ EnableInferAlignmentPass()

cl::opt< bool > llvm::EnableInferAlignmentPass ( "enable-infer-alignment-pass"  ,
cl::init(true ,
cl::Hidden  ,
cl::ZeroOrMore  ,
cl::desc("Enable the InferAlignment pass, disabling alignment inference in " "InstCombine")   
)

◆ EnableKnowledgeRetention()

cl::opt< bool > llvm::EnableKnowledgeRetention ( "enable-knowledge-retention"  ,
cl::init(false)  ,
cl::Hidden  ,
cl::desc("enable preservation of attributes throughout code transformation")   
)

◆ EnableLTOInternalization()

cl::opt< bool > llvm::EnableLTOInternalization ( "enable-lto-internalization"  ,
cl::init(true ,
cl::Hidden  ,
cl::desc("Enable global value internalization in LTO")   
)

Enable global value internalization in LTO.

◆ EnableMemProfContextDisambiguation()

cl::opt< bool > llvm::EnableMemProfContextDisambiguation ( "enable-memprof-context-disambiguation"  ,
cl::init(false)  ,
cl::Hidden  ,
cl::ZeroOrMore  ,
cl::desc("Enable MemProf context disambiguation")   
)

◆ EnablePrettyStackTrace()

void llvm::EnablePrettyStackTrace ( )

Enables dumping a "pretty" stack trace when the program crashes.

See also
PrettyStackTraceEntry

Definition at line 279 of file PrettyStackTrace.cpp.

Referenced by LLVMEnablePrettyStackTrace(), and llvm::PrettyStackTraceProgram::PrettyStackTraceProgram().

◆ EnablePrettyStackTraceOnSigInfoForThisThread()

void llvm::EnablePrettyStackTraceOnSigInfoForThisThread ( bool  ShouldEnable = true)

Enables (or disables) dumping a "pretty" stack trace when the user sends SIGINFO or SIGUSR1 to the current process.

This is a per-thread decision so that a program can choose to print stack traces only on a primary thread, or on all threads that use PrettyStackTraceEntry.

See also
EnablePrettyStackTrace
PrettyStackTraceEntry

Definition at line 287 of file PrettyStackTrace.cpp.

References llvm::sys::SetInfoSignalFunction().

◆ EnableStatistics()

void llvm::EnableStatistics ( bool  DoPrintOnExit = true)

Enable the collection and printing of statistics.

Definition at line 134 of file Statistic.cpp.

References Enabled, and PrintOnExit.

Referenced by llvm::lto::setupStatsFile().

◆ encode() [1/2]

unsigned llvm::encode ( Align  A)
inline

Returns a representation of the alignment, the encoded value is positive by definition.

Definition at line 230 of file Alignment.h.

References A, and encode().

◆ encode() [2/2]

unsigned llvm::encode ( MaybeAlign  A)
inline

Returns a representation of the alignment that encodes undefined as 0.

Definition at line 217 of file Alignment.h.

Referenced by encode(), encodeCnt(), llvm::GlobalObject::setAlignment(), llvm::MCSymbol::setCommon(), llvm::ISD::ArgFlagsTy::setMemAlign(), and llvm::ISD::ArgFlagsTy::setOrigAlign().

◆ encodeBase64()

template<class InputBytes >
std::string llvm::encodeBase64 ( InputBytes const Bytes)

Definition at line 23 of file Base64.h.

Referenced by llvm::TargetLoweringObjectFileELF::emitModuleMetadata().

◆ encodeSLEB128() [1/2]

unsigned llvm::encodeSLEB128 ( int64_t  Value,
raw_ostream OS,
unsigned  PadTo = 0 
)
inline

◆ encodeSLEB128() [2/2]

unsigned llvm::encodeSLEB128 ( int64_t  Value,
uint8_t *  p,
unsigned  PadTo = 0 
)
inline

Utility function to encode a SLEB128 value to a buffer.

Returns the length in bytes of the encoded value.

Definition at line 52 of file LEB128.h.

◆ encodeULEB128() [1/2]

unsigned llvm::encodeULEB128 ( uint64_t  Value,
raw_ostream OS,
unsigned  PadTo = 0 
)
inline

Utility function to encode a ULEB128 value to an output stream.

Returns the length in bytes of the encoded value.

Definition at line 80 of file LEB128.h.

References OS.

Referenced by appendScalableVectorExpression(), appendVGScaledOffsetExpr(), llvm::dwarf_linker::parallel::SectionDescriptor::applyULEB128(), llvm::dwarf_linker::parallel::CompileUnit::cloneDieAttrExpression(), collectGlobalObjectNameStrings(), createCFAOffset(), createDefCFAExpression(), createDefCFAOffset(), llvm::dwarf_linker::parallel::DwarfUnit::emitAbbreviations(), llvm::X86FrameLowering::emitCalleeSavedFrameMoves(), llvm::dwarf_linker::parallel::DwarfUnit::emitDwarfAbbrevEntry(), emitFileEntry(), llvm::X86FrameLowering::emitPrologue(), llvm::UnwindOpcodeAssembler::EmitSPOffset(), llvm::BufferByteStreamer::emitULEB128(), llvm::MCStreamer::emitULEB128IntValue(), llvm::MCDwarfLineAddr::encode(), llvm::DWARFYAML::Data::getAbbrevTableContentByIndex(), llvm::LoongArchAsmBackend::relaxDwarfLineAddr(), llvm::RISCVAsmBackend::relaxDwarfLineAddr(), llvm::coverage::CoverageMappingWriter::write(), llvm::coverage::CoverageFilenamesSectionWriter::write(), llvm::coverage::TestingFormatWriter::write(), llvm::sampleprof::SampleProfileWriterBinary::writeBody(), writeCounter(), llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeCSNameIdx(), llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeCSNameTableSection(), writeDIE(), writeExtendedOpcode(), llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeFuncMetadata(), llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeFuncOffsetTable(), writeLimits(), writeLineTableOpcode(), writeListEntry(), llvm::sampleprof::SampleProfileWriterBinary::writeMagicIdent(), llvm::sampleprof::SampleProfileWriterBinary::writeNameIdx(), llvm::sampleprof::SampleProfileWriterBinary::writeNameTable(), llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeNameTable(), llvm::sampleprof::SampleProfileWriterBinary::writeSample(), llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeSample(), writeStringRef(), llvm::sampleprof::SampleProfileWriterBinary::writeSummary(), llvm::gsym::FileWriter::writeULEB(), and llvm::BinaryStreamWriter::writeULEB128().

◆ encodeULEB128() [2/2]

unsigned llvm::encodeULEB128 ( uint64_t  Value,
uint8_t *  p,
unsigned  PadTo = 0 
)
inline

Utility function to encode a ULEB128 value to a buffer.

Returns the length in bytes of the encoded value.

Definition at line 104 of file LEB128.h.

◆ enum_seq() [1/2]

template<typename EnumT , typename = std::enable_if_t<std::is_enum<EnumT>::value>>
auto llvm::enum_seq ( EnumT  Begin,
EnumT  End 
)

Iterate over an enum type from Begin up to - but not including - End.

Note: enum_seq will generate each consecutive value, even if no enumerator with that value exists. Note: Begin and End values have to be within [INTMAX_MIN, INTMAX_MAX] for forward iteration (resp. [INTMAX_MIN + 1, INTMAX_MAX] for reverse iteration).

Definition at line 337 of file Sequence.h.

References End.

Referenced by llvm::TargetLoweringBase::initActions().

◆ enum_seq() [2/2]

template<typename EnumT , typename = std::enable_if_t<std::is_enum<EnumT>::value>>
auto llvm::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.

Note: enum_seq will generate each consecutive value, even if no enumerator with that value exists. Note: Begin and End values have to be within [INTMAX_MIN, INTMAX_MAX] for forward iteration (resp. [INTMAX_MIN + 1, INTMAX_MAX] for reverse iteration).

Definition at line 352 of file Sequence.h.

References End.

◆ enum_seq_inclusive() [1/2]

template<typename EnumT , typename = std::enable_if_t<std::is_enum<EnumT>::value>>
auto llvm::enum_seq_inclusive ( EnumT  Begin,
EnumT  End 
)

Iterate over an enum type from Begin to End inclusive.

Note: enum_seq_inclusive will generate each consecutive value, even if no enumerator with that value exists. Note: Begin and End values have to be within [INTMAX_MIN, INTMAX_MAX - 1] for forward iteration (resp. [INTMAX_MIN + 1, INTMAX_MAX - 1] for reverse iteration).

Definition at line 364 of file Sequence.h.

References End.

Referenced by llvm::MVT::all_valuetypes(), llvm::CmpInst::FCmpPredicates(), llvm::MVT::fixedlen_vector_valuetypes(), llvm::MVT::fp_fixedlen_vector_valuetypes(), llvm::MVT::fp_scalable_vector_valuetypes(), llvm::MVT::fp_valuetypes(), llvm::CmpInst::ICmpPredicates(), llvm::MVT::integer_fixedlen_vector_valuetypes(), llvm::MVT::integer_scalable_vector_valuetypes(), llvm::MVT::integer_valuetypes(), llvm::MemoryEffectsBase< LocationEnum >::locations(), llvm::MVT::scalable_vector_valuetypes(), and llvm::MVT::vector_valuetypes().

◆ enum_seq_inclusive() [2/2]

template<typename EnumT , typename = std::enable_if_t<std::is_enum<EnumT>::value>>
auto llvm::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.

Note: enum_seq_inclusive will generate each consecutive value, even if no enumerator with that value exists. Note: Begin and End values have to be within [INTMAX_MIN, INTMAX_MAX - 1] for forward iteration (resp. [INTMAX_MIN + 1, INTMAX_MAX - 1] for reverse iteration).

Definition at line 379 of file Sequence.h.

References End.

◆ enumerate()

template<typename FirstRange , typename... RestRanges>
auto llvm::enumerate ( FirstRange &&  First,
RestRanges &&...  Rest 
)

Given two or more input ranges, returns a new range whose values are 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.

All input ranges are required to have equal lengths. Note that the returned iterator allows for the values (B, C, ...) to be modified. Example:

{c++}
std::vector<char> Letters = {'A', 'B', 'C', 'D'};
std::vector<int> Vals = {10, 11, 12, 13};
for (auto [Index, Letter, Value] : enumerate(Letters, Vals)) {
printf("Item %zu - %c: %d\n", Index, Letter, Value);
Value -= 10;
}
auto enumerate(FirstRange &&First, RestRanges &&...Rest)
Given two or more input ranges, returns a new range whose values are are tuples (A,...
Definition: STLExtras.h:2406

Output: Item 0 - A: 10 Item 1 - B: 11 Item 2 - C: 12 Item 3 - D: 13

or using an iterator:

{c++}
for (auto it : enumerate(Vals)) {
it.value() += 10;
printf("Item %zu: %d\n", it.index(), it.value());
}

Output: Item 0: 20 Item 1: 21 Item 2: 22 Item 3: 23

Definition at line 2406 of file STLExtras.h.

References all_equal(), assert(), First, and range_size().

Referenced by llvm::AliasSetTracker::add(), llvm::slpvectorizer::BoUpSLP::ShuffleCostEstimator::add(), llvm::ConstraintSystem::addVariableRow(), buildIntrinsicArgTypes(), buildUseMask(), llvm::slpvectorizer::BoUpSLP::canVectorizeLoads(), clusterSortPtrAccesses(), combineX86ShufflesRecursively(), llvm::SelectionDAG::computeKnownBits(), ComputeLinearIndex(), costAndCollectOperands(), llvm::object::MinidumpFile::create(), llvm::object::ELFFile< ELFT >::createFakeSections(), llvm::OpenMPIRBuilder::createReductions(), doesInTreeUserNeedToExtract(), llvm::DbgValueHistoryMap::dump(), llvm::MCPseudoProbeSections::emit(), emitDWARF5AccelTable(), llvm::Evaluator::EvaluateFunction(), llvm::VPWidenCallRecipe::execute(), expandToSwitch(), expandUser(), llvm::jitlink::finalizeBlockRelax(), findFuncPointers(), llvm::InstCombinerImpl::foldAggregateConstructionIntoAggregateReuse(), llvm::DWARFYAML::Data::getAbbrevTableInfoByID(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), llvm::AAResults::getModRefInfo(), getPerfectShuffleCost(), llvm::RISCVTTIImpl::getPointersChainCost(), llvm::slpvectorizer::BoUpSLP::getReorderingData(), llvm::AArch64TTIImpl::getShuffleCost(), llvm::slpvectorizer::BoUpSLP::getTreeCost(), llvm::X86TargetLowering::isGuaranteedNotToBeUndefOrPoisonForTargetNode(), isReverseOrder(), isSimpleVIDSequence(), llvm::coverage::CoverageMapping::load(), lowerBuildVectorOfConstants(), lowerBuildVectorViaDominantValues(), llvm::RISCVTargetLowering::LowerOperation(), lowerShuffleAsDecomposedShuffleMerge(), lowerVECTOR_SHUFFLE(), moveFunctionAdaptingType(), llvm::SlotIndexes::packIndexes(), preAssignMask(), llvm::jitlink::relaxBlock(), reorderOrder(), replaceWithCallToVeclib(), llvm::InnerLoopVectorizer::scalarizeInstruction(), llvm::ARMTargetLowering::shouldSinkOperands(), llvm::RISCVTargetLowering::shouldSinkOperands(), llvm::OpenMPIRBuilder::tileLoops(), updateBranchWeights(), llvm::RISCVInstrInfo::verifyInstruction(), llvm::InstCombinerImpl::visitGEPOfGEP(), and llvm::yaml::yaml2minidump().

◆ enumToString()

template<typename T , typename TEnum >
std::string llvm::enumToString ( T  Value,
ArrayRef< EnumEntry< TEnum > >  EnumValues 
)

Definition at line 93 of file ScopedPrinter.h.

◆ equal()

template<typename L , typename R >
bool llvm::equal ( L &&  LRange,
R &&  RRange 
)

Wrapper function around std::equal to detect if pair-wise elements between two ranges are the same.

Definition at line 2025 of file STLExtras.h.

References adl_begin(), and adl_end().

Referenced by llvm::RISCVTTIImpl::getShuffleCost(), LiveDebugValues::DbgValue::hasIdenticalValidLocOps(), matchSymmetricPhiNodesPair(), and LiveDebugValues::DbgValue::operator==().

◆ erase()

template<typename Container , typename ValueType >
void llvm::erase ( Container &  C,
ValueType  V 
)

◆ erase_if()

template<typename Container , typename UnaryPredicate >
void llvm::erase_if ( Container &  C,
UnaryPredicate  P 
)

Provide a container algorithm similar to C++ Library Fundamentals v2's erase_if which is equivalent to:

C.erase(remove_if(C, pred), C.end());

This version works for any container with an erase method call accepting two iterators.

Definition at line 2051 of file STLExtras.h.

References llvm::CallingConv::C, P, and remove_if().

Referenced by checkVectorTypesForPromotion(), collectPromotionCandidates(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), deleteDeadBlocksFromLoop(), llvm::SelectionDAGBuilder::dropDanglingDebugInfo(), llvm::TimeTraceProfiler::end(), llvm::MDAttachments::erase(), filterDeadComdatFunctions(), llvm::ifs::filterIFSSyms(), findArrayDimensionsRec(), llvm::logicalview::LVElement::generateName(), llvm::rdf::Liveness::getAllReachingDefs(), llvm::ARMBaseInstrInfo::getOutliningCandidateInfo(), llvm::RISCVInstrInfo::getOutliningCandidateInfo(), getSignature(), hoistLoopToNewParent(), InlineFunction(), llvm::OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs >::Result::invalidate(), llvm::JumpThreadingPass::processThreadableEdges(), rebuildLoopAfterUnswitch(), llvm::AttrBuilder::remove(), llvm::MDAttachments::remove_if(), llvm::objcopy::elf::GroupSection::removeSectionReferences(), llvm::objcopy::coff::Object::removeSections(), llvm::objcopy::wasm::Object::removeSections(), llvm::objcopy::macho::SymbolTable::removeSymbols(), llvm::objcopy::coff::Object::removeSymbols(), llvm::LiveRange::removeValNo(), llvm::LoopFullUnrollPass::run(), unique_unsorted(), updateCGAndAnalysisManagerForPass(), llvm::JumpThreadingPass::updateSSA(), and UpgradeOperandBundles().

◆ erase_value()

template<typename Container , typename ValueType >
void llvm::erase_value ( Container &  C,
ValueType  V 
)

Definition at line 2065 of file STLExtras.h.

References llvm::CallingConv::C, and erase().

◆ eraseInstr()

void llvm::eraseInstr ( MachineInstr MI,
MachineRegisterInfo MRI,
LostDebugLocObserver LocObserver = nullptr 
)

Definition at line 1645 of file Utils.cpp.

References eraseInstrs(), MI, and MRI.

Referenced by llvm::Legalizer::legalizeMachineFunction(), and verifyCFIntrinsic().

◆ eraseInstrs()

void llvm::eraseInstrs ( ArrayRef< MachineInstr * >  DeadInstrs,
MachineRegisterInfo MRI,
LostDebugLocObserver LocObserver = nullptr 
)

◆ errnoAsErrorCode()

std::error_code llvm::errnoAsErrorCode ( )
inline

Helper to get errno as an std::error_code.

errno should always be represented using the generic category as that's what both libc++ and libstdc++ do. On POSIX systems you can also represent them using the system category, however this makes them compare differently for values outside of those used by std::errc if one is generic and the other is system.

See the libc++ and libstdc++ implementations of default_error_condition on the system category for more details on what the difference is.

Definition at line 1193 of file Error.h.

Referenced by computeArchiveRelativePath(), llvm::sys::fs::copy_file_internal(), llvm::sys::fs::TempFile::discard(), getHostID(), getLastSocketErrorCode(), getRandomBytes(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::initialize(), llvm::sys::fs::TempFile::keep(), llvm::sys::fs::md5_contents(), llvm::raw_fd_stream::read(), llvm::orc::SharedMemoryMapper::release(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::release(), llvm::orc::SharedMemoryMapper::reserve(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::reserve(), and llvm::raw_fd_ostream::seek().

◆ errorCodeToError()

Error llvm::errorCodeToError ( std::error_code  EC)

Helper for converting an std::error_code to a Error.

Definition at line 103 of file Error.cpp.

Referenced by llvm::jitlink::InProcessMemoryManager::IPInFlightAlloc::abandon(), llvm::lto::Config::addSaveTemps(), llvm::jitlink::InProcessMemoryManager::allocate(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::allocate(), llvm::object::Archive::Archive(), llvm::object::Binary::checkOffset(), computeArchiveRelativePath(), llvm::sys::fs::TempFile::create(), llvm::memprof::RawMemProfReader::create(), llvm::object::OffloadBinary::create(), llvm::FileOutputBuffer::create(), llvm::orc::LocalIndirectStubsInfo< ORCABI >::create(), llvm::object::createBinary(), createFileError(), createInMemoryBuffer(), llvm::object::ObjectFile::createObjectFile(), createOnDiskBuffer(), llvm::object::SymbolicFile::createSymbolicFile(), llvm::jitlink::InProcessMemoryManager::deallocate(), llvm::orc::InProcessMemoryMapper::deinitialize(), llvm::sys::fs::TempFile::discard(), doList(), llvm::lto::ThinBackendProc::emitFiles(), ErrorFromHResult(), errorOrToExpected(), llvm::coverage::CounterMappingContext::evaluate(), llvm::jitlink::InProcessMemoryManager::IPInFlightAlloc::finalize(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::finalize(), llvm::object::IRObjectFile::findBitcodeInMemBuffer(), llvm::object::IRObjectFile::findBitcodeInObject(), llvm::object::MachOObjectFile::findDsymObjectMembers(), llvm::object::Archive::Child::getBuffer(), llvm::NewArchiveMember::getFile(), llvm::object::Archive::Symbol::getMember(), getModuleSummaryIndexForFile(), llvm::object::XCOFFObjectFile::getNumberOfRelocationEntries(), llvm::object::MachOObjectFile::getSection(), llvm::object::ObjectFile::getStartAddress(), llvm::object::COFFObjectFile::getSymbol(), llvm::orc::InProcessMemoryMapper::initialize(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::initialize(), llvm::InitLLVM::InitLLVM(), llvm::sys::fs::TempFile::keep(), libDriverMain(), loadBinaryFormat(), loadObj(), localCache(), llvm::raw_fd_ostream::lock(), llvm::gsym::GsymReader::openFile(), llvm::orc::DumpObjects::operator()(), llvm::orc::InProcessMemoryMapper::release(), llvm::orc::SharedMemoryMapper::release(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::release(), llvm::PrintCrashIRInstrumentation::reportCrashIR(), llvm::orc::InProcessMemoryMapper::reserve(), llvm::orc::SharedMemoryMapper::reserve(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::reserve(), llvm::gsym::GsymCreator::save(), llvm::orc::FDSimpleRemoteEPCTransport::sendMessage(), setupLLVMOptimizationRemarks(), setupMemoryBuffer(), llvm::lto::setupStatsFile(), llvm::OptPassGateInstrumentation::shouldRun(), streamFile(), and llvm::raw_fd_ostream::tryLockFor().

◆ errorOrToExpected()

template<typename T >
Expected< T > llvm::errorOrToExpected ( ErrorOr< T > &&  EO)

◆ errorToBool()

bool llvm::errorToBool ( Error  Err)
inline

Helper for converting an Error to a bool.

This method returns true if Err is in an error state, or false if it is in a success state. Puts Err in a checked state in both cases (unlike Error::operator bool(), which only does this for success states).

Definition at line 1071 of file Error.h.

References consumeError().

Referenced by llvm::DWARFFormValue::extractValue(), llvm::StringRef::getAsDouble(), llvm::RISCV::getFeaturesForCPU(), llvm::LTOModule::getProducerString(), llvm::LTOModule::isBitcodeFile(), llvm::LTOModule::isBitcodeForTarget(), and llvm::Legalizer::runOnMachineFunction().

◆ errorToErrorCode()

std::error_code llvm::errorToErrorCode ( Error  Err)

◆ errorToErrorCodeAndEmitErrors()

std::error_code llvm::errorToErrorCodeAndEmitErrors ( LLVMContext Ctx,
Error  Err 
)

◆ errs()

raw_fd_ostream & llvm::errs ( )

This returns a reference to a raw_ostream for standard error.

Use it like: errs() << "foo" << "bar"; By default, the stream is tied to stdout to ensure stdout is flushed before stderr is written, to ensure the error messages are written in their expected place.

Definition at line 908 of file raw_ostream.cpp.

References assert().

Referenced by addData(), appendFile(), ApplyFeatureFlag(), llvm::Interpreter::callExternalFunction(), CheckBitcodeOutputToConsole(), checkForCyclesHelper(), llvm::SelectionDAG::clearGraphAttrs(), llvm::MachineRegisterInfo::clearVirtRegs(), collectEscapedLocals(), llvm::Combiner::combineMachineInstrs(), llvm::GenericCycleInfo< ContextT >::compute(), computeImportForFunction(), llvm::TargetSchedModel::computeOperandLatency(), llvm::RISCVABI::computeTargetABI(), llvm::LoongArchABI::computeTargetABI(), llvm::SelectionDAG::copyExtraInfo(), llvm::AArch64InstrInfo::copyPhysReg(), cpuHelp(), llvm::EngineBuilder::create(), llvm::orc::SimpleRemoteEPCServer::Create(), createGraphFilename(), llvm::Hexagon_MC::createHexagonMCSubtargetInfo(), CreateInfoOutputFile(), dbgs(), defaultDiagHandler(), llvm::LLVMContext::diagnose(), DisplayGraph(), dlltoolDriverMain(), llvm::PhysicalRegisterUsageInfo::doFinalization(), doImportingForModuleForTest(), llvm::dwarf_linker::classic::CompileUnit::DIEInfo::dump(), llvm::dwarf_linker::parallel::CompileUnit::DIEInfo::dump(), llvm::APFixedPoint::dump(), llvm::LiveRangeUpdater::dump(), llvm::DWARFDie::dump(), llvm::MCAssembler::dump(), llvm::ELFRelocationEntry::dump(), llvm::MCFragment::dump(), llvm::MCSection::dump(), llvm::SMTSort::dump(), llvm::SMTExpr::dump(), llvm::SMTSolver::dump(), llvm::RecTy::dump(), llvm::Init::dump(), llvm::RecordVal::dump(), llvm::Record::dump(), llvm::RecordKeeper::dump(), llvm::MachO::Symbol::dump(), llvm::SubMultiClassReference::dump(), llvm::ForeachLoop::dump(), llvm::MultiClass::dump(), llvm::ARMConstantPoolValue::dump(), llvm::AMDGPU::HSAMD::MetadataStreamerMsgPackV4::dump(), dumpDataAux(), llvm::LPPassManager::dumpPassStructure(), llvm::RGPassManager::dumpPassStructure(), llvm::XCoreFrameLowering::eliminateCallFramePseudoInstr(), llvm::MipsRegisterInfo::eliminateFrameIndex(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), emitDbgAssign(), llvm::AMDGPUAsmPrinter::emitInstruction(), llvm::R600AsmPrinter::emitInstruction(), llvm::ARMTargetLowering::EmitInstrWithCustomInserter(), llvm::AsmPrinter::emitStackUsage(), llvm::CodeViewContext::encodeInlineLineTable(), llvm::WithColor::error(), ExecGraphViewer(), llvm::cl::expandResponseFiles(), llvm::cl::ExpandResponseFiles(), exportDebugifyStats(), llvm::CodeExtractor::extractCodeRegion(), fail(), fatalOpenError(), ferrs(), llvm::OpenMPIRBuilder::finalize(), llvm::codegen::getBBSectionsMode(), getFeatures(), llvm::SelectionDAG::getGraphAttrs(), getOrCreateLogFile(), getProcCpuinfoContent(), llvm::PPCTargetLowering::getRegForInlineAsmConstraint(), llvm::WebAssemblyAsmPrinter::getRegType(), llvm::MCSubtargetInfo::getSchedModelForCPU(), llvm::CSKYTargetMachine::getSubtargetImpl(), llvm::MipsTargetMachine::getTargetTransformInfo(), llvm::lto::getThinLTOOutputFile(), handleExecNameEncodedBEOpts(), handleExecNameEncodedOptimizerOpts(), llvm::DotCfgChangeReporter::handleFunctionCompare(), llvm::BTFParser::hasBTFSections(), Help(), HexagonLowerToMC(), insertParsePoints(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::IsSameAsFreshTree(), llvm::LTOModule::isThinLTO(), llvm::MCAssembler::layout(), libDriverMain(), llvm::ThinLTOCodeGenerator::linkCombinedIndex(), llvm::orc::linkComponents(), lle_X_sprintf(), LLVMDumpModule(), LLVMDumpType(), LLVMDumpValue(), LLVMSetLinkage(), LLVMVerifyFunction(), LLVMVerifyModule(), loadFile(), llvm::BPFMCInstLower::Lower(), llvm::LanaiMCInstLower::Lower(), llvm::MSP430MCInstLower::Lower(), llvm::WebAssemblyMCInstLower::lower(), llvm::AVRMCInstLower::lowerInstruction(), llvm::IntrinsicLowering::LowerIntrinsicCall(), llvm::AMDGPUTargetLowering::LowerOperation(), llvm::HexagonTargetLowering::LowerOperation(), llvm::MemProfContextDisambiguation::MemProfContextDisambiguation(), llvm::MipsSubtarget::MipsSubtarget(), llvm::WithColor::note(), openFile(), llvm::PluginLoader::operator=(), llvm::LTOCodeGenerator::optimize(), OptimizeGlobalAddressOfAllocation(), parseAndVerify(), parseCHRFilterFiles(), parseModule(), llvm::Pattern::parsePattern(), llvm::PassNameParser::passRegistered(), postSplitCleanup(), llvm::FunctionVarLocs::print(), llvm::ValueEnumerator::print(), llvm::detail::printBumpPtrAllocatorStats(), printGraphForFunction(), PrintLoadStoreResults(), llvm::SourceMgr::PrintMessage(), PrintModRefResults(), printNoMatch(), printPassMessage(), PrintPercent(), PrintRecyclerStats(), PrintResults(), llvm::parallel::PerThreadAllocator< AllocatorTy >::PrintStats(), llvm::DebugCounter::push_back(), llvm::FileCheck::readCheckFile(), llvm::GCOVFile::readGCDA(), llvm::GCOVFile::readGCNO(), llvm::GCOVBuffer::readGCNOFormat(), llvm::GCOVBuffer::readGCOVVersion(), llvm::GCOVBuffer::readInt(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readNameTableSec(), llvm::VerifyInstrumentation::registerCallbacks(), RegisterPassPlugins(), llvm::GenericScheduler::registerRoots(), llvm::PostGenericScheduler::registerRoots(), llvm::WithColor::remark(), removeUseSoftFloat(), reportError(), reportOpenError(), require(), llvm::RISCVTargetLowering::RISCVTargetLowering(), llvm::ThinLTOCodeGenerator::run(), llvm::GenericCycleInfoCompute< ContextT >::run(), llvm::PAEvalPass::run(), llvm::HelloWorldPass::run(), llvm::detail::MachinePassModel< PassT >::run(), llvm::ForceFunctionAttrsPass::run(), runFuzzerOnInputs(), llvm::FPPassManager::runOnFunction(), llvm::LPPassManager::runOnFunction(), llvm::RGPassManager::runOnFunction(), llvm::AssignmentTrackingAnalysis::runOnFunction(), llvm::DetectRoundChange::runOnMachineFunction(), llvm::DOTGraphTraitsModulePrinterWrapperPass< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >::runOnModule(), llvm::AMDGPUPALMetadata::setFromString(), llvm::SelectionDAG::setGraphAttrs(), llvm::SelectionDAG::setGraphColor(), llvm::SelectionDAG::setSubgraphColor(), llvm::AMDGPU::IsaInfo::AMDGPUTargetID::setTargetIDFromFeaturesString(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::SingleThreadExecutor::SingleThreadExecutor(), llvm::GenericCycleInfo< SSAContext >::splitCriticalEdge(), llvm::MCSubtargetInfo::ToggleFeature(), llvm::at::trackAssignments(), trackInlinedStores(), UpgradeDebugInfo(), llvm::PeelingModuloScheduleExpander::validateAgainstModuloScheduleExpander(), ValidatePrefixes(), llvm::GenericCycleInfo< ContextT >::validateTree(), llvm::PHITransAddr::verify(), llvm::LegalizerInfo::verify(), llvm::AMDGPU::HSAMD::MetadataStreamerMsgPackV4::verify(), llvm::MachineDominatorTree::verifyAnalysis(), llvm::MachinePostDominatorTree::verifyAnalysis(), verifyBlock(), verifyBlocksInRegion(), verifyConvergenceControl(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::VerifyDFSNumbers(), llvm::dwarf_linker::parallel::DependencyTracker::verifyKeepChain(), verifyKeepChain(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::VerifyLevels(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::verifyParentProperty(), verifyPhiRecipes(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::verifyReachability(), verifyRegion(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::verifyRoots(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::verifySiblingProperty(), verifySubExpr(), llvm::MachineRegisterInfo::verifyUseList(), verifyVPBasicBlock(), verifyVPlanIsValid(), llvm::MachineFunction::viewCFG(), llvm::MachineFunction::viewCFGOnly(), llvm::SelectionDAG::viewGraph(), llvm::ScheduleDAG::viewGraph(), llvm::DominatorTree::viewGraph(), llvm::ScheduleDAGMI::viewGraph(), llvm::SelectionDAGBuilder::visit(), llvm::Interpreter::visitInstruction(), llvm::WithColor::warning(), writeCFGToDotFile(), writeDDGToDotFile(), WriteDOTGraphToFile(), llvm::ThinLTOCodeGenerator::writeGeneratedObject(), WriteGraph(), writeJSON(), writeMCFGToDotFile(), llvm::AAEvaluator::~AAEvaluator(), and llvm::orc::EPCGenericRTDyldMemoryManager::~EPCGenericRTDyldMemoryManager().

◆ EvictInterferenceCutoff()

cl::opt< unsigned > llvm::EvictInterferenceCutoff ( "regalloc-eviction-max-interference-cutoff"  ,
cl::Hidden  ,
cl::desc("Number of interferences after which we declare " "an interference unevictable and bail out. This " "is a compilation cost-saving consideration. To " "disable, pass a very large number.")  ,
cl::init(10)   
)

◆ examineCFlagsUse()

std::optional< UsedNZCV > llvm::examineCFlagsUse ( MachineInstr MI,
MachineInstr CmpInstr,
const TargetRegisterInfo TRI,
SmallVectorImpl< MachineInstr * > *  CCUseInstrs = nullptr 
)
Returns
Conditions flags used after CmpInstr in its MachineBB if NZCV flags are not alive in successors of the same CmpInstr and MI parent.
std::nullopt otherwise.

Collect instructions using that flags in CCUseInstrs if provided.

Definition at line 1708 of file AArch64InstrInfo.cpp.

References areCFlagsAliveInSuccessors(), CC, findCondCodeUsedByInstr(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::MachineInstr::getParent(), getUsedNZCV(), llvm::MachineBasicBlock::instr_end(), instructionsWithoutDebug(), llvm::AArch64CC::Invalid, MI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and TRI.

Referenced by canCmpInstrBeRemoved(), and canInstrSubstituteCmpInstr().

◆ execMayBeModifiedBeforeAnyUse()

bool llvm::execMayBeModifiedBeforeAnyUse ( const MachineRegisterInfo MRI,
Register  VReg,
const MachineInstr DefMI 
)

Return false if EXEC is not changed between the def of VReg at DefMI and all its uses.

Should be run on SSA. Currently does not attempt to track between blocks.

Definition at line 9349 of file SIInstrInfo.cpp.

References assert(), DefMI, I, MRI, and TRI.

◆ execMayBeModifiedBeforeUse()

bool llvm::execMayBeModifiedBeforeUse ( const MachineRegisterInfo MRI,
Register  VReg,
const MachineInstr DefMI,
const MachineInstr UseMI 
)

Return false if EXEC is not changed between the def of VReg at DefMI and the use at UseMI.

Should be run on SSA. Currently does not attempt to track between blocks.

Definition at line 9316 of file SIInstrInfo.cpp.

References assert(), DefMI, I, MRI, TRI, and UseMI.

◆ expandAtomicMemCpyAsLoop()

void llvm::expandAtomicMemCpyAsLoop ( AtomicMemCpyInst AtomicMemCpy,
const TargetTransformInfo TTI,
ScalarEvolution SE 
)

◆ expandAtomicRMWToCmpXchg()

bool llvm::expandAtomicRMWToCmpXchg ( AtomicRMWInst AI,
CreateCmpXchgInstFun  CreateCmpXchg 
)

Expand an atomic RMW instruction into a loop utilizing cmpxchg.

You'll want to make sure your target machine likes cmpxchg instructions in the first place and that there isn't another, better, transformation available (for example AArch32/AArch64 have linked loads).

This is useful in passes which can't rewrite the more exotic RMW instructions directly into a platform specific intrinsics (because, say, those intrinsics don't exist). If such a pass is able to expand cmpxchg instructions directly however, then, with this function, it could avoid two extra module passes (avoiding passes by -atomic-expand and itself). A specific example would be PNaCl's RewriteAtomics pass.

Given: atomicrmw some_op iN* addr, iN incr ordering

The standard expansion we produce is: [...] init_loaded = load atomic iN* addr br label loop loop: loaded = phi iN [ init_loaded, entry ], [ new_loaded, loop ] new = some_op iN loaded, incr ; This is what -atomic-expand will produce using this function on i686 targets: pair = cmpxchg iN* addr, iN loaded, iN new_val new_loaded = extractvalue { iN, i1 } pair, 0 success = extractvalue { iN, i1 } pair, 1 ; End callback produced IR br i1 success, label atomicrmw.end, label loop atomicrmw.end: [...]

Returns true if the containing function was modified.

Definition at line 1599 of file AtomicExpandPass.cpp.

References llvm::Instruction::eraseFromParent(), llvm::AtomicRMWInst::getAlign(), llvm::Module::getDataLayout(), llvm::Instruction::getFunction(), llvm::Instruction::getModule(), llvm::AtomicRMWInst::getOrdering(), llvm::AtomicRMWInst::getPointerOperand(), llvm::AtomicRMWInst::getSyncScopeID(), llvm::Value::getType(), llvm::Function::hasFnAttribute(), and llvm::Value::replaceAllUsesWith().

◆ expandDivision()

bool llvm::expandDivision ( BinaryOperator Div)

Generate code to divide two integers, replacing Div with the generated code.

This currently generates code similarly to compiler-rt's implementations, but future work includes generating more specialized code when more information about the operands are known. Implements both 32bit and 64bit scalar division.

Replace Div with generated code.

This currently generates code similarly to compiler-rt's implementations, but future work includes generating more specialized code when more information about the operands are known.

Replace Div with generated code.

Definition at line 407 of file IntegerDivision.cpp.

References assert(), llvm::User::dropAllReferences(), llvm::Instruction::eraseFromParent(), generateSignedDivisionCode(), generateUnsignedDivisionCode(), llvm::IRBuilderBase::GetInsertPoint(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::BinaryOperator::getOpcode(), llvm::User::getOperand(), llvm::Value::getType(), llvm::Type::isVectorTy(), and llvm::Value::replaceAllUsesWith().

Referenced by expandDivisionUpTo32Bits(), expandDivisionUpTo64Bits(), expandRemainder(), and runImpl().

◆ expandDivisionUpTo32Bits()

bool llvm::expandDivisionUpTo32Bits ( BinaryOperator Div)

Generate code to divide two integers, replacing Div with the generated code.

Generate code to divide two integers of bitwidth up to 32 bits.

Uses ExpandDivision with a 32bit Div which makes it useful for targets with little or no support for less than 32 bit arithmetic.

Replace Rem with generated code.

Uses the above routines and extends the inputs/truncates the outputs to operate in 32 bits; that is, these routines are good for targets that have no or very little support for smaller than 32 bit integer arithmetic.

Replace Div with emulation code.

Definition at line 552 of file IntegerDivision.cpp.

References assert(), llvm::IRBuilderBase::CreateSDiv(), llvm::IRBuilderBase::CreateSExt(), llvm::IRBuilderBase::CreateTrunc(), llvm::IRBuilderBase::CreateUDiv(), llvm::IRBuilderBase::CreateZExt(), llvm::User::dropAllReferences(), llvm::Instruction::eraseFromParent(), expandDivision(), llvm::IRBuilderBase::getInt32Ty(), llvm::Type::getIntegerBitWidth(), llvm::BinaryOperator::getOpcode(), llvm::User::getOperand(), llvm::Value::getType(), Int32Ty, llvm::Type::isVectorTy(), and llvm::Value::replaceAllUsesWith().

◆ expandDivisionUpTo64Bits()

bool llvm::expandDivisionUpTo64Bits ( BinaryOperator Div)

Generate code to divide two integers, replacing Div with the generated code.

Generate code to divide two integers of bitwidth up to 64 bits.

Uses ExpandDivision with a 64bit Div.

Replace Rem with generated code.

Uses the above routines and extends the inputs/truncates the outputs to operate in 64 bits.

Replace Div with emulation code.

Definition at line 600 of file IntegerDivision.cpp.

References assert(), llvm::IRBuilderBase::CreateSDiv(), llvm::IRBuilderBase::CreateSExt(), llvm::IRBuilderBase::CreateTrunc(), llvm::IRBuilderBase::CreateUDiv(), llvm::IRBuilderBase::CreateZExt(), llvm::User::dropAllReferences(), llvm::Instruction::eraseFromParent(), expandDivision(), llvm::IRBuilderBase::getInt64Ty(), llvm::Type::getIntegerBitWidth(), llvm::BinaryOperator::getOpcode(), llvm::User::getOperand(), llvm::Value::getType(), llvm::Type::isVectorTy(), and llvm::Value::replaceAllUsesWith().

◆ expandMemCpyAsLoop()

void llvm::expandMemCpyAsLoop ( MemCpyInst MemCpy,
const TargetTransformInfo TTI,
ScalarEvolution SE = nullptr 
)

◆ expandMemMoveAsLoop()

bool llvm::expandMemMoveAsLoop ( MemMoveInst MemMove,
const TargetTransformInfo TTI 
)

◆ expandMemSetAsLoop()

void llvm::expandMemSetAsLoop ( MemSetInst MemSet)

◆ expandPredBlockMask()

ARM::PredBlockMask llvm::expandPredBlockMask ( ARM::PredBlockMask  BlockMask,
ARMVCC::VPTCodes  Kind 
)

◆ expandRemainder()

bool llvm::expandRemainder ( BinaryOperator Rem)

Generate code to calculate the remainder of two integers, replacing Rem with the generated code.

This currently generates code using the udiv expansion, but future work includes generating more specialized code, e.g. when more information about the operands are known. Implements both 32bit and 64bit scalar division.

Replace Rem with generated code.

This currently generates code using the udiv expansion, but future work includes generating more specialized code, e.g. when more information about the operands are known.

Replace Rem with generated code.

Definition at line 354 of file IntegerDivision.cpp.

References assert(), llvm::User::dropAllReferences(), llvm::Instruction::eraseFromParent(), expandDivision(), generatedUnsignedRemainderCode(), generateSignedRemainderCode(), llvm::IRBuilderBase::GetInsertPoint(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::BinaryOperator::getOpcode(), llvm::User::getOperand(), llvm::Value::getType(), llvm::Type::isVectorTy(), and llvm::Value::replaceAllUsesWith().

Referenced by expandRemainderUpTo32Bits(), expandRemainderUpTo64Bits(), and runImpl().

◆ expandRemainderUpTo32Bits()

bool llvm::expandRemainderUpTo32Bits ( BinaryOperator Rem)

Generate code to calculate the remainder of two integers, replacing Rem with the generated code.

Generate code to compute the remainder of two integers of bitwidth up to 32 bits.

Uses ExpandReminder with a 32bit Rem which makes it useful for targets with little or no support for less than 32 bit arithmetic.

Replace Rem with generated code.

Uses the above routines and extends the inputs/truncates the outputs to operate in 32 bits; that is, these routines are good for targets that have no or very little suppport for smaller than 32 bit integer arithmetic.

Replace Rem with emulation code.

Definition at line 456 of file IntegerDivision.cpp.

References assert(), llvm::IRBuilderBase::CreateSExt(), llvm::IRBuilderBase::CreateSRem(), llvm::IRBuilderBase::CreateTrunc(), llvm::IRBuilderBase::CreateURem(), llvm::IRBuilderBase::CreateZExt(), llvm::User::dropAllReferences(), llvm::Instruction::eraseFromParent(), expandRemainder(), llvm::IRBuilderBase::getInt32Ty(), llvm::Type::getIntegerBitWidth(), llvm::BinaryOperator::getOpcode(), llvm::User::getOperand(), llvm::Value::getType(), Int32Ty, llvm::Type::isVectorTy(), and llvm::Value::replaceAllUsesWith().

◆ expandRemainderUpTo64Bits()

bool llvm::expandRemainderUpTo64Bits ( BinaryOperator Rem)

Generate code to calculate the remainder of two integers, replacing Rem with the generated code.

Generate code to compute the remainder of two integers of bitwidth up to 64 bits.

Uses ExpandReminder with a 64bit Rem.

Replace Rem with generated code.

Uses the above routines and extends the inputs/truncates the outputs to operate in 64 bits.

Replace Rem with emulation code.

Definition at line 505 of file IntegerDivision.cpp.

References assert(), llvm::IRBuilderBase::CreateSExt(), llvm::IRBuilderBase::CreateSRem(), llvm::IRBuilderBase::CreateTrunc(), llvm::IRBuilderBase::CreateURem(), llvm::IRBuilderBase::CreateZExt(), llvm::User::dropAllReferences(), llvm::Instruction::eraseFromParent(), expandRemainder(), llvm::IRBuilderBase::getInt64Ty(), llvm::Type::getIntegerBitWidth(), llvm::BinaryOperator::getOpcode(), llvm::User::getOperand(), llvm::Value::getType(), llvm::Type::isVectorTy(), and llvm::Value::replaceAllUsesWith().

◆ expandUser()

static SmallVector< Instruction *, 4 > llvm::expandUser ( BasicBlock::iterator  InsertPt,
Constant C 
)
static

◆ expectedToErrorOr()

template<typename T >
ErrorOr< T > llvm::expectedToErrorOr ( Expected< T > &&  E)

Convert an Expected<T> to an ErrorOr<T>.

Definition at line 1205 of file Error.h.

References E, and errorToErrorCode().

◆ expectedToErrorOrAndEmitErrors()

template<typename T >
ErrorOr< T > llvm::expectedToErrorOrAndEmitErrors ( LLVMContext Ctx,
Expected< T Val 
)

◆ expectedToOptional()

template<typename T >
std::optional< T > llvm::expectedToOptional ( Expected< T > &&  E)

Convert an Expected to an Optional without doing anything.

This method should be used only where an error can be considered a reasonable and expected return value.

Uses of this method are potentially indicative of problems: perhaps the error should be propagated further, or the error-producer should just return an Optional in the first place.

Definition at line 1052 of file Error.h.

References consumeError(), and E.

◆ expectedToStdOptional()

template<typename T >
std::optional< T > llvm::expectedToStdOptional ( Expected< T > &&  E)

Definition at line 1059 of file Error.h.

References consumeError(), and E.

◆ exponentInf()

static constexpr APFloatBase::ExponentType llvm::exponentInf ( const fltSemantics semantics)
staticconstexpr

Definition at line 341 of file APFloat.cpp.

References llvm::fltSemantics::maxExponent.

Referenced by llvm::detail::IEEEFloat::makeInf().

◆ exponentNaN()

static constexpr APFloatBase::ExponentType llvm::exponentNaN ( const fltSemantics semantics)
staticconstexpr

◆ exponentZero()

static constexpr APFloatBase::ExponentType llvm::exponentZero ( const fltSemantics semantics)
staticconstexpr

Definition at line 336 of file APFloat.cpp.

References llvm::fltSemantics::minExponent.

Referenced by exponentNaN(), and llvm::detail::IEEEFloat::makeZero().

◆ exportDebugifyStats()

void llvm::exportDebugifyStats ( StringRef  Path,
const DebugifyStatsMap Map 
)

Definition at line 959 of file Debugify.cpp.

References errs(), OS, and Stats.

◆ exprAdd()

Expected< APInt > llvm::exprAdd ( const APInt Lhs,
const APInt Rhs,
bool Overflow 
)

Performs operation and.

Returns
its result or an error in case of failure, such as if an overflow occurs.

Definition at line 156 of file FileCheck.cpp.

References llvm::APInt::sadd_ov().

◆ exprDiv()

Expected< APInt > llvm::exprDiv ( const APInt Lhs,
const APInt Rhs,
bool Overflow 
)

Definition at line 171 of file FileCheck.cpp.

References llvm::APInt::isZero(), and llvm::APInt::sdiv_ov().

◆ exprMax()

Expected< APInt > llvm::exprMax ( const APInt Lhs,
const APInt Rhs,
bool Overflow 
)

Definition at line 180 of file FileCheck.cpp.

References llvm::APInt::slt().

Referenced by exprMin().

◆ exprMin()

Expected< APInt > llvm::exprMin ( const APInt Lhs,
const APInt Rhs,
bool Overflow 
)

Definition at line 186 of file FileCheck.cpp.

References cantFail(), and exprMax().

◆ exprMul()

Expected< APInt > llvm::exprMul ( const APInt Lhs,
const APInt Rhs,
bool Overflow 
)

Definition at line 166 of file FileCheck.cpp.

References llvm::APInt::smul_ov().

◆ exprSub()

Expected< APInt > llvm::exprSub ( const APInt Lhs,
const APInt Rhs,
bool Overflow 
)

Definition at line 161 of file FileCheck.cpp.

References llvm::APInt::ssub_ov().

◆ extractBranchWeights() [1/3]

bool llvm::extractBranchWeights ( const Instruction I,
SmallVectorImpl< uint32_t > &  Weights 
)

Extract branch weights attatched to an Instruction.

Parameters
IThe Instruction to extract weights from.
[out]WeightsAn output vector to fill with branch weights
Returns
True if weights were extracted, False otherwise. When false Weights will be cleared.

Definition at line 129 of file ProfDataUtils.cpp.

References extractBranchWeights(), and I.

◆ extractBranchWeights() [2/3]

bool llvm::extractBranchWeights ( const Instruction I,
uint64_t TrueVal,
uint64_t FalseVal 
)

Extract branch weights from a conditional branch or select Instruction.

Parameters
IThe instruction to extract branch weights from.
[out]TrueValwill contain the branch weight for the True branch
[out]FalseValwill contain the branch weight for the False branch
Returns
True on success with profile weights filled in. False if no metadata or invalid metadata was found.

Definition at line 135 of file ProfDataUtils.cpp.

References assert(), extractBranchWeights(), I, and llvm::SmallVectorBase< Size_T >::size().

◆ extractBranchWeights() [3/3]

bool llvm::extractBranchWeights ( const MDNode ProfileData,
SmallVectorImpl< uint32_t > &  Weights 
)

◆ extractConstantMask()

static bool llvm::extractConstantMask ( const Constant C,
unsigned  MaskEltSizeInBits,
APInt UndefElts,
SmallVectorImpl< uint64_t > &  RawMask 
)
static

◆ extractFromBranchWeightMD()

void llvm::extractFromBranchWeightMD ( const MDNode ProfileData,
SmallVectorImpl< uint32_t > &  Weights 
)

◆ extractParts() [1/2]

bool llvm::extractParts ( Register  Reg,
LLT  RegTy,
LLT  MainTy,
LLT LeftoverTy,
SmallVectorImpl< Register > &  VRegs,
SmallVectorImpl< Register > &  LeftoverVRegs,
MachineIRBuilder MIRBuilder,
MachineRegisterInfo MRI 
)

◆ extractParts() [2/2]

void llvm::extractParts ( Register  Reg,
LLT  Ty,
int  NumParts,
SmallVectorImpl< Register > &  VRegs,
MachineIRBuilder MIRBuilder,
MachineRegisterInfo MRI 
)

◆ extractProbe() [1/2]

std::optional< PseudoProbe > llvm::extractProbe ( const Instruction Inst)

◆ extractProbe() [2/2]

std::optional< PseudoProbe > llvm::extractProbe ( const MachineInstr MI)

◆ extractProbeFromDiscriminator() [1/2]

std::optional< PseudoProbe > llvm::extractProbeFromDiscriminator ( const DILocation DIL)

◆ extractProbeFromDiscriminator() [2/2]

std::optional< PseudoProbe > llvm::extractProbeFromDiscriminator ( const Instruction Inst)

◆ extractProfTotalWeight() [1/2]

bool llvm::extractProfTotalWeight ( const Instruction I,
uint64_t TotalWeights 
)

Retrieve the total of all weights from an instruction.

Parameters
IThe instruction to extract the total weight from
[out]TotalWeightsinput variable to fill with total weights
Returns
True on success with profile total weights filled in. False if no metadata was found.

Definition at line 183 of file ProfDataUtils.cpp.

References extractProfTotalWeight(), and I.

◆ extractProfTotalWeight() [2/2]

bool llvm::extractProfTotalWeight ( const MDNode ProfileData,
uint64_t TotalWeights 
)

Retrieve the total of all weights from MD_prof data.

Parameters
ProfileDataThe profile data to extract the total weight from
[out]TotalWeightsinput variable to fill with total weights
Returns
True on success with profile total weights filled in. False if no metadata was found.

Definition at line 155 of file ProfDataUtils.cpp.

References assert(), llvm::MDNode::getNumOperands(), llvm::MDNode::getOperand(), and Idx.

Referenced by extractProfTotalWeight().

◆ ExtractTypeInfo()

GlobalValue * llvm::ExtractTypeInfo ( Value V)

ExtractTypeInfo - Returns the type info, possibly bitcast, encoded in V.

Definition at line 177 of file Analysis.cpp.

References assert(), llvm::GlobalVariable::getInitializer(), llvm::Value::getName(), and llvm::GlobalVariable::hasInitializer().

◆ extractVectorParts()

void llvm::extractVectorParts ( Register  Reg,
unsigned  NumElts,
SmallVectorImpl< Register > &  VRegs,
MachineIRBuilder MIRBuilder,
MachineRegisterInfo MRI 
)

◆ extractWidenableCondition()

Value * llvm::extractWidenableCondition ( const User U)

Definition at line 151 of file GuardUtils.cpp.

References Check, isWidenableCondition(), and parseCondition().

◆ Failed() [1/2]

template<typename InfoT >
testing::Matcher< const detail::ErrorHolder & > llvm::Failed ( )

◆ Failed() [2/2]

template<typename InfoT , typename M >
testing::Matcher< const detail::ErrorHolder & > llvm::Failed ( Matcher)

Definition at line 203 of file Error.h.

◆ FailedWithMessage()

template<typename... M>
testing::Matcher< const detail::ErrorHolder & > llvm::FailedWithMessage ( M...  Matcher)

Definition at line 209 of file Error.h.

◆ FailedWithMessageArray()

template<typename M >
testing::Matcher< const detail::ErrorHolder & > llvm::FailedWithMessageArray ( Matcher)

Definition at line 216 of file Error.h.

◆ FastCC_ARM_APCS()

bool llvm::FastCC_ARM_APCS ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ fcmpImpliesClass() [1/3]

std::tuple< Value *, FPClassTest, FPClassTest > llvm::fcmpImpliesClass ( CmpInst::Predicate  Pred,
const Function F,
Value LHS,
const APFloat RHS,
bool  LookThroughSrc = true 
)

◆ fcmpImpliesClass() [2/3]

std::tuple< Value *, FPClassTest, FPClassTest > llvm::fcmpImpliesClass ( CmpInst::Predicate  Pred,
const Function F,
Value LHS,
FPClassTest  RHS,
bool  LookThroughSrc = true 
)

◆ fcmpImpliesClass() [3/3]

std::tuple< Value *, FPClassTest, FPClassTest > llvm::fcmpImpliesClass ( 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.

Returns
{ TestedValue, ClassesIfTrue, ClassesIfFalse }

If the compare returns an exact class test, ClassesIfTrue == ~ClassesIfFalse

This is a less exact version of fcmpToClassTest (e.g. fcmpToClassTest will only succeed for a test of x > 0 implies positive, but not x > 1).

If LookThroughSrc is true, consider the input value when computing the mask. This may look through sign bit operations.

If LookThroughSrc is false, ignore the source value (i.e. the first pair element will always be LHS.

Definition at line 4517 of file ValueTracking.cpp.

References F, fcAllFlags, fcmpImpliesClass(), LHS, llvm::PatternMatch::m_APFloatAllowUndef(), llvm::PatternMatch::match(), and RHS.

Referenced by computeKnownFPClass(), computeKnownFPClassFromCond(), fcmpImpliesClass(), and fcmpToClassTest().

◆ fcmpToClassTest() [1/2]

std::pair< Value *, FPClassTest > llvm::fcmpToClassTest ( CmpInst::Predicate  Pred,
const Function F,
Value LHS,
const APFloat ConstRHS,
bool  LookThroughSrc = true 
)

Definition at line 4126 of file ValueTracking.cpp.

References F, fcAllFlags, fcmpImpliesClass(), and LHS.

◆ fcmpToClassTest() [2/2]

std::pair< Value *, FPClassTest > llvm::fcmpToClassTest ( 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.

If LookThroughSrc is true, consider the input value when computing the mask.

If LookThroughSrc is false, ignore the source value (i.e. the first pair element will always be LHS.

Definition at line 4114 of file ValueTracking.cpp.

References F, fcAllFlags, fcmpToClassTest(), LHS, llvm::PatternMatch::m_APFloatAllowUndef(), llvm::PatternMatch::match(), and RHS.

Referenced by fcmpToClassTest(), foldFCmpToFPClassTest(), matchIsFPClassLikeFCmp(), and simplifyFCmpInst().

◆ fdbgs()

formatted_raw_ostream & llvm::fdbgs ( )

fdbgs() - This returns a reference to a formatted_raw_ostream for debug output.

fdbgs() - This returns a reference to a formatted_raw_ostream for the debug stream.

Use it like: fdbgs() << "foo" << "bar";

Definition at line 155 of file FormattedStream.cpp.

References dbgs().

◆ ferrs()

formatted_raw_ostream & llvm::ferrs ( )

ferrs() - This returns a reference to a formatted_raw_ostream for standard error.

Use it like: ferrs() << "foo" << "bar";

Definition at line 148 of file FormattedStream.cpp.

References errs().

◆ fillMapFromAssume()

void llvm::fillMapFromAssume ( AssumeInst Assume,
RetainedKnowledgeMap Result 
)

Insert into the map all the informations contained in the operand bundles of the llvm.assume.

This should be used instead of hasAttributeInAssume when many queries are going to be made on the same llvm.assume. String attributes are not inserted in the map. If the IR changes the map will be outdated.

Definition at line 70 of file AssumeBundleQueries.cpp.

References ABA_Argument, ABA_WasOn, llvm::CallBase::bundle_op_infos(), bundleHasArgument(), llvm::Attribute::getAttrKindFromName(), getValueFromBundleOpInfo(), Lookup(), and llvm::Attribute::None.

◆ filterDbgVars()

static auto llvm::filterDbgVars ( iterator_range< simple_ilist< DbgRecord >::iterator >  R)
inlinestatic

◆ filterDeadComdatFunctions()

void llvm::filterDeadComdatFunctions ( SmallVectorImpl< Function * > &  DeadComdatFunctions)

Filter out potentially dead comdat functions where other entries keep the entire comdat group alive.

This is designed for cases where functions appear to become dead but remain alive due to other live entries in their comdat group.

The DeadComdatFunctions container should only have pointers to Functions which are members of a comdat group and are believed to be dead.

After this routine finishes, the only remaining Functions in DeadComdatFunctions are those where every member of the comdat is listed and thus removing them is safe (provided all are removed).

Definition at line 272 of file ModuleUtils.cpp.

References all_of(), llvm::CallingConv::C, llvm::SmallPtrSetImpl< PtrType >::contains(), erase_if(), F, and llvm::SmallPtrSetImpl< PtrType >::insert().

Referenced by llvm::CallGraphUpdater::finalize().

◆ finalizeBundle() [1/2]

finalizeBundle - Same functionality as the previous finalizeBundle except the last instruction in the bundle is not provided as an input.

This is used in cases where bundles are pre-determined by marking instructions with 'InsideBundle' marker. It returns the MBB instruction iterator that points to the end of the bundle.

Definition at line 243 of file MachineInstrBundle.cpp.

References finalizeBundle(), llvm::MachineBasicBlock::instr_end(), and MBB.

◆ finalizeBundle() [2/2]

void llvm::finalizeBundle ( MachineBasicBlock MBB,
MachineBasicBlock::instr_iterator  FirstMI,
MachineBasicBlock::instr_iterator  LastMI 
)

◆ finalizeBundles()

bool llvm::finalizeBundles ( MachineFunction MF)

finalizeBundles - Finalize instruction bundles in the specified MachineFunction.

Return true if any bundles are finalized.

Definition at line 255 of file MachineInstrBundle.cpp.

References assert(), finalizeBundle(), llvm::MachineBasicBlock::instr_begin(), llvm::MachineBasicBlock::instr_end(), and MBB.

Referenced by INITIALIZE_PASS().

◆ find()

template<typename R , typename T >
auto llvm::find ( R &&  Range,
const T Val 
)

Provide wrappers to std::find which take ranges instead of having to pass begin/end explicitly.

Definition at line 1742 of file STLExtras.h.

References adl_begin(), and adl_end().

Referenced by llvm::slpvectorizer::BoUpSLP::ShuffleInstructionBuilder::add(), llvm::StringMap< ValueTy, AllocatorTy >::at(), calcPredicateUsingInteger(), llvm::LoopInfoBase< BlockT, LoopT >::changeTopLevelLoop(), llvm::DominanceFrontierBase< BasicBlock, false >::compare(), llvm::StringMap< ValueTy, AllocatorTy >::contains(), llvm::StringRef::contains(), CreateGCRelocates(), def_chain(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::deinitialize(), deleteDeadLoop(), llvm::orc::ExecutionSession::deregisterResourceManager(), llvm::StringRef::detectEOL(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::DWARFUnit::determineStringOffsetsTableContribution(), dropRegDescribedVar(), EmitCamlGlobal(), llvm::StringMap< ValueTy, AllocatorTy >::erase(), llvm::PriorityQueue< T, Sequence, Compare >::erase_one(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::EraseNode(), llvm::DominatorTreeBase< NodeT, IsPostDom >::eraseNode(), llvm::mca::InstructionTables::execute(), llvm::ReadyQueue::find(), llvm::rdf::IndexedSet< T, N >::find(), llvm::sys::DynamicLibrary::HandleSet::Find(), llvm::StringRef::find_first_of(), llvm::slpvectorizer::BoUpSLP::findReusedOrderedScalars(), llvm::DWARFUnit::getCompilationDir(), llvm::MachineBranchProbabilityInfo::getEdgeProbability(), getFirstIndexOf(), getOrCreateFrameHelper(), llvm::slpvectorizer::BoUpSLP::getReorderingData(), llvm::rdf::IndexedSet< T, N >::insert(), llvm::HexagonPacketizerList::isLegalToPacketizeTogether(), llvm::StringMap< ValueTy, AllocatorTy >::lookup(), lowerV8I16GeneralSingleInputShuffle(), mergeConditionalStoreToAddress(), rebuildLoopAfterUnswitch(), llvm::AArch64TargetLowering::ReconstructShuffle(), llvm::StatepointLoweringState::relocCallVisited(), llvm::SetVector< T, Vector, Set, N >::remove(), llvm::LatencyPriorityQueue::remove(), llvm::ResourcePriorityQueue::remove(), llvm::DominanceFrontierBase< BlockT, IsPostDom >::removeBlock(), llvm::LoopBase< BlockT, LoopT >::removeBlockFromLoop(), llvm::LoopBase< BlockT, LoopT >::removeChildLoop(), RemoveInstInputs(), llvm::orc::ExecutionSession::removeJITDylibs(), llvm::LiveVariables::VarInfo::removeKill(), llvm::GISelObserverWrapper::removeObserver(), llvm::SUnit::removePred(), llvm::PassRegistry::removeRegistrationListener(), llvm::MachineBasicBlock::removeSuccessor(), llvm::VPValue::removeUser(), llvm::DbgVariableIntrinsic::replaceVariableLocationOp(), llvm::DbgVariableRecord::replaceVariableLocationOp(), reservePreviousStackSlotForValue(), salvageDebugInfoForDbgValues(), llvm::DomTreeNodeBase< NodeT >::setIDom(), llvm::InstCombinerImpl::SliceUpIllegalIntegerPHI(), llvm::StringRef::split(), splitMBB(), llvm::MachineBasicBlock::splitSuccessor(), llvm::MCDwarfLineTableHeader::tryGetFile(), llvm::orc::RTDyldObjectLinkingLayer::unregisterJITEventListener(), llvm::MCJIT::UnregisterJITEventListener(), and verifySubExpr().

◆ find_if()

template<typename R , typename UnaryPredicate >
auto llvm::find_if ( R &&  Range,
UnaryPredicate  P 
)

Provide wrappers to std::find_if which take ranges instead of having to pass begin/end explicitly.

Definition at line 1749 of file STLExtras.h.

References adl_begin(), adl_end(), and P.

Referenced by llvm::slpvectorizer::BoUpSLP::ShuffleCostEstimator::add(), llvm::VPlanTransforms::addActiveLaneMask(), addCalleeSavedRegs(), addRegLanes(), llvm::ARMFrameLowering::assignCalleeSavedSpillSlots(), llvm::RISCVFrameLowering::assignCalleeSavedSpillSlots(), llvm::ELFAttrs::attrTypeAsString(), llvm::ELFAttrs::attrTypeFromString(), cacheDIVar(), llvm::SIMachineFunctionInfo::checkIndexInPrologEpilogSGPRSpills(), ConvertCostTableLookup(), convertToLocalCopy(), CostTableLookup(), llvm::mca::EntryStage::cycleEnd(), llvm::RegPressureTracker::discoverLiveInOrOut(), llvm::StringRef::drop_until(), llvm::ArrayRef< T >::drop_until(), llvm::MutableArrayRef< T >::drop_until(), llvm::PMDataManager::emitInstrCountChangedRemark(), expandPseudoVFMK(), llvm::StringRef::find_if_not(), llvm::SwitchInst::findCaseValue(), llvm::DGNode< NodeType, EdgeType >::findEdgeTo(), llvm::DirectedGraph< NodeType, EdgeType >::findNode(), llvm::objcopy::elf::Object::findSection(), findSection(), llvm::ModuleSummaryIndex::findSummaryInModule(), getAllocationDataForFunction(), llvm::X86::getCPUDispatchMangling(), llvm::X86::getFeaturesForCPU(), llvm::MachineBasicBlock::getFirstTerminatorForward(), getFreeFunctionDataForFunction(), llvm::AVRMCExpr::getKindByName(), llvm::CacheCost::getLoopCost(), llvm::AVRMCExpr::getName(), llvm::mca::InstructionBase::getOperand(), getRegLanes(), llvm::slpvectorizer::BoUpSLP::getReorderingData(), getSplatIndex(), getTargetIndexName(), llvm::slpvectorizer::BoUpSLP::getTreeCost(), getV4X86ShuffleImm(), llvm::objcopy::coff::handleArgs(), llvm::PPCFrameLowering::inlineStackProbe(), llvm::X86FrameLowering::inlineStackProbe(), llvm::xray::Profile::internPath(), isEXTMask(), isFixedVectorShuffle(), llvm::MachineBasicBlock::isLiveIn(), llvm::CombinerHelper::isPredecessor(), isWideDUPMask(), LLVMGetTargetFromName(), loadObj(), llvm::TargetRegistry::lookupTarget(), lowerShuffleAsElementInsertion(), lowerShuffleWithSHUFPS(), llvm::HexagonTargetLowering::LowerVECTOR_SHUFFLE(), llvm::PatternMatch::m_SplatOrUndefMask::match(), llvm::rdf::operator<<(), llvm::RISCVISAInfo::parseArchString(), llvm::MCSectionMachO::ParseSectionSpecifier(), PerformExtractEltToVMOVRRD(), placeSources(), processShuffleMasks(), llvm::RegPressureTracker::recede(), llvm::orc::JITDylib::removeFromLinkOrder(), llvm::orc::JITDylib::removeGenerator(), llvm::LazyCallGraph::RefSCC::removeInternalRefEdge(), llvm::MachineBasicBlock::removeLiveIn(), removeRegLanes(), rescheduleCanonically(), runImpl(), scavengeVReg(), llvm::EngineBuilder::selectTarget(), setRegZero(), llvm::ELFYAML::shouldAllocateFileSpace(), llvm::LazyCallGraph::RefSCC::switchInternalEdgeToRef(), llvm::StringRef::take_until(), llvm::ArrayRef< T >::take_until(), llvm::MutableArrayRef< T >::take_until(), llvm::AMDGPUSymbolizer::tryAddingSymbolicOperand(), llvm::X86::updateImpliedFeatures(), llvm::objcopy::elf::Object::updateSection(), llvm::X86::validateCPUSpecificCPUDispatch(), and llvm::slpvectorizer::BoUpSLP::vectorizeTree().

◆ find_if_not()

template<typename R , typename UnaryPredicate >
auto llvm::find_if_not ( R &&  Range,
UnaryPredicate  P 
)

◆ find_singleton()

template<typename T , typename R , typename Predicate >
T * llvm::find_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.

When AllowRepeats is true, multiple values that compare equal are allowed.

Definition at line 1778 of file STLExtras.h.

References A, and P.

◆ find_singleton_nested()

template<typename T , typename R , typename Predicate >
std::pair< T *, bool > llvm::find_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.

When AllowRepeats is true, multiple values that compare equal are allowed. The predicate P returns a pair<T *, bool> where T is the singleton while the bool indicates whether multiples have already been found. It is expected that first will be nullptr when second is true. This allows using find_singleton_nested within the predicate \P.

Definition at line 1802 of file STLExtras.h.

References A, assert(), and P.

◆ findAllNVVMAnnotation()

bool llvm::findAllNVVMAnnotation ( const GlobalValue gv,
const std::string &  prop,
std::vector< unsigned > &  retval 
)

◆ findAllocaForValue() [1/2]

const AllocaInst * llvm::findAllocaForValue ( const Value V,
bool  OffsetZero = false 
)
inline

Definition at line 745 of file ValueTracking.h.

References findAllocaForValue().

◆ findAllocaForValue() [2/2]

AllocaInst * llvm::findAllocaForValue ( Value V,
bool  OffsetZero = false 
)

◆ findArrayDimensions()

void llvm::findArrayDimensions ( ScalarEvolution SE,
SmallVectorImpl< const SCEV * > &  Terms,
SmallVectorImpl< const SCEV * > &  Sizes,
const SCEV ElementSize 
)

◆ FindAvailableLoadedValue() [1/2]

Value * llvm::FindAvailableLoadedValue ( 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.

You can use this function to scan across multiple blocks: after you call this function, if ScanFrom points at the beginning of the block, it's safe to continue scanning the predecessors.

Note that performing load CSE requires special care to make sure the metadata is set appropriately. In particular, aliasing metadata needs to be merged. (This doesn't matter for store-to-load forwarding because the only relevant load gets deleted.)

Parameters
LoadThe load we want to replace.
ScanBBThe basic block to scan.
[in,out]ScanFromThe location to start scanning from. When this function returns, it points at the last instruction scanned.
MaxInstsToScanThe maximum number of instructions to scan. If this is zero, the whole block will be scanned.
AAOptional pointer to alias analysis, to make the scan more precise.
[out]IsLoadCSEWhether the returned value is a load from the same location in memory, as opposed to the value operand of a store.
Returns
The found value, or nullptr if no value is found.

Definition at line 455 of file Loads.cpp.

References findAvailablePtrLoadStore(), and llvm::MemoryLocation::get().

Referenced by llvm::JumpThreadingPass::simplifyPartiallyRedundantLoad(), tryPromoteCall(), and llvm::InstCombinerImpl::visitLoadInst().

◆ FindAvailableLoadedValue() [2/2]

Value * llvm::FindAvailableLoadedValue ( 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.

This overload cannot be used to scan across multiple blocks.

Definition at line 668 of file Loads.cpp.

References Available, DL, llvm::MemoryLocation::get(), getAvailableLoadStore(), llvm::BatchAAResults::getModRefInfo(), isModSet(), make_range(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::BasicBlock::rend().

◆ findAvailablePtrLoadStore()

Value * llvm::findAvailablePtrLoadStore ( 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.

You can use this function to scan across multiple blocks: after you call this function, if ScanFrom points at the beginning of the block, it's safe to continue scanning the predecessors.

Parameters
LocThe location we want the load and store to originate from.
AccessTyThe access type of the pointer.
AtLeastAtomicAre we looking for at-least an atomic load/store ? In case it is false, we can return an atomic or non-atomic load or store. In case it is true, we need to return an atomic load or store.
ScanBBThe basic block to scan.
[in,out]ScanFromThe location to start scanning from. When this function returns, it points at the last instruction scanned.
MaxInstsToScanThe maximum number of instructions to scan. If this is zero, the whole block will be scanned.
AAOptional pointer to alias analysis, to make the scan more precise.
[out]IsLoadCSEWhether the returned value is a load from the same location in memory, as opposed to the value operand of a store.
Returns
The found value, or nullptr if no value is found.

Definition at line 584 of file Loads.cpp.

References areNonOverlapSameBaseLoadAndStore(), Available, llvm::BasicBlock::begin(), DL, getAvailableLoadStore(), llvm::Module::getDataLayout(), llvm::BatchAAResults::getModRefInfo(), llvm::BasicBlock::getModule(), llvm::Instruction::isDebugOrPseudoInst(), isModSet(), llvm::Instruction::mayWriteToMemory(), llvm::MemoryLocation::Ptr, and llvm::Value::stripPointerCasts().

Referenced by FindAvailableLoadedValue(), and llvm::JumpThreadingPass::simplifyPartiallyRedundantLoad().

◆ findCMPToFoldIntoCBZ()

MachineInstr * llvm::findCMPToFoldIntoCBZ ( MachineInstr Br,
const TargetRegisterInfo TRI 
)

Search backwards from a tBcc to find a tCMPi8 against 0, meaning we can convert them to a tCBZ or tCBNZ.

Return nullptr if not found.

Definition at line 5598 of file ARMBaseInstrInfo.cpp.

References llvm::ARMCC::AL, llvm::MachineBasicBlock::begin(), getInstrPredicate(), llvm::MachineInstr::getParent(), isARMLowRegister(), registerDefinedBetween(), and TRI.

Referenced by llvm::ARMBaseInstrInfo::isProfitableToIfCvt(), and llvm::ARMBaseInstrInfo::predictBranchSizeForIfCvt().

◆ findDbgDeclares()

TinyPtrVector< DbgDeclareInst * > llvm::findDbgDeclares ( Value V)

Finds dbg.declare intrinsics declaring local variables as living in the memory that 'V' points to.

Definition at line 47 of file DebugInfo.cpp.

References llvm::MetadataAsValue::getIfExists(), llvm::LocalAsMetadata::getIfExists(), and llvm::TinyPtrVector< EltTy >::push_back().

Referenced by buildFrameDebugInfo(), cacheDIVar(), insertSpills(), and replaceDbgDeclare().

◆ findDbgUsers()

void llvm::findDbgUsers ( SmallVectorImpl< DbgVariableIntrinsic * > &  DbgInsts,
Value V,
SmallVectorImpl< DbgVariableRecord * > *  DbgVariableRecords = nullptr 
)

◆ findDbgValues()

void llvm::findDbgValues ( SmallVectorImpl< DbgValueInst * > &  DbgValues,
Value V,
SmallVectorImpl< DbgVariableRecord * > *  DbgVariableRecords = nullptr 
)

◆ findDefsUsedOutsideOfLoop()

SmallVector< Instruction *, 8 > llvm::findDefsUsedOutsideOfLoop ( Loop L)

Returns the instructions that use values defined in the loop.

Definition at line 123 of file LoopUtils.cpp.

References any_of(), Block, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and Users.

Referenced by canTailPredicateLoop(), and llvm::LoopVersioning::versionLoop().

◆ findDevirtualizableCallsForTypeCheckedLoad()

void llvm::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.

Definition at line 104 of file TypeMetadataUtils.cpp.

References assert(), findCallsAtConstantOffset(), llvm::CallBase::getArgOperand(), llvm::CallBase::getCalledFunction(), llvm::Function::getIntrinsicID(), Offset, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::Value::uses().

Referenced by addIntrinsicToSummary().

◆ findDevirtualizableCallsForTypeTest()

void llvm::findDevirtualizableCallsForTypeTest ( SmallVectorImpl< DevirtCallSite > &  DevirtCalls,
SmallVectorImpl< CallInst * > &  Assumes,
const CallInst CI,
DominatorTree DT 
)

◆ findDVRDeclares()

TinyPtrVector< DbgVariableRecord * > llvm::findDVRDeclares ( Value V)

◆ FindEarliestCapture()

Instruction * llvm::FindEarliestCapture ( const Value V,
Function F,
bool  ReturnCaptures,
bool  StoreCaptures,
const DominatorTree DT,
unsigned  MaxUsesToExplore = 0 
)

Definition at line 261 of file CaptureTracking.cpp.

References assert(), F, and PointerMayBeCaptured().

Referenced by llvm::EarliestEscapeInfo::isNotCapturedBefore().

◆ findFirstVPTPredOperandIdx()

int llvm::findFirstVPTPredOperandIdx ( const MachineInstr MI)

◆ FindFunctionBackedges()

void llvm::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.

FindFunctionBackedges - Analyze the specified function to find all of the loop backedges in the function and return them.

This is a relatively cheap (compared to computing dominators and loop info) analysis.

The output is added to Result, as pairs of <from,to> edge info.

Definition at line 34 of file CFG.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::SmallVectorBase< Size_T >::empty(), llvm::SmallPtrSetImpl< PtrType >::erase(), F, I, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), succ_begin(), succ_empty(), and succ_end().

Referenced by llvm::JumpThreadingPass::findLoopHeaders(), functionWillReturn(), and iterativelySimplifyCFG().

◆ findIndirectCalls()

std::vector< CallBase * > llvm::findIndirectCalls ( Function F)
inline

◆ FindInsertedValue()

Value * llvm::FindInsertedValue ( 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.

Given an aggregate and a sequence of indices, see if the scalar value indexed is already around as a register, for example if it was inserted directly into the aggregate.

If InsertBefore is not empty, this function will duplicate (modified) insertvalues when a part of a nested struct is extracted.

If InsertBefore is not null, this function will duplicate (modified) insertvalues when a part of a nested struct is extracted.

Definition at line 5898 of file ValueTracking.cpp.

References llvm::SmallVectorImpl< T >::append(), assert(), llvm::ArrayRef< T >::begin(), BuildSubAggregate(), llvm::CallingConv::C, llvm::ArrayRef< T >::empty(), llvm::ArrayRef< T >::end(), FindInsertedValue(), llvm::ExtractValueInst::getIndexedType(), I, llvm::SmallVectorImpl< T >::reserve(), llvm::ArrayRef< T >::size(), llvm::SmallVectorBase< Size_T >::size(), size(), and llvm::ArrayRef< T >::slice().

Referenced by BuildSubAggregate(), and FindInsertedValue().

◆ findMaximalSubpartOfIllFormedUTF8Sequence()

static unsigned llvm::findMaximalSubpartOfIllFormedUTF8Sequence ( const UTF8 source,
const UTF8 sourceEnd 
)
static

Definition at line 449 of file ConvertUTF.cpp.

References assert(), and isLegalUTF8Sequence().

Referenced by ConvertUTF8toUTF32Impl().

◆ findOneNVVMAnnotation()

bool llvm::findOneNVVMAnnotation ( const GlobalValue gv,
const std::string &  prop,
unsigned retval 
)

◆ findOptionMDForLoop()

MDNode * llvm::findOptionMDForLoop ( const Loop TheLoop,
StringRef  Name 
)

Find string metadata for a loop.

Returns the MDNode where the first operand is the metadata's name. The following operands are the metadata's values. If no metadata with Name is found, return nullptr.

Definition at line 1043 of file LoopInfo.cpp.

References findOptionMDForLoopID(), llvm::Loop::getLoopID(), and Name.

Referenced by collectUnswitchCandidates(), findStringMetadataForLoop(), getOptionalBoolLoopAttribute(), llvm::AMDGPUTTIImpl::getUnrollingPreferences(), llvm::Loop::isAnnotatedParallel(), llvm::Loop::setLoopMustProgress(), and unswitchBestCondition().

◆ findOptionMDForLoopID()

MDNode * llvm::findOptionMDForLoopID ( MDNode LoopID,
StringRef  Name 
)

Find and return the loop attribute node for the attribute Name in LoopID.

Return nullptr if there is no such attribute.

Definition at line 1017 of file LoopInfo.cpp.

References assert(), drop_begin(), llvm::MDNode::getNumOperands(), llvm::MDNode::getOperand(), llvm::MDString::getString(), Name, and llvm::MDNode::operands().

Referenced by findOptionMDForLoop(), and makeFollowupLoopID().

◆ findPHICopyInsertPoint()

MachineBasicBlock::iterator llvm::findPHICopyInsertPoint ( MachineBasicBlock MBB,
MachineBasicBlock SuccMBB,
unsigned  SrcReg 
)

◆ findScalarElement()

Value * llvm::findScalarElement ( Value V,
unsigned  EltNo 
)

◆ findSplitCandidate()

static BranchInst * llvm::findSplitCandidate ( const Loop L,
ScalarEvolution SE,
ConditionInfo &  ExitingCond,
ConditionInfo &  SplitCandidateCond 
)
static

◆ findSplitPointForStackProtector()

MachineBasicBlock::iterator llvm::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.

On many platforms, due to ABI constraints, terminators, even before register allocation, use physical registers. This creates an issue for us since physical registers at this point can not travel across basic blocks. Luckily, selectiondag always moves physical registers into vregs when they enter functions and moves them through a sequence of copies back into the physical registers right before the terminator creating a `‘Terminator Sequence’'. This function is searching for the beginning of the terminator sequence so that we can ensure that we splice off not just the terminator, but additionally the copies that move the vregs into the physical registers.

Definition at line 127 of file CodeGenCommonISel.cpp.

References llvm::MachineBasicBlock::begin(), llvm::MachineBasicBlock::getFirstTerminator(), llvm::HexagonInstrInfo::isTailCall(), MIIsInTerminatorSequence(), and TII.

◆ findStringMetadataForLoop()

std::optional< const MDOperand * > llvm::findStringMetadataForLoop ( const Loop TheLoop,
StringRef  Name 
)

Find string metadata for loop.

If it has a value (e.g. {"llvm.distribute", 1} return the value as an operand or null otherwise. If the string metadata is not found return Optional's not-a-value.

If it has a value (e.g. {"llvm.distribute", 1} return the value as an operand or null otherwise. If the string metadata is not found return Optional's not-a-value.

Definition at line 1053 of file LoopInfo.cpp.

References findOptionMDForLoop(), llvm::MDNode::getNumOperands(), llvm::MDNode::getOperand(), llvm_unreachable, and Name.

Referenced by getOptionalIntLoopAttribute().

◆ findValuesAffectedByCondition()

void llvm::findValuesAffectedByCondition ( Value Cond,
bool  IsAssume,
function_ref< void(Value *)>  InsertAffected 
)

◆ findVCToolChainViaCommandLine() [1/2]

bool llvm::findVCToolChainViaCommandLine ( vfs::FileSystem VFS,
std::optional< llvm::StringRef VCToolsDir,
std::optional< llvm::StringRef VCToolsVersion,
std::optional< llvm::StringRef WinSysRoot,
std::string &  Path,
ToolsetLayout VSLayout 
)

◆ findVCToolChainViaCommandLine() [2/2]

bool llvm::findVCToolChainViaCommandLine ( vfs::FileSystem VFS,
std::optional< StringRef VCToolsDir,
std::optional< StringRef VCToolsVersion,
std::optional< StringRef WinSysRoot,
std::string &  Path,
ToolsetLayout VSLayout 
)

◆ findVCToolChainViaEnvironment()

bool llvm::findVCToolChainViaEnvironment ( vfs::FileSystem VFS,
std::string &  Path,
ToolsetLayout VSLayout 
)

◆ findVCToolChainViaRegistry()

bool llvm::findVCToolChainViaRegistry ( std::string &  Path,
ToolsetLayout VSLayout 
)

Definition at line 714 of file MSVCPaths.cpp.

References llvm::sys::path::append(), getSystemRegistryString(), and OlderVS.

◆ findVCToolChainViaSetupConfig() [1/2]

bool llvm::findVCToolChainViaSetupConfig ( vfs::FileSystem VFS,
std::optional< llvm::StringRef VCToolsVersion,
std::string &  Path,
ToolsetLayout VSLayout 
)

◆ findVCToolChainViaSetupConfig() [2/2]

bool llvm::findVCToolChainViaSetupConfig ( vfs::FileSystem VFS,
std::optional< StringRef VCToolsVersion,
std::string &  Path,
ToolsetLayout VSLayout 
)

◆ findVTableAddrs()

std::vector< Instruction * > llvm::findVTableAddrs ( Function F)
inline

◆ finishBuildOpDecorate()

static void llvm::finishBuildOpDecorate ( MachineInstrBuilder MIB,
const std::vector< uint32_t > &  DecArgs,
StringRef  StrImm 
)
static

◆ fixStackStores()

static void llvm::fixStackStores ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  StartMI,
const TargetInstrInfo TII 
)
static

Replace pseudo store instructions that pass arguments through the stack with real instructions.

Definition at line 319 of file AVRFrameLowering.cpp.

References assert(), llvm::MachineBasicBlock::end(), make_early_inc_range(), make_range(), MBB, MI, and TII.

Referenced by llvm::AVRFrameLowering::eliminateCallFramePseudoInstr().

◆ FixupKind()

static Lanai::Fixups llvm::FixupKind ( const MCExpr Expr)
static

◆ FlattenCFG()

bool llvm::FlattenCFG ( BasicBlock BB,
AAResults AA = nullptr 
)

This function is used to flatten a CFG.

FlattenCFG - This function is used to flatten a CFG.

For example, it uses parallel-and and parallel-or mode to collapse if-conditions and merge if-regions with identical statements.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 533 of file FlattenCFG.cpp.

◆ FlushFPConstant()

Constant * llvm::FlushFPConstant ( 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.

If so, return a zero with the correct sign, otherwise return the original constant. Inputs and outputs to floating point instructions can have their mode set separately, so the direction is also needed.

If the calling function's "denormal-fp-math" input mode is "dynamic" for the floating-point type, returns nullptr for denormal inputs.

Definition at line 1315 of file ConstantFolding.cpp.

References llvm::DenormalMode::Dynamic, llvm::Type::getContext(), llvm::Type::getFltSemantics(), llvm::Value::getType(), llvm::ConstantFP::getValueAPF(), llvm::APFloat::getZero(), I, llvm::DenormalMode::IEEE, llvm::DenormalMode::Input, llvm::APFloat::isDenormal(), llvm::APFloat::isNegative(), llvm_unreachable, llvm::DenormalMode::Output, llvm::DenormalMode::PositiveZero, and llvm::DenormalMode::PreserveSign.

Referenced by ConstantFoldCompareInstOperands(), and ConstantFoldFPInstOperands().

◆ fmt_align()

template<typename T >
support::detail::AlignAdapter< T > llvm::fmt_align ( T &&  Item,
AlignStyle  Where,
size_t  Amount,
char  Fill = ' ' 
)

◆ fmt_consume()

support::detail::ErrorAdapter llvm::fmt_consume ( Error &&  Item)
inline

Definition at line 108 of file FormatAdapters.h.

◆ fmt_pad()

template<typename T >
support::detail::PadAdapter< T > llvm::fmt_pad ( T &&  Item,
size_t  Left,
size_t  Right 
)

Definition at line 96 of file FormatAdapters.h.

References Left, and Right.

◆ fmt_repeat()

template<typename T >
support::detail::RepeatAdapter< T > llvm::fmt_repeat ( T &&  Item,
size_t  Count 
)

◆ fneg()

FPClassTest llvm::fneg ( FPClassTest  Mask)

Return the test mask which returns true if the value's sign bit is flipped.

Definition at line 14 of file FloatingPointMode.cpp.

References fcNan, fcNegInf, fcNegNormal, fcNegSubnormal, fcNegZero, fcPosInf, fcPosNormal, fcPosSubnormal, and fcPosZero.

Referenced by llvm::KnownFPClass::fneg(), and llvm::InstCombinerImpl::SimplifyDemandedUseFPClass().

◆ FoldBranchToCommonDest()

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

If this basic block is simple enough, and if a predecessor branches to us and one of our successors, fold the block into the predecessor and use logical operations to pick the right destination.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 3883 of file SimplifyCFG.cpp.

References all_of(), BranchFoldThreshold, BranchFoldToCommonDestVectorMultiplier, Cond, CostKind, llvm::SmallVectorImpl< T >::emplace_back(), llvm::SmallVectorBase< Size_T >::empty(), llvm::TargetTransformInfo::getArithmeticInstrCost(), llvm::BranchInst::getCondition(), llvm::PHINode::getIncomingBlock(), llvm::TargetTransformInfo::getInstructionCost(), llvm::BasicBlock::getParent(), llvm::Instruction::getParent(), llvm::Value::getType(), llvm::Function::hasMinSize(), llvm::Value::hasOneUse(), I, is_contained(), llvm::BranchInst::isConditional(), isSafeToSpeculativelyExecute(), llvm::BranchInst::isUnconditional(), isVectorOp(), performBranchToCommonDestFolding(), predecessors(), SafeToMergeTerminators(), shouldFoldCondBranchesToCommonDestination(), llvm::SmallVectorBase< Size_T >::size(), successors(), llvm::TargetTransformInfo::TCC_Free, llvm::TargetTransformInfo::TCK_CodeSize, and llvm::TargetTransformInfo::TCK_SizeAndLatency.

Referenced by simplifyOneLoop().

◆ foldFrameOffset()

static void llvm::foldFrameOffset ( MachineBasicBlock::iterator II,
int &  Offset,
Register  DstReg 
)
static

Fold a frame offset shared between two add instructions into a single one.

Definition at line 112 of file AVRRegisterInfo.cpp.

References MI, and Offset.

Referenced by llvm::AVRRegisterInfo::eliminateFrameIndex().

◆ FoldReturnIntoUncondBranch()

ReturnInst * llvm::FoldReturnIntoUncondBranch ( 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.

If the return instruction returns a value defined by a PHI, propagate the right value into the return. It returns the new return instruction in the predecessor.

Definition at line 1549 of file BasicBlockUtils.cpp.

References llvm::DomTreeUpdater::applyUpdates(), llvm::Instruction::clone(), llvm::BasicBlock::end(), llvm::Instruction::eraseFromParent(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::BasicBlock::getTerminator(), llvm::Instruction::insertInto(), llvm::User::operands(), llvm::BasicBlock::removePredecessor(), and llvm::User::setOperand().

◆ FoldSingleEntryPHINodes()

bool llvm::FoldSingleEntryPHINodes ( BasicBlock BB,
MemoryDependenceResults MemDep = nullptr 
)

We know that BB has one predecessor.

If there are any single-entry PHI nodes in it, fold them away. This handles the case when all entries to the PHI nodes in a block are guaranteed equal, such as when the block has exactly one predecessor.

Definition at line 145 of file BasicBlockUtils.cpp.

References llvm::BasicBlock::begin(), llvm::PoisonValue::get(), and llvm::MemoryDependenceResults::removeInstruction().

Referenced by FoldCondBranchOnValueKnownInPredecessorImpl(), MergeBlockIntoPredecessor(), normalizeForInvokeSafepoint(), and llvm::RewriteStatepointsForGC::runOnFunction().

◆ for_each()

template<typename R , typename UnaryFunction >
UnaryFunction llvm::for_each ( R &&  Range,
UnaryFunction  F 
)

◆ ForceBottomUp()

cl::opt< bool > llvm::ForceBottomUp ( "misched-bottomup"  ,
cl::Hidden  ,
cl::desc("Force bottom-up list scheduling")   
)

◆ forcePrintModuleIR()

bool llvm::forcePrintModuleIR ( )

◆ ForceTopDown()

cl::opt< bool > llvm::ForceTopDown ( "misched-topdown"  ,
cl::Hidden  ,
cl::desc("Force top-down list scheduling")   
)

◆ forEachCallbackCallSite()

template<typename UnaryFunction >
void llvm::forEachCallbackCallSite ( const CallBase CB,
UnaryFunction  Func 
)

Apply function Func to each CB's callback call site.

Definition at line 226 of file AbstractCallSite.h.

References assert(), llvm::AbstractCallSite::getCallbackUses(), and llvm::AbstractCallSite::isCallbackCall().

Referenced by forEachCallbackFunction().

◆ forEachCallbackFunction()

template<typename UnaryFunction >
void llvm::forEachCallbackFunction ( const CallBase CB,
UnaryFunction  Func 
)

◆ format() [1/2]

template<typename... Ts>
format_object< Ts... > llvm::format ( const char Fmt,
const Ts &...  Vals 
)
inline

These are helper functions used to produce formatted output.

They use template type deduction to construct the appropriate instance of the format_object class to simplify their construction.

This is typically used like:

OS << format("%0.4f", myfloat) << '\n';
raw_pwrite_stream & OS
format_object< Ts... > format(const char *Fmt, const Ts &... Vals)
These are helper functions used to produce formatted output.
Definition: Format.h:125

Definition at line 125 of file Format.h.

Referenced by llvm::logicalview::LVScopeCompileUnit::addSize(), llvm::DWARFTypePrinter::appendTemplateParameters(), llvm::RuntimeDyldImpl::applyExternalSymbolRelocations(), llvm::DWARFContext::checkAddressSizeSupported(), checkIntegrityScopesTree(), llvm::logicalview::LVBinaryReader::createInstructions(), llvm::jitlink::createLinkGraphFromMachOObject(), createStringError(), llvm::DWARFListTableHeader::dump(), llvm::OverlapStats::dump(), llvm::gsym::GsymReader::dump(), llvm::orc::JITDylib::dump(), llvm::DWARFDebugAbbrev::dump(), llvm::DWARFDebugArangeSet::dump(), llvm::DWARFDebugLine::Row::dump(), llvm::DWARFDebugMacro::dump(), llvm::DWARFDebugPubTable::dump(), llvm::DWARFDebugRangeList::dump(), llvm::DWARFUnitIndex::dump(), llvm::DWARFDebugLine::Prologue::dump(), llvm::dwarf::CIE::dump(), llvm::dwarf::FDE::dump(), llvm::DWARFCompileUnit::dump(), llvm::DWARFContext::dump(), llvm::dwarf::UnwindRow::dump(), llvm::DWARFFormValue::dump(), llvm::DWARFDebugAddrTable::dump(), llvm::DWARFTypeUnit::dump(), llvm::RangeListEntry::dump(), llvm::DWARFDie::dump(), llvm::DWARFFormValue::dumpAddress(), llvm::DWARFFormValue::dumpAddressSection(), dumpApplePropertyAttribute(), llvm::DWARFLocationTable::dumpLocationList(), llvm::DWARFDebugLoclists::dumpRawEntry(), llvm::RuntimeDyldMachO::dumpRelocationToResolve(), dumpSectionMemory(), dumpStringOffsetsSection(), llvm::DIEAbbrev::Emit(), llvm::RuntimeDyldImpl::emitCommonSymbols(), emitGlobalConstantDataSequential(), emitGlobalConstantImpl(), llvm::AMDGPUAsmPrinter::emitInstruction(), llvm::RuntimeDyldImpl::emitSection(), llvm::RuntimeDyldCheckerExprEval::evaluate(), llvm::RuntimeDyldELF::finalizeLoad(), llvm::format_provider< Enum, std::enable_if_t< dwarf::EnumTraits< Enum >::value > >::format(), format(), llvm::MCInstPrinter::formatDec(), llvm::MCInstPrinter::formatHex(), llvm::OpenMPIRBuilder::getAddrOfDeclareTargetVar(), getCOFFStaticStructorSection(), llvm::RuntimeDyldCOFF::getDLLImportOffset(), llvm::BFIDOTGraphTraitsBase< BlockFrequencyInfoT, BranchProbabilityInfoT >::getEdgeAttributes(), llvm::logicalview::LVRange::getEntry(), llvm::logicalview::LVOperation::getOperandsCodeViewInfo(), llvm::logicalview::LVOperation::getOperandsDWARFInfo(), llvm::SampleProfileLoaderBaseImpl< FT >::getProbeWeight(), getSizeForEncoding(), getStaticStructorSection(), llvm::TargetRegionEntryInfo::getTargetRegionEntryFnName(), llvm::object::GOFFObjectFile::GOFFObjectFile(), Help(), llvm::logicalview::LVBinaryReader::includeInlineeLines(), llvm::ResourceManager::initProcResourceVectors(), llvm::RuntimeDyldImpl::loadObjectImpl(), llvm::ResolverError::log(), llvm::object::MachORebaseEntry::moveNext(), llvm::object::MachOBindEntry::moveNext(), llvm::object::operator<<(), llvm::gsym::operator<<(), llvm::rdf::operator<<(), operator<<(), llvm::DWARFDebugLine::LineTable::parse(), prettyPrintBaseTypeRef(), llvm::DWARFExpression::prettyPrintRegisterOp(), llvm::MIPrinter::print(), llvm::TimeRecord::print(), llvm::logicalview::LVLocation::print(), llvm::DIEAbbrev::print(), llvm::DIEEntry::print(), llvm::DIE::print(), llvm::AccelTableBase::HashData::print(), llvm::ILPValue::print(), llvm::BranchProbability::print(), llvm::MachO::PackedVersion::print(), llvm::AppleAccelTableStaticTypeData::print(), llvm::logicalview::LVRange::print(), llvm::MCExpr::print(), llvm::DWARFExpression::Operation::print(), llvm::DWARFExpression::print(), llvm::MachineBasicBlock::print(), llvm::rdf::PhysicalRegisterInfo::print(), llvm::AMDGPUAsmPrinter::PrintAsmOperand(), llvm::logicalview::LVObject::printAttributes(), printBigArchiveMemberHeader(), printBinaryIdsInternal(), llvm::HexagonInstPrinter::printBrtarget(), printCFI(), PrintCFIEscape(), printCompactDWARFExpr(), llvm::ProfileSummary::printDetailedSummary(), llvm::logicalview::LVElement::printFileIndex(), llvm::RISCVInstPrinter::printFPImmOperand(), llvm::AArch64InstPrinter::printFPImmOperand(), llvm::AArch64InstPrinter::printImmHex(), PrintLaneMask(), printMarkupStackTrace(), llvm::ScopedPrinter::printNumber(), llvm::SPIRVInstPrinter::printOpConstantVarOps(), llvm::X86ATTInstPrinter::printOperand(), llvm::logicalview::LVLogicalVisitor::printRecords(), printRestOfMemberHeader(), llvm::AArch64InstPrinter::printSIMDType10Operand(), printSize(), llvm::mca::IncrementalSourceMgr::printStatistic(), PrintStatistics(), llvm::BitcodeAnalyzer::printStats(), llvm::logicalview::LVScopeCompileUnit::printSummary(), llvm::AArch64::PrintSupportedExtensions(), llvm::ARM::PrintSupportedExtensions(), llvm::MCSectionXCOFF::printSwitchToSection(), printVal(), llvm::logicalview::LVScopeCompileUnit::printWarnings(), llvm::logicalview::LVBinaryReader::processLines(), llvm::GCOVFile::readGCDA(), readOpcode(), readPrefixes(), llvm::RuntimeDyldImpl::reassignSectionAddress(), llvm::RuntimeDyldImpl::resolveLocalRelocations(), llvm::RuntimeDyldELFMips::resolveMIPSO32Relocation(), llvm::RuntimeDyldCOFFI386::resolveRelocation(), llvm::RuntimeDyldCOFFThumb::resolveRelocation(), llvm::BalancedPartitioning::run(), llvm::GCNRegPressurePrinter::runOnMachineFunction(), llvm::BTFParser::symbolize(), llvm::msgpack::DocNode::toString(), llvm::AArch64ExternalSymbolizer::tryAddingSymbolicOperand(), llvm::json::OStream::value(), write_double(), and llvm::raw_ostream::write_uuid().

◆ format() [2/2]

template<class T >
static void llvm::format ( const T Fractional,
struct tm &  LT,
raw_ostream OS,
StringRef  Style 
)
static

Definition at line 72 of file Chrono.cpp.

References count(), llvm::raw_ostream::flush(), format(), Format, I, and OS.

◆ format_bytes()

FormattedBytes llvm::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 
)
inline

Definition at line 241 of file Format.h.

References Upper.

Referenced by llvm::logicalview::LVBinaryReader::createInstructions().

◆ format_bytes_with_ascii()

FormattedBytes llvm::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 
)
inline

◆ format_decimal()

FormattedNumber llvm::format_decimal ( int64_t  N,
unsigned  Width 
)
inline

format_decimal - Output N as a right justified, fixed-width decimal.

If number will not fit in width, full number is still printed. Examples: OS << format_decimal(0, 5) => " 0" OS << format_decimal(255, 5) => " 255" OS << format_decimal(-1, 3) => " -1" OS << format_decimal(12345, 3) => "12345"

Definition at line 212 of file Format.h.

References N.

Referenced by llvm::mca::computeProcResourceMasks(), llvm::logicalview::LVBinaryReader::createInstructions(), llvm::symbolize::SourceCode::format(), llvm::logicalview::LVBinaryReader::mapVirtualAddress(), llvm::logicalview::LVBinaryReader::processLines(), and llvm::logicalview::LVRange::startSearch().

◆ format_hex()

FormattedNumber llvm::format_hex ( uint64_t  N,
unsigned  Width,
bool  Upper = false 
)
inline

◆ format_hex_no_prefix()

FormattedNumber llvm::format_hex_no_prefix ( uint64_t  N,
unsigned  Width,
bool  Upper = false 
)
inline

format_hex_no_prefix - Output N as a fixed width hexadecimal.

Does not prepend '0x' to the outputted string. If number will not fit in width, full number is still printed. Examples: OS << format_hex_no_prefix(255, 2) => ff OS << format_hex_no_prefix(255, 2, true) => FF OS << format_hex_no_prefix(255, 4) => 00ff OS << format_hex_no_prefix(255, 1) => ff

Definition at line 200 of file Format.h.

References assert(), N, and Upper.

Referenced by llvm::dwarf_linker::parallel::SyntheticTypeNameBuilder::addOrderedName(), convertToSinitPriority(), llvm::pdb::IPDBSourceFile::dump(), llvm::codeview::detail::GuidAdapter::format(), llvm::gsym::operator<<(), llvm::NVPTXFloatMCExpr::printImpl(), and WriteAPFloatInternal().

◆ formatCallSiteLocation()

std::string llvm::formatCallSiteLocation ( DebugLoc  DLoc,
const CallSiteFormat Format 
)

Get call site location as a string with the given format.

Definition at line 436 of file InlineAdvisor.cpp.

References First, Format, llvm::DebugLoc::get(), Name, Offset, and llvm::raw_string_ostream::str().

Referenced by llvm::ReplayInlineAdvisor::getAdviceImpl().

◆ formatv()

template<typename... Ts>
auto llvm::formatv ( const char Fmt,
Ts &&...  Vals 
) -> formatv_object<decltype(std::make_tuple( support::detail::build_format_adapter(std::forward<Ts>(Vals))...))>
inline

Definition at line 251 of file FormatVariadic.h.

References llvm::support::detail::build_format_adapter().

Referenced by llvm::orc::addFunctionPointerRelocationsToCurrentSymbol(), llvm::jitlink::InProcessMemoryManager::allocate(), llvm::orc::EPCGenericRTDyldMemoryManager::allocateCodeSection(), llvm::orc::EPCGenericRTDyldMemoryManager::allocateDataSection(), appendJITDebugDescriptor(), llvm::jitlink::ppc64::applyFixup(), llvm::dwarf_linker::parallel::OutputSections::applyPatches(), llvm::jitlink::BasicLayout::BasicLayout(), checkIntegrityScopesTree(), llvm::dwarf_linker::parallel::CompileUnit::cloneDieAttrExpression(), llvm::msf::MSFBuilder::commit(), llvm::logicalview::LVBinaryReader::createInstructions(), llvm::DCData::DCData(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::deallocate(), llvm::dwarf_linker::parallel::CompileUnit::DIEInfo::dump(), llvm::DWARFAbbreviationDeclaration::dump(), llvm::BPFunctionNode::dump(), llvm::AppleAcceleratorTable::dump(), llvm::DWARFDebugLine::Prologue::dump(), llvm::orc::ELFDebugObjectSection< ELFT >::dump(), llvm::DWARFDie::dump(), llvm::DWARFDebugNames::Abbrev::dump(), llvm::DWARFDebugNames::Entry::dump(), dumpAttribute(), ErrorFromHResult(), llvm::orc::JITCompileCallbackManager::executeCompileCallback(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::finalize(), llvm::orc::LazyCallThroughManager::findReexport(), llvm::jitlink::MachOLinkGraphBuilder::findSectionByIndex(), llvm::jitlink::MachOLinkGraphBuilder::findSymbolByAddress(), llvm::jitlink::MachOLinkGraphBuilder::findSymbolByIndex(), llvm::pdb::LinePrinter::format(), llvm::format_provider< codeview::TypeIndex >::format(), llvm::pdb::LinePrinter::formatLine(), llvm::pdb::LinePrinter::formatMsfStreamBlocks(), llvm::pdb::LinePrinter::formatMsfStreamData(), llvm::pdb::formatSegmentOffset(), llvm::pdb::formatTypeLeafKind(), llvm::pdb::formatUnknownEnum(), llvm::IRComparer< T >::generateFunctionData(), llvm::DotCfgChangeReporter::genHTML(), getAllLexicalIndexes(), llvm::RuntimeDyldCOFF::getDLLImportOffset(), llvm::DOTGraphTraits< DOTFuncInfo * >::getEdgeAttributes(), llvm::jitlink::getELFRelocationType(), llvm::yaml::FrameIndex::getFI(), llvm::jitlink::getJITLinkEdgeKind(), llvm::dwarf_linker::parallel::OutputSections::getSectionDescriptor(), llvm::jitlink::COFFLinkGraphBuilder::graphifySymbols(), llvm::jitlink::ELFLinkGraphBuilder< ELFT >::graphifySymbols(), llvm::InLineChangePrinter::handleAfter(), llvm::TextChangeReporter< IRUnitT >::handleFiltered(), llvm::DotCfgChangeReporter::handleFiltered(), llvm::DotCfgChangeReporter::handleFunctionCompare(), llvm::TextChangeReporter< IRUnitT >::handleIgnored(), llvm::DotCfgChangeReporter::handleIgnored(), llvm::TextChangeReporter< IRUnitT >::handleInvalidated(), llvm::DotCfgChangeReporter::handleInvalidated(), llvm::orc::SimpleRemoteEPC::handleMessage(), llvm::orc::SimpleRemoteEPCServer::handleMessage(), llvm::logicalview::LVLogicalVisitor::inlineSiteAnnotation(), llvm::dwarf_linker::classic::DWARFLinker::link(), llvm::orc::StaticLibraryDefinitionGenerator::Load(), llvm::json::ParseError::log(), llvm::jitlink::makeAlignmentError(), llvm::jitlink::makeTargetOutOfRangeError(), llvm::TextChangeReporter< IRUnitT >::omitAfter(), llvm::DotCfgChangeReporter::omitAfter(), llvm::pdb::InputFile::open(), llvm::jitlink::CompactUnwindSplitter::operator()(), llvm::jitlink::operator<<(), llvm::orc::operator<<(), operator<<(), llvm::PassBuilder::parseAAPipeline(), llvm::PassBuilder::parsePassPipeline(), llvm::PassBuilder::parseSinglePassOption(), llvm::dxil::ComputedShaderFlags::print(), llvm::jitlink::printEdge(), printMatch(), printNoMatch(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::printStatistic(), printSymbolizedStackTrace(), llvm::jitlink::readCFIRecordLength(), llvm::IndexedInstrProfReader::readHeader(), llvm::VerifyInstrumentation::registerCallbacks(), llvm::PrintCrashIRInstrumentation::registerCallbacks(), llvm::PreservedCFGCheckerInstrumentation::registerCallbacks(), llvm::orc::EPCGenericRTDyldMemoryManager::registerEHFrames(), llvm::orc::ExecutionSession::registerJITDispatchHandlers(), llvm::orc::EPCGenericRTDyldMemoryManager::reserveAllocationSpace(), llvm::jitlink::PerGraphGOTAndPLTStubsBuilder< BuilderImplT >::run(), llvm::orc::ExecutionSession::runJITDispatchHandler(), llvm::MachO::serializeInterfaceFileToJSON(), llvm::pdb::typesetItemList(), llvm::pdb::typesetStringList(), llvm::orc::ELFDebugObjectSection< ELFT >::validateInBounds(), llvm::DWARFVerifier::verifyDebugStrOffsets(), llvm::dwarf_linker::parallel::DependencyTracker::verifyKeepChain(), verifyKeepChain(), llvm::xray::RecordPrinter::visit(), llvm::jitlink::aarch32::GOTBuilder::visitEdge(), llvm::jitlink::aarch32::StubsManager_v7::visitEdge(), llvm::jitlink::aarch64::GOTTableManager::visitEdge(), llvm::jitlink::aarch64::PLTTableManager::visitEdge(), llvm::jitlink::i386::GOTTableManager::visitEdge(), llvm::jitlink::i386::PLTTableManager::visitEdge(), llvm::jitlink::loongarch::GOTTableManager::visitEdge(), llvm::jitlink::loongarch::PLTTableManager::visitEdge(), llvm::jitlink::x86_64::GOTTableManager::visitEdge(), llvm::jitlink::x86_64::PLTTableManager::visitEdge(), llvm::logicalview::LVSymbolVisitor::visitKnownRecord(), llvm::logicalview::LVLogicalVisitor::visitKnownRecord(), llvm::orc::OrcLoongArch64::writeIndirectStubsBlock(), writeMemProf(), llvm::orc::OrcX86_64_SysV::writeResolverCode(), llvm::orc::OrcLoongArch64::writeResolverCode(), and llvm::orc::OrcLoongArch64::writeTrampolines().

◆ formDedicatedExitBlocks()

bool llvm::formDedicatedExitBlocks ( Loop L,
DominatorTree DT,
LoopInfo LI,
MemorySSAUpdater MSSAU,
bool  PreserveLCSSA 
)

Ensure that all exit blocks of the loop are dedicated exits.

For any loop exit block with non-loop predecessors, we split the loop predecessors to use a dedicated loop exit block. We update the dominator tree and loop info if provided, and will preserve LCSSA if requested.

Definition at line 57 of file LoopUtils.cpp.

References assert(), Cleanup, llvm::SmallVectorImpl< T >::clear(), dbgs(), llvm::SmallVectorBase< Size_T >::empty(), llvm::SmallPtrSetImpl< PtrType >::insert(), LLVM_DEBUG, make_scope_exit(), predecessors(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), SplitBlockPredecessors(), and successors().

Referenced by hoistLoopToNewParent(), separateNestedLoop(), simplifyOneLoop(), UnrollRuntimeLoopRemainder(), unswitchNontrivialInvariants(), and llvm::LoopVersioning::versionLoop().

◆ formLCSSA()

bool llvm::formLCSSA ( Loop L,
const DominatorTree DT,
const LoopInfo LI,
ScalarEvolution SE 
)

Put loop into LCSSA form.

Looks at all instructions in the loop which have uses outside of the current loop. For each, an LCSSA PHI node is inserted and the uses outside the loop are rewritten to use this node. Sub-loops must be in LCSSA form already.

LoopInfo and DominatorTree are required and preserved.

If ScalarEvolution is passed in, it will be preserved.

Returns true if any modifications are made to the loop.

Definition at line 363 of file LCSSA.cpp.

References assert(), computeBlocksDominatingExits(), llvm::SmallVectorBase< Size_T >::empty(), formLCSSAForInstructions(), llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), I, and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by formLCSSARecursively(), hoistLoopToNewParent(), separateNestedLoop(), and unswitchNontrivialInvariants().

◆ formLCSSAForInstructions()

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

For every instruction from the worklist, check to see if it has any uses that are outside the current loop.

For the given instruction which have uses outside of the loop, an LCSSA PHI node is inserted and the uses outside the loop are rewritten to use this node.

LoopInfo and DominatorTree are required and, since the routine makes no changes to CFG, preserved.

Returns true if any modifications are made.

This function may introduce unused PHI nodes. If PHIsToRemove is not nullptr, those are added to it (before removing, the caller has to check if they still do not have any uses). Otherwise the PHIs are directly removed.

If InsertedPHIs is not nullptr, inserted phis will be added to this vector.

If so, insert LCSSA PHI nodes and rewrite the uses.

Definition at line 77 of file LCSSA.cpp.

References llvm::SSAUpdater::AddAvailableValue(), llvm::PHINode::addIncoming(), llvm::SmallVectorImpl< T >::append(), assert(), llvm::SetVector< T, Vector, Set, N >::begin(), llvm::BasicBlock::begin(), llvm::SmallVectorImpl< T >::clear(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::count(), llvm::PHINode::Create(), llvm::DominatorTree::dominates(), llvm::SmallVectorBase< Size_T >::empty(), llvm::SetVector< T, Vector, Set, N >::end(), findDbgValues(), llvm::SSAUpdater::FindValueForBlock(), llvm::BasicBlock::front(), llvm::PredIteratorCache::get(), llvm::PoisonValue::get(), llvm::ScalarEvolution::getExistingSCEV(), llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), llvm::BasicBlock::getMarker(), llvm::DominatorTreeBase< NodeT, IsPostDom >::getNode(), llvm::PHINode::getNumIncomingValues(), llvm::PHINode::getOperandNumForIncomingValue(), llvm::User::getOperandUse(), llvm::BasicBlock::getParent(), llvm::DbgMarker::getParent(), llvm::ScalarEvolution::getSCEV(), llvm::SSAUpdater::HasValueForBlock(), I, llvm::SSAUpdater::Initialize(), llvm::SetVector< T, Vector, Set, N >::insert(), llvm::Instruction::insertBefore(), isExitBlock(), llvm::DominatorTree::isReachableFromEntry(), llvm::ScalarEvolution::isSCEVable(), make_early_inc_range(), llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SSAUpdater::RewriteUse(), llvm::Instruction::setDebugLoc(), llvm::SmallVectorBase< Size_T >::size(), and llvm::PredIteratorCache::size().

Referenced by formLCSSA().

◆ formLCSSARecursively()

bool llvm::formLCSSARecursively ( Loop L,
const DominatorTree DT,
const LoopInfo LI,
ScalarEvolution SE 
)

Put a loop nest into LCSSA form.

Process a loop nest depth first.

This recursively forms LCSSA for a loop nest.

LoopInfo and DominatorTree are required and preserved.

If ScalarEvolution is passed in, it will be preserved.

Returns true if any modifications are made to the loop.

Definition at line 425 of file LCSSA.cpp.

References formLCSSA(), and formLCSSARecursively().

Referenced by breakLoopBackedge(), formLCSSAOnAllLoops(), formLCSSARecursively(), llvm::LoopConstrainer::run(), llvm::IRCEPass::run(), llvm::LoopUnrollPass::run(), llvm::LoopVectorizePass::runImpl(), and UnrollLoop().

◆ fouts()

formatted_raw_ostream & llvm::fouts ( )

fouts() - This returns a reference to a formatted_raw_ostream for standard output.

Use it like: fouts() << "foo" << "bar";

Definition at line 141 of file FormattedStream.cpp.

References outs().

◆ fpCondCode2Fcc()

static VECC::CondCode llvm::fpCondCode2Fcc ( ISD::CondCode  CC)
inlinestatic

◆ frexp()

APFloat llvm::frexp ( const APFloat X,
int &  Exp,
APFloat::roundingMode  RM 
)
inline

Equivalent of C standard library function.

While the C standard says Exp is an unspecified value for infinity and nan, this returns INT_MAX for infinities, and INT_MIN for NaNs.

Definition at line 1373 of file APFloat.h.

References frexp(), llvm_unreachable, and X.

Referenced by frexp(), llvm::SelectionDAG::getNode(), and llvm::GCNTTIImpl::instCombineIntrinsic().

◆ fullyRecomputeLiveIns()

void llvm::fullyRecomputeLiveIns ( ArrayRef< MachineBasicBlock * >  MBBs)
inline

◆ fuseInstructionPair()

bool llvm::fuseInstructionPair ( ScheduleDAGInstrs DAG,
SUnit FirstSU,
SUnit SecondSU 
)

Create an artificial edge between FirstSU and SecondSU.

Make data dependencies from the FirstSU also dependent on the SecondSU to prevent them from being scheduled between the FirstSU and the SecondSU and vice-versa. Fusing more than 2 instructions is not currently supported.

Definition at line 53 of file MacroFusion.cpp.

References llvm::ScheduleDAGInstrs::addEdge(), llvm::SDep::Artificial, assert(), llvm::SDep::Cluster, dbgs(), llvm::ScheduleDAG::dumpNodeName(), llvm::ScheduleDAG::EntrySU, llvm::ScheduleDAG::ExitSU, llvm::SUnit::getInstr(), llvm::MCInstrInfo::getName(), llvm::MachineInstr::getOpcode(), hasLessThanNumFused(), isHazard(), llvm::SUnit::isPred(), llvm::SUnit::isSucc(), LLVM_DEBUG, llvm::SUnit::Preds, llvm::SUnit::Succs, llvm::ScheduleDAG::SUnits, and llvm::ScheduleDAG::TII.

◆ gatherImportedSummariesForModule()

void llvm::gatherImportedSummariesForModule ( StringRef  ModulePath,
const DenseMap< StringRef, GVSummaryMapTy > &  ModuleToDefinedGVSummaries,
const FunctionImporter::ImportMapTy ImportList,
std::map< std::string, GVSummaryMapTy > &  ModuleToSummariesForIndex 
)

Compute the set of summaries needed for a ThinLTO backend compilation of ModulePath.

This includes summaries from that module (in case any global summary based optimizations were recorded) and from any definitions in other modules that should be imported. ModuleToSummariesForIndex will be populated with the needed summaries from each required module path. Use a std::map instead of StringMap to get stable order for bitcode emission.

Definition at line 1331 of file FunctionImport.cpp.

References assert(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), and llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::lookup().

Referenced by llvm::lto::ThinBackendProc::emitFiles(), llvm::ThinLTOCodeGenerator::emitImports(), and llvm::ThinLTOCodeGenerator::gatherImportedSummariesForModule().

◆ gatherPeelingPreferences()

TargetTransformInfo::PeelingPreferences llvm::gatherPeelingPreferences ( Loop L,
ScalarEvolution SE,
const TargetTransformInfo TTI,
std::optional< bool UserAllowPeeling,
std::optional< bool UserAllowProfileBasedPeeling,
bool  UnrollingSpecficValues = false 
)

◆ gatherUnrollingPreferences()

TargetTransformInfo::UnrollingPreferences llvm::gatherUnrollingPreferences ( Loop L,
ScalarEvolution SE,
const TargetTransformInfo TTI,
BlockFrequencyInfo BFI,
ProfileSummaryInfo PSI,
llvm::OptimizationRemarkEmitter ORE,
int  OptLevel,
std::optional< unsigned UserThreshold,
std::optional< unsigned UserCount,
std::optional< bool UserAllowPartial,
std::optional< bool UserRuntime,
std::optional< bool UserUpperBound,
std::optional< unsigned UserFullUnrollMaxCount 
)

Gather the various unrolling parameters based on the defaults, compiler flags, TTI overrides and user specified parameters.

Definition at line 187 of file LoopUnrollPass.cpp.

References llvm::TargetTransformInfo::UnrollingPreferences::AllowExpensiveTripCount, llvm::TargetTransformInfo::UnrollingPreferences::AllowRemainder, llvm::TargetTransformInfo::UnrollingPreferences::BEInsns, llvm::TargetTransformInfo::UnrollingPreferences::Count, llvm::TargetTransformInfo::UnrollingPreferences::DefaultUnrollRuntimeCount, llvm::TargetTransformInfo::UnrollingPreferences::Force, llvm::TargetTransformInfo::UnrollingPreferences::FullUnrollMaxCount, llvm::TargetTransformInfo::getUnrollingPreferences(), hasUnrollTransformation(), if(), llvm::TargetTransformInfo::UnrollingPreferences::MaxCount, llvm::TargetTransformInfo::UnrollingPreferences::MaxIterationsCountToAnalyze, llvm::TargetTransformInfo::UnrollingPreferences::MaxPercentThresholdBoost, llvm::TargetTransformInfo::UnrollingPreferences::MaxUpperBound, llvm::TargetTransformInfo::UnrollingPreferences::OptSizeThreshold, llvm::TargetTransformInfo::UnrollingPreferences::Partial, llvm::TargetTransformInfo::UnrollingPreferences::PartialOptSizeThreshold, llvm::TargetTransformInfo::UnrollingPreferences::PartialThreshold, llvm::TargetTransformInfo::UnrollingPreferences::Runtime, shouldOptimizeForSize(), llvm::TargetTransformInfo::UnrollingPreferences::Threshold, TM_ForcedByUser, UnrollAllowPartial, UnrollAllowRemainder, llvm::TargetTransformInfo::UnrollingPreferences::UnrollAndJam, llvm::TargetTransformInfo::UnrollingPreferences::UnrollAndJamInnerLoopThreshold, UnrollFullMaxCount, UnrollMaxCount, UnrollMaxIterationsCountToAnalyze, UnrollMaxPercentThresholdBoost, UnrollMaxUpperBound, UnrollOptSizeThreshold, UnrollPartialThreshold, llvm::TargetTransformInfo::UnrollingPreferences::UnrollRemainder, UnrollRuntime, UnrollThreshold, UnrollThresholdAggressive, UnrollThresholdDefault, UnrollUnrollRemainder, and llvm::TargetTransformInfo::UnrollingPreferences::UpperBound.

Referenced by computeHeuristicUnrollFactor(), tryToUnrollAndJamLoop(), and tryToUnrollLoop().

◆ gcovOneInput()

void llvm::gcovOneInput ( const GCOV::Options options,
StringRef  filename,
StringRef  gcno,
StringRef  gcda,
GCOVFile file 
)

Definition at line 992 of file GCOV.cpp.

References Context, and file().

◆ generateAsyncCopy()

static bool llvm::generateAsyncCopy ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateAtomicFloatingInst()

static bool llvm::generateAtomicFloatingInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateAtomicInst()

static bool llvm::generateAtomicInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateBarrierInst()

static bool llvm::generateBarrierInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateBuiltinVar()

static bool llvm::generateBuiltinVar ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateConvertInst()

static bool llvm::generateConvertInst ( const StringRef  DemangledCall,
const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateDotOrFMulInst()

static bool llvm::generateDotOrFMulInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateEnqueueInst()

static bool llvm::generateEnqueueInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateExtInst()

static bool llvm::generateExtInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateGetQueryInst()

static bool llvm::generateGetQueryInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

Definition at line 1359 of file SPIRVBuiltins.cpp.

References genWorkgroupQuery(), and llvm::Value::Value().

Referenced by llvm::SPIRV::lowerBuiltin().

◆ generateGroupInst()

static bool llvm::generateGroupInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateGroupUniformInst()

static bool llvm::generateGroupUniformInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateImageMiscQueryInst()

static bool llvm::generateImageMiscQueryInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateImageSizeQueryInst()

static bool llvm::generateImageSizeQueryInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateIntelSubgroupsInst()

static bool llvm::generateIntelSubgroupsInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateLoadStoreInst()

static bool llvm::generateLoadStoreInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateParamAccessSummary()

void llvm::generateParamAccessSummary ( ModuleSummaryIndex Index)

◆ generateReadImageInst()

static bool llvm::generateReadImageInst ( const StringRef  DemangledCall,
const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateRelationalInst()

static bool llvm::generateRelationalInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateSampleImageInst()

static bool llvm::generateSampleImageInst ( const StringRef  DemangledCall,
const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateSelectInst()

static bool llvm::generateSelectInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder 
)
static

Definition at line 1659 of file SPIRVBuiltins.cpp.

References llvm::MachineIRBuilder::buildSelect().

Referenced by llvm::SPIRV::lowerBuiltin().

◆ generateSpecConstantInst()

static bool llvm::generateSpecConstantInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateVectorLoadStoreInst()

static bool llvm::generateVectorLoadStoreInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateWaveInst()

static bool llvm::generateWaveInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ generateWriteImageInst()

static bool llvm::generateWriteImageInst ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ genWorkgroupQuery()

static bool llvm::genWorkgroupQuery ( const SPIRV::IncomingCall Call,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR,
SPIRV::BuiltIn::BuiltIn  BuiltinValue,
uint64_t  DefaultValue 
)
static

◆ gep_type_begin() [1/3]

gep_type_iterator llvm::gep_type_begin ( const User GEP)
inline

◆ gep_type_begin() [2/3]

gep_type_iterator llvm::gep_type_begin ( const User GEP)
inline

◆ gep_type_begin() [3/3]

template<typename T >
generic_gep_type_iterator< const T * > llvm::gep_type_begin ( Type Op0,
ArrayRef< T A 
)
inline

◆ gep_type_end() [1/3]

gep_type_iterator llvm::gep_type_end ( const User GEP)
inline

◆ gep_type_end() [2/3]

gep_type_iterator llvm::gep_type_end ( const User GEP)
inline

◆ gep_type_end() [3/3]

template<typename T >
generic_gep_type_iterator< const T * > llvm::gep_type_end ( Type ,
ArrayRef< T A 
)
inline

◆ get() [1/2]

template<std::size_t I, typename PointerTy , unsigned IntBits, typename IntType , typename PtrTraits , typename Info >
decltype(auto) llvm::get ( const PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info > &  Pair)

Definition at line 270 of file PointerIntPair.h.

References llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::getInt(), llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::getPointer(), and I.

Referenced by llvm::R600InstrInfo::addFlag(), llvm::Mips16InstrInfo::AddiuSpImm(), llvm::M68kInstrInfo::AddSExt(), llvm::M68kInstrInfo::AddZExt(), llvm::MipsSEInstrInfo::adjustStackPtr(), llvm::AVRInstrInfo::analyzeBranch(), llvm::M68kInstrInfo::AnalyzeBranchImpl(), llvm::SIInstrInfo::areLoadsFromSameBasePtr(), llvm::ARMBaseInstrInfo::breakPartialRegDependency(), llvm::X86InstrInfo::breakPartialRegDependency(), llvm::AArch64InstrInfo::buildClearRegister(), llvm::X86InstrInfo::buildClearRegister(), llvm::R600InstrInfo::buildDefaultInstruction(), llvm::MachineIRBuilder::buildDirectDbgValue(), llvm::SIInstrInfo::buildExtractSubReg(), llvm::MachineIRBuilder::buildIndirectDbgValue(), llvm::AArch64InstrInfo::buildOutlinedFrame(), llvm::ARMBaseInstrInfo::buildOutlinedFrame(), llvm::RISCVInstrInfo::buildOutlinedFrame(), llvm::X86InstrInfo::buildOutlinedFrame(), llvm::SIInstrInfo::buildShrunkInst(), llvm::HexagonInstrInfo::changeDuplexOpcode(), llvm::X86InstrInfo::classifyLEAReg(), llvm::R600InstrInfo::clearFlag(), llvm::PPCInstrInfo::combineRLWINM(), combineVSelectWithAllOnesOrZeros(), llvm::X86InstrInfo::commuteInstructionImpl(), llvm::SIInstrInfo::commuteInstructionImpl(), llvm::RISCVInstrInfo::commuteInstructionImpl(), computeMemberData(), llvm::slpvectorizer::BoUpSLP::computeMinimumValueSizes(), llvm::SIInstrInfo::convertNonUniformIfRegion(), llvm::SIInstrInfo::convertNonUniformLoopRegion(), llvm::SIInstrInfo::convertToThreeAddress(), llvm::ARMBaseInstrInfo::convertToThreeAddress(), llvm::RISCVInstrInfo::convertToThreeAddress(), llvm::SystemZInstrInfo::convertToThreeAddress(), llvm::X86InstrInfo::convertToThreeAddress(), llvm::ARMBaseInstrInfo::copyFromCPSR(), llvm::AArch64InstrInfo::copyGPRRegTuple(), llvm::ARCInstrInfo::copyPhysReg(), llvm::AArch64InstrInfo::copyPhysReg(), llvm::ARMBaseInstrInfo::copyPhysReg(), llvm::Thumb1InstrInfo::copyPhysReg(), llvm::Thumb2InstrInfo::copyPhysReg(), llvm::BPFInstrInfo::copyPhysReg(), llvm::HexagonInstrInfo::copyPhysReg(), llvm::MSP430InstrInfo::copyPhysReg(), llvm::NVPTXInstrInfo::copyPhysReg(), llvm::PPCInstrInfo::copyPhysReg(), llvm::SparcInstrInfo::copyPhysReg(), llvm::VEInstrInfo::copyPhysReg(), llvm::XCoreInstrInfo::copyPhysReg(), llvm::SystemZInstrInfo::copyPhysReg(), llvm::LoongArchInstrInfo::copyPhysReg(), llvm::RISCVInstrInfo::copyPhysReg(), llvm::SIInstrInfo::copyPhysReg(), llvm::AVRInstrInfo::copyPhysReg(), llvm::CSKYInstrInfo::copyPhysReg(), llvm::M68kInstrInfo::copyPhysReg(), llvm::Mips16InstrInfo::copyPhysReg(), llvm::MipsSEInstrInfo::copyPhysReg(), llvm::WebAssemblyInstrInfo::copyPhysReg(), llvm::X86InstrInfo::copyPhysReg(), llvm::LanaiInstrInfo::copyPhysReg(), llvm::AArch64InstrInfo::copyPhysRegTuple(), llvm::RISCVInstrInfo::copyPhysRegVector(), llvm::ARMBaseInstrInfo::copyToCPSR(), llvm::SIInstrInfo::createPHIDestinationCopy(), llvm::SIInstrInfo::createPHISourceCopy(), llvm::SIInstrInfo::doesNotReadTiedSource(), llvm::AArch64InstrInfo::emitLdStWithAddr(), llvm::RISCVInstrInfo::emitLdStWithAddr(), llvm::MCStreamer::emitWinCFIEndProc(), llvm::CodeViewDebug::endFunctionImpl(), llvm::SIInstrInfo::enforceOperandRCAlignment(), llvm::M68kInstrInfo::ExpandCCR(), llvm::ARMBaseInstrInfo::expandLoadStackGuardBase(), llvm::SIInstrInfo::expandMovDPP64(), llvm::M68kInstrInfo::ExpandMOVSZX_RR(), llvm::M68kInstrInfo::ExpandMOVX_RR(), llvm::SystemZInstrInfo::expandPostRAPseudo(), llvm::AArch64InstrInfo::expandPostRAPseudo(), llvm::SIInstrInfo::expandPostRAPseudo(), llvm::ARMBaseInstrInfo::expandPostRAPseudo(), llvm::HexagonInstrInfo::expandPostRAPseudo(), llvm::M68kInstrInfo::expandPostRAPseudo(), llvm::PPCInstrInfo::expandPostRAPseudo(), llvm::SparcInstrInfo::expandPostRAPseudo(), llvm::VEInstrInfo::expandPostRAPseudo(), llvm::X86InstrInfo::expandPostRAPseudo(), llvm::HexagonInstrInfo::expandVGatherPseudo(), llvm::PPCInstrInfo::expandVSXMemPseudo(), llvm::PPCInstrInfo::foldFrameOffset(), llvm::SIInstrInfo::foldImmediate(), llvm::ARMBaseInstrInfo::foldImmediate(), llvm::SystemZInstrInfo::foldImmediate(), llvm::VEInstrInfo::foldImmediate(), llvm::RISCVInstrInfo::foldMemoryOperandImpl(), llvm::SystemZInstrInfo::foldMemoryOperandImpl(), llvm::X86InstrInfo::foldMemoryOperandImpl(), llvm::HexagonInstrInfo::genAllInsnTimingClasses(), llvm::MipsInstrInfo::genInstrWithNewOpc(), llvm::Expected< T >::get(), llvm::SIInstrInfo::getAddNoCarry(), llvm::AVRInstrInfo::getBrCond(), llvm::RISCVInstrInfo::getBrCond(), llvm::AArch64InstrInfo::getElementSizeForOpcode(), llvm::R600InstrInfo::getFlagOp(), llvm::CSKYInstrInfo::getGlobalBaseReg(), llvm::SparcInstrInfo::getGlobalBaseReg(), llvm::VEInstrInfo::getGlobalBaseReg(), llvm::DSOLocalEquivalent::getGlobalValue(), llvm::NoCFIValue::getGlobalValue(), llvm::SIInstrInfo::getIndirectGPRIDXPseudo(), llvm::SIInstrInfo::getIndirectRegWriteMovRelPseudo(), llvm::AVRInstrInfo::getInstSizeInBytes(), llvm::PPCInstrInfo::getInstSizeInBytes(), llvm::RISCVInstrInfo::getInstSizeInBytes(), llvm::SparcInstrInfo::getInstSizeInBytes(), llvm::SIInstrInfo::getKillTerminatorFromPseudo(), llvm::SIInstrInfo::getMCOpcodeFromPseudo(), llvm::SelectionDAG::getNode(), llvm::SystemZInstrInfo::getOpcodeForOffset(), llvm::ARMBaseInstrInfo::getOperandLatency(), llvm::SDNode::getOperationName(), llvm::SIInstrInfo::getOpRegClass(), llvm::SIInstrInfo::getOpSize(), llvm::WebAssembly::SortRegionInfo::getRegionFor(), llvm::pdb::SymbolCache::getSourceFileById(), llvm::BranchInst::getSuccessor(), llvm::SystemZInstrInfo::hasDisplacementPairInsn(), llvm::SIInstrInfo::hasFPClamp(), llvm::R600InstrInfo::hasInstrModifiers(), llvm::ARCInstrInfo::insertBranch(), llvm::AArch64InstrInfo::insertBranch(), llvm::R600InstrInfo::insertBranch(), llvm::SIInstrInfo::insertBranch(), llvm::ARMBaseInstrInfo::insertBranch(), llvm::AVRInstrInfo::insertBranch(), llvm::BPFInstrInfo::insertBranch(), llvm::CSKYInstrInfo::insertBranch(), llvm::HexagonInstrInfo::insertBranch(), llvm::LoongArchInstrInfo::insertBranch(), llvm::M68kInstrInfo::insertBranch(), llvm::MipsInstrInfo::insertBranch(), llvm::MSP430InstrInfo::insertBranch(), llvm::NVPTXInstrInfo::insertBranch(), llvm::PPCInstrInfo::insertBranch(), llvm::RISCVInstrInfo::insertBranch(), llvm::SparcInstrInfo::insertBranch(), llvm::SystemZInstrInfo::insertBranch(), llvm::VEInstrInfo::insertBranch(), llvm::WebAssemblyInstrInfo::insertBranch(), llvm::X86InstrInfo::insertBranch(), llvm::XCoreInstrInfo::insertBranch(), llvm::LanaiInstrInfo::insertBranch(), llvm::SIInstrInfo::insertEQ(), llvm::AArch64InstrInfo::insertIndirectBranch(), llvm::SIInstrInfo::insertIndirectBranch(), llvm::AVRInstrInfo::insertIndirectBranch(), llvm::LoongArchInstrInfo::insertIndirectBranch(), llvm::RISCVInstrInfo::insertIndirectBranch(), llvm::SIInstrInfo::insertNE(), llvm::AArch64InstrInfo::insertNoop(), llvm::HexagonInstrInfo::insertNoop(), llvm::MipsInstrInfo::insertNoop(), llvm::PPCInstrInfo::insertNoop(), llvm::X86InstrInfo::insertNoop(), llvm::SIInstrInfo::insertNoops(), llvm::MipsInstrInfo::insertNop(), llvm::AArch64InstrInfo::insertOutlinedCall(), llvm::ARMBaseInstrInfo::insertOutlinedCall(), llvm::RISCVInstrInfo::insertOutlinedCall(), llvm::X86InstrInfo::insertOutlinedCall(), llvm::SIInstrInfo::insertReturn(), llvm::SIInstrInfo::insertSelect(), llvm::AArch64InstrInfo::insertSelect(), llvm::PPCInstrInfo::insertSelect(), llvm::SystemZInstrInfo::insertSelect(), llvm::X86InstrInfo::insertSelect(), llvm::SIInstrInfo::insertVectorSelect(), llvm::HexagonInstrInfo::invertAndChangeJumpTarget(), llvm::R600InstrInfo::isALUInstr(), llvm::SIInstrInfo::isAtomic(), llvm::SIInstrInfo::isAtomicNoRet(), llvm::SIInstrInfo::isAtomicRet(), llvm::SIInstrInfo::isDisableWQM(), llvm::SIInstrInfo::isDOT(), llvm::SIInstrInfo::isDPP(), llvm::SIInstrInfo::isDS(), llvm::SIInstrInfo::isEXP(), llvm::R600InstrInfo::isExport(), llvm::SIInstrInfo::isFixedSize(), llvm::SIInstrInfo::isFLAT(), llvm::SIInstrInfo::isFLATGlobal(), llvm::SIInstrInfo::isFLATScratch(), llvm::HexagonInstrInfo::isFloat(), llvm::SIInstrInfo::isFPAtomic(), llvm::SIInstrInfo::isGather4(), llvm::SIInstrInfo::isGWS(), llvm::SIInstrInfo::isHighLatencyDef(), llvm::SIInstrInfo::isLDSDIR(), llvm::R600InstrInfo::isLDSInstr(), llvm::SIInstrInfo::isMAI(), IsMemoryAssignmentError(), llvm::SIInstrInfo::isMIMG(), llvm::SIInstrInfo::isMTBUF(), llvm::SIInstrInfo::isMUBUF(), llvm::HexagonInstrInfo::isNewValue(), llvm::HexagonInstrInfo::isNewValueJump(), llvm::HexagonInstrInfo::isNewValueStore(), llvm::SIInstrInfo::isPacked(), llvm::HexagonInstrInfo::isPredicated(), llvm::HexagonInstrInfo::isPredicatedNew(), llvm::HexagonInstrInfo::isPredicatedTrue(), llvm::HexagonInstrInfo::isPredicateLate(), llvm::HexagonInstrInfo::isPredictedTaken(), llvm::PPCInstrInfo::isPrefixed(), llvm::AArch64InstrInfo::isPTestLikeOpcode(), llvm::R600InstrInfo::isRegisterLoad(), llvm::R600InstrInfo::isRegisterStore(), llvm::SIInstrInfo::isSALU(), llvm::SIInstrInfo::isScalarStore(), llvm::SIInstrInfo::isSDWA(), llvm::SIInstrInfo::isSegmentSpecificFLAT(), llvm::PPCInstrInfo::isSExt32To64(), llvm::SIInstrInfo::isSMRD(), llvm::SIInstrInfo::isSOP1(), llvm::SIInstrInfo::isSOP2(), llvm::SIInstrInfo::isSOPC(), llvm::SIInstrInfo::isSOPK(), llvm::SIInstrInfo::isSOPP(), llvm::SIInstrInfo::isSpill(), llvm::SIInstrInfo::isSWMMAC(), llvm::SIInstrInfo::isTRANS(), llvm::R600InstrInfo::isTransOnly(), llvm::SIInstrInfo::isVALU(), llvm::HexagonInstrInfo::isVecALU(), llvm::R600InstrInfo::isVector(), llvm::R600InstrInfo::isVectorOnly(), llvm::SIInstrInfo::isVIMAGE(), llvm::SIInstrInfo::isVINTERP(), llvm::SIInstrInfo::isVINTRP(), llvm::SIInstrInfo::isVOP1(), llvm::SIInstrInfo::isVOP2(), llvm::SIInstrInfo::isVOP3(), llvm::SIInstrInfo::isVOP3P(), llvm::SIInstrInfo::isVOPC(), llvm::SIInstrInfo::isVSAMPLE(), llvm::AArch64InstrInfo::isWhileOpcode(), llvm::SIInstrInfo::isWMMA(), llvm::SIInstrInfo::isWQM(), llvm::PPCInstrInfo::isXFormMemOp(), llvm::PPCInstrInfo::isZExt32To64(), llvm::SIInstrInfo::legalizeGenericOperand(), llvm::SIInstrInfo::legalizeOperands(), llvm::SIInstrInfo::legalizeOperandsVOP2(), llvm::SIInstrInfo::legalizeOperandsVOP3(), llvm::SIInstrInfo::legalizeOpWithMove(), LLVMDIBuilderGetOrCreateArray(), LLVMDIBuilderGetOrCreateTypeArray(), LLVMGetUsedValue(), LLVMOrcExecutionSessionGetSymbolStringPool(), llvm::MipsSEInstrInfo::loadImmediate(), llvm::SystemZInstrInfo::loadImmediate(), llvm::ARCInstrInfo::loadImmediate(), llvm::XCoreInstrInfo::loadImmediate(), llvm::Mips16InstrInfo::loadImmediate(), llvm::Mips16InstrInfo::loadRegFromStack(), llvm::MipsSEInstrInfo::loadRegFromStack(), llvm::SystemZInstrInfo::loadRegFromStackSlot(), llvm::AArch64InstrInfo::loadRegFromStackSlot(), llvm::ARMBaseInstrInfo::loadRegFromStackSlot(), llvm::Thumb1InstrInfo::loadRegFromStackSlot(), llvm::Thumb2InstrInfo::loadRegFromStackSlot(), llvm::BPFInstrInfo::loadRegFromStackSlot(), llvm::HexagonInstrInfo::loadRegFromStackSlot(), llvm::SparcInstrInfo::loadRegFromStackSlot(), llvm::VEInstrInfo::loadRegFromStackSlot(), llvm::LoongArchInstrInfo::loadRegFromStackSlot(), llvm::RISCVInstrInfo::loadRegFromStackSlot(), llvm::MSP430InstrInfo::loadRegFromStackSlot(), llvm::SIInstrInfo::loadRegFromStackSlot(), llvm::ARCInstrInfo::loadRegFromStackSlot(), llvm::AVRInstrInfo::loadRegFromStackSlot(), llvm::CSKYInstrInfo::loadRegFromStackSlot(), llvm::M68kInstrInfo::loadRegFromStackSlot(), llvm::X86InstrInfo::loadRegFromStackSlot(), llvm::XCoreInstrInfo::loadRegFromStackSlot(), llvm::LanaiInstrInfo::loadRegFromStackSlot(), llvm::X86InstrInfo::loadStoreTileReg(), LowerSETCCCARRY(), llvm::Mips16InstrInfo::makeFrame(), llvm::SIInstrInfo::materializeImmediate(), llvm::PPCInstrInfo::materializeImmPostRA(), llvm::SIInstrInfo::moveFlatAddrToVGPR(), llvm::Expected< T >::moveInto(), llvm::SIInstrInfo::moveToVALUImpl(), llvm::LoongArchInstrInfo::movImm(), llvm::RISCVInstrInfo::movImm(), llvm::CSKYInstrInfo::movImm(), llvm::RISCVInstrInfo::mulImm(), llvm::APSInt::operator!=(), llvm::APSInt::operator<(), llvm::APSInt::operator<=(), llvm::APSInt::operator==(), llvm::APSInt::operator>(), llvm::APSInt::operator>=(), llvm::PPCInstrInfo::optimizeCmpPostRA(), llvm::AArch64InstrInfo::optimizeCompareInstr(), llvm::SIInstrInfo::optimizeCompareInstr(), llvm::LanaiInstrInfo::optimizeCompareInstr(), llvm::X86InstrInfo::optimizeCompareInstr(), llvm::PPCInstrInfo::optimizeCompareInstr(), llvm::AArch64InstrInfo::optimizeCondBranch(), llvm::Thumb2InstrInfo::optimizeSelect(), llvm::RISCVInstrInfo::optimizeSelect(), llvm::AMDGPUTargetLowering::performSelectCombine(), performXORCombine(), llvm::HexagonInstrInfo::PredicateInstruction(), llvm::ARMBaseInstrInfo::PredicateInstruction(), llvm::PPCInstrInfo::PredicateInstruction(), llvm::SystemZInstrInfo::PredicateInstruction(), llvm::SIInstrInfo::pseudoToMCOpcode(), llvm::vfs::OverlayFileSystem::pushOverlay(), llvm::SIInstrInfo::readlaneVGPRToSGPR(), llvm::SIInstrInfo::reMaterialize(), llvm::ARMBaseInstrInfo::reMaterialize(), llvm::X86InstrInfo::reMaterialize(), llvm::R600InstrInfo::removeBranch(), llvm::X86InstrInfo::replaceBranchWithTailCall(), llvm::PPCInstrInfo::replaceInstrWithLI(), llvm::SIInstrInfo::restoreExec(), llvm::Mips16InstrInfo::restoreFrame(), llvm::HexagonInstrInfo::reverseBranchCondition(), llvm::HexagonInstrInfo::reversePredSense(), llvm::ScaledNumber< DigitsT >::scale(), llvm::ARMBaseInstrInfo::setExecutionDomain(), llvm::X86InstrInfo::setExecutionDomain(), llvm::X86InstrInfo::setExecutionDomainCustom(), llvm::Mips16InstrInfo::storeRegToStack(), llvm::MipsSEInstrInfo::storeRegToStack(), llvm::AArch64InstrInfo::storeRegToStackSlot(), llvm::ARMBaseInstrInfo::storeRegToStackSlot(), llvm::Thumb1InstrInfo::storeRegToStackSlot(), llvm::Thumb2InstrInfo::storeRegToStackSlot(), llvm::BPFInstrInfo::storeRegToStackSlot(), llvm::HexagonInstrInfo::storeRegToStackSlot(), llvm::LoongArchInstrInfo::storeRegToStackSlot(), llvm::RISCVInstrInfo::storeRegToStackSlot(), llvm::SparcInstrInfo::storeRegToStackSlot(), llvm::SystemZInstrInfo::storeRegToStackSlot(), llvm::VEInstrInfo::storeRegToStackSlot(), llvm::SIInstrInfo::storeRegToStackSlot(), llvm::ARCInstrInfo::storeRegToStackSlot(), llvm::AVRInstrInfo::storeRegToStackSlot(), llvm::CSKYInstrInfo::storeRegToStackSlot(), llvm::M68kInstrInfo::storeRegToStackSlot(), llvm::MSP430InstrInfo::storeRegToStackSlot(), llvm::X86InstrInfo::storeRegToStackSlot(), llvm::XCoreInstrInfo::storeRegToStackSlot(), llvm::LanaiInstrInfo::storeRegToStackSlot(), stripNonLineTableDebugInfo(), llvm::X86InstrInfo::unfoldMemoryOperand(), llvm::SIInstrInfo::usesFPDPRounding(), llvm::R600InstrInfo::usesTextureCache(), llvm::R600InstrInfo::usesVertexCache(), llvm::slpvectorizer::BoUpSLP::vectorizeTree(), and llvm::SIInstrInfo::verifyInstruction().

◆ get() [2/2]

template<std::size_t Index, typename ValueTy >
decltype(auto) llvm::get ( const StringMapEntry< ValueTy > &  E)

Definition at line 153 of file StringMapEntry.h.

References E.

◆ get_cpus()

unsigned llvm::get_cpus ( )

Returns how many physical CPUs or NUMA groups the system has.

◆ get_hashable_data()

static const Metadata * llvm::get_hashable_data ( const MDOperand X)
static

Make MDOperand transparent for hashing.

This overload of an implementation detail of the hashing library makes MDOperand hash to the same value as a Metadata pointer.

Note that overloading hash_value() as follows:

size_t hash_value(const MDOperand &X) { return hash_value(X.get()); }
Tracking metadata reference owned by Metadata.
Definition: Metadata.h:889
hash_code hash_value(const FixedPointSemantics &Val)
Definition: APFixedPoint.h:128

does not cause MDOperand to be transparent. In particular, a bare pointer doesn't get hashed before it's combined, whereas MDOperand would.

Definition at line 192 of file LLVMContextImpl.cpp.

References X.

◆ get_max_thread_name_length()

uint32_t llvm::get_max_thread_name_length ( )

Get the maximum length of a thread name on this platform.

A value of 0 means there is no limit.

Definition at line 35 of file Threading.cpp.

◆ get_physical_cores()

int llvm::get_physical_cores ( )

Returns how many physical cores (as opposed to logical cores returned from thread::hardware_concurrency(), which includes hyperthreads).

Returns -1 if unknown for the current host system.

Definition at line 49 of file Threading.cpp.

◆ get_thread_affinity_mask()

llvm::BitVector llvm::get_thread_affinity_mask ( )

Returns a mask that represents on which hardware thread, core, CPU, NUMA group, the calling thread can be executed.

On Windows, threads cannot cross CPU sockets boundaries.

Definition at line 41 of file Threading.cpp.

◆ get_thread_name()

void llvm::get_thread_name ( SmallVectorImpl< char > &  Name)

Get the name of the current thread.

The level of support for getting a thread's name varies wildly across operating systems, and it is not even guaranteed that if you can successfully set a thread's name that you can later get it back. This function is intended for diagnostic purposes, and as with setting a thread's name no indication of whether the operation succeeded or failed is returned.

Definition at line 39 of file Threading.cpp.

References Name.

Referenced by llvm::TimeTraceProfiler::TimeTraceProfiler().

◆ get_threadid()

uint64_t llvm::get_threadid ( )

Return the current thread id, as used in various OS system calls.

Note that not all platforms guarantee that the value returned will be unique across the entire system, so portable code should not assume this.

Definition at line 33 of file Threading.cpp.

◆ get_threadpool_strategy()

std::optional< ThreadPoolStrategy > llvm::get_threadpool_strategy ( StringRef  Num,
ThreadPoolStrategy  Default = {} 
)

Build a strategy from a number of threads as a string provided in Num.

When Num is above the max number of threads specified by the Default strategy, we attempt to equally allocate the threads on all CPU sockets. "0" or an empty string will return the Default strategy. "all" for using all hardware threads.

Definition at line 99 of file Threading.cpp.

References Default, llvm::StringRef::empty(), llvm::StringRef::getAsInteger(), hardware_concurrency(), and llvm::ThreadPoolStrategy::ThreadsRequested.

Referenced by heavyweight_hardware_concurrency().

◆ getAddressFromInstr()

static X86AddressMode llvm::getAddressFromInstr ( const MachineInstr MI,
unsigned  Operand 
)
inlinestatic

◆ getAddressSanitizerParams()

void llvm::getAddressSanitizerParams ( const Triple TargetTriple,
int  LongSize,
bool  IsKasan,
uint64_t ShadowBase,
int *  MappingScale,
bool OrShadowOffset 
)

Definition at line 606 of file AddressSanitizer.cpp.

References getShadowMapping().

◆ getAddSubImmediate()

int llvm::getAddSubImmediate ( MachineInstr MI)
inline

Definition at line 891 of file ARMBaseInstrInfo.h.

References MI.

◆ getAlign() [1/2]

bool llvm::getAlign ( const CallInst I,
unsigned  index,
unsigned align 
)

Definition at line 313 of file NVPTXUtilities.cpp.

References I.

◆ getAlign() [2/2]

bool llvm::getAlign ( const Function F,
unsigned  index,
unsigned align 
)

◆ getAllocAlignment()

Value * llvm::getAllocAlignment ( 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.

Note: the Value returned may not indicate a valid alignment, per the definition of the allocalign attribute.

Definition at line 353 of file MemoryBuiltins.cpp.

References AnyAlloc, and getAllocationData().

◆ getAllocationFamily()

std::optional< StringRef > llvm::getAllocationFamily ( const Value I,
const TargetLibraryInfo TLI 
)

If a function is part of an allocation family (e.g.

malloc/realloc/calloc/free), return the identifier for its family of functions.

Definition at line 512 of file MemoryBuiltins.cpp.

References AnyAlloc, checkFnAllocKind(), getAllocationDataForFunction(), getCalledFunction(), getFreeFunctionDataForFunction(), llvm::TargetLibraryInfo::getLibFunc(), llvm::Attribute::getValueAsString(), llvm::TargetLibraryInfo::has(), I, llvm::Attribute::isValid(), and mangledNameForMallocFamily().

Referenced by isAllocSiteRemovable().

◆ getAllocSize()

std::optional< APInt > llvm::getAllocSize ( 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.

With a trivial mapper, this is similar to calling getObjectSize(..., Exact), but without looking through calls that return their argument. A mapper function can be used to replace one Value* (operand to the allocation) with another. This is useful when doing abstract interpretation.

Definition at line 379 of file MemoryBuiltins.cpp.

References CheckedZextOrTrunc(), DL, getAllocationSize(), llvm::CallBase::getArgOperand(), llvm::Module::getDataLayout(), llvm::Instruction::getModule(), GetStringLength(), llvm::Value::getType(), llvm::ConstantInt::getValue(), Size, StrDupLike, and llvm::APInt::zext().

Referenced by llvm::ObjectSizeOffsetVisitor::visitCallBase().

◆ getAnnotatedNodeAVL()

std::pair< SDValue, bool > llvm::getAnnotatedNodeAVL ( SDValue  Op)

◆ getAnyConstantVRegValWithLookThrough()

std::optional< ValueAndVReg > llvm::getAnyConstantVRegValWithLookThrough ( 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.

Definition at line 419 of file Utils.cpp.

References MRI.

Referenced by ConstantFoldBinOp(), and llvm::AArch64GISelUtils::getAArch64VectorSplat().

◆ getAPFloatFromSize()

APFloat llvm::getAPFloatFromSize ( double  Val,
unsigned  Size 
)

Returns an APFloat from Val converted to the appropriate size.

Definition at line 631 of file Utils.cpp.

References llvm::APFloat::convert(), llvm_unreachable, and Size.

Referenced by llvm::MachineIRBuilder::buildFConstant().

◆ getApproximateEVTForLLT()

EVT llvm::getApproximateEVTForLLT ( LLT  Ty,
const DataLayout DL,
LLVMContext Ctx 
)

◆ getArgumentAliasingToReturnedPointer() [1/2]

Value * llvm::getArgumentAliasingToReturnedPointer ( CallBase Call,
bool  MustPreserveNullness 
)
inline

Definition at line 678 of file ValueTracking.h.

References getArgumentAliasingToReturnedPointer().

◆ getArgumentAliasingToReturnedPointer() [2/2]

const Value * llvm::getArgumentAliasingToReturnedPointer ( const CallBase Call,
bool  MustPreserveNullness 
)

This function returns call pointer argument that is considered the same by aliasing rules.

You CAN'T use it to replace one value with another. If MustPreserveNullness is true, the call must preserve the nullness of the pointer.

Definition at line 6225 of file ValueTracking.cpp.

References assert(), and isIntrinsicReturningPointerAliasingArgumentWithoutCapturing().

Referenced by getArgumentAliasingToReturnedPointer(), getUnderlyingObject(), isDereferenceableAndAlignedPointer(), and isKnownNonZeroFromOperator().

◆ getArithmeticReductionInstruction()

unsigned llvm::getArithmeticReductionInstruction ( Intrinsic::ID  RdxID)

Returns the arithmetic instruction opcode used when expanding a reduction.

Definition at line 921 of file LoopUtils.cpp.

References llvm_unreachable.

Referenced by llvm::BasicTTIImplBase< T >::getTypeBasedIntrinsicInstrCost().

◆ getArm64ECDemangledFunctionName()

std::optional< std::string > llvm::getArm64ECDemangledFunctionName ( StringRef  Name)

◆ getArm64ECMangledFunctionName()

std::optional< std::string > llvm::getArm64ECMangledFunctionName ( StringRef  Name)

◆ getAsMetadata()

static ValueAsMetadata * llvm::getAsMetadata ( Value V)
static

◆ getAsSignedInteger()

bool llvm::getAsSignedInteger ( StringRef  Str,
unsigned  Radix,
long long &  Result 
)

Definition at line 496 of file StringRef.cpp.

References consumeSignedInteger().

Referenced by llvm::StringRef::getAsInteger().

◆ getAssumptions() [1/2]

DenseSet< StringRef > llvm::getAssumptions ( const CallBase CB)

Return the set of all assumptions for the call CB.

Definition at line 91 of file Assumptions.cpp.

References A, AssumptionAttrKey, and llvm::CallBase::getFnAttr().

◆ getAssumptions() [2/2]

DenseSet< StringRef > llvm::getAssumptions ( const Function F)

Return the set of all assumptions for the function F.

Definition at line 86 of file Assumptions.cpp.

References A, AssumptionAttrKey, and F.

◆ getAsUnsignedInteger()

bool llvm::getAsUnsignedInteger ( StringRef  Str,
unsigned  Radix,
unsigned long long &  Result 
)

◆ getAtomicSyncScopeID()

std::optional< SyncScope::ID > llvm::getAtomicSyncScopeID ( const Instruction I)
inline

A helper function that returns an atomic operation's sync scope; returns std::nullopt if it is not an atomic operation.

Definition at line 6083 of file Instructions.h.

References I, and llvm_unreachable.

Referenced by isTsanAtomic().

◆ getAttributeBasedInliningDecision()

std::optional< InlineResult > llvm::getAttributeBasedInliningDecision ( 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.

Returns InlineResult::failure() if the inlining may never happen because of user directives or incompatibilities detectable without needing callee traversal. Otherwise returns std::nullopt, meaning that inlining should be decided based on other criteria (e.g. cost modeling).

Definition at line 2979 of file InlineCost.cpp.

References llvm::InlineResult::failure(), functionsHaveCompatibleAttributes(), llvm::PointerType::getAddressSpace(), I, isInlineViable(), and llvm::InlineResult::success().

Referenced by getInlineCost(), and llvm::InlineAdvisor::getMandatoryKind().

◆ getAUTOpcodeForKey()

static unsigned llvm::getAUTOpcodeForKey ( AArch64PACKey::ID  K,
bool  Zero 
)
inlinestatic

Return AUT opcode to be used for a ptrauth auth using the given key, or its AUT*Z variant that doesn't take a discriminator operand, using zero instead.

Definition at line 720 of file AArch64InstrInfo.h.

◆ getAVLPos()

std::optional< int > llvm::getAVLPos ( unsigned  )

The VE backend uses a two-staged process to lower and legalize vector instructions:

  1. VP and standard vector SDNodes are lowered to SDNodes of the VVP_* layer. AVL Functions {

Definition at line 166 of file VECustomDAG.cpp.

References llvm::ISD::getVPExplicitVectorLengthIdx(), isVVPBinaryOp(), and llvm::VEISD::VEC_BROADCAST.

Referenced by getNodeAVL(), llvm::VETargetLowering::legalizePackedAVL(), and llvm::VETargetLowering::splitVectorOp().

◆ getBaseFSBitBegin()

static unsigned llvm::getBaseFSBitBegin ( )
inlinestatic

Definition at line 116 of file Discriminator.h.

◆ getBaseFSBitEnd()

static unsigned llvm::getBaseFSBitEnd ( )
inlinestatic

Definition at line 119 of file Discriminator.h.

References BaseDiscriminatorBitWidth.

Referenced by llvm::DILocation::getBaseDiscriminatorBits().

◆ getBestSimplifyQuery() [1/4]

template const SimplifyQuery llvm::getBestSimplifyQuery ( AnalysisManager< Function > &  ,
Function  
)

◆ getBestSimplifyQuery() [2/4]

template<class T , class... TArgs>
const SimplifyQuery llvm::getBestSimplifyQuery ( AnalysisManager< T, TArgs... > &  AM,
Function F 
)

Definition at line 7232 of file InstructionSimplify.cpp.

References F.

◆ getBestSimplifyQuery() [3/4]

const SimplifyQuery llvm::getBestSimplifyQuery ( LoopStandardAnalysisResults AR,
const DataLayout DL 
)

◆ getBestSimplifyQuery() [4/4]

const SimplifyQuery llvm::getBestSimplifyQuery ( Pass P,
Function F 
)

◆ getBitcodeFileContents()

Expected< BitcodeFileContents > llvm::getBitcodeFileContents ( MemoryBufferRef  Buffer)

◆ getBitcodeLTOInfo()

Expected< BitcodeLTOInfo > llvm::getBitcodeLTOInfo ( MemoryBufferRef  Buffer)

Returns LTO information for the specified bitcode file.

Definition at line 8504 of file BitcodeReader.cpp.

References getSingleModule(), and llvm::Expected< T >::takeError().

Referenced by llvm::LTOModule::isThinLTO().

◆ getBitcodeModuleList()

Expected< std::vector< BitcodeModule > > llvm::getBitcodeModuleList ( MemoryBufferRef  Buffer)

Returns a list of modules in the specified bitcode buffer.

Definition at line 8096 of file BitcodeReader.cpp.

References getBitcodeFileContents().

Referenced by llvm::object::IRObjectFile::create(), llvm::lto::findThinLTOModule(), and getSingleModule().

◆ getBitcodeProducerString()

Expected< std::string > llvm::getBitcodeProducerString ( MemoryBufferRef  Buffer)

Read the header of the specified bitcode buffer and extract just the producer string information.

If successful, this returns a string. On error, this returns "".

Definition at line 8478 of file BitcodeReader.cpp.

References initStream(), readIdentificationCode(), and llvm::Expected< T >::takeError().

Referenced by llvm::LTOModule::getProducerString().

◆ getBitcodeTargetTriple()

Expected< std::string > llvm::getBitcodeTargetTriple ( MemoryBufferRef  Buffer)

Read the header of the specified bitcode buffer and extract just the triple information.

If successful, this returns a string. On error, this returns "".

Definition at line 8462 of file BitcodeReader.cpp.

References initStream(), readTriple(), and llvm::Expected< T >::takeError().

Referenced by getBitcodeFileMachine(), isAnyArm64COFF(), llvm::LTOModule::isBitcodeForTarget(), and isECObject().

◆ getBitwiseNotOperand()

SDValue llvm::getBitwiseNotOperand ( SDValue  V,
SDValue  Mask,
bool  AllowUndefs 
)

If V is a bitwise not, returns the inverted operand.

Otherwise returns an empty SDValue. Only bits set in Mask are required to be inverted, other bits may be arbitrary.

Definition at line 5507 of file SelectionDAG.cpp.

References llvm::ISD::ANY_EXTEND, llvm::APInt::getActiveBits(), llvm::ConstantSDNode::getAPIntValue(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getScalarValueSizeInBits(), llvm::SDValue::getValueType(), isBitwiseNot(), isConstOrConstSplat(), and llvm::ISD::TRUNCATE.

Referenced by haveNoCommonBitsSetCommutative(), and visitORCommutative().

◆ getBlockStructInstr()

static MachineInstr * llvm::getBlockStructInstr ( Register  ParamReg,
MachineRegisterInfo MRI 
)
static

◆ getBlockStructType()

static const Type * llvm::getBlockStructType ( Register  ParamReg,
MachineRegisterInfo MRI 
)
static

◆ getBLRCallOpcode()

unsigned llvm::getBLRCallOpcode ( const MachineFunction MF)

Return opcode to be used for indirect calls.

Definition at line 9473 of file AArch64InstrInfo.cpp.

References llvm::MachineFunction::getSubtarget().

Referenced by llvm::AArch64FrameLowering::emitPrologue(), and getCallOpcode().

◆ getBLXOpcode()

unsigned llvm::getBLXOpcode ( const MachineFunction MF)

Definition at line 6735 of file ARMBaseInstrInfo.cpp.

References llvm::MachineFunction::getSubtarget().

◆ getBLXpredOpcode()

unsigned llvm::getBLXpredOpcode ( const MachineFunction MF)

Definition at line 6745 of file ARMBaseInstrInfo.cpp.

References llvm::MachineFunction::getSubtarget().

◆ getBooleanLoopAttribute()

bool llvm::getBooleanLoopAttribute ( const Loop TheLoop,
StringRef  Name 
)

◆ getBranchWeightMDNode()

MDNode * llvm::getBranchWeightMDNode ( const Instruction I)

Get the branch weights metadata node.

Parameters
IThe Instruction to get the weights from.
Returns
A pointer to I's branch weights metadata node, if it exists. Nullptr otherwise.

Definition at line 89 of file ProfDataUtils.cpp.

References I, and isBranchWeightMD().

Referenced by llvm::DOTGraphTraits< DOTFuncInfo * >::getEdgeAttributes(), llvm::SwitchInstProfUpdateWrapper::getSuccessorWeight(), getValidBranchWeightMDNode(), llvm::SwitchInstProfUpdateWrapper::init(), llvm::Instruction::swapProfMetadata(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), and updateBranchWeights().

◆ getBRegFromDReg()

static unsigned llvm::getBRegFromDReg ( unsigned  Reg)
inlinestatic

Definition at line 129 of file AArch64BaseInfo.h.

References Reg.

◆ getBugReportMsg()

const char * llvm::getBugReportMsg ( )

Get the bug report message that will be output upon a crash.

Definition at line 212 of file PrettyStackTrace.cpp.

References BugReportMsg.

◆ getBundleEnd() [1/2]

Returns an iterator pointing beyond the bundle containing I.

Definition at line 69 of file MachineInstrBundle.h.

References I.

◆ getBundleEnd() [2/2]

Returns an iterator pointing beyond the bundle containing I.

Definition at line 60 of file MachineInstrBundle.h.

References I.

Referenced by collectCallSiteParameters(), getCallInstr(), llvm::SlotIndexes::getInstructionIndex(), llvm::LiveIntervals::handleMoveIntoNewBundle(), and llvm::HexagonInstrInfo::nonDbgBundleSize().

◆ getBundleStart() [1/2]

Returns an iterator to the first instruction in the bundle containing I.

Definition at line 52 of file MachineInstrBundle.h.

References I.

◆ getBundleStart() [2/2]

◆ getCachedOrDownloadArtifact() [1/2]

Expected< std::string > llvm::getCachedOrDownloadArtifact ( StringRef  UniqueKey,
StringRef  UrlPath 
)

◆ getCachedOrDownloadArtifact() [2/2]

Expected< std::string > llvm::getCachedOrDownloadArtifact ( StringRef  UniqueKey,
StringRef  UrlPath,
StringRef  CacheDirectoryPath,
ArrayRef< StringRef DebuginfodUrls,
std::chrono::milliseconds  Timeout 
)

Fetches any debuginfod artifact using the specified local cache directory, server URLs, and request timeout (in milliseconds).

If the artifact is found, uses the UniqueKey for the local cache file.

Definition at line 251 of file Debuginfod.cpp.

References llvm::sys::path::append(), argument_out_of_domain, createStringError(), getHeaders(), io_error, llvm::HTTPClient::isAvailable(), llvm::HTTPClient::IsInitialized, localCache(), parseCachePruningPolicy(), llvm::HTTPClient::perform(), llvm::sys::path::posix, pruneCache(), llvm::HTTPClient::responseCode(), llvm::HTTPClient::setTimeout(), and llvm::Expected< T >::takeError().

◆ getCachedOrDownloadDebuginfo() [1/2]

Expected< std::string > llvm::getCachedOrDownloadDebuginfo ( BuildIDRef  ID)

◆ getCachedOrDownloadDebuginfo() [2/2]

Expected< std::string > llvm::getCachedOrDownloadDebuginfo ( object::BuildIDRef  ID)

Fetches a debug binary by searching the default local cache directory and server URLs.

Referenced by llvm::DebuginfodFetcher::fetch(), and llvm::DebuginfodCollection::findDebugBinaryPath().

◆ getCachedOrDownloadExecutable() [1/2]

Expected< std::string > llvm::getCachedOrDownloadExecutable ( BuildIDRef  ID)

◆ getCachedOrDownloadExecutable() [2/2]

Expected< std::string > llvm::getCachedOrDownloadExecutable ( object::BuildIDRef  ID)

Fetches an executable by searching the default local cache directory and server URLs.

Referenced by llvm::DebuginfodCollection::findBinaryPath().

◆ getCachedOrDownloadSource() [1/2]

Expected< std::string > llvm::getCachedOrDownloadSource ( BuildIDRef  ID,
StringRef  SourceFilePath 
)

◆ getCachedOrDownloadSource() [2/2]

Expected< std::string > llvm::getCachedOrDownloadSource ( object::BuildIDRef  ID,
StringRef  SourceFilePath 
)

Fetches a specified source file by searching the default local cache directory and server URLs.

◆ getCallsiteCost()

int llvm::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.

Definition at line 2895 of file InlineCost.cpp.

References CallPenalty, DL, llvm::PointerType::getAddressSpace(), llvm::TargetTransformInfo::getInlineCallPenalty(), I, and InstrCost.

◆ getCapabilitiesEnabledByExtension()

CapabilityList llvm::getCapabilitiesEnabledByExtension ( SPIRV::Extension::Extension  Extension)

◆ getCGPassBuilderOption()

CGPassBuilderOption llvm::getCGPassBuilderOption ( )

◆ getColorCategory()

cl::OptionCategory & llvm::getColorCategory ( )

Definition at line 19 of file WithColor.cpp.

◆ getConstantDataArrayInfo()

bool llvm::getConstantDataArrayInfo ( const Value V,
ConstantDataArraySlice Slice,
unsigned  ElementSize,
uint64_t  Offset = 0 
)

◆ getConstantFPVRegVal()

const ConstantFP * llvm::getConstantFPVRegVal ( Register  VReg,
const MachineRegisterInfo MRI 
)

◆ getConstantRangeFromMetadata()

ConstantRange llvm::getConstantRangeFromMetadata ( const MDNode RangeMD)

◆ getConstantStringInfo()

bool llvm::getConstantStringInfo ( const Value V,
StringRef Str,
bool  TrimAtNul = true 
)

This function computes the length of a null-terminated C string pointed to by V.

Extract bytes from the initializer of the constant array V, which need not be a nul-terminated string.

If successful, it returns true and returns the string in Str. If unsuccessful, it returns false. This does not include the trailing null character by default. If TrimAtNul is set to false, then this returns any trailing null characters as well as any other characters that come after it.

On success, store the bytes in Str and return true. When TrimAtNul is set, Str will contain only the bytes up to but not including the first nul. Return false on failure.

Definition at line 6102 of file ValueTracking.cpp.

References llvm::ConstantDataArraySlice::Array, llvm::ConstantDataSequential::getAsString(), getConstantDataArrayInfo(), llvm::ConstantDataArraySlice::Length, and llvm::ConstantDataArraySlice::Offset.

Referenced by callBufferedPrintfStart(), emitAMDGPUPrintfCall(), llvm::WebAssemblyAsmPrinter::EmitFunctionAttributes(), getAsConstantStr(), and optimizeMemCmpVarSize().

◆ getConstFromIntrinsic()

static unsigned llvm::getConstFromIntrinsic ( Register  Reg,
MachineRegisterInfo MRI 
)
static

◆ getConstrainedIntrinsicID()

Intrinsic::ID llvm::getConstrainedIntrinsicID ( const Instruction Instr)

Returns constrained intrinsic id to represent the given instruction in strictfp function.

If the instruction is already a constrained intrinsic or does not have a constrained intrinsic counterpart, the function returns zero.

Definition at line 90 of file FPEnv.cpp.

References llvm::Intrinsic::not_intrinsic.

◆ getContributionIndex()

unsigned llvm::getContributionIndex ( DWARFSectionKind  Kind,
uint32_t  IndexVersion 
)

Definition at line 162 of file DWP.cpp.

References assert(), and serializeSectionKind().

Referenced by addAllTypesFromDWP(), addAllTypesFromTypesSection(), and write().

◆ getCoverageMappingVarName()

StringRef llvm::getCoverageMappingVarName ( )
inline

Return the name of a covarage mapping variable (internal linkage) for each instrumented source module.

Such variables are allocated in the __llvm_covmap section.

Definition at line 120 of file InstrProf.h.

◆ getCoverageUnusedNamesVarName()

StringRef llvm::getCoverageUnusedNamesVarName ( )
inline

Return the name of the internal variable recording the array of PGO name vars referenced by the coverage mapping.

The owning functions of those names are not emitted by FE (e.g, unused inline functions.)

Definition at line 128 of file InstrProf.h.

◆ getCoverTy()

LLT llvm::getCoverTy ( LLT  OrigTy,
LLT  TargetTy 
)

◆ getCPU()

static StringRef llvm::getCPU ( StringRef  CPU)
static

Processes a CPU name.

Definition at line 34 of file AVRTargetMachine.cpp.

References llvm::StringRef::empty().

◆ getCRFromCRBit()

static unsigned llvm::getCRFromCRBit ( unsigned  SrcReg)
inlinestatic

◆ getDbgRecordRange()

iterator_range< simple_ilist< DbgRecord >::iterator > llvm::getDbgRecordRange ( DbgMarker DebugMarker)
inline

Inline helper to return a range of DbgRecords attached to a marker.

It needs to be inlined as it's frequently called, but also come after the declaration of DbgMarker. Thus: it's pre-declared by users like Instruction, then an inlineable body defined here.

Definition at line 654 of file DebugProgramInstruction.h.

References llvm::DbgMarker::getDbgRecordRange(), and llvm::DbgMarker::getEmptyDbgRecordRange().

Referenced by llvm::Instruction::getDbgRecordRange().

◆ getDeadRegState()

unsigned llvm::getDeadRegState ( bool  B)
inline

◆ getDebuginfodCacheKey()

std::string llvm::getDebuginfodCacheKey ( llvm::StringRef  S)

Returns the cache key for a given debuginfod URL path.

Definition at line 57 of file Debuginfod.cpp.

References xxh3_64bits().

Referenced by getCachedOrDownloadDebuginfo(), getCachedOrDownloadExecutable(), and getCachedOrDownloadSource().

◆ getDebuginfodDebuginfoUrlPath() [1/2]

std::string llvm::getDebuginfodDebuginfoUrlPath ( BuildIDRef  ID)

◆ getDebuginfodDebuginfoUrlPath() [2/2]

std::string llvm::getDebuginfodDebuginfoUrlPath ( object::BuildIDRef  ID)

Get the full URL path for a debug binary request of a given BuildID.

Referenced by getCachedOrDownloadDebuginfo().

◆ getDebuginfodExecutableUrlPath() [1/2]

std::string llvm::getDebuginfodExecutableUrlPath ( BuildIDRef  ID)

◆ getDebuginfodExecutableUrlPath() [2/2]

std::string llvm::getDebuginfodExecutableUrlPath ( object::BuildIDRef  ID)

Get the full URL path for an executable request of a given BuildID.

Referenced by getCachedOrDownloadExecutable().

◆ getDebuginfodSourceUrlPath() [1/2]

std::string llvm::getDebuginfodSourceUrlPath ( BuildIDRef  ID,
StringRef  SourceFilePath 
)

The following functions fetch a debuginfod artifact to a file in a local cache and return the cached file path.

They first search the local cache, followed by the debuginfod servers.

Definition at line 123 of file Debuginfod.cpp.

References llvm::sys::path::append(), buildIDToString(), llvm::sys::path::convert_to_slash(), and llvm::sys::path::posix.

◆ getDebuginfodSourceUrlPath() [2/2]

std::string llvm::getDebuginfodSourceUrlPath ( object::BuildIDRef  ID,
StringRef  SourceFilePath 
)

Get the full URL path for a source request of a given BuildID and file path.

Referenced by getCachedOrDownloadSource().

◆ getDebugInfoSize()

static uint64_t llvm::getDebugInfoSize ( DWARFContext Dwarf)
static

Compute the total size of the debug info.

Definition at line 53 of file DWARFLinker.cpp.

References Dwarf, and Size.

Referenced by llvm::dwarf_linker::classic::DWARFLinker::link().

◆ getDebugMetadataVersionFromModule()

unsigned llvm::getDebugMetadataVersionFromModule ( const Module M)

Return Debug Info Metadata Version by checking module flags.

Definition at line 928 of file DebugInfo.cpp.

Referenced by LLVMGetModuleDebugMetadataVersion(), and UpgradeDebugInfo().

◆ getDebugRegState()

unsigned llvm::getDebugRegState ( bool  B)
inline

Definition at line 549 of file MachineInstrBuilder.h.

References B, and llvm::RegState::Debug.

Referenced by getRegState().

◆ getDebugValueLoc() [1/2]

DebugLoc llvm::getDebugValueLoc ( DbgVariableIntrinsic DII)

Produce a DebugLoc to use for each dbg.declare that is promoted to a dbg.value.

Definition at line 161 of file DebugInfo.cpp.

References llvm::Value::getContext(), llvm::Instruction::getDebugLoc(), llvm::DebugLoc::getInlinedAt(), and llvm::DebugLoc::getScope().

Referenced by ConvertDebugDeclareToDebugValue(), and LowerDbgDeclare().

◆ getDebugValueLoc() [2/2]

DebugLoc llvm::getDebugValueLoc ( DbgVariableRecord DVR)

◆ getDefaultDebuginfodCacheDirectory()

Expected< std::string > llvm::getDefaultDebuginfodCacheDirectory ( )

Finds a default local file caching directory for the debuginfod client, first checking DEBUGINFOD_CACHE_PATH.

Definition at line 97 of file Debuginfod.cpp.

References llvm::sys::path::append(), llvm::sys::path::cache_directory(), createStringError(), and io_error.

Referenced by getCachedOrDownloadArtifact().

◆ getDefaultDebuginfodTimeout()

std::chrono::milliseconds llvm::getDefaultDebuginfodTimeout ( )

Finds a default timeout for debuginfod HTTP requests.

Checks DEBUGINFOD_TIMEOUT environment variable, default is 90 seconds (90000 ms).

Definition at line 109 of file Debuginfod.cpp.

Referenced by getCachedOrDownloadArtifact().

◆ getDefaultDebuginfodUrls()

SmallVector< StringRef > llvm::getDefaultDebuginfodUrls ( )

Finds default array of Debuginfod server URLs by checking DEBUGINFOD_URLS environment variable.

Definition at line 71 of file Debuginfod.cpp.

References llvm::StringRef::split().

Referenced by canUseDebuginfod(), and getCachedOrDownloadArtifact().

◆ getDefaultEHPersonality()

EHPersonality llvm::getDefaultEHPersonality ( const Triple T)

Definition at line 83 of file EHPersonalities.cpp.

Referenced by getDefaultPersonalityFn().

◆ getDefaultInlineOrder()

std::unique_ptr< InlineOrder< std::pair< CallBase *, int > > > llvm::getDefaultInlineOrder ( FunctionAnalysisManager FAM,
const InlineParams Params,
ModuleAnalysisManager MAM,
Module M 
)

Definition at line 289 of file InlineOrder.cpp.

References Cost, CostBenefit, dbgs(), FAM, LLVM_DEBUG, ML, Size, and UseInlinePriority.

Referenced by getInlineOrder().

◆ getDefaultMaxUsesToExploreForCaptureTracking()

unsigned llvm::getDefaultMaxUsesToExploreForCaptureTracking ( )

getDefaultMaxUsesToExploreForCaptureTracking - Return default value of the maximal number of uses to explore before giving up.

It is used by PointerMayBeCaptured family analysis.

Definition at line 51 of file CaptureTracking.cpp.

References DefaultMaxUsesToExplore.

Referenced by PointerMayBeCaptured().

◆ getDefaultPrecision()

size_t llvm::getDefaultPrecision ( FloatStyle  Style)

◆ getDefIgnoringCopies()

MachineInstr * llvm::getDefIgnoringCopies ( Register  Reg,
const MachineRegisterInfo MRI 
)

◆ getDefInstrMaybeConstant()

MachineInstr * llvm::getDefInstrMaybeConstant ( Register ConstReg,
const MachineRegisterInfo MRI 
)

◆ getDefRegState()

unsigned llvm::getDefRegState ( bool  B)
inline

◆ getDefSrcRegIgnoringCopies()

std::optional< DefinitionAndSourceRegister > llvm::getDefSrcRegIgnoringCopies ( Register  Reg,
const MachineRegisterInfo MRI 
)

Find the def instruction for Reg, and underlying value Register folding away any copies.

Also walks through hints such as G_ASSERT_ZEXT.

Definition at line 446 of file Utils.cpp.

References DefMI, llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), isPreISelGenericOptimizationHint(), and MRI.

Referenced by getDefIgnoringCopies(), getSrcRegIgnoringCopies(), isKnownToBeAPowerOfTwo(), and llvm::CombinerHelper::matchEqualDefs().

◆ getDescImpl()

static Desc llvm::getDescImpl ( ArrayRef< Desc Descriptions,
unsigned  Opcode 
)
static

Definition at line 112 of file DWARFExpression.cpp.

References llvm::ArrayRef< T >::size().

Referenced by getOpDesc(), and getSubOpDesc().

◆ getDevelopmentModeAdvisor()

std::unique_ptr< InlineAdvisor > llvm::getDevelopmentModeAdvisor ( Module M,
ModuleAnalysisManager MAM,
std::function< bool(CallBase &)>  GetDefaultAdvice 
)

◆ getDiagnosticSeverity()

static DiagnosticSeverity llvm::getDiagnosticSeverity ( SourceMgr::DiagKind  DK)
static

◆ getDISubprogram()

DISubprogram * llvm::getDISubprogram ( const MDNode Scope)

Find subprogram that is enclosing this scope.

Definition at line 155 of file DebugInfo.cpp.

References llvm::DILocalScope::getSubprogram().

Referenced by llvm::DebugHandlerBase::beginFunction(), llvm::DwarfCompileUnit::constructInlinedScopeDIE(), and llvm::DebugLoc::getFnDebugLoc().

◆ getDRegFromBReg()

static unsigned llvm::getDRegFromBReg ( unsigned  Reg)
inlinestatic

Definition at line 169 of file AArch64BaseInfo.h.

References Reg.

◆ getDWARFUnitIndex()

const DWARFUnitIndex & llvm::getDWARFUnitIndex ( DWARFContext Context,
DWARFSectionKind  Kind 
)

Definition at line 870 of file DWARFUnit.cpp.

References assert(), Context, and DW_SECT_EXT_TYPES.

◆ getDwoId()

static uint64_t llvm::getDwoId ( const DWARFDie CUDie)
static

◆ getEffectiveCodeModel()

CodeModel::Model llvm::getEffectiveCodeModel ( std::optional< CodeModel::Model CM,
CodeModel::Model  Default 
)
inline

Helper method for getting the code model, returning Default if CM does not have a value.

The tiny and kernel models will produce an error, so targets that support them or require more complex codemodel selection logic should implement and call their own getEffectiveCodeModel.

Definition at line 515 of file TargetMachine.h.

References Default, llvm::CodeModel::Kernel, report_fatal_error(), and llvm::CodeModel::Tiny.

◆ getEffectiveRelocModel()

static Reloc::Model llvm::getEffectiveRelocModel ( std::optional< Reloc::Model RM)
static

Definition at line 42 of file AVRTargetMachine.cpp.

References llvm::Reloc::Static.

◆ getEFlagsForFeatureSet()

static unsigned llvm::getEFlagsForFeatureSet ( const FeatureBitset Features)
static

◆ getEHPersonalityName()

StringRef llvm::getEHPersonalityName ( EHPersonality  Pers)

Definition at line 48 of file EHPersonalities.cpp.

References llvm_unreachable.

Referenced by getDefaultPersonalityFn().

◆ getEHScopeMembership()

DenseMap< const MachineBasicBlock *, int > llvm::getEHScopeMembership ( const MachineFunction MF)

◆ getExitBlockHelper()

template<class BlockT , class LoopT >
std::pair< BlockT *, bool > llvm::getExitBlockHelper ( const LoopBase< BlockT, LoopT > *  L,
bool  Unique 
)

getExitBlock - If getExitBlocks would return exactly one block, return that block.

Otherwise return null.

Definition at line 77 of file GenericLoopInfoImpl.h.

References assert().

Referenced by llvm::LoopBase< BlockT, LoopT >::getExitBlock(), llvm::LoopBase< BlockT, LoopT >::getUniqueExitBlock(), and llvm::LoopBase< BlockT, LoopT >::hasNoExitBlocks().

◆ getExpressionForConstant()

DIExpression * llvm::getExpressionForConstant ( DIBuilder DIB,
const Constant C,
Type Ty 
)

◆ getExtDivCycle()

template<typename CycleT , typename BlockT >
static const CycleT * llvm::getExtDivCycle ( const CycleT *  Cycle,
const BlockT *  DivTermBlock,
const BlockT *  JoinBlock 
)
static

Return the outermost cycle made divergent by branch outside it.

If two paths that diverged outside an irreducible cycle join inside that cycle, then that whole cycle is assumed to be divergent. This does not apply if the cycle is reducible.

Definition at line 941 of file GenericUniformityImpl.h.

References assert(), llvm::GenericCycle< ContextT >::contains(), dbgs(), llvm::GenericCycle< ContextT >::getHeader(), llvm::GenericCycle< ContextT >::getParentCycle(), llvm::GenericCycle< ContextT >::isReducible(), and LLVM_DEBUG.

Referenced by getOutermostDivergentCycle().

◆ getExtInstName()

std::string llvm::getExtInstName ( SPIRV::InstructionSet::InstructionSet  Set,
uint32_t  InstructionNumber 
)

Definition at line 217 of file SPIRVBaseInfo.cpp.

References Lookup().

Referenced by llvm::SPIRVInstPrinter::printExtension().

◆ getExtInstSetFromString()

SPIRV::InstructionSet::InstructionSet llvm::getExtInstSetFromString ( std::string  SetName)

Definition at line 208 of file SPIRVBaseInfo.cpp.

References getExtInstSetName(), and llvm_unreachable.

◆ getExtInstSetName()

std::string llvm::getExtInstSetName ( SPIRV::InstructionSet::InstructionSet  Set)

Definition at line 195 of file SPIRVBaseInfo.cpp.

Referenced by getExtInstSetFromString().

◆ getFCmpCode()

unsigned llvm::getFCmpCode ( CmpInst::Predicate  CC)
inline

◆ getFCmpCodeWithoutNaN()

ISD::CondCode llvm::getFCmpCodeWithoutNaN ( ISD::CondCode  CC)

◆ getFCmpCondCode()

ISD::CondCode llvm::getFCmpCondCode ( FCmpInst::Predicate  Pred)

getFCmpCondCode - Return the ISD condition code corresponding to the given LLVM IR floating-point condition code.

This includes consideration of global floating-point math flags.

Definition at line 199 of file Analysis.cpp.

References llvm_unreachable, llvm::ISD::SETFALSE, llvm::ISD::SETO, llvm::ISD::SETOEQ, llvm::ISD::SETOGE, llvm::ISD::SETOGT, llvm::ISD::SETOLE, llvm::ISD::SETOLT, llvm::ISD::SETONE, llvm::ISD::SETTRUE, llvm::ISD::SETUEQ, llvm::ISD::SETUGE, llvm::ISD::SETUGT, llvm::ISD::SETULE, llvm::ISD::SETULT, llvm::ISD::SETUNE, and llvm::ISD::SETUO.

Referenced by llvm::SelectionDAGBuilder::EmitBranchForMergedCondition(), foldFCmpToFPClassTest(), and lowerFCMPIntrinsic().

◆ getFConstantSplat()

std::optional< FPValueAndVReg > llvm::getFConstantSplat ( Register  VReg,
const MachineRegisterInfo MRI,
bool  AllowUndef = true 
)

Returns a floating point scalar constant of a build vector splat if it exists.

When AllowUndef == true some elements can be undef but not all.

Definition at line 1405 of file Utils.cpp.

References getFConstantVRegValWithLookThrough(), and MRI.

Referenced by llvm::MIPatternMatch::GFCstOrSplatGFCstMatch::match(), and llvm::CombinerHelper::matchFsubToFneg().

◆ getFConstantVRegValWithLookThrough()

std::optional< FPValueAndVReg > llvm::getFConstantVRegValWithLookThrough ( 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.

Definition at line 427 of file Utils.cpp.

References getConstantFPVRegVal(), llvm::ConstantFP::getValueAPF(), and MRI.

Referenced by getFConstantSplat(), llvm::MIPatternMatch::GFCstAndRegMatch::match(), llvm::MIPatternMatch::GFCstOrSplatGFCstMatch::match(), and llvm::CombinerHelper::matchFsubToFneg().

◆ getFixupForSize()

static MCFixupKind llvm::getFixupForSize ( unsigned  Size,
bool  isPCRel 
)
inlinestatic

◆ getFixupKindLog2Size()

static unsigned llvm::getFixupKindLog2Size ( unsigned  Kind)
inlinestatic

◆ getFloatFn()

StringRef llvm::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.

Return the LibFunc in TheLibFunc.

Definition at line 1408 of file BuildLibCalls.cpp.

References assert(), llvm::Type::DoubleTyID, llvm::Type::FloatTyID, llvm::TargetLibraryInfo::getName(), llvm::Type::getTypeID(), llvm::Type::HalfTyID, hasFloatFn(), and llvm_unreachable.

Referenced by emitBinaryFloatFnCall(), and emitUnaryFloatFnCall().

◆ getFltSemanticForLLT()

const llvm::fltSemantics & llvm::getFltSemanticForLLT ( LLT  Ty)

Get the appropriate floating point arithmetic semantic based on the bit size of the given scalar LLT.

Definition at line 75 of file LowLevelTypeUtils.cpp.

References assert(), llvm::LLT::getSizeInBits(), llvm::LLT::isScalar(), and llvm_unreachable.

Referenced by constantFoldFpUnary(), ConstantFoldIntToFloat(), llvm::AMDGPULegalizerInfo::legalizeFFREXP(), and llvm::LegalizerHelper::lowerISFPCLASS().

◆ getFMA3Group()

const X86InstrFMA3Group * llvm::getFMA3Group ( unsigned  Opcode,
uint64_t  TSFlags 
)

◆ getFpImmVal()

static uint64_t llvm::getFpImmVal ( const ConstantFPSDNode N)
inlinestatic

getFpImmVal - get immediate representation of floating point value

Definition at line 148 of file VEISelLowering.h.

References N.

Referenced by isMImm().

◆ getFreedOperand()

Value * llvm::getFreedOperand ( const CallBase CB,
const TargetLibraryInfo TLI 
)

◆ getFSPassBitBegin()

static unsigned llvm::getFSPassBitBegin ( sampleprof::FSDiscriminatorPass  P)
inlinestatic

◆ getFSPassBitEnd()

static unsigned llvm::getFSPassBitEnd ( sampleprof::FSDiscriminatorPass  P)
inlinestatic

◆ getFuncNameWithoutPrefix()

StringRef llvm::getFuncNameWithoutPrefix ( StringRef  PGOFuncName,
StringRef  FileName = "<unknown>" 
)

Given a PGO function name, remove the filename prefix and return the original (static) function name.

Definition at line 405 of file InstrProf.cpp.

References llvm::StringRef::drop_front(), llvm::StringRef::empty(), llvm::StringRef::size(), and llvm::StringRef::starts_with().

◆ getFunctionAtVTableOffset()

std::pair< Function *, Constant * > llvm::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.

Returns a pair of nullptr otherwise.

Definition at line 219 of file TypeMetadataUtils.cpp.

References A, llvm::CallingConv::C, llvm::GlobalVariable::getInitializer(), getPointerAtOffset(), Offset, and Ptr.

Referenced by tryPromoteCall().

◆ getFunctionLiveInPhysReg()

Register llvm::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.

This register is expected to have class RC, and optional type RegTy. This assumes all references to the register will use the same type.

If there is an existing live-in argument register, it will be returned. This will also ensure there is a valid copy

Definition at line 882 of file Utils.cpp.

References llvm::MachineBasicBlock::addLiveIn(), llvm::MachineFunction::addLiveIn(), llvm::MachineInstrBuilder::addReg(), assert(), llvm::MachineBasicBlock::begin(), BuildMI(), DL, llvm::MachineFunction::front(), llvm::MachineFunction::getRegInfo(), llvm::MachineBasicBlock::isLiveIn(), llvm::LLT::isValid(), MRI, and TII.

Referenced by llvm::AMDGPULegalizerInfo::loadInputValue().

◆ getGatherScatterIndex()

SDValue llvm::getGatherScatterIndex ( SDValue  Op)

Definition at line 316 of file VECustomDAG.cpp.

References N.

Referenced by llvm::VETargetLowering::lowerVVP_GATHER_SCATTER().

◆ getGatherScatterScale()

SDValue llvm::getGatherScatterScale ( SDValue  Op)

Definition at line 324 of file VECustomDAG.cpp.

References N.

Referenced by llvm::VETargetLowering::lowerVVP_GATHER_SCATTER().

◆ getGCDType()

LLT llvm::getGCDType ( LLT  OrigTy,
LLT  TargetTy 
)

Return a type where the total size is the greatest common divisor of OrigTy and TargetTy.

This will try to either change the number of vector elements, or bitwidth of scalars. The intent is the result type can be used as the result of a G_UNMERGE_VALUES from OrigTy, and then some combination of G_MERGE_VALUES, G_BUILD_VECTOR and G_CONCAT_VECTORS (possibly with intermediate casts) can re-form TargetTy.

If these are vectors with different element types, this will try to produce a vector with a compatible total size, but the element type of OrigTy. If this can't be satisfied, this will produce a scalar smaller than the original vector elements. It is an error to call this function where one argument is a fixed vector and the other is a scalable vector, since it is illegal to build a G_{MERGE|UNMERGE}_VALUES between fixed and scalable vectors.

In the worst case, this returns LLT::scalar(1)

Definition at line 1232 of file Utils.cpp.

References assert(), llvm::ElementCount::get(), llvm::LLT::getElementType(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::LLT::getScalarType(), llvm::LLT::getSizeInBits(), llvm::LLT::isFixedVector(), llvm::LLT::isScalable(), llvm::LLT::isScalableVector(), llvm::LLT::isVector(), llvm::LLT::scalar(), llvm::LLT::scalarOrVector(), and llvm::LLT::vector().

Referenced by buildCopyFromRegs(), and buildCopyToRegs().

◆ getGCStrategy()

std::unique_ptr< GCStrategy > llvm::getGCStrategy ( const StringRef  Name)

◆ getGlobalPassGate()

OptPassGate & llvm::getGlobalPassGate ( )

Singleton instance of the OptBisect class, so multiple pass managers don't need to coordinate their uses of OptBisect.

Definition at line 54 of file OptBisect.cpp.

References getOptBisector().

Referenced by llvm::LLVMContextImpl::getOptPassGate().

◆ getGuaranteedNonPoisonOps()

void llvm::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.

Definition at line 7610 of file ValueTracking.cpp.

References handleGuaranteedNonPoisonOps(), I, and Operands.

Referenced by rewrite().

◆ getGuaranteedWellDefinedOps()

void llvm::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.

has undef bits or poison).

Definition at line 7584 of file ValueTracking.cpp.

References handleGuaranteedWellDefinedOps(), I, and Operands.

◆ getGVDT()

static GVDAGType llvm::getGVDT ( )
static

◆ getHeaders()

static SmallVector< std::string, 0 > llvm::getHeaders ( )
static

◆ getHeatColor() [1/2]

std::string llvm::getHeatColor ( double  percent)

Definition at line 70 of file HeatUtils.cpp.

References heatPalette, heatSize, and round().

◆ getHeatColor() [2/2]

std::string llvm::getHeatColor ( uint64_t  freq,
uint64_t  maxFreq 
)

◆ getHotnessName()

const char * llvm::getHotnessName ( CalleeInfo::HotnessType  HT)
inline

◆ getICmpCode()

unsigned llvm::getICmpCode ( CmpInst::Predicate  Pred)

Encode a icmp predicate into a three bit mask.

These bits are carefully arranged to allow folding of expressions such as:

 (A < B) | (A > B) --> (A != B)

Note that this is only valid if the first and second predicates have the same sign. It is illegal to do: (A u< B) | (A s> B)

Three bits are used to represent the condition, as follows: 0 A > B 1 A == B 2 A < B

<=> Value Definition 000 0 Always false 001 1 A > B 010 2 A == B 011 3 A >= B 100 4 A < B 101 5 A != B 110 6 A <= B 111 7 Always true

Definition at line 21 of file CmpInstAnalysis.cpp.

References llvm_unreachable.

◆ getICmpCondCode() [1/2]

ISD::CondCode llvm::getICmpCondCode ( ICmpInst::Predicate  Pred)

◆ getICmpCondCode() [2/2]

ICmpInst::Predicate llvm::getICmpCondCode ( ISD::CondCode  Pred)

getICmpCondCode - Return the LLVM IR integer condition code corresponding to the given ISD integer condition code.

Definition at line 250 of file Analysis.cpp.

References llvm_unreachable, llvm::ISD::SETEQ, llvm::ISD::SETGE, llvm::ISD::SETGT, llvm::ISD::SETLE, llvm::ISD::SETLT, llvm::ISD::SETNE, llvm::ISD::SETUGE, llvm::ISD::SETUGT, llvm::ISD::SETULE, and llvm::ISD::SETULT.

◆ getICmpTrueVal()

int64_t llvm::getICmpTrueVal ( const TargetLowering TLI,
bool  IsVector,
bool  IsFP 
)

Returns an integer representing true, as defined by the TargetBooleanContents.

Definition at line 1597 of file Utils.cpp.

References llvm::TargetLoweringBase::getBooleanContents(), and llvm_unreachable.

Referenced by llvm::CombinerHelper::applyOptBrCondByInvertingCond(), llvm::CombinerHelper::matchICmpToLHSKnownBits(), and llvm::CombinerHelper::matchICmpToTrueFalseKnownBits().

◆ getIConstantSplatSExtVal() [1/2]

std::optional< int64_t > llvm::getIConstantSplatSExtVal ( const MachineInstr MI,
const MachineRegisterInfo MRI 
)
Returns
the scalar sign extended integral splat value defined by MI if possible.

Definition at line 1399 of file Utils.cpp.

References getIConstantSplatSExtVal(), MI, and MRI.

◆ getIConstantSplatSExtVal() [2/2]

std::optional< int64_t > llvm::getIConstantSplatSExtVal ( const Register  Reg,
const MachineRegisterInfo MRI 
)
Returns
the scalar sign extended integral splat value of Reg if possible.

Definition at line 1390 of file Utils.cpp.

References getIConstantVRegSExtVal(), and MRI.

Referenced by getIConstantSplatSExtVal(), getVectorSplat(), isConstantOrConstantSplatVector(), llvm::MIPatternMatch::matchConstantSplat(), and llvm::CombinerHelper::matchNotCmp().

◆ getIConstantSplatVal() [1/2]

std::optional< APInt > llvm::getIConstantSplatVal ( const MachineInstr MI,
const MachineRegisterInfo MRI 
)
Returns
the scalar integral splat value defined by MI if possible.

Definition at line 1384 of file Utils.cpp.

References getIConstantSplatVal(), MI, and MRI.

◆ getIConstantSplatVal() [2/2]

std::optional< APInt > llvm::getIConstantSplatVal ( const Register  Reg,
const MachineRegisterInfo MRI 
)

◆ getIConstantVRegSExtVal()

std::optional< int64_t > llvm::getIConstantVRegSExtVal ( Register  VReg,
const MachineRegisterInfo MRI 
)

If VReg is defined by a G_CONSTANT fits in int64_t returns it.

Definition at line 305 of file Utils.cpp.

References getIConstantVRegVal(), and MRI.

Referenced by getConstantZext32Val(), getIConstantSplatSExtVal(), getOperandsForBranch(), isNot(), llvm::MIPatternMatch::matchConstant(), llvm::AMDGPURegisterBankInfo::setBufferOffsets(), and X86SelectAddress().

◆ getIConstantVRegVal()

std::optional< APInt > llvm::getIConstantVRegVal ( Register  VReg,
const MachineRegisterInfo MRI 
)

◆ getIConstantVRegValWithLookThrough()

std::optional< ValueAndVReg > llvm::getIConstantVRegValWithLookThrough ( 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.

Definition at line 413 of file Utils.cpp.

References MRI.

Referenced by llvm::CombinerHelper::applyFunnelShiftConstantModulo(), llvm::AMDGPURegisterBankInfo::applyMappingBFE(), llvm::LegalizerHelper::fewerElementsVectorExtractInsertVectorElt(), getIConstantSplatVal(), getIConstantVRegVal(), getImmedFromMO(), getMemsetValue(), llvm::GISelAddressing::getPointerInfo(), getTestBitReg(), llvm::AArch64GISelUtils::isCMN(), isConstantOrConstantSplatVector(), isConstantOrConstantVector(), isExtractHiElt(), llvm::GIMatchTableExecutor::isOperandImmEqual(), llvm::AMDGPULegalizerInfo::legalizeExtractVectorElt(), llvm::AMDGPULegalizerInfo::legalizeInsertVectorElt(), llvm::AMDGPULegalizerInfo::legalizePointerAsRsrcIntrin(), llvm::LegalizerHelper::lowerMemCpyFamily(), llvm::LegalizerHelper::lowerMemcpyInline(), llvm::MIPatternMatch::GCstAndRegMatch::match(), llvm::CombinerHelper::matchCombineLoadWithAndMask(), llvm::CombinerHelper::matchCombineMulToShl(), llvm::CombinerHelper::matchCombineShiftToUnmerge(), llvm::CombinerHelper::matchConstantLargerBitWidth(), llvm::CombinerHelper::matchExtractVecEltBuildVec(), llvm::CombinerHelper::matchExtractVectorElement(), llvm::CombinerHelper::matchExtractVectorElementWithBuildVector(), llvm::CombinerHelper::matchExtractVectorElementWithBuildVectorTrunc(), llvm::CombinerHelper::matchExtractVectorElementWithDifferentIndices(), llvm::CombinerHelper::matchNarrowBinopFeedingAnd(), llvm::CombinerHelper::matchPtrAddImmedChain(), llvm::CombinerHelper::matchShiftImmedChain(), llvm::CombinerHelper::matchShiftOfShiftedLogic(), llvm::LegalizerHelper::narrowScalarShift(), and llvm::AArch64GISelUtils::tryEmitBZero().

◆ getIConstVal()

uint64_t llvm::getIConstVal ( Register  ConstReg,
const MachineRegisterInfo MRI 
)

◆ getIdiomaticVectorType()

std::optional< EVT > llvm::getIdiomaticVectorType ( SDNode Op)

◆ GetIfCondition()

BranchInst * llvm::GetIfCondition ( BasicBlock BB,
BasicBlock *&  IfTrue,
BasicBlock *&  IfFalse 
)

Check whether BB is the merge point of a if-region.

If so, return the branch instruction that determines which entry into BB will be taken. Also, return by references the block that will be entered from if the condition is true, and the block that will be entered if the condition is false.

This does no checking to see if the true/false blocks have large or unsavory instructions in them.

Definition at line 1801 of file BasicBlockUtils.cpp.

References assert(), llvm::BasicBlock::begin(), llvm::PHINode::getIncomingBlock(), llvm::PHINode::getNumIncomingValues(), llvm::BasicBlock::getSinglePredecessor(), llvm::BranchInst::getSuccessor(), llvm::BasicBlock::getTerminator(), llvm::BranchInst::isConditional(), pred_begin(), pred_end(), and std::swap().

Referenced by FoldTwoEntryPHINode().

◆ getImageType()

static SPIRVType * llvm::getImageType ( const TargetExtType ExtensionType,
const SPIRV::AccessQualifier::AccessQualifier  Qualifier,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ getImmVal()

static uint64_t llvm::getImmVal ( const ConstantSDNode N)
inlinestatic

getImmVal - get immediate representation of integer value

Definition at line 143 of file VEISelLowering.h.

References N.

Referenced by isMImm().

◆ getImplRegState()

unsigned llvm::getImplRegState ( bool  B)
inline

◆ getIndexExpressionsFromGEP()

bool llvm::getIndexExpressionsFromGEP ( ScalarEvolution SE,
const GetElementPtrInst GEP,
SmallVectorImpl< const SCEV * > &  Subscripts,
SmallVectorImpl< int > &  Sizes 
)

Gathers the individual index expressions from a GEP instruction.

This function optimistically assumes the GEP references into a fixed size array. If this is actually true, this function returns a list of array subscript expressions in Subscripts and a list of integers describing the size of the individual array dimensions in Sizes. Both lists have either equal length or the size list is one element shorter in case there is no known size available for the outermost array dimension. Returns true if successful and false otherwise.

Definition at line 484 of file Delinearization.cpp.

References assert(), llvm::SmallVectorImpl< T >::clear(), llvm::SmallVectorBase< Size_T >::empty(), GEP, llvm::ScalarEvolution::getSCEV(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by tryDelinearizeFixedSizeImpl().

◆ getInitialValueOfAllocation()

Constant * llvm::getInitialValueOfAllocation ( 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.

Otherwise, return nullptr.

Definition at line 440 of file MemoryBuiltins.cpp.

References llvm::UndefValue::get(), getAllocationData(), getAllocFnKind(), llvm::Constant::getNullValue(), and MallocOrOpNewLike.

Referenced by llvm::AA::getInitialValueForObj(), and tryToOptimizeStoreOfAllocationToGlobal().

◆ getInlineCost() [1/2]

InlineCost llvm::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.

Note that a default threshold is passed into this function. This threshold could be modified based on callsite's properties and only costs below this new threshold are computed with any accuracy. The new threshold can be used to bound the computation necessary to determine whether the cost is sufficiently low to warrant inlining.

Also note that calling this function dynamically computes the cost of inlining the callsite. It is an expensive, heavyweight call.

Definition at line 2931 of file InlineCost.cpp.

References getInlineCost().

Referenced by getDefaultInlineAdvice(), and getInlineCost().

◆ getInlineCost() [2/2]

InlineCost llvm::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.

This allows you to calculate the cost of inlining a function via a pointer. This behaves exactly as the version with no explicit callee parameter in all other respects.

Definition at line 3050 of file InlineCost.cpp.

References dbgs(), llvm::InlineCost::get(), llvm::InlineCost::getAlways(), getAttributeBasedInliningDecision(), llvm::InlineResult::getFailureReason(), llvm::InlineCost::getNever(), llvm::InlineResult::isSuccess(), and LLVM_DEBUG.

◆ getInlineOrder()

std::unique_ptr< InlineOrder< std::pair< CallBase *, int > > > llvm::getInlineOrder ( FunctionAnalysisManager FAM,
const InlineParams Params,
ModuleAnalysisManager MAM,
Module M 
)

◆ getInlineParams() [1/3]

InlineParams llvm::getInlineParams ( )

Generate the parameters to tune the inline cost analysis based only on the commandline options.

Definition at line 3210 of file InlineCost.cpp.

References DefaultThreshold, and getInlineParams().

Referenced by llvm::PassBuilder::buildInlinerPipeline(), getInlineParams(), getInlineParamsFromOptLevel(), and llvm::InlineCostAnnotationPrinterPass::run().

◆ getInlineParams() [2/3]

InlineParams llvm::getInlineParams ( int  Threshold)

◆ getInlineParams() [3/3]

InlineParams llvm::getInlineParams ( unsigned  OptLevel,
unsigned  SizeOptLevel 
)

Generate the parameters to tune the inline cost analysis based on command line options.

If -inline-threshold option is not explicitly passed, the default threshold is computed from OptLevel and SizeOptLevel. An OptLevel value above 3 is considered an aggressive optimization mode. SizeOptLevel of 1 corresponds to the -Os flag and 2 corresponds to the -Oz flag.

Definition at line 3227 of file InlineCost.cpp.

References computeThresholdFromOptLevels(), getInlineParams(), llvm::InlineParams::LocallyHotCallSiteThreshold, and LocallyHotCallSiteThreshold.

◆ getInliningCostEstimate()

std::optional< int > llvm::getInliningCostEstimate ( CallBase Call,
TargetTransformInfo CalleeTTI,
function_ref< AssumptionCache &(Function &)>  GetAssumptionCache,
function_ref< BlockFrequencyInfo &(Function &)>  GetBFI = nullptr,
ProfileSummaryInfo PSI = nullptr,
OptimizationRemarkEmitter ORE = nullptr 
)

Get the cost estimate ignoring thresholds.

This is similar to getInlineCost when passed InlineParams::ComputeFullInlineCost, or a non-null ORE. It uses default InlineParams otherwise. Contrary to getInlineCost, which makes a threshold-based final evaluation of should/shouldn't inline, captured in InlineResult, getInliningCostEstimate returns:

  • std::nullopt, if the inlining cannot happen (is illegal)
  • an integer, representing the cost.

Definition at line 2941 of file InlineCost.cpp.

Referenced by llvm::MLInlineAdvisor::getAdviceImpl().

◆ getInliningCostFeatures()

std::optional< InlineCostFeatures > llvm::getInliningCostFeatures ( CallBase Call,
TargetTransformInfo CalleeTTI,
function_ref< AssumptionCache &(Function &)>  GetAssumptionCache,
function_ref< BlockFrequencyInfo &(Function &)>  GetBFI = nullptr,
ProfileSummaryInfo PSI = nullptr,
OptimizationRemarkEmitter ORE = nullptr 
)

Get the expanded cost features.

The features are returned unconditionally, even if inlining is impossible.

Definition at line 2966 of file InlineCost.cpp.

Referenced by llvm::MLInlineAdvisor::getAdviceImpl().

◆ getInstrMaxCountValue()

uint64_t llvm::getInstrMaxCountValue ( )
inline

Return the max count value. We reserver a few large values for special use.

Definition at line 65 of file InstrProf.h.

Referenced by llvm::InstrProfRecord::merge(), and llvm::InstrProfRecord::scale().

◆ getInstrPredicate()

ARMCC::CondCodes llvm::getInstrPredicate ( const MachineInstr MI,
Register PredReg 
)

getInstrPredicate - If instruction is predicated, returns its predicate condition, otherwise returns AL.

It also returns the condition code register by reference.

Definition at line 2232 of file ARMBaseInstrInfo.cpp.

References llvm::ARMCC::AL, and MI.

Referenced by llvm::ARMBaseInstrInfo::commuteInstructionImpl(), findCMPToFoldIntoCBZ(), getITInstrPredicate(), isIncrementOrDecrement(), llvm::Thumb2InstrInfo::ReplaceTailWithBranchTo(), and rewriteT2FrameIndex().

◆ getInstrProfBitmapVarPrefix()

StringRef llvm::getInstrProfBitmapVarPrefix ( )
inline

Return the name prefix of profile bitmap variables.

Definition at line 103 of file InstrProf.h.

◆ getInstrProfCounterBiasVarName()

StringRef llvm::getInstrProfCounterBiasVarName ( )
inline

Definition at line 172 of file InstrProf.h.

◆ getInstrProfCountersVarPrefix()

StringRef llvm::getInstrProfCountersVarPrefix ( )
inline

Return the name prefix of profile counter variables.

Definition at line 100 of file InstrProf.h.

◆ getInstrProfDataVarPrefix()

StringRef llvm::getInstrProfDataVarPrefix ( )
inline

Return the name prefix of variables containing per-function control data.

Definition at line 97 of file InstrProf.h.

◆ getInstrProfInitFuncName()

StringRef llvm::getInstrProfInitFuncName ( )
inline

Return the name of the runtime initialization method that is generated by the compiler.

The function calls __llvm_profile_register_functions and __llvm_profile_override_default_filename functions if needed. This function has internal linkage and invoked at startup time via init_array.

Definition at line 157 of file InstrProf.h.

◆ getInstrProfNameSeparator()

StringRef llvm::getInstrProfNameSeparator ( )
inline

Return the marker used to separate PGO names during serialization.

Definition at line 177 of file InstrProf.h.

Referenced by collectGlobalObjectNameStrings(), and readAndDecodeStrings().

◆ getInstrProfNamesRegFuncName()

StringRef llvm::getInstrProfNamesRegFuncName ( )
inline

Return the name of the runtime interface that registers the PGO name strings.

Definition at line 149 of file InstrProf.h.

◆ getInstrProfNamesVarName()

StringRef llvm::getInstrProfNamesVarName ( )
inline

Return the name of the variable holding the strings (possibly compressed) of all function's PGO names.

Definition at line 113 of file InstrProf.h.

◆ getInstrProfNameVarPrefix()

StringRef llvm::getInstrProfNameVarPrefix ( )
inline

Return the name prefix of variables containing instrumented function names.

Definition at line 91 of file InstrProf.h.

Referenced by getPGOFuncNameVarName(), and getVarName().

◆ getInstrProfRegFuncName()

StringRef llvm::getInstrProfRegFuncName ( )
inline

Return the name of the runtime interface that registers per-function control data for one instrumented function.

Definition at line 143 of file InstrProf.h.

◆ getInstrProfRegFuncsName()

StringRef llvm::getInstrProfRegFuncsName ( )
inline

Return the name of function that registers all the per-function control data at program startup time by calling __llvm_register_function.

This function has internal linkage and is called by __llvm_profile_init runtime method. This function is not generated for these platforms: Darwin, Linux, and FreeBSD.

Definition at line 137 of file InstrProf.h.

◆ getInstrProfRuntimeHookVarName()

StringRef llvm::getInstrProfRuntimeHookVarName ( )
inline

Return the name of the hook variable defined in profile runtime library.

A reference to the variable causes the linker to link in the runtime initialization module (which defines the hook variable).

Definition at line 162 of file InstrProf.h.

◆ getInstrProfRuntimeHookVarUseFuncName()

StringRef llvm::getInstrProfRuntimeHookVarUseFuncName ( )
inline

Return the name of the compiler generated function that references the runtime hook variable.

The function is a weak global.

Definition at line 168 of file InstrProf.h.

◆ getInstrProfSectionName()

std::string llvm::getInstrProfSectionName ( InstrProfSectKind  IPSK,
Triple::ObjectFormatType  OF,
bool  AddSegmentInfo = true 
)

Return the name of the profile section corresponding to IPSK.

The name of the section depends on the object format type OF. If AddSegmentInfo is true, a segment prefix and additional linker hints may be added to the section name (this is the default).

Definition at line 231 of file InstrProf.cpp.

References llvm::Triple::COFF, and llvm::Triple::MachO.

Referenced by llvm::InstrProfSymtab::create(), getELFKindForNamedSection(), llvm::TargetLoweringObjectFileCOFF::getExplicitSectionGlobal(), getInstrProfSection(), lookupSections(), and shouldInstrumentReadWriteFromAddress().

◆ getInstrProfValueProfFuncName()

StringRef llvm::getInstrProfValueProfFuncName ( )
inline

Return the name profile runtime entry point to do value profiling for a given site.

Definition at line 80 of file InstrProf.h.

Referenced by getOrInsertValueProfilingCall().

◆ getInstrProfValueProfMemOpFuncName()

StringRef llvm::getInstrProfValueProfMemOpFuncName ( )
inline

Return the name profile runtime entry point to do memop size value profiling.

Definition at line 86 of file InstrProf.h.

Referenced by getOrInsertValueProfilingCall().

◆ getInstrProfValuesVarPrefix()

StringRef llvm::getInstrProfValuesVarPrefix ( )
inline

Return the name prefix of value profile variables.

Definition at line 106 of file InstrProf.h.

◆ getInstrProfVNodesVarName()

StringRef llvm::getInstrProfVNodesVarName ( )
inline

Return the name of value profile node array variables:

Definition at line 109 of file InstrProf.h.

◆ getInstrProfVTableNamesVarName()

StringRef llvm::getInstrProfVTableNamesVarName ( )
inline

Definition at line 115 of file InstrProf.h.

◆ getInstrProfVTableVarPrefix()

StringRef llvm::getInstrProfVTableVarPrefix ( )
inline

Return the name prefix of variables containing virtual table profile data.

Definition at line 94 of file InstrProf.h.

◆ getIntDivCycle()

template<typename ContextT , typename CycleT , typename BlockT , typename DominatorTreeT >
static const CycleT * llvm::getIntDivCycle ( const CycleT *  Cycle,
const BlockT *  DivTermBlock,
const BlockT *  JoinBlock,
const DominatorTreeT &  DT,
ContextT &  Context 
)
static

Return the outermost cycle made divergent by branch inside it.

This checks the "diverged entry" criterion defined in the docs/ConvergenceAnalysis.html.

Definition at line 979 of file GenericUniformityImpl.h.

References assert(), llvm::GenericCycle< ContextT >::contains(), Context, dbgs(), llvm::GenericCycle< ContextT >::getHeader(), llvm::GenericCycle< ContextT >::getParentCycle(), llvm::GenericCycle< ContextT >::isReducible(), and LLVM_DEBUG.

Referenced by getOutermostDivergentCycle().

◆ getInternalReadRegState()

unsigned llvm::getInternalReadRegState ( bool  B)
inline

Definition at line 546 of file MachineInstrBuilder.h.

References B, and llvm::RegState::InternalRead.

Referenced by getRegState().

◆ getIntLoopAttribute()

int llvm::getIntLoopAttribute ( const Loop TheLoop,
StringRef  Name,
int  Default = 0 
)

Find named metadata for a loop with an integer value.

Return Default if not set.

Definition at line 1103 of file LoopInfo.cpp.

References Default, getOptionalIntLoopAttribute(), and Name.

◆ getIntrinsicForCallSite()

Intrinsic::ID llvm::getIntrinsicForCallSite ( const CallBase CB,
const TargetLibraryInfo TLI 
)

Map a call instruction to an intrinsic ID.

Libcalls which have equivalent intrinsics are treated as-if they were intrinsics.

Definition at line 3876 of file ValueTracking.cpp.

References F, llvm::CallBase::getCalledFunction(), llvm::TargetLibraryInfo::getLibFunc(), llvm::Intrinsic::not_intrinsic, and llvm::CallBase::onlyReadsMemory().

Referenced by getVectorIntrinsicIDForCall().

◆ getIntrinsicWithChain()

static const IntrinsicData * llvm::getIntrinsicWithChain ( unsigned  IntNo)
static

◆ getIntrinsicWithoutChain()

static const IntrinsicData * llvm::getIntrinsicWithoutChain ( unsigned  IntNo)
static

Definition at line 1396 of file X86IntrinsicsInfo.h.

References Data, IntrinsicsWithoutChain, and lower_bound().

◆ getInverseMinMaxFlavor()

SelectPatternFlavor llvm::getInverseMinMaxFlavor ( SelectPatternFlavor  SPF)

Return the inverse minimum/maximum flavor of the specified flavor.

For example, signed minimum is the inverse of signed maximum.

Definition at line 8434 of file ValueTracking.cpp.

References llvm_unreachable, SPF_SMAX, SPF_SMIN, SPF_UMAX, and SPF_UMIN.

Referenced by isSignedMinMaxClamp(), and simplifySelectWithICmpCond().

◆ getInverseMinMaxIntrinsic()

Intrinsic::ID llvm::getInverseMinMaxIntrinsic ( Intrinsic::ID  MinMaxID)

◆ getIRPGOFuncName()

std::string llvm::getIRPGOFuncName ( const Function F,
bool  InLTO = false 
)
Returns
the modified name for function F suitable to be used as the key for IRPGO profile lookup. InLTO indicates if this is called from LTO optimization passes.

Definition at line 363 of file InstrProf.cpp.

References F, getIRPGOObjectName(), and getPGOFuncNameMetadata().

Referenced by llvm::InstrProfSymtab::create().

◆ getIRPGONameForGlobalObject()

static std::string llvm::getIRPGONameForGlobalObject ( const GlobalObject GO,
GlobalValue::LinkageTypes  Linkage,
StringRef  FileName 
)
static

Definition at line 317 of file InstrProf.cpp.

References llvm::GlobalValue::getGlobalIdentifier(), and llvm::Value::getName().

Referenced by getIRPGOObjectName().

◆ getIRPGOObjectName()

static std::string llvm::getIRPGOObjectName ( const GlobalObject GO,
bool  InLTO,
MDNode PGONameMetadata 
)
static

◆ getITInstrPredicate()

ARMCC::CondCodes llvm::getITInstrPredicate ( const MachineInstr MI,
Register PredReg 
)

getITInstrPredicate - Valid only in Thumb2 mode.

This function is identical to llvm::getInstrPredicate except it returns AL for conditional branch instructions which are "predicated", but are not in IT blocks.

Definition at line 785 of file Thumb2InstrInfo.cpp.

References llvm::ARMCC::AL, getInstrPredicate(), and MI.

Referenced by llvm::Thumb2InstrInfo::isLegalToSplitMBBAt().

◆ getKillRegState()

unsigned llvm::getKillRegState ( bool  B)
inline

Definition at line 537 of file MachineInstrBuilder.h.

References B, and llvm::RegState::Kill.

Referenced by llvm::M68k::addRegIndirectWithDisp(), addRegOffset(), addRegReg(), addSavedGPR(), llvm::RISCVRegisterInfo::adjustReg(), llvm::SIRegisterInfo::buildSpillLoadStore(), llvm::X86InstrInfo::classifyLEAReg(), combineFPFusedMultiply(), llvm::PPCInstrInfo::commuteInstructionImpl(), llvm::SystemZInstrInfo::convertToThreeAddress(), llvm::X86InstrInfo::convertToThreeAddress(), llvm::ARMBaseInstrInfo::copyFromCPSR(), llvm::AArch64InstrInfo::copyGPRRegTuple(), llvm::ARCInstrInfo::copyPhysReg(), llvm::AArch64InstrInfo::copyPhysReg(), llvm::ARMBaseInstrInfo::copyPhysReg(), llvm::Thumb1InstrInfo::copyPhysReg(), llvm::Thumb2InstrInfo::copyPhysReg(), llvm::BPFInstrInfo::copyPhysReg(), llvm::HexagonInstrInfo::copyPhysReg(), llvm::MSP430InstrInfo::copyPhysReg(), llvm::NVPTXInstrInfo::copyPhysReg(), llvm::PPCInstrInfo::copyPhysReg(), llvm::SparcInstrInfo::copyPhysReg(), llvm::VEInstrInfo::copyPhysReg(), llvm::XCoreInstrInfo::copyPhysReg(), llvm::SystemZInstrInfo::copyPhysReg(), llvm::LoongArchInstrInfo::copyPhysReg(), llvm::RISCVInstrInfo::copyPhysReg(), llvm::SIInstrInfo::copyPhysReg(), llvm::AVRInstrInfo::copyPhysReg(), llvm::CSKYInstrInfo::copyPhysReg(), llvm::M68kInstrInfo::copyPhysReg(), llvm::Mips16InstrInfo::copyPhysReg(), llvm::MipsSEInstrInfo::copyPhysReg(), llvm::X86InstrInfo::copyPhysReg(), llvm::LanaiInstrInfo::copyPhysReg(), llvm::AArch64InstrInfo::copyPhysRegTuple(), llvm::RISCVInstrInfo::copyPhysRegVector(), llvm::ARMBaseInstrInfo::copyToCPSR(), llvm::CSKYRegisterInfo::eliminateFrameIndex(), emitBuildPairF64Pseudo(), llvm::VETargetLowering::emitEHSjLjLongJmp(), llvm::VETargetLowering::emitEHSjLjSetJmp(), llvm::PPCFrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitPrologue(), emitQuietFCMP(), llvm::VETargetLowering::emitSjLjDispatchBlock(), llvm::HexagonInstrInfo::expandPostRAPseudo(), llvm::VEInstrInfo::expandPostRAPseudo(), finalizeBundle(), llvm::ARMBaseInstrInfo::foldImmediate(), genAlternativeDpCodeSequence(), genFNegatedMAD(), genFusedMultiply(), genMaddR(), genShXAddAddShift(), genSubAdd2SubSub(), getPrologueDeath(), getRegState(), indirectCopyToAGPR(), INITIALIZE_PASS(), insertCopy(), insertCSRRestores(), insertCSRSaves(), insertDivByZeroTrap(), InsertFPConstInst(), InsertFPImmInst(), InsertLDR_STR(), InsertSPConstInst(), InsertSPImmInst(), llvm::X86InstrInfo::loadStoreTileReg(), llvm::PPCRegisterInfo::lowerACCSpilling(), llvm::PPCRegisterInfo::lowerCRBitSpilling(), llvm::PPCRegisterInfo::lowerCRSpilling(), llvm::PPCRegisterInfo::lowerDynamicAlloc(), llvm::PPCRegisterInfo::lowerQuadwordSpilling(), llvm::RISCVRegisterInfo::lowerVRELOAD(), llvm::RISCVRegisterInfo::lowerVSPILL(), llvm::RISCVInstrInfo::movImm(), llvm::PPCRegisterInfo::prepareDynamicAlloca(), llvm::VETargetLowering::prepareMBB(), llvm::VETargetLowering::prepareSymbol(), llvm::AArch64FrameLowering::processFunctionBeforeFrameFinalized(), pushRegsToStack(), llvm::TargetInstrInfo::reassociateOps(), replaceFrameIndex(), reportIllegalCopy(), llvm::PPCFrameLowering::restoreCalleeSavedRegisters(), restoreCRs(), llvm::SIRegisterInfo::restoreSGPR(), llvm::VETargetLowering::setupEntryBlockForSjLj(), llvm::AVRFrameLowering::spillCalleeSavedRegisters(), llvm::PPCFrameLowering::spillCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), llvm::SIRegisterInfo::spillEmergencySGPR(), spillRegPairs(), llvm::SIRegisterInfo::spillSGPR(), spillVGPRtoAGPR(), storeRegPairToStackSlot(), llvm::Mips16InstrInfo::storeRegToStack(), llvm::MipsSEInstrInfo::storeRegToStack(), llvm::AArch64InstrInfo::storeRegToStackSlot(), llvm::ARMBaseInstrInfo::storeRegToStackSlot(), llvm::Thumb1InstrInfo::storeRegToStackSlot(), llvm::Thumb2InstrInfo::storeRegToStackSlot(), llvm::BPFInstrInfo::storeRegToStackSlot(), llvm::HexagonInstrInfo::storeRegToStackSlot(), llvm::LoongArchInstrInfo::storeRegToStackSlot(), llvm::RISCVInstrInfo::storeRegToStackSlot(), llvm::SparcInstrInfo::storeRegToStackSlot(), llvm::SystemZInstrInfo::storeRegToStackSlot(), llvm::VEInstrInfo::storeRegToStackSlot(), llvm::SIInstrInfo::storeRegToStackSlot(), llvm::ARCInstrInfo::storeRegToStackSlot(), llvm::AVRInstrInfo::storeRegToStackSlot(), llvm::CSKYInstrInfo::storeRegToStackSlot(), llvm::M68kInstrInfo::storeRegToStackSlot(), llvm::MSP430InstrInfo::storeRegToStackSlot(), llvm::X86InstrInfo::storeRegToStackSlot(), llvm::XCoreInstrInfo::storeRegToStackSlot(), llvm::LanaiInstrInfo::storeRegToStackSlot(), and llvm::X86InstrInfo::unfoldMemoryOperand().

◆ getKnowledgeForValue()

RetainedKnowledge llvm::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.

Definition at line 157 of file AssumeBundleQueries.cpp.

References llvm::AssumptionCache::assumptionsFor(), llvm::AssumptionCache::ExprResultIdx, Filter, getBundleFromUse(), getKnowledgeFromBundle(), is_contained(), and llvm::RetainedKnowledge::none().

Referenced by getKnowledgeValidInContext(), and isDereferenceableAndAlignedPointer().

◆ getKnowledgeFromBundle()

RetainedKnowledge llvm::getKnowledgeFromBundle ( AssumeInst Assume,
const CallBase::BundleOpInfo BOI 
)

◆ getKnowledgeFromOperandInAssume()

RetainedKnowledge llvm::getKnowledgeFromOperandInAssume ( AssumeInst Assume,
unsigned  Idx 
)

Retreive the information help by Assume on the operand at index Idx.

Assume should be an llvm.assume and Idx should be in the operand bundle.

Definition at line 122 of file AssumeBundleQueries.cpp.

References llvm::CallBase::getBundleOpInfoForOperand(), getKnowledgeFromBundle(), and Idx.

Referenced by getKnowledgeFromUseInAssume().

◆ getKnowledgeFromUse()

RetainedKnowledge llvm::getKnowledgeFromUse ( const Use U,
ArrayRef< Attribute::AttrKind AttrKinds 
)

Return a valid Knowledge associated to the Use U if its Attribute kind is in AttrKinds.

Definition at line 144 of file AssumeBundleQueries.cpp.

References llvm::RetainedKnowledge::AttrKind, getBundleFromUse(), getKnowledgeFromBundle(), is_contained(), and llvm::RetainedKnowledge::none().

◆ getKnowledgeFromUseInAssume()

RetainedKnowledge llvm::getKnowledgeFromUseInAssume ( const Use U)
inline

Retreive the information help by the Use U of an llvm.assume.

the use should be in the operand bundle.

Definition at line 129 of file AssumeBundleQueries.h.

References getKnowledgeFromOperandInAssume().

◆ getKnowledgeValidInContext()

RetainedKnowledge llvm::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.

Definition at line 197 of file AssumeBundleQueries.cpp.

References getKnowledgeForValue(), I, and isValidAssumeForContext().

Referenced by isGuaranteedNotToBeUndefOrPoison().

◆ getKnownAlignment()

Align llvm::getKnownAlignment ( Value V,
const DataLayout DL,
const Instruction CxtI = nullptr,
AssumptionCache AC = nullptr,
const DominatorTree DT = nullptr 
)
inline

◆ getLanaiRegisterNumbering()

static unsigned llvm::getLanaiRegisterNumbering ( unsigned  Reg)
inlinestatic

Definition at line 40 of file LanaiBaseInfo.h.

References llvm_unreachable, and Reg.

◆ getLastFSPassBitBegin()

static int llvm::getLastFSPassBitBegin ( )
inlinestatic

Definition at line 104 of file Discriminator.h.

References getFSPassBitBegin(), and getNumFSPasses().

◆ getLastFSPassBitEnd()

static unsigned llvm::getLastFSPassBitEnd ( )
inlinestatic

Definition at line 110 of file Discriminator.h.

References getFSPassBitEnd(), and getNumFSPasses().

◆ getLazyBitcodeModule()

Expected< std::unique_ptr< Module > > llvm::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.

If ShouldLazyLoadMetadata is true, lazily load metadata as well. If IsImporting is true, this module is being parsed for ThinLTO importing into another module.

Definition at line 8424 of file BitcodeReader.cpp.

References Context, getSingleModule(), and llvm::Expected< T >::takeError().

Referenced by getOwningLazyBitcodeModule(), and parseBitcodeFileImpl().

◆ getLazyIRFileModule()

std::unique_ptr< Module > llvm::getLazyIRFileModule ( 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.

Otherwise, attempt to parse it as LLVM Assembly and return a fully populated Module. The ShouldLazyLoadMetadata flag is passed down to the bitcode reader to optionally enable lazy metadata loading.

Definition at line 53 of file IRReader.cpp.

References Context, llvm::SourceMgr::DK_Error, llvm::ErrorOr< T >::get(), llvm::ErrorOr< T >::getError(), llvm::MemoryBuffer::getFileOrSTDIN(), and getLazyIRModule().

Referenced by loadFile().

◆ getLazyIRModule()

std::unique_ptr< Module > llvm::getLazyIRModule ( 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.

Otherwise, attempt to parse it as LLVM Assembly and return a fully populated Module. The ShouldLazyLoadMetadata flag is passed down to the bitcode reader to optionally enable lazy metadata loading. This takes ownership of Buffer.

Definition at line 34 of file IRReader.cpp.

References Context, llvm::SourceMgr::DK_Error, llvm::Expected< T >::get(), getOwningLazyBitcodeModule(), handleAllErrors(), isBitcode(), llvm::ErrorInfoBase::message(), parseAssembly(), and llvm::Expected< T >::takeError().

Referenced by getLazyIRFileModule().

◆ getLCMType()

LLT llvm::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.

The intent is a G_MERGE_VALUES, G_BUILD_VECTOR, or G_CONCAT_VECTORS can be constructed from OrigTy elements, and unmerged into TargetTy. It is an error to call this function where one argument is a fixed vector and the other is a scalable vector, since it is illegal to build a G_{MERGE|UNMERGE}_VALUES between fixed and scalable vectors.

Definition at line 1144 of file Utils.cpp.

References assert(), llvm::ElementCount::get(), llvm::LLT::getElementCount(), llvm::LLT::getElementType(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::LLT::getSizeInBits(), llvm::LLT::isFixedVector(), llvm::LLT::isScalable(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable(), llvm::LLT::isScalableVector(), llvm::LLT::isVector(), Mul, llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::multiplyCoefficientBy(), llvm::LLT::scalar(), and llvm::LLT::vector().

Referenced by getCoverTy().

◆ getLegalVectorType()

MVT llvm::getLegalVectorType ( Packing  P,
MVT  ElemVT 
)

◆ getLinkStringForBuiltIn()

std::string llvm::getLinkStringForBuiltIn ( SPIRV::BuiltIn::BuiltIn  BuiltInValue)

Definition at line 167 of file SPIRVBaseInfo.cpp.

References Lookup().

Referenced by buildBuiltinVariableLoad().

◆ getLiveLaneMask() [1/2]

LaneBitmask llvm::getLiveLaneMask ( const LiveInterval LI,
SlotIndex  SI,
const MachineRegisterInfo MRI 
)

◆ getLiveLaneMask() [2/2]

LaneBitmask llvm::getLiveLaneMask ( unsigned  Reg,
SlotIndex  SI,
const LiveIntervals LIS,
const MachineRegisterInfo MRI 
)

◆ getLiveRegMap()

template<typename Range >
DenseMap< MachineInstr *, GCNRPTracker::LiveRegSet > llvm::getLiveRegMap ( Range &&  R,
bool  After,
LiveIntervals LIS 
)

creates a map MachineInstr -> LiveRegSet R - range of iterators on instructions After - upon entry or exit of every instruction Note: there is no entry in the map for instructions with empty live reg set Complexity = O(NumVirtRegs * averageLiveRangeSegmentsPerReg * lg(R))

Definition at line 280 of file GCNRegPressure.h.

References After, llvm::SmallVectorImpl< T >::clear(), E, llvm::LiveIntervals::getInterval(), llvm::GlobalValue::getParent(), getParent(), llvm::LiveIntervals::getSlotIndexes(), llvm::LiveIntervals::hasInterval(), I, llvm::Register::index2VirtReg(), MRI, Reg, and sort().

◆ getLiveRegs()

GCNRPTracker::LiveRegSet llvm::getLiveRegs ( SlotIndex  SI,
const LiveIntervals LIS,
const MachineRegisterInfo MRI 
)

◆ getLiveRegsAfter()

GCNRPTracker::LiveRegSet llvm::getLiveRegsAfter ( const MachineInstr MI,
const LiveIntervals LIS 
)
inline

◆ getLiveRegsBefore()

GCNRPTracker::LiveRegSet llvm::getLiveRegsBefore ( const MachineInstr MI,
const LiveIntervals LIS 
)
inline

◆ getLLTForMVT()

LLT llvm::getLLTForMVT ( MVT  Ty)

Get a rough equivalent of an LLT for a given MVT.

LLT does not yet support scalarable vector types, and will assert if used.

Definition at line 67 of file LowLevelTypeUtils.cpp.

References llvm::MVT::getSizeInBits(), llvm::MVT::getVectorElementCount(), llvm::MVT::getVectorElementType(), llvm::MVT::isVector(), llvm::LLT::scalar(), and llvm::LLT::scalarOrVector().

◆ getLLTForType()

LLT llvm::getLLTForType ( Type Ty,
const DataLayout DL 
)

◆ getLoadStoreAddressSpace()

unsigned llvm::getLoadStoreAddressSpace ( Value I)
inline

A helper function that returns the address space of the pointer operand of load or store instruction.

Definition at line 6064 of file Instructions.h.

References assert(), and I.

Referenced by llvm::InterleavedAccessInfo::analyzeInterleaving().

◆ getLoadStoreAlignment()

Align llvm::getLoadStoreAlignment ( Value I)
inline

◆ getLoadStorePointerOperand() [1/2]

const Value * llvm::getLoadStorePointerOperand ( const Value V)
inline

◆ getLoadStorePointerOperand() [2/2]

Value * llvm::getLoadStorePointerOperand ( Value V)
inline

Definition at line 6035 of file Instructions.h.

References getLoadStorePointerOperand().

◆ getLoadStoreStride()

SDValue llvm::getLoadStoreStride ( SDValue  Op,
VECustomDAG CDAG 
)

◆ getLoadStoreType()

Type * llvm::getLoadStoreType ( Value I)
inline

◆ getLoopAnalysisUsage()

void llvm::getLoopAnalysisUsage ( AnalysisUsage AU)

Helper to consistently add the set of standard passes to a loop pass's AnalysisUsage.

All loop passes should call this as part of implementing their getAnalysisUsage.

Definition at line 141 of file LoopUtils.cpp.

References llvm::AnalysisUsage::addPreserved(), llvm::AnalysisUsage::addPreservedID(), llvm::AnalysisUsage::addRequired(), llvm::AnalysisUsage::addRequiredID(), LCSSAID, and LoopSimplifyID.

◆ getLoopEstimatedTripCount()

std::optional< unsigned > llvm::getLoopEstimatedTripCount ( Loop L,
unsigned EstimatedLoopInvocationWeight = nullptr 
)

Returns a loop's estimated trip count based on branch weight metadata.

In addition if EstimatedLoopInvocationWeight is not null it is initialized with weight of loop's latch leading to the exit. Returns 0 when the count is estimated to be 0, or std::nullopt when a meaningful estimate can not be made.

Definition at line 849 of file LoopUtils.cpp.

References getEstimatedTripCount(), and getExpectedExitLoopLatchBranch().

Referenced by canFoldTermCondOfLoop(), computePeelCount(), computeUnrollCount(), getSmallBestKnownTC(), setProfileInfoAfterUnrolling(), and UnrollLoop().

◆ getLoopPassPreservedAnalyses()

PreservedAnalyses llvm::getLoopPassPreservedAnalyses ( )

◆ getMachineArchType()

template<typename T >
Triple::ArchType llvm::getMachineArchType ( T  machine)

◆ getMachineInstrType()

static const Type * llvm::getMachineInstrType ( MachineInstr MI)
static

◆ getMachineType()

COFF::MachineTypes llvm::getMachineType ( StringRef  S)

◆ getMaskPos()

std::optional< int > llvm::getMaskPos ( unsigned  Opc)

◆ getMatchingCondBranchOpcode()

unsigned llvm::getMatchingCondBranchOpcode ( unsigned  Opc)

Definition at line 2244 of file ARMBaseInstrInfo.cpp.

References llvm_unreachable.

Referenced by llvm::ARMBaseInstrInfo::PredicateInstruction().

◆ getMaxClusterRank()

bool llvm::getMaxClusterRank ( const Function F,
unsigned x 
)

Definition at line 265 of file NVPTXUtilities.cpp.

References F, and findOneNVVMAnnotation().

◆ getMaxFreq()

uint64_t llvm::getMaxFreq ( const Function F,
const BlockFrequencyInfo BFI 
)

◆ getMaxNReg()

bool llvm::getMaxNReg ( const Function F,
unsigned x 
)

Definition at line 285 of file NVPTXUtilities.cpp.

References F, and findOneNVVMAnnotation().

◆ getMaxNTIDx()

bool llvm::getMaxNTIDx ( const Function F,
unsigned x 
)

Definition at line 253 of file NVPTXUtilities.cpp.

References F, and findOneNVVMAnnotation().

◆ getMaxNTIDy()

bool llvm::getMaxNTIDy ( const Function F,
unsigned y 
)

Definition at line 257 of file NVPTXUtilities.cpp.

References F, and findOneNVVMAnnotation().

◆ getMaxNTIDz()

bool llvm::getMaxNTIDz ( const Function F,
unsigned z 
)

Definition at line 261 of file NVPTXUtilities.cpp.

References F, and findOneNVVMAnnotation().

◆ getMaybeBitcastedCallee()

Function * llvm::getMaybeBitcastedCallee ( const CallBase CB)

◆ getMDOperandAsType()

Type * llvm::getMDOperandAsType ( const MDNode N,
unsigned  I 
)

Definition at line 253 of file SPIRVUtils.cpp.

References I, N, and toTypedPointer().

Referenced by generateAssignInstrs(), getMachineInstrType(), and insertBitcasts().

◆ getMemoryPtr()

SDValue llvm::getMemoryPtr ( SDValue  Op)

◆ getMemSemantics()

SPIRV::MemorySemantics::MemorySemantics llvm::getMemSemantics ( AtomicOrdering  Ord)

◆ getMemSemanticsForStorageClass()

SPIRV::MemorySemantics::MemorySemantics llvm::getMemSemanticsForStorageClass ( SPIRV::StorageClass::StorageClass  SC)

◆ getMergedAtomicOrdering()

AtomicOrdering llvm::getMergedAtomicOrdering ( AtomicOrdering  AO,
AtomicOrdering  Other 
)
inline

Return a single atomic ordering that is at least as strong as both the AO and Other orderings for an atomic operation.

Definition at line 139 of file AtomicOrdering.h.

References Acquire, AcquireRelease, isStrongerThan(), Other, and Release.

Referenced by llvm::MachineMemOperand::getMergedOrdering().

◆ getMinCTASm()

bool llvm::getMinCTASm ( const Function F,
unsigned x 
)

Definition at line 281 of file NVPTXUtilities.cpp.

References F, and findOneNVVMAnnotation().

◆ getMinMaxLimit()

APInt llvm::getMinMaxLimit ( SelectPatternFlavor  SPF,
unsigned  BitWidth 
)

Return the minimum or maximum constant value for the specified integer min/max flavor and type.

Definition at line 8458 of file ValueTracking.cpp.

References BitWidth, llvm::APInt::getMaxValue(), llvm::APInt::getMinValue(), llvm::APInt::getSignedMaxValue(), llvm::APInt::getSignedMinValue(), llvm_unreachable, SPF_SMAX, SPF_SMIN, SPF_UMAX, and SPF_UMIN.

Referenced by simplifySelectWithICmpCond().

◆ getMinMaxPred()

CmpInst::Predicate llvm::getMinMaxPred ( SelectPatternFlavor  SPF,
bool  Ordered = false 
)

◆ getMinMaxReductionIntrinsicOp() [1/2]

Intrinsic::ID llvm::getMinMaxReductionIntrinsicOp ( Intrinsic::ID  RdxID)

Returns the min/max intrinsic used when expanding a min/max reduction.

Definition at line 950 of file LoopUtils.cpp.

References llvm_unreachable.

Referenced by createMinMaxOp(), and llvm::BasicTTIImplBase< T >::getTypeBasedIntrinsicInstrCost().

◆ getMinMaxReductionIntrinsicOp() [2/2]

Intrinsic::ID llvm::getMinMaxReductionIntrinsicOp ( RecurKind  RK)

Returns the min/max intrinsic used when expanding a min/max reduction.

Definition at line 973 of file LoopUtils.cpp.

References llvm_unreachable.

◆ getMinMaxReductionPredicate()

CmpInst::Predicate llvm::getMinMaxReductionPredicate ( RecurKind  RK)

Returns the comparison predicate used when expanding a min/max reduction.

Definition at line 1015 of file LoopUtils.cpp.

References llvm::CmpInst::FCMP_OGT, llvm::CmpInst::FCMP_OLT, llvm::CmpInst::ICMP_SGT, llvm::CmpInst::ICMP_SLT, llvm::CmpInst::ICMP_UGT, llvm::CmpInst::ICMP_ULT, and llvm_unreachable.

Referenced by createMinMaxOp().

◆ getMinMaxReductionRecurKind()

RecurKind llvm::getMinMaxReductionRecurKind ( Intrinsic::ID  RdxID)

Returns the recurence kind used when expanding a min/max reduction.

Definition at line 996 of file LoopUtils.cpp.

◆ getModuleSummaryIndex()

Expected< std::unique_ptr< ModuleSummaryIndex > > llvm::getModuleSummaryIndex ( MemoryBufferRef  Buffer)

Parse the specified bitcode buffer, returning the module summary index.

Definition at line 8496 of file BitcodeReader.cpp.

References getSingleModule(), and llvm::Expected< T >::takeError().

Referenced by getModuleSummaryIndexForFile(), and llvm::MemProfContextDisambiguation::MemProfContextDisambiguation().

◆ getModuleSummaryIndexForFile()

Expected< std::unique_ptr< ModuleSummaryIndex > > llvm::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.

If Path refers to an empty file and IgnoreEmptyThinLTOIndexFile is true, then this function will return nullptr.

Definition at line 8513 of file BitcodeReader.cpp.

References errorCodeToError(), llvm::ErrorOr< T >::getError(), llvm::MemoryBuffer::getFileOrSTDIN(), and getModuleSummaryIndex().

Referenced by doImportingForModuleForTest().

◆ getMVTForLLT()

MVT llvm::getMVTForLLT ( LLT  Ty)

◆ getN1Bits()

static unsigned llvm::getN1Bits ( int  N)
inlinestatic

◆ getNextAvailablePluginDiagnosticKind()

int llvm::getNextAvailablePluginDiagnosticKind ( )

Get the next available kind ID for a plugin diagnostic.

Each time this function is called, it returns a different number. Therefore, a plugin that wants to "identify" its own classes with a dynamic identifier, just have to use this method to get a new ID and assign it to each of its classes. The returned ID will be greater than or equal to DK_FirstPluginKind. Thus, the plugin identifiers will not conflict with the DiagnosticKind values.

Definition at line 44 of file DiagnosticInfo.cpp.

References DK_FirstPluginKind.

◆ getNodeAVL()

SDValue llvm::getNodeAVL ( SDValue  Op)

◆ getNodeChain()

SDValue llvm::getNodeChain ( SDValue  Op)

◆ getNodeMask()

SDValue llvm::getNodeMask ( SDValue  Op)

◆ getNodePassthru()

SDValue llvm::getNodePassthru ( SDValue  Op)

◆ getNonParameterizedType()

static SPIRVType * llvm::getNonParameterizedType ( const TargetExtType ExtensionType,
const SPIRV::BuiltinType TypeRecord,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ getNumBytesForUTF8()

unsigned llvm::getNumBytesForUTF8 ( UTF8  firstByte)

Definition at line 545 of file ConvertUTF.cpp.

References trailingBytesForUTF8.

Referenced by llvm::sys::unicode::columnWidthUTF8(), and convertUTF8Sequence().

◆ getNumComponentsForDim()

static unsigned llvm::getNumComponentsForDim ( SPIRV::Dim::Dim  dim)
static

Definition at line 866 of file SPIRVBuiltins.cpp.

References report_fatal_error().

Referenced by getNumSizeComponents().

◆ getNumElementsFromSVEPredPattern()

unsigned llvm::getNumElementsFromSVEPredPattern ( unsigned  Pattern)
inline

Return the number of active elements for VL1 to VL256 predicate pattern, zero for all other patterns.

Definition at line 479 of file AArch64BaseInfo.h.

Referenced by instCombineSVECntElts(), instCombineSVELast(), isAllActivePredicate(), performMSTORECombine(), and performUnpackCombine().

◆ getNumFSPasses()

static unsigned llvm::getNumFSPasses ( )
inlinestatic

◆ getNumOfCalls()

uint64_t llvm::getNumOfCalls ( Function callerFunction,
Function calledFunction 
)

◆ getNumSizeComponents()

static unsigned llvm::getNumSizeComponents ( SPIRVType imgType)
static

Helper function for obtaining the number of size components.

Definition at line 883 of file SPIRVBuiltins.cpp.

References assert(), llvm::MachineOperand::getImm(), getNumComponentsForDim(), llvm::MachineInstr::getOpcode(), and llvm::MachineInstr::getOperand().

Referenced by generateImageSizeQueryInst().

◆ getNumValueDataForSiteInstrProf()

uint32_t llvm::getNumValueDataForSiteInstrProf ( const void *  R,
uint32_t  VK,
uint32_t  S 
)

Definition at line 1037 of file InstrProf.cpp.

◆ getNumValueDataInstrProf()

uint32_t llvm::getNumValueDataInstrProf ( const void *  Record,
uint32_t  VKind 
)

Definition at line 1032 of file InstrProf.cpp.

◆ getNumValueKindsInstrProf()

uint32_t llvm::getNumValueKindsInstrProf ( const void *  Record)

ValueProfRecordClosure Interface implementation for InstrProfRecord class.

These C wrappers are used as adaptors so that C++ code can be invoked as callbacks.

Definition at line 1023 of file InstrProf.cpp.

◆ getNumValueSitesInstrProf()

uint32_t llvm::getNumValueSitesInstrProf ( const void *  Record,
uint32_t  VKind 
)

Definition at line 1027 of file InstrProf.cpp.

◆ getNVPTXRegClassName()

std::string llvm::getNVPTXRegClassName ( TargetRegisterClass const RC)

Definition at line 29 of file NVPTXRegisterInfo.cpp.

◆ getNVPTXRegClassStr()

std::string llvm::getNVPTXRegClassStr ( TargetRegisterClass const RC)

Definition at line 65 of file NVPTXRegisterInfo.cpp.

Referenced by llvm::NVPTXAsmPrinter::getVirtualRegisterName().

◆ getObjCNamesIfSelector()

std::optional< ObjCSelectorNames > llvm::getObjCNamesIfSelector ( StringRef  Name)

◆ getObjectSize()

bool llvm::getObjectSize ( const Value Ptr,
uint64_t Size,
const DataLayout DL,
const TargetLibraryInfo TLI,
ObjectSizeOpts  Opts = {} 
)

Compute the size of the object pointed by Ptr.

Returns true and the object size in Size if successful, and false otherwise. In this context, by object we mean the region of memory starting at Ptr to the end of the underlying object pointed to by Ptr.

WARNING: The object size returned is the allocation size. This does not imply dereferenceability at site of use since the object may be freeed in between.

Returns true and the object size in Size if successful, and false otherwise. If RoundToAlign is true, then Size is rounded up to the alignment of allocas, byval arguments, and global variables.

Definition at line 592 of file MemoryBuiltins.cpp.

References llvm::ObjectSizeOffsetVisitor::compute(), DL, getSizeWithOverflow(), llvm::APInt::getZExtValue(), Ptr, and Size.

Referenced by computePointerICmp(), getObjectSize(), getPointerSize(), isDereferenceableAndAlignedPointer(), isObjectSize(), isObjectSmallerThan(), lowerObjectSizeCall(), and tryToOptimizeStoreOfAllocationToGlobal().

◆ getOCLKernelArgAccessQual()

MDString * llvm::getOCLKernelArgAccessQual ( const Function F,
unsigned  ArgIdx 
)

Definition at line 71 of file SPIRVMetadata.cpp.

References assert(), F, getOCLKernelArgAttribute(), and llvm::CallingConv::SPIR_KERNEL.

Referenced by getArgAccessQual().

◆ getOCLKernelArgTypeQual()

MDString * llvm::getOCLKernelArgTypeQual ( const Function F,
unsigned  ArgIdx 
)

◆ getOclOrSpirvBuiltinDemangledName()

std::string llvm::getOclOrSpirvBuiltinDemangledName ( StringRef  Name)

Definition at line 307 of file SPIRVUtils.cpp.

References isNonMangledOCLBuiltin(), itaniumDemangle(), and Name.

Referenced by llvm::SPIRVCallLowering::lowerCall().

◆ getOffset()

static Error llvm::getOffset ( const SymbolRef Sym,
SectionRef  Sec,
uint64_t Result 
)
static

◆ getOpcodeDef() [1/2]

template<class T >
T * llvm::getOpcodeDef ( 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.

Returns null otherwise.

Definition at line 274 of file Utils.h.

References DefMI, getDefIgnoringCopies(), MRI, and Reg.

◆ getOpcodeDef() [2/2]

MachineInstr * llvm::getOpcodeDef ( unsigned  Opcode,
Register  Reg,
const MachineRegisterInfo MRI 
)

See if Reg is defined by an single def instruction that is Opcode.

Also try to do trivial folding if it's a COPY with same types. Returns null otherwise.

Definition at line 625 of file Utils.cpp.

References DefMI, getDefIgnoringCopies(), llvm::MachineInstr::getOpcode(), and MRI.

Referenced by llvm::CombinerHelper::matchOperandIsUndef(), llvm::CombinerHelper::matchUndefSelectCmp(), llvm::CombinerHelper::matchUndefStore(), llvm::AMDGPURegisterBankInfo::setBufferOffsets(), stripAnySourceMods(), and llvm::LegalizationArtifactCombiner::tryFoldImplicitDef().

◆ getOpDesc()

static Desc llvm::getOpDesc ( unsigned  Opcode)
static

Definition at line 119 of file DWARFExpression.cpp.

References getDescImpl(), and getOpDescriptions().

◆ getOpDescriptions()

static std::vector< Desc > llvm::getOpDescriptions ( )
static

◆ getOptionalBoolLoopAttribute()

std::optional< bool > llvm::getOptionalBoolLoopAttribute ( const Loop TheLoop,
StringRef  Name 
)

◆ getOptionalElementCountLoopAttribute()

std::optional< ElementCount > llvm::getOptionalElementCountLoopAttribute ( 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.

If the metadata "llvm.loop.vectorize.width" cannot be found then std::nullopt is returned.

Definition at line 250 of file LoopUtils.cpp.

References llvm::ElementCount::get(), and getOptionalIntLoopAttribute().

Referenced by hasVectorizeTransformation(), and warnAboutLeftoverTransformations().

◆ getOptionalIntLoopAttribute()

std::optional< int > llvm::getOptionalIntLoopAttribute ( const Loop TheLoop,
StringRef  Name 
)

◆ getOrCreateFunctionComdat()

Comdat * llvm::getOrCreateFunctionComdat ( Function F,
Triple T 
)

Definition at line 73 of file Instrumentation.cpp.

References assert(), llvm::CallingConv::C, F, and llvm::Comdat::NoDeduplicate.

◆ getOrCreateSanitizerCtorAndInitFunctions()

std::pair< Function *, FunctionCallee > llvm::getOrCreateSanitizerCtorAndInitFunctions ( 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.

If a constructor and init function already exist, this function returns it. Otherwise it calls createSanitizerCtorAndInitFunctions. The FunctionsCreatedCallback is invoked in that case, passing the new Ctor and Init function.

Returns
Returns pair of pointers to constructor, and init functions respectively.

Definition at line 249 of file ModuleUtils.cpp.

References assert(), createSanitizerCtorAndInitFunctions(), declareSanitizerInitFunction(), llvm::StringRef::empty(), and llvm::Type::getVoidTy().

◆ getOrCreateSPIRVDeviceEventPointer()

static SPIRVType * llvm::getOrCreateSPIRVDeviceEventPointer ( MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ getOrderedReduction()

Value * llvm::getOrderedReduction ( IRBuilderBase Builder,
Value Acc,
Value Src,
unsigned  Op,
RecurKind  MinMaxKind = RecurKind::None 
)

◆ getOrEnforceKnownAlignment()

Align llvm::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.

If the owning object can be modified and has an alignment less than PrefAlign, it will be increased and PrefAlign returned. If the alignment cannot be increased, the known alignment of the value is returned.

It is not always possible to modify the alignment of the underlying object, so if alignment is important, a more reliable approach is to simply align all global variables and allocation instructions to their preferred alignment from the beginning.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 1542 of file Local.cpp.

References assert(), computeKnownBits(), llvm::KnownBits::countMinTrailingZeros(), DL, llvm::KnownBits::getBitWidth(), llvm::Value::MaxAlignmentExponent, and tryEnforceAlignment().

Referenced by getKnownAlignment(), HandleByValArgument(), llvm::PPCTTIImpl::instCombineIntrinsic(), SRAGlobal(), llvm::InstCombinerImpl::visitAllocaInst(), llvm::InstCombinerImpl::visitLoadInst(), and llvm::InstCombinerImpl::visitStoreInst().

◆ getOrInsertLibFunc() [1/5]

template<typename... ArgsTy>
FunctionCallee llvm::getOrInsertLibFunc ( Module M,
const TargetLibraryInfo TLI,
LibFunc  TheLibFunc,
AttributeList  AttributeList,
FunctionType Invalid,
ArgsTy...  Args 
)
delete

◆ getOrInsertLibFunc() [2/5]

template<typename... ArgsTy>
FunctionCallee llvm::getOrInsertLibFunc ( Module M,
const TargetLibraryInfo TLI,
LibFunc  TheLibFunc,
AttributeList  AttributeList,
Type RetTy,
ArgsTy...  Args 
)

Definition at line 43 of file BuildLibCalls.h.

References llvm::FunctionType::get(), getOrInsertLibFunc(), and RetTy.

◆ getOrInsertLibFunc() [3/5]

FunctionCallee llvm::getOrInsertLibFunc ( Module M,
const TargetLibraryInfo TLI,
LibFunc  TheLibFunc,
FunctionType T 
)

Definition at line 1365 of file BuildLibCalls.cpp.

References getOrInsertLibFunc().

◆ getOrInsertLibFunc() [4/5]

FunctionCallee llvm::getOrInsertLibFunc ( Module M,
const TargetLibraryInfo TLI,
LibFunc  TheLibFunc,
FunctionType T,
AttributeList  AttributeList 
)

◆ getOrInsertLibFunc() [5/5]

template<typename... ArgsTy>
FunctionCallee llvm::getOrInsertLibFunc ( Module M,
const TargetLibraryInfo TLI,
LibFunc  TheLibFunc,
Type RetTy,
ArgsTy...  Args 
)

Same as above, but without the attributes.

Definition at line 53 of file BuildLibCalls.h.

References getOrInsertLibFunc(), and RetTy.

◆ getOutermostDivergentCycle()

template<typename ContextT , typename CycleT , typename BlockT , typename DominatorTreeT >
static const CycleT * llvm::getOutermostDivergentCycle ( const CycleT *  Cycle,
const BlockT *  DivTermBlock,
const BlockT *  JoinBlock,
const DominatorTreeT &  DT,
ContextT &  Context 
)
static

◆ getOwningLazyBitcodeModule()

Expected< std::unique_ptr< Module > > llvm::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.

If successful, this moves Buffer. On error, this does not move Buffer. If IsImporting is true, this module is being parsed for ThinLTO importing into another module.

Definition at line 8435 of file BitcodeReader.cpp.

References Context, and getLazyBitcodeModule().

Referenced by getLazyIRModule(), LLVMGetBitcodeModuleInContext(), and LLVMGetBitcodeModuleInContext2().

◆ getPACOpcodeForKey()

static unsigned llvm::getPACOpcodeForKey ( AArch64PACKey::ID  K,
bool  Zero 
)
inlinestatic

Return PAC opcode to be used for a ptrauth sign using the given key, or its PAC*Z variant that doesn't take a discriminator operand, using zero instead.

Definition at line 732 of file AArch64InstrInfo.h.

◆ getPaddedLen()

static size_t llvm::getPaddedLen ( const StringRef Str)
static

Definition at line 46 of file SPIRVUtils.cpp.

Referenced by addStringImm().

◆ getParsedIRPGOName()

std::pair< StringRef, StringRef > llvm::getParsedIRPGOName ( StringRef  IRPGOName)
Returns
the filename and the function name parsed from the output of getIRPGOFuncName()

Definition at line 398 of file InstrProf.cpp.

References kGlobalIdentifierDelimiter, and llvm::StringRef::split().

◆ getPassTimer()

Timer * llvm::getPassTimer ( Pass P)

◆ getPCMFile()

static std::string llvm::getPCMFile ( const DWARFDie CUDie,
const DWARFLinkerBase::ObjectPrefixMapTy ObjectPrefixMap 
)
static

◆ getPerfectShuffleCost()

static unsigned llvm::getPerfectShuffleCost ( llvm::ArrayRef< int >  M)
static

◆ getPGOFuncName() [1/2]

std::string llvm::getPGOFuncName ( const Function F,
bool  InLTO = false,
uint64_t  Version = INSTR_PROF_INDEX_VERSION 
)

Please use getIRPGOFuncName for LLVM IR instrumentation.

This function is for front-end (Clang, etc) instrumentation. Return the modified name for function F suitable to be used the key for profile lookup. Variable InLTO indicates if this is called in LTO optimization passes.

Definition at line 374 of file InstrProf.cpp.

References llvm::GlobalValue::ExternalLinkage, F, getPGOFuncName(), getPGOFuncNameMetadata(), getStrippedSourceFileName(), and lookupPGONameFromMetadata().

Referenced by llvm::InstrProfSymtab::create(), and getPGOFuncName().

◆ getPGOFuncName() [2/2]

std::string llvm::getPGOFuncName ( StringRef  RawFuncName,
GlobalValue::LinkageTypes  Linkage,
StringRef  FileName,
uint64_t Version  LLVM_ATTRIBUTE_UNUSED = INSTR_PROF_INDEX_VERSION 
)

Return the modified name for a function suitable to be used the key for profile lookup.

The function's original name is RawFuncName and has linkage of type Linkage. The function is defined in module FileName.

Definition at line 256 of file InstrProf.cpp.

References llvm::StringRef::empty(), llvm::GlobalValue::isLocalLinkage(), Name, and llvm::StringRef::str().

◆ getPGOFuncNameMetadata()

MDNode * llvm::getPGOFuncNameMetadata ( const Function F)

Return the PGOFuncName meta data associated with a function.

Definition at line 1360 of file InstrProf.cpp.

References F, and getPGOFuncNameMetadataName().

Referenced by createPGOFuncNameMetadata(), getIRPGOFuncName(), and getPGOFuncName().

◆ getPGOFuncNameMetadataName()

StringRef llvm::getPGOFuncNameMetadataName ( )
inline

Definition at line 306 of file InstrProf.h.

Referenced by createPGOFuncNameMetadata(), and getPGOFuncNameMetadata().

◆ getPGOFuncNameVarInitializer()

StringRef llvm::getPGOFuncNameVarInitializer ( GlobalVariable NameVar)

Return the initializer in string of the PGO name var NameVar.

Definition at line 664 of file InstrProf.cpp.

References llvm::GlobalVariable::getInitializer().

Referenced by collectPGOFuncNameStrings().

◆ getPGOFuncNameVarName()

std::string llvm::getPGOFuncNameVarName ( StringRef  FuncName,
GlobalValue::LinkageTypes  Linkage 
)

Return the name of the global variable used to store a function name in PGO instrumentation.

FuncName is the IRPGO function name (returned by getIRPGOFuncName) for LLVM IR instrumentation and PGO function name (returned by getPGOFuncName) for front-end instrumentation.

Definition at line 417 of file InstrProf.cpp.

References getInstrProfNameVarPrefix(), and llvm::GlobalValue::isLocalLinkage().

Referenced by createPGOFuncNameVar().

◆ getPGOName()

std::string llvm::getPGOName ( const GlobalVariable V,
bool  InLTO = false 
)

Definition at line 390 of file InstrProf.cpp.

References getIRPGOObjectName().

Referenced by collectVTableStrings().

◆ getPipeType()

static SPIRVType * llvm::getPipeType ( const TargetExtType ExtensionType,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ getPointeeTypeByAttr()

Type * llvm::getPointeeTypeByAttr ( Argument Arg)
inline

◆ getPointerAddressSpace()

unsigned llvm::getPointerAddressSpace ( const Type T)
inline

◆ getPointerAtOffset()

Constant * llvm::getPointerAtOffset ( 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).

Used for example from GlobalDCE to find an entry in a C++ vtable that matches a vcall offset.

To support relative vtables, getPointerAtOffset can see through "relative pointers", i.e. (sub-)expressions of the form of:

@symbol = ... { i32 trunc (i64 sub ( i64 ptrtoint (<type> @target to i64), i64 ptrtoint (... @symbol to i64) ) to i32) }

For such (sub-)expressions, getPointerAtOffset returns the @target pointer.

Definition at line 140 of file TypeMetadataUtils.cpp.

References llvm::CallingConv::C, DL, llvm::StructLayout::getElementContainingOffset(), llvm::StructLayout::getElementOffset(), llvm::ArrayType::getElementType(), getPointerAtOffset(), llvm::StructLayout::getSizeInBytes(), I, and Offset.

Referenced by getFunctionAtVTableOffset(), and getPointerAtOffset().

◆ GetPointerBaseWithConstantOffset() [1/2]

const Value * llvm::GetPointerBaseWithConstantOffset ( const Value Ptr,
int64_t &  Offset,
const DataLayout DL,
bool  AllowNonInbounds = true 
)
inline

Definition at line 617 of file ValueTracking.h.

References DL, GetPointerBaseWithConstantOffset(), Offset, and Ptr.

◆ GetPointerBaseWithConstantOffset() [2/2]

Value * llvm::GetPointerBaseWithConstantOffset ( Value Ptr,
int64_t &  Offset,
const DataLayout DL,
bool  AllowNonInbounds = true 
)
inline

Analyze the specified pointer to see if it can be expressed as a base pointer plus a constant offset.

Return the base and offset to the caller.

This is a wrapper around Value::stripAndAccumulateConstantOffsets that creates and later unpacks the required APInt.

Definition at line 606 of file ValueTracking.h.

References llvm::sampleprof::Base, DL, llvm::APInt::getSExtValue(), Offset, and Ptr.

Referenced by llvm::VNCoercion::analyzeLoadFromClobberingWrite(), llvm::ARMBankConflictHazardRecognizer::getHazardType(), GetPointerBaseWithConstantOffset(), INITIALIZE_PASS(), and processUse().

◆ getPointerOperand() [1/2]

const Value * llvm::getPointerOperand ( const Value V)
inline

◆ getPointerOperand() [2/2]

Value * llvm::getPointerOperand ( Value V)
inline

Definition at line 6049 of file Instructions.h.

References getPointerOperand().

◆ getPointersDiff()

std::optional< int > llvm::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.

This is a simple API that does not depend on the analysis pass.

Parameters
StrictCheckEnsure that the calculated distance matches the type-based one after all the bitcasts removal in the provided pointers.

Definition at line 1561 of file LoopAccessAnalysis.cpp.

References assert(), CheckType(), DL, llvm::ScalarEvolution::getMinusSCEV(), llvm::Type::getPointerAddressSpace(), llvm::ScalarEvolution::getSCEV(), llvm::APInt::getSExtValue(), llvm::Value::getType(), llvm::APInt::sextOrTrunc(), Size, and llvm::Value::stripAndAccumulateInBoundsConstantOffsets().

Referenced by llvm::slpvectorizer::BoUpSLP::canVectorizeLoads(), clusterSortPtrAccesses(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), isConsecutiveAccess(), and sortPtrAccesses().

◆ getPredForFCmpCode()

Constant * llvm::getPredForFCmpCode ( unsigned  Code,
Type OpTy,
CmpInst::Predicate Pred 
)

This is the complement of getFCmpCode.

It turns a predicate code into either a constant true or false or the predicate for a new FCmp. Non-NULL return value will be a true or false constant. NULL return means a new ICmp is needed. The predicate is output in Pred.

Definition at line 64 of file CmpInstAnalysis.cpp.

References assert(), and llvm::CmpInst::makeCmpResultType().

Referenced by getFCmpValue().

◆ getPredForICmpCode()

Constant * llvm::getPredForICmpCode ( unsigned  Code,
bool  Sign,
Type OpTy,
CmpInst::Predicate Pred 
)

This is the complement of getICmpCode.

It turns a predicate code into either a constant true or false or the predicate for a new ICmp. The sign is passed in to determine which kind of predicate to use in the new ICmp instruction. Non-NULL return value will be a true or false constant. NULL return means a new ICmp is needed. The predicate is output in Pred.

Definition at line 40 of file CmpInstAnalysis.cpp.

References llvm_unreachable, and llvm::CmpInst::makeCmpResultType().

Referenced by getNewICmpValue().

◆ getPtrStride()

std::optional< int64_t > llvm::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.

Check whether the access through Ptr has a constant stride.

Otherwise return std::nullopt.

Ensure that it does not wrap in the address space, assuming the predicate associated with PSE is true.

If necessary this method will version the stride of the pointer according to PtrToStride and therefore add further predicates to PSE. The Assume parameter indicates if we are allowed to make additional run-time assumptions.

Note that the analysis results are defined if-and-only-if the original memory access was defined. If that access was dead, or UB, then the result of this function is undefined.

Definition at line 1462 of file LoopAccessAnalysis.cpp.

References assert(), llvm::CallingConv::C, dbgs(), DL, GEP, llvm::PredicatedScalarEvolution::getAsAddRec(), llvm::APInt::getBitWidth(), llvm::Module::getDataLayout(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::SCEVAddRecExpr::getLoop(), llvm::BasicBlock::getModule(), llvm::BasicBlock::getParent(), llvm::Type::getPointerAddressSpace(), llvm::PredicatedScalarEvolution::getSE(), llvm::APInt::getSExtValue(), llvm::SCEVAddRecExpr::getStepRecurrence(), llvm::SCEVWrapPredicate::IncrementNUSW, isNoWrapAddRec(), llvm::Type::isPointerTy(), LLVM_DEBUG, NullPointerIsDefined(), Ptr, replaceSymbolicStrideSCEV(), llvm::PredicatedScalarEvolution::setNoOverflow(), and Size.

Referenced by llvm::InterleavedAccessInfo::analyzeInterleaving(), canTailPredicateLoop(), containsDecreasingPointers(), getDependenceDistanceStrideAndSize(), llvm::LoopVectorizationLegality::isConsecutivePtr(), and isNoWrap().

◆ getRandomBytes()

std::error_code llvm::getRandomBytes ( void *  Buffer,
size_t  Size 
)

Definition at line 69 of file RandomNumberGenerator.cpp.

References errnoAsErrorCode(), and Size.

◆ getReallocatedOperand()

Value * llvm::getReallocatedOperand ( const CallBase CB)

If this is a call to a realloc function, return the reallocated operand.

Definition at line 336 of file MemoryBuiltins.cpp.

References checkFnAllocKind(), and llvm::CallBase::getArgOperandWithAttribute().

Referenced by isAllocSiteRemovable(), and llvm::InstCombinerImpl::visitFree().

◆ getRegPressure()

template<typename Range >
GCNRegPressure llvm::getRegPressure ( const MachineRegisterInfo MRI,
Range &&  LiveRegs 
)

◆ getRegSequenceSubReg()

TargetInstrInfo::RegSubRegPair llvm::getRegSequenceSubReg ( MachineInstr MI,
unsigned  SubReg 
)

Return the SubReg component from REG_SEQUENCE.

Definition at line 9244 of file SIInstrInfo.cpp.

References assert(), getRegOrUndef(), I, MI, and SubReg.

Referenced by followSubRegDef().

◆ getRegState()

unsigned llvm::getRegState ( const MachineOperand RegOp)
inline

◆ getRegSubRegPair()

TargetInstrInfo::RegSubRegPair llvm::getRegSubRegPair ( const MachineOperand O)
inline

Create RegSubRegPair from a register MachineOperand.

Definition at line 1395 of file SIInstrInfo.h.

References assert().

Referenced by getRegOrUndef(), and getVRegSubRegDef().

◆ getReleaseModeAdvisor()

std::unique_ptr< InlineAdvisor > llvm::getReleaseModeAdvisor ( Module M,
ModuleAnalysisManager MAM,
std::function< bool(CallBase &)>  GetDefaultAdvice 
)

◆ getRenamableRegState()

unsigned llvm::getRenamableRegState ( bool  B)
inline

Definition at line 552 of file MachineInstrBuilder.h.

References B, and llvm::RegState::Renamable.

Referenced by getRegState(), and llvm::RISCVInstrInfo::movImm().

◆ getReplayInlineAdvisor()

std::unique_ptr< InlineAdvisor > llvm::getReplayInlineAdvisor ( Module M,
FunctionAnalysisManager FAM,
LLVMContext Context,
std::unique_ptr< InlineAdvisor OriginalAdvisor,
const ReplayInlinerSettings ReplaySettings,
bool  EmitRemarks,
InlineContext  IC 
)

Definition at line 80 of file ReplayInlineAdvisor.cpp.

References Context, and FAM.

Referenced by llvm::InlineAdvisorAnalysis::Result::tryCreate().

◆ getReqNTIDx()

bool llvm::getReqNTIDx ( const Function F,
unsigned x 
)

Definition at line 269 of file NVPTXUtilities.cpp.

References F, and findOneNVVMAnnotation().

◆ getReqNTIDy()

bool llvm::getReqNTIDy ( const Function F,
unsigned y 
)

Definition at line 273 of file NVPTXUtilities.cpp.

References F, and findOneNVVMAnnotation().

◆ getReqNTIDz()

bool llvm::getReqNTIDz ( const Function F,
unsigned z 
)

Definition at line 277 of file NVPTXUtilities.cpp.

References F, and findOneNVVMAnnotation().

◆ GetReturnInfo()

void llvm::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.

Get the EVTs and ArgFlags collections that represent the legalized return type of the given function.

This does not require a DAG or a return value, and is suitable for use before any DAGs for the function are constructed. TODO: Move this out of TargetLowering.cpp.

Definition at line 1775 of file TargetLoweringBase.cpp.

References llvm::ISD::ANY_EXTEND, CC, ComputeValueVTs(), DL, llvm::TargetLoweringBase::getNumRegistersForCallingConv(), llvm::TargetLoweringBase::getRegisterTypeForCallingConv(), llvm::TargetLowering::getTypeForExtReturn(), llvm::AttributeList::hasRetAttr(), llvm::EVT::isInteger(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::ISD::ArgFlagsTy::setSplit(), llvm::ISD::ArgFlagsTy::setSplitEnd(), llvm::ISD::SIGN_EXTEND, llvm::SmallVectorBase< Size_T >::size(), and llvm::ISD::ZERO_EXTEND.

Referenced by llvm::FastISel::lowerCallTo(), llvm::TargetLowering::LowerCallTo(), llvm::FunctionLoweringInfo::set(), and llvm::PPCTargetLowering::supportsTailCallFor().

◆ getRuntimeVF()

Value * llvm::getRuntimeVF ( IRBuilderBase B,
Type Ty,
ElementCount  VF 
)

Return the runtime value for VF.

Returns a calculation for the total number of elements for a given VF.

For fixed width vectors this value is a constant, whereas for scalable vectors it is an expression determined at runtime.

Definition at line 977 of file LoopVectorize.cpp.

References B.

Referenced by llvm::VPVectorPointerRecipe::execute(), llvm::VPWidenIntOrFpInductionRecipe::execute(), llvm::VPWidenPointerInductionRecipe::execute(), llvm::VPFirstOrderRecurrencePHIRecipe::execute(), llvm::InnerLoopVectorizer::fixFixedOrderRecurrence(), llvm::VPLane::getAsRuntimeExpr(), llvm::InnerLoopVectorizer::getOrCreateVectorTripCount(), getRuntimeVFAsFloat(), and llvm::InnerLoopVectorizer::vectorizeInterleaveGroup().

◆ getSampledImageType()

static SPIRVType * llvm::getSampledImageType ( const TargetExtType OpaqueType,
MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ getSamplerAddressingModeFromBitmask()

static SPIRV::SamplerAddressingMode::SamplerAddressingMode llvm::getSamplerAddressingModeFromBitmask ( unsigned  Bitmask)
static

Definition at line 1475 of file SPIRVBuiltins.cpp.

References report_fatal_error().

Referenced by generateReadImageInst(), and generateSampleImageInst().

◆ getSamplerFilterModeFromBitmask()

static SPIRV::SamplerFilterMode::SamplerFilterMode llvm::getSamplerFilterModeFromBitmask ( unsigned  Bitmask)
static

Definition at line 1497 of file SPIRVBuiltins.cpp.

Referenced by generateReadImageInst(), and generateSampleImageInst().

◆ getSamplerName()

std::string llvm::getSamplerName ( const Value val)

Definition at line 248 of file NVPTXUtilities.cpp.

References assert(), llvm::Value::getName(), and llvm::Value::hasName().

◆ getSamplerParamFromBitmask()

static unsigned llvm::getSamplerParamFromBitmask ( unsigned  Bitmask)
static

Definition at line 1492 of file SPIRVBuiltins.cpp.

Referenced by generateReadImageInst(), and generateSampleImageInst().

◆ getSamplerType()

static SPIRVType * llvm::getSamplerType ( MachineIRBuilder MIRBuilder,
SPIRVGlobalRegistry GR 
)
static

◆ getScalarReductionOpcode()

unsigned llvm::getScalarReductionOpcode ( unsigned  VVPOC,
bool  IsMask 
)

Definition at line 369 of file VECustomDAG.cpp.

References assert(), and llvm_unreachable.

Referenced by llvm::VECustomDAG::getLegalReductionOpVVP().

◆ getSelectionDAGFallbackAnalysisUsage()

void llvm::getSelectionDAGFallbackAnalysisUsage ( AnalysisUsage AU)

◆ GetShadowBytes()

SmallVector< uint8_t, 64 > llvm::GetShadowBytes ( const SmallVectorImpl< ASanStackVariableDescription > &  Vars,
const ASanStackFrameLayout Layout 
)

◆ GetShadowBytesAfterScope()

SmallVector< uint8_t, 64 > llvm::GetShadowBytesAfterScope ( const SmallVectorImpl< ASanStackVariableDescription > &  Vars,
const ASanStackFrameLayout Layout 
)

◆ getShuffleDemandedElts()

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

Both DemandedLHS and DemandedRHS are initialised to [SrcWidth]. AllowUndefElts permits "-1" indices to be treated as undef.

Definition at line 310 of file VectorUtils.cpp.

References all_of(), assert(), llvm::APInt::getZero(), I, llvm::APInt::isZero(), and llvm::APInt::setBit().

Referenced by llvm::SelectionDAG::computeKnownBits(), computeKnownFPClass(), llvm::SelectionDAG::ComputeNumSignBits(), getShuffleDemandedElts(), and llvm::TargetLowering::SimplifyDemandedBits().

◆ getShuffleMaskWithWidestElts()

void llvm::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.

Definition at line 419 of file VectorUtils.cpp.

References llvm::SmallVectorImpl< T >::assign(), llvm::ArrayRef< T >::begin(), llvm::ArrayRef< T >::end(), llvm::ArrayRef< T >::size(), std::swap(), and widenShuffleMaskElts().

Referenced by combineShuffleToZeroExtendVectorInReg().

◆ getShuffleReduction()

Value * llvm::getShuffleReduction ( IRBuilderBase Builder,
Value Src,
unsigned  Op,
RecurKind  MinMaxKind = RecurKind::None 
)

◆ getSLEB128Size()

unsigned llvm::getSLEB128Size ( int64_t  Value)

Utility function to get the size of the SLEB128-encoded value.

Definition at line 29 of file LEB128.cpp.

References Size.

Referenced by llvm::EHStreamer::computeActionsTable(), llvm::EHStreamer::emitExceptionTable(), and llvm::DIEInteger::sizeOf().

◆ getSpirvBuiltInIdByName()

bool llvm::getSpirvBuiltInIdByName ( llvm::StringRef  Name,
SPIRV::BuiltIn::BuiltIn &  BI 
)

Definition at line 177 of file SPIRVBaseInfo.cpp.

References Lookup(), and Name.

Referenced by llvm::SPIRVGlobalRegistry::buildGlobalVariable().

◆ getSPIRVMemSemantics()

static SPIRV::MemorySemantics::MemorySemantics llvm::getSPIRVMemSemantics ( std::memory_order  MemOrder)
static

◆ getSPIRVScope()

static SPIRV::Scope::Scope llvm::getSPIRVScope ( SPIRV::CLMemoryScope  ClScope)
static

◆ getSPIRVStringOperand()

template<class InstType >
std::string llvm::getSPIRVStringOperand ( const InstType &  MI,
unsigned  StartIndex 
)

Definition at line 244 of file SPIRVBaseInfo.h.

References assert(), and MI.

Referenced by getStringImm(), and llvm::SPIRVInstPrinter::printStringImm().

◆ getSplatIndex() [1/2]

int llvm::getSplatIndex ( ArrayRef< int >  Mask)

If all non-negative Mask elements are the same value, return that value.

If all elements are negative (undefined) or Mask contains different non-negative values, return -1.

Definition at line 227 of file VectorUtils.cpp.

References assert().

Referenced by formSplatFromShuffles(), lowerShuffleAsBroadcast(), and llvm::X86TargetLowering::shouldSinkOperands().

◆ getSplatIndex() [2/2]

std::optional< int > llvm::getSplatIndex ( MachineInstr MI)
Returns
The splat index of a G_SHUFFLE_VECTOR MI when MI is a splat. If MI is not a splat, returns std::nullopt.

Definition at line 1286 of file Utils.cpp.

References any_of(), assert(), find_if(), make_range(), and MI.

◆ getSplatValue()

Value * llvm::getSplatValue ( const Value V)

Get splat value if the input is a splat vector or return nullptr.

The value may be extracted from a splat constants vector or from a sequence of instructions that broadcast a single value into a vector.

This function is not fully general. It checks only 2 cases: the input value is (1) a splat constant vector or (2) a sequence of instructions that broadcasts a scalar at element 0.

Definition at line 249 of file VectorUtils.cpp.

References llvm::CallingConv::C, llvm::PatternMatch::m_InsertElt(), llvm::PatternMatch::m_Shuffle(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::m_ZeroInt(), llvm::PatternMatch::match(), and Splat.

Referenced by findScalarElement(), llvm::TargetTransformInfoImplCRTPBase< T >::getGEPCost(), llvm::TargetTransformInfo::getOperandInfo(), instCombineSVECmpNE(), instCombineSVELast(), instCombineSVESDIV(), instCombineSVETBL(), instCombineSVEUnpack(), instCombineSVEVectorMul(), isAllTrueMask(), llvm::VETargetLowering::lowerBUILD_VECTOR(), lowerBUILD_VECTOR(), lowerBuildVectorOfConstants(), matchStridedStart(), and simplifyExtractElementInst().

◆ getSrcRegIgnoringCopies()

Register llvm::getSrcRegIgnoringCopies ( Register  Reg,
const MachineRegisterInfo MRI 
)

Find the source register for Reg, folding away any trivial copies.

It will be an output register of the instruction that getDefIgnoringCopies returns. May return an invalid register if Reg is not a generic virtual register.

Also walks through hints such as G_ASSERT_ZEXT.

Definition at line 472 of file Utils.cpp.

References getDefSrcRegIgnoringCopies(), and MRI.

Referenced by llvm::GIMatchTableExecutor::executeMatchTable(), llvm::CombinerHelper::matchCombineAnyExtTrunc(), llvm::CombinerHelper::matchCombineExtOfExt(), and llvm::AMDGPURegisterBankInfo::setBufferOffsets().

◆ getStandardCSEConfigForOpt()

std::unique_ptr< CSEConfigBase > llvm::getStandardCSEConfigForOpt ( CodeGenOptLevel  Level)

Definition at line 79 of file CSEInfo.cpp.

References Config, and None.

Referenced by llvm::AMDGPUPassConfig::getCSEConfig().

◆ GetStatistics()

std::vector< std::pair< StringRef, uint64_t > > llvm::GetStatistics ( )

Get the statistics.

This can be used to look up the value of statistics without needing to parse JSON.

This function does not prevent statistics being updated by other threads during it's execution. It will return the value at the point that it is read. However, it will prevent new statistics from registering until it completes.

Definition at line 257 of file Statistic.cpp.

References StatInfo, and StatLock.

◆ getStoredValue()

SDValue llvm::getStoredValue ( SDValue  Op)

◆ getStringFnAttrAsInt() [1/3]

std::optional< int > llvm::getStringFnAttrAsInt ( CallBase CB,
StringRef  AttrKind 
)

Definition at line 186 of file InlineCost.cpp.

References llvm::CallBase::getFnAttr(), and getStringFnAttrAsInt().

Referenced by getStringFnAttrAsInt().

◆ getStringFnAttrAsInt() [2/3]

std::optional< int > llvm::getStringFnAttrAsInt ( const Attribute Attr)

◆ getStringFnAttrAsInt() [3/3]

std::optional< int > llvm::getStringFnAttrAsInt ( Function F,
StringRef  AttrKind 
)

Definition at line 190 of file InlineCost.cpp.

References F, and getStringFnAttrAsInt().

◆ getStringImm()

std::string llvm::getStringImm ( const MachineInstr MI,
unsigned  StartIndex 
)

Definition at line 76 of file SPIRVUtils.cpp.

References getSPIRVStringOperand(), and MI.

◆ GetStringLength()

uint64_t llvm::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'.

If we can't, return 0.

Definition at line 6213 of file ValueTracking.cpp.

References GetStringLengthH().

Referenced by getAllocSize().

◆ getStrippedSourceFileName()

static StringRef llvm::getStrippedSourceFileName ( const GlobalObject GO)
static

◆ getStructTM()

static struct tm llvm::getStructTM ( TimePoint<>  TP)
inlinestatic

Definition at line 25 of file Chrono.cpp.

References assert(), and llvm::sys::toTimeT().

Referenced by operator<<().

◆ getStructTMUtc()

static struct tm llvm::getStructTMUtc ( UtcTime<>  TP)
inlinestatic

Definition at line 43 of file Chrono.cpp.

References assert(), and llvm::sys::toTimeT().

◆ getSubDirectoryPath()

std::string llvm::getSubDirectoryPath ( SubDirectoryType  Type,
ToolsetLayout  VSLayout,
const std::string &  VCToolChainPath,
llvm::Triple::ArchType  TargetArch,
llvm::StringRef  SubdirParent = "" 
)

◆ getSubOpDesc()

static Desc llvm::getSubOpDesc ( unsigned  Opcode,
unsigned  SubOpcode 
)
static

Definition at line 135 of file DWARFExpression.cpp.

References assert(), getDescImpl(), and getSubOpDescriptions().

◆ getSubOpDescriptions()

static std::vector< Desc > llvm::getSubOpDescriptions ( )
static

◆ GetSuccessorNumber()

unsigned llvm::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.

GetSuccessorNumber - Search for the specified successor of basic block BB and return its position in the terminator instruction's list of successors.

It is an error to call this with a block that is not a successor.

Definition at line 79 of file CFG.cpp.

References assert(), and llvm::BasicBlock::getTerminator().

Referenced by DemoteRegToStack(), getInstrBB(), and SplitEdge().

◆ getSurfaceName()

std::string llvm::getSurfaceName ( const Value val)

Definition at line 243 of file NVPTXUtilities.cpp.

References assert(), llvm::Value::getName(), and llvm::Value::hasName().

◆ getSVEPredPatternFromNumElements()

std::optional< unsigned > llvm::getSVEPredPatternFromNumElements ( unsigned  MinNumElts)
inline

◆ getSwappedBytes()

uint24_t llvm::getSwappedBytes ( uint24_t  C)
inline

Needed by swapByteOrder().

Definition at line 37 of file DataExtractor.h.

References llvm::CallingConv::C.

◆ getSymbolicOperandCapabilities()

CapabilityList llvm::getSymbolicOperandCapabilities ( SPIRV::OperandCategory::OperandCategory  Category,
uint32_t  Value 
)

◆ getSymbolicOperandExtensions()

ExtensionList llvm::getSymbolicOperandExtensions ( SPIRV::OperandCategory::OperandCategory  Category,
uint32_t  Value 
)

Definition at line 151 of file SPIRVBaseInfo.cpp.

References Extensions.

◆ getSymbolicOperandMaxVersion()

uint32_t llvm::getSymbolicOperandMaxVersion ( SPIRV::OperandCategory::OperandCategory  Category,
uint32_t  Value 
)

Definition at line 104 of file SPIRVBaseInfo.cpp.

References Lookup().

◆ getSymbolicOperandMinVersion()

uint32_t llvm::getSymbolicOperandMinVersion ( SPIRV::OperandCategory::OperandCategory  Category,
uint32_t  Value 
)

Definition at line 92 of file SPIRVBaseInfo.cpp.

References Lookup().

◆ getSymbolicOperandMnemonic()

std::string llvm::getSymbolicOperandMnemonic ( SPIRV::OperandCategory::OperandCategory  Category,
int32_t  Value 
)

◆ getTailPredVectorWidth()

static unsigned llvm::getTailPredVectorWidth ( unsigned  Opcode)
inlinestatic

Definition at line 42 of file MVETailPredUtils.h.

References llvm_unreachable.

◆ gettBLXrOpcode()

unsigned llvm::gettBLXrOpcode ( const MachineFunction MF)

Definition at line 6740 of file ARMBaseInstrInfo.cpp.

References llvm::MachineFunction::getSubtarget().

◆ getTensorSpecFromJSON()

std::optional< TensorSpec > llvm::getTensorSpecFromJSON ( LLVMContext Ctx,
const json::Value Value 
)

Construct a TensorSpec from a JSON dictionary of the form: { "name": <string>, "port": <int>, "type": <string.

Use LLVM's types, e.g. float, double, int64_t>, "shape": <array of ints> } For the "type" field, see the C++ primitive types used in TFUTILS_SUPPORTED_TYPES.

Definition at line 69 of file TensorSpec.cpp.

References llvm::LLVMContext::emitError(), llvm::json::ObjectMapper::map(), OS, PARSE_TYPE, and SUPPORTED_TENSOR_TYPES.

◆ getTextureName()

std::string llvm::getTextureName ( const Value val)

Definition at line 238 of file NVPTXUtilities.cpp.

References assert(), llvm::Value::getName(), and llvm::Value::hasName().

◆ getTheAArch64_32Target()

Target & llvm::getTheAArch64_32Target ( )

◆ getTheAArch64beTarget()

Target & llvm::getTheAArch64beTarget ( )

◆ getTheAArch64leTarget()

Target & llvm::getTheAArch64leTarget ( )

◆ getTheARCTarget()

Target & llvm::getTheARCTarget ( )

◆ getTheARM64_32Target()

Target & llvm::getTheARM64_32Target ( )

◆ getTheARM64Target()

Target & llvm::getTheARM64Target ( )

◆ getTheARMBETarget()

Target & llvm::getTheARMBETarget ( )

◆ getTheARMLETarget()

Target & llvm::getTheARMLETarget ( )

◆ getTheAVRTarget()

Target & llvm::getTheAVRTarget ( )

◆ getTheBPFbeTarget()

Target & llvm::getTheBPFbeTarget ( )

◆ getTheBPFleTarget()

Target & llvm::getTheBPFleTarget ( )

◆ getTheBPFTarget()

Target & llvm::getTheBPFTarget ( )

◆ getTheCSKYTarget()

Target & llvm::getTheCSKYTarget ( )

◆ getTheDirectXTarget()

Target & llvm::getTheDirectXTarget ( )

◆ getTheGCNTarget()

Target & llvm::getTheGCNTarget ( )

◆ getTheHexagonTarget()

Target & llvm::getTheHexagonTarget ( )

◆ getTheLanaiTarget()

Target & llvm::getTheLanaiTarget ( )

◆ getTheLoongArch32Target()

Target & llvm::getTheLoongArch32Target ( )

◆ getTheLoongArch64Target()

Target & llvm::getTheLoongArch64Target ( )

◆ getTheM68kTarget()

Target & llvm::getTheM68kTarget ( )

◆ getTheMips64elTarget()

Target & llvm::getTheMips64elTarget ( )

◆ getTheMips64Target()

Target & llvm::getTheMips64Target ( )

◆ getTheMipselTarget()

Target & llvm::getTheMipselTarget ( )

◆ getTheMipsTarget()

Target & llvm::getTheMipsTarget ( )

◆ getTheMSP430Target()

Target & llvm::getTheMSP430Target ( )

◆ getTheNVPTXTarget32()

Target & llvm::getTheNVPTXTarget32 ( )

◆ getTheNVPTXTarget64()

Target & llvm::getTheNVPTXTarget64 ( )

◆ getThePPC32LETarget()

Target & llvm::getThePPC32LETarget ( )

◆ getThePPC32Target()

Target & llvm::getThePPC32Target ( )

◆ getThePPC64LETarget()

Target & llvm::getThePPC64LETarget ( )

◆ getThePPC64Target()

Target & llvm::getThePPC64Target ( )

◆ getTheR600Target()

Target & llvm::getTheR600Target ( )

◆ getTheRISCV32Target()

Target & llvm::getTheRISCV32Target ( )

◆ getTheRISCV64Target()

Target & llvm::getTheRISCV64Target ( )

◆ getTheSparcelTarget()

Target & llvm::getTheSparcelTarget ( )

◆ getTheSparcTarget()

Target & llvm::getTheSparcTarget ( )

◆ getTheSparcV9Target()

Target & llvm::getTheSparcV9Target ( )

◆ getTheSPIRV32Target()

Target & llvm::getTheSPIRV32Target ( )

◆ getTheSPIRV64Target()

Target & llvm::getTheSPIRV64Target ( )

◆ getTheSPIRVLogicalTarget()

Target & llvm::getTheSPIRVLogicalTarget ( )

◆ getTheSystemZTarget()

Target & llvm::getTheSystemZTarget ( )

◆ getTheThumbBETarget()

Target & llvm::getTheThumbBETarget ( )

◆ getTheThumbLETarget()

Target & llvm::getTheThumbLETarget ( )

◆ getTheVETarget()

Target & llvm::getTheVETarget ( )

◆ getTheWebAssemblyTarget32()

Target & llvm::getTheWebAssemblyTarget32 ( )

◆ getTheWebAssemblyTarget64()

Target & llvm::getTheWebAssemblyTarget64 ( )

◆ getTheX86_32Target()

Target & llvm::getTheX86_32Target ( )

◆ getTheX86_64Target()

Target & llvm::getTheX86_64Target ( )

◆ getTheXCoreTarget()

Target & llvm::getTheXCoreTarget ( )

◆ getTheXtensaTarget()

Target & llvm::getTheXtensaTarget ( )

◆ getTimeTraceProfilerInstance()

TimeTraceProfiler * llvm::getTimeTraceProfilerInstance ( )

◆ getTotalArgumentsSizeInBytes()

template<typename ArgT >
static unsigned llvm::getTotalArgumentsSizeInBytes ( const SmallVectorImpl< ArgT > &  Args)
static

Count the total number of bytes needed to pass or return these arguments.

Definition at line 1320 of file AVRISelLowering.cpp.

Referenced by analyzeReturnValues().

◆ getTypeName()

template<typename DesiredTypeName >
StringRef llvm::getTypeName ( )
inline

We provide a function which tries to compute the (demangled) name of a type statically.

This routine may fail on some platforms or for particularly unusual types. Do not use it for anything other than logging and debugging aids. It isn't portable or dependendable in any real sense.

The returned StringRef will point into a static storage duration string. However, it may not be null terminated and may be some strangely aligned inner substring of a larger string.

Definition at line 27 of file TypeName.h.

References assert(), Name, and llvm::StringRef::npos.

Referenced by constructOverloadName(), llvm::AMDGPU::HSAMD::MetadataStreamerMsgPackV4::emitKernelAttrs(), llvm::AMDGPU::HSAMD::MetadataStreamerMsgPackV4::getTypeName(), LLVMGetRelocationTypeName(), and llvm::logicalview::LVLogicalVisitor::visitKnownRecord().

◆ getTypePacking()

Packing llvm::getTypePacking ( EVT  VT)

◆ getULEB128Size()

unsigned llvm::getULEB128Size ( uint64_t  Value)

◆ getUndefRegState()

unsigned llvm::getUndefRegState ( bool  B)
inline

◆ getUnderlyingObject() [1/2]

const Value * llvm::getUnderlyingObject ( const Value V,
unsigned  MaxLookup = 6 
)

This method strips off any GEP address adjustments and pointer casts from the specified value, returning the original object being addressed.

Note that the returned value has pointer type if the specified value does. If the MaxLookup value is non-zero, it limits the number of instructions to be stripped off.

Definition at line 6290 of file ValueTracking.cpp.

References assert(), GEP, getArgumentAliasingToReturnedPointer(), llvm::Operator::getOpcode(), and PHI.

Referenced by addLocAccess(), AddNonNullPointer(), llvm::GlobalsAAResult::alias(), llvm::AMDGPUAAResult::alias(), llvm::VNCoercion::analyzeLoadFromClobberingMemInst(), arePointersCompatible(), llvm::AAResults::callCapturesBefore(), CleanupConstantGlobalUsers(), ConstantFoldLoadFromConstPtr(), findAffectedValues(), llvm::InstCombinerImpl::foldAllocaCmp(), foldPatternedLoads(), getCallArgsTotalAllocaSize(), getConstantDataArrayInfo(), llvm::BasicAAResult::getModRefInfo(), llvm::GlobalsAAResult::getModRefInfo(), llvm::AMDGPUAAResult::getModRefInfoMask(), llvm::NVPTXAAResult::getModRefInfoMask(), llvm::BasicAAResult::getModRefInfoMask(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::MemoryDependenceResults::getSimplePointerDependencyFrom(), llvm::objcarc::GetUnderlyingObjCPtr(), getUnderlyingObject(), getUnderlyingObjects(), llvm::AMDGPUTTIImpl::getUnrollingPreferences(), hasUndefContents(), isNonEscapingGlobalNoAliasWithLoad(), isSafeToSpeculateStore(), mayBeVisibleThroughUnwinding(), memOpsHaveSameBasePtr(), promoteLoopAccessesToScalars(), simplifyGEPInst(), simplifyLoadInst(), SoleWriteToDeadLocal(), underlyingObjectsAlias(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), and writeToAlloca().

◆ getUnderlyingObject() [2/2]

Value * llvm::getUnderlyingObject ( Value V,
unsigned  MaxLookup = 6 
)
inline

Definition at line 699 of file ValueTracking.h.

References getUnderlyingObject().

◆ getUnderlyingObjects()

void llvm::getUnderlyingObjects ( const Value V,
SmallVectorImpl< const Value * > &  Objects,
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.

If LoopInfo is passed, loop phis are further analyzed. If a pointer accesses different objects in each iteration, we don't look through the phi node. E.g. consider this loop nest:

int **A; for (i) for (j) { A[i][j] = A[i-1][j] * B[j] }

This is transformed by Load-PRE to stash away A[i] for the next iteration of the outer loop:

Curr = A[0]; // Prev_0 for (i: 1..N) { Prev = Curr; // Prev = PHI (Prev_0, Curr) Curr = A[i]; for (j: 0..N) { Curr[j] = Prev[j] * B[j] } }

Since A[i] and A[i-1] are independent pointers, getUnderlyingObjects should not assume that Curr and Prev share the same underlying object thus it shouldn't look through the phi above.

Definition at line 6335 of file ValueTracking.cpp.

References append_range(), llvm::SmallVectorBase< Size_T >::empty(), getUnderlyingObject(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::LoopInfoBase< BlockT, LoopT >::isLoopHeader(), isSameUnderlyingObjectInLoop(), P, llvm::SmallVectorImpl< T >::pop_back_val(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by AddAliasScopeMetadata(), canLowerToLDG(), computePointerICmp(), getUnderlyingObjects(), and getUnderlyingObjectsForCodeGen().

◆ getUnderlyingObjectsForCodeGen()

bool llvm::getUnderlyingObjectsForCodeGen ( const Value V,
SmallVectorImpl< Value * > &  Objects 
)

This is a wrapper around getUnderlyingObjects and adds support for basic ptrtoint+arithmetic+inttoptr sequences.

It returns false if unidentified object is found in getUnderlyingObjects.

Definition at line 6408 of file ValueTracking.cpp.

References llvm::SmallVectorImpl< T >::clear(), llvm::SmallVectorBase< Size_T >::empty(), llvm::Operator::getOpcode(), getUnderlyingObjectFromInt(), getUnderlyingObjects(), llvm::SmallPtrSetImpl< PtrType >::insert(), isIdentifiedObject(), llvm::SmallVectorImpl< T >::pop_back_val(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by getUnderlyingObjectsForInstr().

◆ getUniqued()

template<class T , class InfoT >
static T * llvm::getUniqued ( DenseSet< T *, InfoT > &  Store,
const typename InfoT::KeyTy &  Key 
)
static

Definition at line 22 of file MetadataImpl.h.

References I.

Referenced by llvm::DIArgList::handleChangedOperand(), and uniquifyImpl().

◆ getUniqueExitBlocksHelper()

template<class BlockT , class LoopT , typename PredicateT >
void llvm::getUniqueExitBlocksHelper ( const LoopT *  L,
SmallVectorImpl< BlockT * > &  ExitBlocks,
PredicateT  Pred 
)

◆ getUniqueInternalLinkagePostfix()

std::string llvm::getUniqueInternalLinkagePostfix ( const StringRef FName)
inline

◆ getUniqueModuleId()

std::string llvm::getUniqueModuleId ( Module M)

Produce a unique identifier for this module by taking the MD5 sum of the names of the module's strong external symbols that are not comdat members.

This identifier is normally guaranteed to be unique, or the program would fail to link due to multiply defined symbols.

If the module has no strong external symbols (such a module may still have a semantic effect if it performs global initialization), we cannot produce a unique identifier for this module, so we return the empty string.

Definition at line 300 of file ModuleUtils.cpp.

References F, llvm::MD5::final(), llvm::MD5::stringifyResult(), and llvm::MD5::update().

Referenced by convertToLocalCopy(), and llvm::SampleProfileProbePass::run().

◆ getUnitForOffset()

static CompileUnit * llvm::getUnitForOffset ( const UnitListTy Units,
uint64_t  Offset 
)
static

Similar to DWARFUnitSection::getUnitForOffset(), but returning our CompileUnit object instead.

Definition at line 63 of file DWARFLinker.cpp.

References LHS, Offset, RHS, and upper_bound().

◆ getUniversalCRTSdkDir() [1/2]

bool llvm::getUniversalCRTSdkDir ( vfs::FileSystem VFS,
std::optional< llvm::StringRef WinSdkDir,
std::optional< llvm::StringRef WinSdkVersion,
std::optional< llvm::StringRef WinSysRoot,
std::string &  Path,
std::string &  UCRTVersion 
)

◆ getUniversalCRTSdkDir() [2/2]

bool llvm::getUniversalCRTSdkDir ( vfs::FileSystem VFS,
std::optional< StringRef WinSdkDir,
std::optional< StringRef WinSdkVersion,
std::optional< StringRef WinSysRoot,
std::string &  Path,
std::string &  UCRTVersion 
)

◆ GetUnrollMetadata()

MDNode * llvm::GetUnrollMetadata ( MDNode LoopID,
StringRef  Name 
)

Given an llvm.loop loop id metadata node, returns the loop hint metadata node with the given name (for example, "llvm.loop.unroll.count").

If no such metadata node exists, then nullptr is returned.

Definition at line 927 of file LoopUnroll.cpp.

References assert(), llvm::MDNode::getNumOperands(), llvm::MDNode::getOperand(), llvm::MDString::getString(), and Name.

Referenced by getUnrollMetadataForLoop().

◆ getUTF8SequenceSize()

unsigned llvm::getUTF8SequenceSize ( const UTF8 source,
const UTF8 sourceEnd 
)

Definition at line 440 of file ConvertUTF.cpp.

References isLegalUTF8(), and trailingBytesForUTF8.

◆ getValidBranchWeightMDNode()

MDNode * llvm::getValidBranchWeightMDNode ( const Instruction I)

Get the valid branch weights metadata node.

Parameters
IThe Instruction to get the weights from.
Returns
A pointer to I's valid branch weights metadata node, if it exists. Nullptr otherwise.

Definition at line 96 of file ProfDataUtils.cpp.

References getBranchWeightMDNode(), and I.

Referenced by ConstantFoldTerminator(), and hasValidBranchWeightMD().

◆ getValueForSiteInstrProf()

void llvm::getValueForSiteInstrProf ( const void *  R,
InstrProfValueData *  Dst,
uint32_t  K,
uint32_t  S 
)

Definition at line 1043 of file InstrProf.cpp.

◆ getValueProfDataFromInst() [1/2]

bool llvm::getValueProfDataFromInst ( const Instruction Inst,
InstrProfValueKind  ValueKind,
uint32_t  MaxNumValueData,
InstrProfValueData  ValueData[],
uint32_t ActualNumValueData,
uint64_t TotalC,
bool  GetNoICPValue = false 
)

Extract the value profile data from Inst which is annotated with value profile meta data.

Return false if there is no value data annotated, otherwise return true.

Definition at line 1346 of file InstrProf.cpp.

References getValueProfDataFromInstImpl(), and mayHaveValueProfileOfKind().

Referenced by doesHistoryAllowICP(), findRefEdges(), llvm::ICallPromotionAnalysis::getPromotionCandidatesForInstruction(), runCGProfilePass(), and updateIDTMetaData().

◆ getValueProfDataFromInst() [2/2]

std::unique_ptr< InstrProfValueData[]> llvm::getValueProfDataFromInst ( const Instruction Inst,
InstrProfValueKind  ValueKind,
uint32_t  MaxNumValueData,
uint32_t ActualNumValueData,
uint64_t TotalC,
bool  GetNoICPValue = false 
)

Extract the value profile data from Inst and returns them if Inst is annotated with value profile data.

Returns nullptr otherwise. It's similar to getValueProfDataFromInst above except that an array is allocated only after a preliminary checking that the value profiles of kind ValueKind exist.

Definition at line 1331 of file InstrProf.cpp.

References getValueProfDataFromInstImpl(), and mayHaveValueProfileOfKind().

◆ getValueProfDataFromInstImpl()

static bool llvm::getValueProfDataFromInstImpl ( const MDNode *const  MD,
const uint32_t  MaxNumDataWant,
InstrProfValueData  ValueData[],
uint32_t ActualNumValueData,
uint64_t TotalC,
bool  GetNoICPValue 
)
static

◆ getVectorIntrinsicIDForCall()

Intrinsic::ID llvm::getVectorIntrinsicIDForCall ( const CallInst CI,
const TargetLibraryInfo TLI 
)

Returns intrinsic ID for call.

For the input call instruction it finds mapping intrinsic and returns its intrinsic ID, in case it does not found it return not_intrinsic.

For the input call instruction it finds mapping intrinsic and returns its ID, in case it does not found it return not_intrinsic.

Definition at line 146 of file VectorUtils.cpp.

References getIntrinsicForCallSite(), isTriviallyVectorizable(), and llvm::Intrinsic::not_intrinsic.

Referenced by doesInTreeUserNeedToExtract(), generateKeySubkey(), getSameOpcode(), llvm::LoopVectorizationCostModel::getVectorCallCost(), getVectorCallCosts(), llvm::LoopVectorizationCostModel::getVectorIntrinsicCost(), llvm::LoopVectorizationCostModel::setVectorizedCallDecision(), and llvm::VPlanTransforms::VPInstructionsToVPRecipes().

◆ getVectorSplat()

std::optional< RegOrConstant > llvm::getVectorSplat ( const MachineInstr MI,
const MachineRegisterInfo MRI 
)
Returns
a value when MI is a vector splat. The splat can be either a Register or a constant.

Examples:

%reg = COPY $physreg
%reg_splat = G_BUILD_VECTOR %reg, %reg, ..., %reg

If called on the G_BUILD_VECTOR above, this will return a RegOrConstant containing reg.

%cst = G_CONSTANT iN 4
%constant_splat = G_BUILD_VECTOR %cst, %cst, ..., %cst

In the above case, this will return a RegOrConstant containing 4.

Definition at line 1425 of file Utils.cpp.

References any_of(), drop_begin(), getIConstantSplatSExtVal(), isBuildVectorOp(), MI, MRI, and Splat.

Referenced by llvm::AArch64GISelUtils::getAArch64VectorSplat().

◆ getVisibleToRegularObjVtableGUIDs()

void llvm::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.

Definition at line 880 of file WholeProgramDevirt.cpp.

References llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), P, and typeIDVisibleToRegularObj().

◆ getVPTInstrPredicate() [1/2]

ARMVCC::VPTCodes llvm::getVPTInstrPredicate ( const MachineInstr MI)
inline

Definition at line 89 of file Thumb2InstrInfo.h.

References getVPTInstrPredicate(), and MI.

◆ getVPTInstrPredicate() [2/2]

ARMVCC::VPTCodes llvm::getVPTInstrPredicate ( const MachineInstr MI,
Register PredReg 
)

◆ getVRegSubRegDef()

MachineInstr * llvm::getVRegSubRegDef ( const TargetInstrInfo::RegSubRegPair P,
MachineRegisterInfo MRI 
)

Return the defining instruction for a given reg:subreg pair skipping copy like instructions and subreg-manipulation pseudos.

Following another subreg of a reg:subreg isn't supported.

Definition at line 9281 of file SIInstrInfo.cpp.

References assert(), followSubRegDef(), llvm::MachineOperand::getReg(), getRegSubRegPair(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUndef(), llvm::Register::isVirtual(), MI, MRI, and P.

◆ getVScaleRange()

ConstantRange llvm::getVScaleRange ( const Function F,
unsigned  BitWidth 
)

◆ getVVPOpcode()

std::optional< unsigned > llvm::getVVPOpcode ( unsigned  Opcode)

◆ getWeakLeft()

unsigned llvm::getWeakLeft ( const SUnit SU,
bool  isTop 
)

◆ getWeightFromBranchProb()

uint32_t llvm::getWeightFromBranchProb ( const BranchProbability  Prob)
inline

◆ getWhileLoopStartTargetBB()

MachineBasicBlock * llvm::getWhileLoopStartTargetBB ( const MachineInstr MI)
inline

◆ getWiderType()

static Type * llvm::getWiderType ( const DataLayout DL,
Type Ty0,
Type Ty1 
)
static

◆ GetWindowsOSVersion()

llvm::VersionTuple llvm::GetWindowsOSVersion ( )

Returns the Windows version as Major.Minor.0.BuildNumber.

Uses RtlGetVersion or GetVersionEx under the hood depending on what is available. GetVersionEx is deprecated, but this API exposes the build number which can be useful for working around certain kernel bugs.

◆ getWindowsSDKDir() [1/2]

bool llvm::getWindowsSDKDir ( vfs::FileSystem VFS,
std::optional< llvm::StringRef WinSdkDir,
std::optional< llvm::StringRef WinSdkVersion,
std::optional< llvm::StringRef WinSysRoot,
std::string &  Path,
int &  Major,
std::string &  WindowsSDKIncludeVersion,
std::string &  WindowsSDKLibVersion 
)

◆ getWindowsSDKDir() [2/2]

bool llvm::getWindowsSDKDir ( vfs::FileSystem VFS,
std::optional< StringRef WinSdkDir,
std::optional< StringRef WinSdkVersion,
std::optional< StringRef WinSysRoot,
std::string &  Path,
int &  Major,
std::string &  WindowsSDKIncludeVersion,
std::string &  WindowsSDKLibVersion 
)

◆ getWRegFromXReg()

static unsigned llvm::getWRegFromXReg ( unsigned  Reg)
inlinestatic

◆ getX86SubSuperRegister()

MCRegister llvm::getX86SubSuperRegister ( MCRegister  Reg,
unsigned  Size,
bool  High = false 
)

◆ getXPACOpcodeForKey()

static unsigned llvm::getXPACOpcodeForKey ( AArch64PACKey::ID  K)
inlinestatic

Return XPAC opcode to be used for a ptrauth strip using the given key.

Definition at line 709 of file AArch64InstrInfo.h.

References llvm_unreachable.

◆ getXRegFromWReg()

static unsigned llvm::getXRegFromWReg ( unsigned  Reg)
inlinestatic

Definition at line 70 of file AArch64BaseInfo.h.

References Reg.

◆ getXRegFromXRegTuple()

static unsigned llvm::getXRegFromXRegTuple ( unsigned  RegTuple)
inlinestatic

Definition at line 110 of file AArch64BaseInfo.h.

◆ guessSuccessors()

void llvm::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.

This should give you the correct list of successor blocks in most cases except for things like jump tables where the basic block references can't easily be found. The MIRPRinter will skip printing successors if they match the result of this function and the parser will use this function to construct a list if it is missing.

Definition at line 624 of file MIRPrinter.cpp.

References llvm::MachineBasicBlock::end(), llvm::MachineBasicBlock::getLastNonDebugInstr(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), MBB, and MI.

◆ GVTOP()

void * llvm::GVTOP ( const GenericValue GV)
inline

◆ handleAllErrors() [1/2]

void llvm::handleAllErrors ( Error  E)
inline

Check that E is a non-error, then drop it.

If E is an error, llvm_unreachable will be called.

Definition at line 976 of file Error.h.

References cantFail(), and E.

◆ handleAllErrors() [2/2]

template<typename... HandlerTs>
void llvm::handleAllErrors ( Error  E,
HandlerTs &&...  Handlers 
)

◆ handleErrorImpl() [1/2]

Error llvm::handleErrorImpl ( std::unique_ptr< ErrorInfoBase Payload)
inline

Definition at line 926 of file Error.h.

Referenced by handleErrorImpl().

◆ handleErrorImpl() [2/2]

template<typename HandlerT , typename... HandlerTs>
Error llvm::handleErrorImpl ( std::unique_ptr< ErrorInfoBase Payload,
HandlerT &&  Handler,
HandlerTs &&...  Handlers 
)

Definition at line 931 of file Error.h.

References handleErrorImpl().

◆ handleErrors()

template<typename... HandlerTs>
Error llvm::handleErrors ( Error  E,
HandlerTs &&...  Hs 
)

Pass the ErrorInfo(s) contained in E to their respective handlers.

Any unhandled errors (or Errors returned by handlers) are re-concatenated and returned. Because this function returns an error, its result must also be checked or returned. If you intend to handle all errors use handleAllErrors (which returns void, and will abort() on unhandled errors) instead.

Definition at line 947 of file Error.h.

Referenced by llvm::FileCheckString::Check(), llvm::FileCheckString::CheckDag(), llvm::FileCheckString::CheckNot(), llvm::IndexedInstrProfReader::getInstrProfRecord(), llvm::InstrProfReaderItaniumRemapper< HashTableImpl >::getRecords(), handleAllErrors(), handleExpected(), handleMaybeNoDataFoundError(), llvm::object::isNotObjectErrorInvalidFileType(), localCache(), llvm::Pattern::match(), and write().

◆ handleExecNameEncodedBEOpts()

void llvm::handleExecNameEncodedBEOpts ( StringRef  ExecName)

Handle backend options that are encoded in the executable name.

Parses some common backend options out of a specially crafted executable name (argv[0]). For example, a name like llvm-foo-fuzzer–aarch64-gisel might set up an AArch64 triple and the Global ISel selector. This should be called before parseFuzzerCLOpts if calling both.

This is meant to be used for environments like OSS-Fuzz that aren't capable of passing in command line arguments in the normal way.

Definition at line 32 of file FuzzerCLI.cpp.

References errs(), I, llvm::cl::ParseCommandLineOptions(), and llvm::StringRef::split().

◆ handleExecNameEncodedOptimizerOpts()

void llvm::handleExecNameEncodedOptimizerOpts ( StringRef  ExecName)

Handle optimizer options which are encoded in the executable name.

Same semantics as in 'handleExecNameEncodedBEOpts'.

Definition at line 68 of file FuzzerCLI.cpp.

References errs(), I, llvm::cl::ParseCommandLineOptions(), and llvm::StringRef::split().

◆ handleExpected()

template<typename T , typename RecoveryFtor , typename... HandlerTs>
Expected< T > llvm::handleExpected ( Expected< T ValOrErr,
RecoveryFtor &&  RecoveryPath,
HandlerTs &&...  Handlers 
)

Handle any errors (if present) in an Expected<T>, then try a recovery path.

If the incoming value is a success value it is returned unmodified. If it is a failure value then it the contained error is passed to handleErrors. If handleErrors is able to handle the error then the RecoveryPath functor is called to supply the final result. If handleErrors is not able to handle all errors then the unhandled errors are returned.

This utility enables the follow pattern:

enum FooStrategy { Aggressive, Conservative };
Expected<Foo> foo(FooStrategy S);
auto ResultOrErr =
foo(Aggressive),
[]() { return foo(Conservative); },
[](AggressiveStrategyError&) {
// Implicitly conusme this - we'll recover by using a conservative
// strategy.
});
Expected< T > handleExpected(Expected< T > ValOrErr, RecoveryFtor &&RecoveryPath, HandlerTs &&... Handlers)
Handle any errors (if present) in an Expected<T>, then try a recovery path.
Definition: Error.h:1005

Definition at line 1005 of file Error.h.

References handleErrors().

◆ handleSection()

Error llvm::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 
)

◆ handleUnreachableTerminator()

bool llvm::handleUnreachableTerminator ( Instruction I,
SmallVectorImpl< Value * > &  PoisonedValues 
)

If a terminator in an unreachable basic block has an operand of type Instruction, transform it into poison.

Return true if any operands are changed to poison. Original Values prior to being changed to poison are returned in PoisonedValues.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 2782 of file Local.cpp.

References llvm::PoisonValue::get(), I, and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by llvm::InstCombinerImpl::handleUnreachableFrom(), and removeAllNonTerminatorAndEHPadInstructions().

◆ hardware_concurrency()

ThreadPoolStrategy llvm::hardware_concurrency ( unsigned  ThreadCount = 0)
inline

Returns a default thread strategy where all available hardware resources are to be used, except for those initially excluded by an affinity mask.

This function takes affinity into consideration. Returns 1 when LLVM is configured with LLVM_ENABLE_THREADS=OFF.

Definition at line 185 of file Threading.h.

References llvm::ThreadPoolStrategy::ThreadsRequested.

Referenced by llvm::gsym::DwarfTransformer::convert(), get_threadpool_strategy(), llvm::dwarf_linker::classic::DWARFLinker::link(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::link(), llvm::orc::LLJIT::LLJIT(), and splitCodeGen().

◆ has_single_bit()

template<typename T , typename = std::enable_if_t<std::is_unsigned_v<T>>>
constexpr bool llvm::has_single_bit ( T  Value)
inlineconstexprnoexcept

◆ hasAssumption() [1/2]

bool llvm::hasAssumption ( const CallBase CB,
const KnownAssumptionString AssumptionStr 
)

Return true if CB or the callee has the assumption AssumptionStr attached.

Definition at line 76 of file Assumptions.cpp.

References A, AssumptionAttrKey, F, llvm::CallBase::getCalledFunction(), llvm::CallBase::getFnAttr(), and hasAssumption().

◆ hasAssumption() [2/2]

bool llvm::hasAssumption ( const Function F,
const KnownAssumptionString AssumptionStr 
)

Return true if F has the assumption AssumptionStr attached.

Definition at line 70 of file Assumptions.cpp.

References A, AssumptionAttrKey, and F.

Referenced by hasAssumption(), and llvm::AANoSync::isAlignedBarrier().

◆ hasAttributeInAssume() [1/2]

bool llvm::hasAttributeInAssume ( AssumeInst Assume,
Value IsOn,
Attribute::AttrKind  Kind,
uint64_t ArgVal = nullptr 
)
inline

◆ hasAttributeInAssume() [2/2]

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

This has a non-constant complexity. It should only be used when a single attribute is going to be queried.

Return true iff the queried attribute was found. If ArgVal is set. the argument will be stored to ArgVal.

Definition at line 43 of file AssumeBundleQueries.cpp.

References ABA_Argument, ABA_WasOn, assert(), llvm::CallBase::bundle_op_infos(), llvm::Attribute::getAttrKindFromName(), getValueFromBundleOpInfo(), llvm::Attribute::isExistingAttribute(), and llvm::Attribute::isIntAttrKind().

Referenced by hasAttributeInAssume().

◆ hasBranchWeightMD()

bool llvm::hasBranchWeightMD ( const Instruction I)

◆ hasBuiltinTypePrefix()

bool llvm::hasBuiltinTypePrefix ( StringRef  Name)

◆ hasDisableAllTransformsHint()

bool llvm::hasDisableAllTransformsHint ( const Loop L)

◆ hasDisableLICMTransformsHint()

bool llvm::hasDisableLICMTransformsHint ( const Loop L)

Look for the loop attribute that disables the LICM transformation heuristics.

Definition at line 348 of file LoopUtils.cpp.

References getBooleanLoopAttribute(), and LLVMLoopDisableLICM.

◆ hasDiscriminator()

static bool llvm::hasDiscriminator ( uint32_t  Flags)
inlinestatic

Definition at line 107 of file PseudoProbe.h.

References HasDiscriminator.

Referenced by llvm::MCPseudoProbeDecoder::buildAddress2ProbeMap().

◆ hasDistributeTransformation()

TransformationMode llvm::hasDistributeTransformation ( const Loop L)

◆ hasELFMagic()

static bool llvm::hasELFMagic ( StringRef  FilePath)
static

◆ hasFloatFn()

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

Definition at line 1394 of file BuildLibCalls.cpp.

References llvm::Type::DoubleTyID, llvm::Type::FloatTyID, llvm::Type::getTypeID(), llvm::Type::HalfTyID, and isLibFuncEmittable().

Referenced by getFloatFn(), getSqrtCall(), and llvm::InstCombinerImpl::visitFDiv().

◆ hash_combine()

template<typename ... Ts>
hash_code llvm::hash_combine ( const Ts &...  args)

Combine values into a single hash_code.

This routine accepts a varying number of arguments of any type. It will attempt to combine them into a single hash_code. For user-defined types it attempts to call a

See also
hash_value overload (via ADL) for the type. For integer and pointer types it directly combines their data into the resulting hash_code.

The result is suitable for returning from a user's hash_value implementation for their user-defined type. Consumers of a type should not call this routine, they should instead call 'hash_value'.

Definition at line 613 of file Hashing.h.

References args, llvm::hashing::detail::hash_combine_recursive_helper::buffer, and llvm::hashing::detail::hash_combine_recursive_helper::combine().

Referenced by EliminateDuplicatePHINodesSetBasedImpl(), encodePHINodeData(), generateKeySubkey(), llvm::dwarf_linker::classic::DeclContextTree::getChildDeclContext(), llvm::vfs::getDirectoryID(), llvm::vfs::getFileID(), llvm::InlineAsmKeyType::getHash(), llvm::ConstantExprKeyType::getHash(), llvm::MDNodeKeyImpl< DILocation >::getHashValue(), llvm::MDNodeKeyImpl< GenericDINode >::getHashValue(), llvm::MDNodeKeyImpl< DISubrange >::getHashValue(), llvm::MDNodeKeyImpl< DIGenericSubrange >::getHashValue(), llvm::MDNodeKeyImpl< DIEnumerator >::getHashValue(), llvm::MDNodeKeyImpl< DIBasicType >::getHashValue(), llvm::MDNodeKeyImpl< DIStringType >::getHashValue(), llvm::MDNodeKeyImpl< DIDerivedType >::getHashValue(), llvm::MDNodeKeyImpl< DICompositeType >::getHashValue(), llvm::MDNodeKeyImpl< DISubroutineType >::getHashValue(), llvm::MDNodeKeyImpl< DIFile >::getHashValue(), llvm::MDNodeKeyImpl< DISubprogram >::getHashValue(), llvm::MDNodeKeyImpl< DILexicalBlock >::getHashValue(), llvm::MDNodeKeyImpl< DILexicalBlockFile >::getHashValue(), llvm::MDNodeKeyImpl< DINamespace >::getHashValue(), llvm::MDNodeKeyImpl< DICommonBlock >::getHashValue(), llvm::MDNodeKeyImpl< DIModule >::getHashValue(), llvm::MDNodeKeyImpl< DITemplateTypeParameter >::getHashValue(), llvm::MDNodeKeyImpl< DITemplateValueParameter >::getHashValue(), llvm::MDNodeKeyImpl< DIGlobalVariable >::getHashValue(), llvm::MDNodeKeyImpl< DILocalVariable >::getHashValue(), llvm::MDNodeKeyImpl< DILabel >::getHashValue(), llvm::MDNodeKeyImpl< DIGlobalVariableExpression >::getHashValue(), llvm::MDNodeKeyImpl< DIObjCProperty >::getHashValue(), llvm::MDNodeKeyImpl< DIImportedEntity >::getHashValue(), llvm::MDNodeKeyImpl< DIMacro >::getHashValue(), llvm::MDNodeKeyImpl< DIMacroFile >::getHashValue(), llvm::GVNExpression::BasicExpression::getHashValue(), llvm::GVNExpression::MemoryExpression::getHashValue(), llvm::GVNExpression::AggregateValueExpression::getHashValue(), llvm::GVNExpression::PHIExpression::getHashValue(), llvm::GVNExpression::VariableExpression::getHashValue(), llvm::GVNExpression::ConstantExpression::getHashValue(), llvm::GVNExpression::UnknownExpression::getHashValue(), llvm::DenseMapInfo< Attribute::AttrKind >::getHashValue(), llvm::DenseMapInfo< at::VarRecord >::getHashValue(), llvm::DenseMapInfo< BasicBlockEdge >::getHashValue(), llvm::DenseMapInfo< CIEKey >::getHashValue(), llvm::DenseMapInfo< coverage::CounterExpression >::getHashValue(), llvm::DenseMapInfo< CSKYTargetStreamer::SymbolIndex >::getHashValue(), llvm::DenseMapInfo< DebugVariable >::getHashValue(), llvm::DenseMapInfo< gsym::FileEntry >::getHashValue(), llvm::AnonStructTypeKeyInfo::getHashValue(), llvm::FunctionTypeKeyInfo::getHashValue(), llvm::TargetExtTypeKeyInfo::getHashValue(), llvm::DenseMapInfo< MemOpKey >::getHashValue(), llvm::DenseMapInfo< MemoryLocOrCall >::getHashValue(), llvm::DenseMapInfo< object::SectionRef >::getHashValue(), llvm::DenseMapInfo< SlotWithTag >::getHashValue(), llvm::DenseMapInfo< SymbolsMapKey >::getHashValue(), llvm::DenseMapInfo< wasm::WasmGlobalType, void >::getHashValue(), llvm::DenseMapInfo< wasm::WasmLimits, void >::getHashValue(), llvm::DenseMapInfo< wasm::WasmSignature, void >::getHashValue(), llvm::DenseMapInfo< wasm::WasmTableType, void >::getHashValue(), getHashValueImpl(), hash_value(), hashCallInst(), hashInstructionMapping(), hashPartialMapping(), instrToSignature(), stableHashValue(), and llvm::hashbuilder_detail::HashCodeHasher::update().

◆ hash_combine_range()

template<typename InputIteratorT >
hash_code llvm::hash_combine_range ( InputIteratorT  first,
InputIteratorT  last 
)

◆ hash_value() [1/16]

template<typename T >
hash_code llvm::hash_value ( ArrayRef< T S)

◆ hash_value() [2/16]

hash_code llvm::hash_value ( const APFixedPoint Val)
inline

◆ hash_value() [3/16]

hash_code llvm::hash_value ( const APFloat Arg)

See friend declarations above.

These additional declarations are required in order to compile LLVM with IBM xlC compiler.

Definition at line 5168 of file APFloat.cpp.

◆ hash_value() [4/16]

hash_code llvm::hash_value ( const APInt Arg)

◆ hash_value() [5/16]

hash_code llvm::hash_value ( const FixedPointSemantics Val)
inline

◆ hash_value() [6/16]

hash_code llvm::hash_value ( const MachineOperand MO)

Note that this includes the same information in the hash that isIdenticalTo uses for comparison. It is thus suited for use in hash tables which use that function for equality comparisons only. This must stay exactly in sync with isIdenticalTo above.

Definition at line 389 of file MachineOperand.cpp.

References assert(), llvm::MachineOperand::getBlockAddress(), llvm::MachineOperand::getCFIIndex(), llvm::MachineOperand::getCImm(), llvm::MachineOperand::getFPImm(), llvm::MachineOperand::getGlobal(), llvm::MachineOperand::getImm(), llvm::MachineOperand::getIndex(), llvm::MachineOperand::getInstrRefInstrIndex(), llvm::MachineOperand::getInstrRefOpIndex(), llvm::MachineOperand::getIntrinsicID(), llvm::MachineOperand::getMBB(), llvm::MachineOperand::getMCSymbol(), llvm::MachineOperand::getMetadata(), getMFIfAvailable(), llvm::MachineOperand::getOffset(), llvm::MachineOperand::getPredicate(), llvm::MachineOperand::getReg(), llvm::MachineOperand::getRegMask(), llvm::MachineOperand::getRegMaskSize(), llvm::MachineOperand::getShuffleMask(), llvm::MachineOperand::getSubReg(), llvm::MachineOperand::getSymbolName(), llvm::MachineOperand::getTargetFlags(), llvm::MachineOperand::getType(), hash_combine(), llvm::MachineOperand::isDef(), llvm_unreachable, llvm::MachineOperand::MO_BlockAddress, llvm::MachineOperand::MO_CFIIndex, llvm::MachineOperand::MO_CImmediate, llvm::MachineOperand::MO_ConstantPoolIndex, llvm::MachineOperand::MO_DbgInstrRef, llvm::MachineOperand::MO_ExternalSymbol, llvm::MachineOperand::MO_FPImmediate, llvm::MachineOperand::MO_FrameIndex, llvm::MachineOperand::MO_GlobalAddress, llvm::MachineOperand::MO_Immediate, llvm::MachineOperand::MO_IntrinsicID, llvm::MachineOperand::MO_JumpTableIndex, llvm::MachineOperand::MO_MachineBasicBlock, llvm::MachineOperand::MO_MCSymbol, llvm::MachineOperand::MO_Metadata, llvm::MachineOperand::MO_Predicate, llvm::MachineOperand::MO_Register, llvm::MachineOperand::MO_RegisterLiveOut, llvm::MachineOperand::MO_RegisterMask, llvm::MachineOperand::MO_ShuffleMask, llvm::MachineOperand::MO_TargetIndex, stable_hash_combine_array(), and TRI.

◆ hash_value() [7/16]

hash_code llvm::hash_value ( const MCRegister Reg)
inline

Definition at line 124 of file MCRegister.h.

◆ hash_value() [8/16]

hash_code llvm::hash_value ( const RegisterBankInfo::PartialMapping PartMapping)

Hashing function for PartialMapping.

Overloaded version of hash_value for a PartialMapping.

It is required for the hashing of ValueMapping.

Definition at line 276 of file RegisterBankInfo.cpp.

References hashPartialMapping(), llvm::RegisterBankInfo::PartialMapping::Length, llvm::RegisterBankInfo::PartialMapping::RegBank, and llvm::RegisterBankInfo::PartialMapping::StartIdx.

◆ hash_value() [9/16]

template<typename T >
hash_code llvm::hash_value ( const std::basic_string< T > &  arg)

Compute a hash_code for a standard string.

Definition at line 669 of file Hashing.h.

References hash_combine_range().

◆ hash_value() [10/16]

template<typename T >
hash_code llvm::hash_value ( const std::optional< T > &  arg)

Compute a hash_code for a standard string.

Definition at line 673 of file Hashing.h.

References hash_combine(), and hash_value().

◆ hash_value() [11/16]

template<typename T , typename U >
hash_code llvm::hash_value ( const std::pair< T, U > &  arg)

Compute a hash_code for a pair of objects.

Definition at line 658 of file Hashing.h.

References hash_combine().

◆ hash_value() [12/16]

template<typename... Ts>
hash_code llvm::hash_value ( const std::tuple< Ts... > &  arg)

Compute a hash_code for a tuple.

Definition at line 662 of file Hashing.h.

References hash_combine().

◆ hash_value() [13/16]

template<typename T >
std::enable_if_t< is_detected< hashbuilder_detail::HashCodeHashBuilder::HasAddHashT, T >::value, hash_code > llvm::hash_value ( const T Value)

Provide a default implementation of hash_value when addHash(const T &) is supported.

Definition at line 406 of file HashBuilder.h.

References llvm::HashBuilder< HasherT, Endianness >::add(), and llvm::HashBuilderBase< HasherT >::getHasher().

◆ hash_value() [14/16]

template<typename T >
hash_code llvm::hash_value ( const T ptr)

Compute a hash_code for a pointer's address.

N.B.: This hashes the address. Not the value and not the type.

Definition at line 650 of file Hashing.h.

◆ hash_value() [15/16]

hash_code llvm::hash_value ( StringRef  S)

Compute a hash_code for a StringRef.

Definition at line 614 of file StringRef.cpp.

References llvm::StringRef::begin(), llvm::StringRef::end(), and hash_combine_range().

◆ hash_value() [16/16]

template<typename T >
std::enable_if_t< is_integral_or_enum< T >::value, hash_code > llvm::hash_value ( T  value)

Compute a hash_code for any integer value.

Note that this function is intended to compute the same hash_code for a particular value without regard to the pre-promotion type. This is in contrast to hash_combine which may produce different hash_codes for differing argument types even if they would implicit promote to a common type without changing the value.

Definition at line 643 of file Hashing.h.

References value.

◆ hasInstrProfHashMismatch()

bool llvm::hasInstrProfHashMismatch ( MachineFunction MF)

This checks if the source of this function has drifted since this binary was profiled previously.

For now, we are piggy backing on what PGO does to detect this with instrumented profiles. PGO emits an hash of the IR and checks if the hash has changed. Advanced basic block layout is usually done on top of PGO optimized binaries and hence this check works well in practice.

Definition at line 276 of file BasicBlockSections.cpp.

References BBSectionsDetectSourceDrift, llvm::MachineFunction::getFunction(), llvm::GlobalObject::getMetadata(), N, and llvm::MDNode::operands().

◆ hasIterationCountInvariantInParent()

bool llvm::hasIterationCountInvariantInParent ( Loop L,
ScalarEvolution SE 
)

Check inner loop (L) backedge count is known to be invariant on all iterations of its outer loop.

If the loop has no parent, this is trivially true.

Definition at line 899 of file LoopUtils.cpp.

References llvm::ScalarEvolution::getExitCount(), llvm::ScalarEvolution::getLoopDisposition(), llvm::LoopBase< BlockT, LoopT >::getLoopLatch(), llvm::LoopBase< BlockT, LoopT >::getParentLoop(), llvm::SCEV::getType(), llvm::Type::isIntegerTy(), and llvm::ScalarEvolution::LoopInvariant.

◆ hasLessThanNumFused()

bool llvm::hasLessThanNumFused ( const SUnit SU,
unsigned  FuseLimit 
)

Checks if the number of cluster edges between SU and its predecessors is less than FuseLimit.

Definition at line 46 of file MacroFusion.cpp.

References getPredClusterSU().

Referenced by fuseInstructionPair().

◆ hasLICMVersioningTransformation()

TransformationMode llvm::hasLICMVersioningTransformation ( const Loop L)

◆ HasLowerConstantMaterializationCost()

bool llvm::HasLowerConstantMaterializationCost ( unsigned  Val1,
unsigned  Val2,
const ARMSubtarget Subtarget,
bool  ForCodesize = false 
)

Returns true if Val1 has a lower Constant Materialization Cost than Val2.

Uses the cost from ConstantMaterializationCost, first with ForCodesize as specified. If the scores are equal, return the comparison for !ForCodesize.

Definition at line 5662 of file ARMBaseInstrInfo.cpp.

References ConstantMaterializationCost().

◆ hasMustProgress()

bool llvm::hasMustProgress ( const Loop L)

Look for the loop attribute that requires progress within the loop.

Note: Most consumers probably want "isMustProgress" which checks the containing function attribute too.

Definition at line 1114 of file LoopInfo.cpp.

References getBooleanLoopAttribute(), and LLVMLoopMustProgress.

Referenced by isLoopDead(), and isMustProgress().

◆ hasNItems() [1/2]

template<typename ContainerTy >
bool llvm::hasNItems ( ContainerTy &&  C,
unsigned  N 
)

Returns true if the given container has exactly N items.

Definition at line 2521 of file STLExtras.h.

References llvm::CallingConv::C, hasNItems(), and N.

◆ hasNItems() [2/2]

template<typename IterTy , typename Pred = bool (*)(const decltype(*std::declval<IterTy>()) &)>
bool llvm::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.

Runs in O(N) time. Not meant for use with random-access iterators. Can optionally take a predicate to filter lazily some items.

Definition at line 2465 of file STLExtras.h.

Referenced by hasNItems(), llvm::BasicBlock::hasNPredecessors(), llvm::Value::hasNUndroppableUses(), and llvm::Value::hasNUses().

◆ hasNItemsOrLess() [1/2]

template<typename ContainerTy >
bool llvm::hasNItemsOrLess ( ContainerTy &&  C,
unsigned  N 
)

Returns true if the given container has N or less items.

Definition at line 2533 of file STLExtras.h.

References llvm::CallingConv::C, hasNItemsOrLess(), and N.

◆ hasNItemsOrLess() [2/2]

template<typename IterTy , typename Pred = bool (*)(const decltype(*std::declval<IterTy>()) &)>
bool llvm::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.

Can optionally take a predicate to lazily filter some items.

Definition at line 2511 of file STLExtras.h.

Referenced by EliminateDuplicatePHINodes(), llvm::MachineRegisterInfo::hasAtMostUserInstrs(), and hasNItemsOrLess().

◆ hasNItemsOrMore() [1/2]

template<typename ContainerTy >
bool llvm::hasNItemsOrMore ( ContainerTy &&  C,
unsigned  N 
)

Returns true if the given container has N or more items.

Definition at line 2527 of file STLExtras.h.

References llvm::CallingConv::C, hasNItemsOrMore(), and N.

◆ hasNItemsOrMore() [2/2]

template<typename IterTy , typename Pred = bool (*)(const decltype(*std::declval<IterTy>()) &)>
bool llvm::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.

Runs in O(N) time. Not meant for use with random-access iterators. Can optionally take a predicate to lazily filter some items.

Definition at line 2490 of file STLExtras.h.

Referenced by hasNItemsOrMore(), llvm::BasicBlock::hasNPredecessorsOrMore(), llvm::Value::hasNUndroppableUsesOrMore(), and llvm::Value::hasNUsesOrMore().

◆ hasOnlySimpleTerminator()

bool llvm::hasOnlySimpleTerminator ( const Function F)

Definition at line 2214 of file BasicBlockUtils.cpp.

References F.

Referenced by FixIrreducibleImpl().

◆ hasOutsideLoopUser()

static bool llvm::hasOutsideLoopUser ( const Loop TheLoop,
Instruction Inst,
SmallPtrSetImpl< Value * > &  AllowedExit 
)
static

Check that the instruction has outside loop users and is not an identified reduction variable.

Definition at line 416 of file LoopVectorizationLegality.cpp.

References llvm::LoopBase< BlockT, LoopT >::contains(), llvm::SmallPtrSetImpl< PtrType >::count(), dbgs(), LLVM_DEBUG, and llvm::Value::users().

◆ hasPartialIVCondition()

std::optional< IVConditionInfo > llvm::hasPartialIVCondition ( 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.

If all paths from either the true or false successor to the header or loop exists do not modify the memory feeding the condition, perform 'partial unswitching'. That is, duplicate the instructions feeding the condition in the pre-header. Then unswitch on the duplicated condition. The condition is now known in the unswitched version for the 'invariant' path through the original loop.

If the branch condition of the header is partially invariant, return a pair containing the instructions to duplicate and a boolean Constant to update the condition in the loops created for the true or false successors.

Definition at line 1927 of file LoopUtils.cpp.

References all_of(), any_of(), llvm::SmallVectorImpl< T >::append(), assert(), llvm::SmallPtrSetImpl< PtrType >::contains(), llvm::SmallVectorBase< Size_T >::empty(), llvm::MemoryLocation::get(), llvm::MemoryAccess::getBlock(), llvm::ConstantInt::getFalse(), llvm::MemorySSA::getMemoryAccess(), llvm::AAResults::getModRefInfo(), llvm::ConstantInt::getTrue(), I, Info, llvm::SmallPtrSetImpl< PtrType >::insert(), isModSet(), isMustProgress(), MSSAThreshold, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallPtrSetImplBase::size(), succ_begin(), succ_end(), successors(), and llvm::Value::uses().

Referenced by collectUnswitchCandidates().

◆ hasPointeeTypeAttr()

bool llvm::hasPointeeTypeAttr ( Argument Arg)
inline

◆ hasProcessableCondition()

static bool llvm::hasProcessableCondition ( const Loop L,
ScalarEvolution SE,
ICmpInst ICmp,
ConditionInfo &  Cond,
bool  IsExitCond 
)
static

◆ hasProfMD()

bool llvm::hasProfMD ( const Instruction I)

Checks if an Instruction has MD_prof Metadata.

Definition at line 72 of file ProfDataUtils.cpp.

References I.

◆ hasReductionStartParam()

bool llvm::hasReductionStartParam ( unsigned  OPC)

◆ hasSingleElement()

template<typename ContainerTy >
bool llvm::hasSingleElement ( ContainerTy &&  C)

◆ hasUnrollAndJamTransformation()

TransformationMode llvm::hasUnrollAndJamTransformation ( const Loop L)

◆ hasUnrollTransformation()

TransformationMode llvm::hasUnrollTransformation ( const Loop L)

◆ hasUTF16ByteOrderMark()

bool llvm::hasUTF16ByteOrderMark ( ArrayRef< char SrcBytes)

Returns true if a blob of text starts with a UTF-16 big or little endian byte order mark.

Definition at line 79 of file ConvertUTFWrapper.cpp.

References llvm::ArrayRef< T >::size().

◆ hasValidBranchWeightMD()

bool llvm::hasValidBranchWeightMD ( const Instruction I)

Checks if an instructions has valid Branch Weight Metadata.

Parameters
IThe instruction to check
Returns
True if I has an MD_prof node containing valid Branch Weights, i.e., one weight for each successor. False otherwise.

Definition at line 85 of file ProfDataUtils.cpp.

References getValidBranchWeightMDNode(), and I.

◆ HasValue()

template<typename M >
detail::ValueMatchesPoly< M > llvm::HasValue ( Matcher)

◆ hasVectorizeTransformation()

TransformationMode llvm::hasVectorizeTransformation ( const Loop L)

◆ hasWholeProgramVisibility()

bool llvm::hasWholeProgramVisibility ( bool  WholeProgramVisibilityEnabledInLTO)

◆ haveNoCommonBitsSet()

bool llvm::haveNoCommonBitsSet ( const WithCache< const Value * > &  LHSCache,
const WithCache< const Value * > &  RHSCache,
const SimplifyQuery SQ 
)

◆ heavyweight_hardware_concurrency() [1/2]

ThreadPoolStrategy llvm::heavyweight_hardware_concurrency ( StringRef  Num)
inline

Like heavyweight_hardware_concurrency() above, but builds a strategy based on the rules described for get_threadpool_strategy().

If Num is invalid, returns a default strategy where one thread per hardware core is used.

Definition at line 173 of file Threading.h.

References get_threadpool_strategy(), and heavyweight_hardware_concurrency().

◆ heavyweight_hardware_concurrency() [2/2]

ThreadPoolStrategy llvm::heavyweight_hardware_concurrency ( unsigned  ThreadCount = 0)
inline

Returns a thread strategy for tasks requiring significant memory or other resources.

To be used for workloads where hardware_concurrency() proves to be less efficient. Avoid this strategy if doing lots of I/O. Currently based on physical cores, if available for the host system, otherwise falls back to hardware_concurrency(). Returns 1 when LLVM is configured with LLVM_ENABLE_THREADS = OFF.

Definition at line 162 of file Threading.h.

References llvm::ThreadPoolStrategy::ThreadsRequested, and llvm::ThreadPoolStrategy::UseHyperThreads.

Referenced by heavyweight_hardware_concurrency(), llvm::ThinLTOCodeGenerator::run(), and splitCodeGen().

◆ HexagonConvertUnits()

unsigned llvm::HexagonConvertUnits ( unsigned  ItinUnits,
unsigned Lanes 
)

◆ HexagonGetLastSlot()

unsigned llvm::HexagonGetLastSlot ( )

◆ HexagonLowerToMC()

void llvm::HexagonLowerToMC ( const MCInstrInfo MCII,
const MachineInstr MI,
MCInst MCB,
HexagonAsmPrinter AP 
)

◆ HexagonMCShuffle() [1/3]

bool llvm::HexagonMCShuffle ( MCContext Context,
bool  ReportErrors,
MCInstrInfo const MCII,
MCSubtargetInfo const STI,
MCInst MCB 
)

◆ HexagonMCShuffle() [2/3]

bool llvm::HexagonMCShuffle ( MCContext Context,
MCInstrInfo const MCII,
MCSubtargetInfo const STI,
MCInst MCB,
MCInst const AddMI,
int  fixupCount 
)

◆ HexagonMCShuffle() [3/3]

bool llvm::HexagonMCShuffle ( MCContext Context,
MCInstrInfo const MCII,
MCSubtargetInfo const STI,
MCInst MCB,
SmallVector< DuplexCandidate, 8 >  possibleDuplexes 
)

◆ HI22()

static unsigned llvm::HI22 ( int64_t  imm)
inlinestatic

Definition at line 173 of file Sparc.h.

Referenced by HIX22(), and replaceFI().

◆ Hi_32()

constexpr uint32_t llvm::Hi_32 ( uint64_t  Value)
inlineconstexpr

◆ HIX22()

static unsigned llvm::HIX22 ( int64_t  imm)
inlinestatic

Definition at line 181 of file Sparc.h.

References HI22().

Referenced by replaceFI().

◆ hoistAllInstructionsInto()

void llvm::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.

The moved instructions receive the insertion point debug location values (DILocations) and their debug intrinsic instructions are removed.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 3572 of file Local.cpp.

References llvm::BasicBlock::begin(), dropDebugUsers(), llvm::BasicBlock::end(), llvm::Instruction::getDebugLoc(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::BasicBlock::getTerminator(), I, and llvm::BasicBlock::splice().

Referenced by FoldTwoEntryPHINode().

◆ hoistRegion()

bool llvm::hoistRegion ( DomTreeNode N,
AAResults AA,
LoopInfo LI,
DominatorTree DT,
AssumptionCache AC,
TargetLibraryInfo TLI,
Loop CurLoop,
MemorySSAUpdater MSSAU,
ScalarEvolution SE,
ICFLoopSafetyInfo SafetyInfo,
SinkAndHoistLICMFlags Flags,
OptimizationRemarkEmitter ORE,
bool  LoopNestMode,
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.

This allows us to visit definitions before uses, allowing us to hoist a loop body in one pass without iteration. Takes DomTreeNode, AAResults, LoopInfo, DominatorTree, TargetLibraryInfo, Loop, AliasSet information for all instructions of the loop and loop safety information as arguments. Diagnostics is emitted via ORE. It returns changed status. AllowSpeculation is whether values should be hoisted even if they are not guaranteed to execute in the loop, but are safe to speculatively execute.

This allows us to visit definitions before uses, allowing us to hoist a loop body in one pass without iteration.

Definition at line 874 of file LICM.cpp.

References all_of(), assert(), canSinkOrHoistInst(), ControlFlowHoisting, dbgs(), llvm::ICFLoopSafetyInfo::doesNotWriteMemoryBefore(), llvm::DominatorTree::dominates(), eraseInstruction(), llvm::DomTreeNodeBase< NodeT >::getBlock(), llvm::DomTreeNodeBase< NodeT >::getIDom(), llvm::PHINode::getIncomingBlock(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::LoopBase< BlockT, LoopT >::getLoopPreheader(), llvm::MemorySSAUpdater::getMemorySSA(), llvm::Value::getNameOrAsOperand(), llvm::DominatorTreeBase< NodeT, IsPostDom >::getNode(), llvm::PHINode::getNumIncomingValues(), llvm::Instruction::getParent(), llvm::BasicBlock::getTerminator(), llvm::Loop::hasLoopInvariantOperands(), hoist(), hoistArithmetics(), I, llvm::ICFLoopSafetyInfo::insertInstructionTo(), inSubLoop(), llvm::ICFLoopSafetyInfo::isGuaranteedToExecute(), isGuard(), llvm::Loop::isLoopInvariant(), isSafeToExecuteUnconditionally(), LLVM_DEBUG, make_early_inc_range(), llvm::PatternMatch::match(), moveInstructionBefore(), N, llvm::LoopBlocksRPO::perform(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), reverse(), llvm::PHINode::setIncomingBlock(), llvm::LoopInfoBase< BlockT, LoopT >::verify(), llvm::DominatorTreeBase< NodeT, IsPostDom >::verify(), llvm::MemorySSA::verifyMemorySSA(), and VerifyMemorySSA.

◆ HUerrBound()

static unsigned int llvm::HUerrBound ( bool  inexactMultiply,
unsigned int  HUerr1,
unsigned int  HUerr2 
)
static

Definition at line 671 of file APFloat.cpp.

References assert().

◆ identify_magic() [1/2]

std::error_code llvm::identify_magic ( const Twine path,
file_magic result 
)

Get and identify path's type based on its content.

Parameters
pathInput path.
resultSet to the type of file, or file_magic::unknown.
Returns
errc::success if result has been successfully set, otherwise a platform-specific error_code.

Definition at line 281 of file Magic.cpp.

References llvm::MemoryBuffer::getFile(), and identify_magic().

◆ identify_magic() [2/2]

file_magic llvm::identify_magic ( StringRef  magic)

Identify the type of a binary file based on how magical it is.

Identify the magic in magic.

Definition at line 33 of file Magic.cpp.

References llvm::file_magic::archive, llvm::COFF::BigObjMagic, llvm::file_magic::bitcode, llvm::file_magic::clang_ast, llvm::COFF::ClGlObjMagic, llvm::file_magic::coff_cl_gl_object, llvm::file_magic::coff_import_library, llvm::file_magic::coff_object, llvm::file_magic::cuda_fatbinary, llvm::file_magic::dxcontainer_object, llvm::file_magic::elf, llvm::file_magic::elf_core, llvm::file_magic::elf_executable, llvm::file_magic::elf_relocatable, llvm::file_magic::elf_shared_object, llvm::file_magic::goff_object, llvm::file_magic::macho_bundle, llvm::file_magic::macho_core, llvm::file_magic::macho_dsym_companion, llvm::file_magic::macho_dynamic_linker, llvm::file_magic::macho_dynamically_linked_shared_lib, llvm::file_magic::macho_dynamically_linked_shared_lib_stub, llvm::file_magic::macho_executable, llvm::file_magic::macho_file_set, llvm::file_magic::macho_fixed_virtual_memory_shared_lib, llvm::file_magic::macho_kext_bundle, llvm::file_magic::macho_object, llvm::file_magic::macho_preload_executable, llvm::file_magic::macho_universal_binary, memcmp, llvm::file_magic::minidump, llvm::file_magic::offload_binary, llvm::file_magic::offload_bundle, llvm::file_magic::offload_bundle_compressed, offsetof, llvm::file_magic::pdb, llvm::file_magic::pecoff_executable, llvm::COFF::PEMagic, llvm::support::endian::read32le(), llvm::file_magic::spirv_object, startswith(), llvm::file_magic::tapi_file, llvm::file_magic::unknown, llvm::file_magic::wasm_object, llvm::file_magic::windows_resource, llvm::COFF::WinResMagic, llvm::file_magic::xcoff_object_32, and llvm::file_magic::xcoff_object_64.

Referenced by appendFile(), llvm::object::OffloadBinary::create(), llvm::object::createBinary(), llvm::pdb::NativeSession::createFromExe(), llvm::jitlink::createLinkGraphFromCOFFObject(), llvm::jitlink::createLinkGraphFromObject(), llvm::object::ObjectFile::createObjectFile(), llvm::object::SymbolicFile::createSymbolicFile(), llvm::NewArchiveMember::detectKindFromObject(), doList(), llvm::object::extractOffloadBinaries(), llvm::object::IRObjectFile::findBitcodeInMemBuffer(), getSymbolicFile(), hasELFMagic(), identify_magic(), loadPdbFile(), and llvm::pdb::InputFile::open().

◆ identifyNoAliasScopesToClone() [1/2]

void llvm::identifyNoAliasScopesToClone ( ArrayRef< BasicBlock * >  BBs,
SmallVectorImpl< MDNode * > &  NoAliasDeclScopes 
)

Find the 'llvm.experimental.noalias.scope.decl' intrinsics in the specified basic blocks and extract their scope.

These are candidates for duplication when cloning.

Definition at line 1235 of file CloneFunction.cpp.

References I, and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by llvm::JumpThreadingPass::cloneInstructions(), peelLoop(), and UnrollLoop().

◆ identifyNoAliasScopesToClone() [2/2]

void llvm::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.

These are candidates for duplication when cloning.

Definition at line 1243 of file CloneFunction.cpp.

References End, I, make_range(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

◆ idf_begin()

template<class T >
idf_iterator< T > llvm::idf_begin ( const T G)

◆ idf_end()

template<class T >
idf_iterator< T > llvm::idf_end ( const T G)

◆ idf_ext_begin()

template<class T , class SetTy >
idf_ext_iterator< T, SetTy > llvm::idf_ext_begin ( const T G,
SetTy &  S 
)

◆ idf_ext_end()

template<class T , class SetTy >
idf_ext_iterator< T, SetTy > llvm::idf_ext_end ( const T G,
SetTy &  S 
)

◆ impliesPoison()

bool llvm::impliesPoison ( const Value ValAssumedPoison,
const Value V 
)

Return true if V is poison given that ValAssumedPoison is already poison.

For example, if ValAssumedPoison is icmp X, 10 and V is icmp X, 5, impliesPoison returns true.

Definition at line 7164 of file ValueTracking.cpp.

Referenced by createLogicalOp(), llvm::ScalarEvolution::getSequentialMinMaxExpr(), handleOtherCmpSelSimplifications(), simplifySelectInst(), and simplifyWithOpReplaced().

◆ inconvertibleErrorCode()

std::error_code llvm::inconvertibleErrorCode ( )

The value returned by this function can be returned from convertToErrorCode for Error values where no sensible translation to std::error_code exists.

It should only be used in this situation, and should never be used where a sensible conversion to std::error_code is available, as attempts to convert to/from this error will result in a fatal error. (i.e. it is a programmatic error to try to convert such a value).

Definition at line 90 of file Error.cpp.

Referenced by llvm::orc::addFunctionPointerRelocationsToCurrentSymbol(), llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::addGlobalInstructionSelect(), llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::addInstSelector(), llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::addIRTranslator(), llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::addLegalizeMachineIR(), llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::addRegBankSelect(), llvm::jitlink::InProcessMemoryManager::allocate(), llvm::orc::LLJIT::applyDataLayout(), badOS(), llvm::LLVMTargetMachine::buildCodeGenPipeline(), llvm::orc::shared::WrapperFunction< SPSRetTagT(SPSTagTs...)>::call(), llvm::orc::shared::WrapperFunction< SPSRetTagT(SPSTagTs...)>::callAsync(), llvm::DWARFDebugNames::SentinelError::convertToErrorCode(), llvm::mca::RecycledInstErr::convertToErrorCode(), llvm::mca::InstStreamPause::convertToErrorCode(), llvm::mca::InstructionError< T >::convertToErrorCode(), llvm::SymbolRemappingParseError::convertToErrorCode(), llvm::remarks::EndOfFileError::convertToErrorCode(), llvm::BinaryStreamError::convertToErrorCode(), llvm::json::ParseError::convertToErrorCode(), llvm::UndefVarError::convertToErrorCode(), llvm::ErrorDiagnostic::convertToErrorCode(), llvm::NotFoundError::convertToErrorCode(), llvm::ErrorReported::convertToErrorCode(), llvm::remarks::YAMLParseError::convertToErrorCode(), llvm::orc::MachOPlatform::Create(), llvm::orc::ELFNixPlatform::Create(), llvm::orc::COFFPlatform::Create(), llvm::orc::shared::WrapperFunctionCall::Create(), llvm::orc::EPCIndirectionUtils::Create(), llvm::orc::PerfSupportPlugin::Create(), llvm::orc::SharedMemoryMapper::Create(), llvm::orc::StaticLibraryDefinitionGenerator::Create(), llvm::orc::FDSimpleRemoteEPCTransport::Create(), llvm::memprof::RawMemProfReader::create(), llvm::orc::createDWARFContext(), createError(), createError(), llvm::orc::createLocalCompileCallbackManager(), llvm::orc::createLocalLazyCallThroughManager(), llvm::LLVMTargetMachine::createMCStreamer(), llvm::MachO::createRegexFromGlob(), llvm::orc::JITTargetMachineBuilder::createTargetMachine(), llvm::codegen::createTargetMachineForTriple(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::deallocate(), llvm::RuntimeDyldMachOAArch64::decodeAddend(), llvm::RuntimeDyldMachOARM::decodeAddend(), llvm::orc::ORCPlatformSupport::deinitialize(), llvm::orc::shared::detail::ResultDeserializer< SPSError, Error >::deserialize(), llvm::orc::shared::detail::ResultDeserializer< SPSExpected< SPSTagT >, Expected< T > >::deserialize(), llvm::orc::shared::detail::ResultDeserializer< SPSRetTagT, RetT >::deserialize(), llvm::logicalview::LVReader::doLoad(), llvm::orc::enableDebuggerSupport(), llvm::orc::JITCompileCallbackManager::executeCompileCallback(), llvm::MachO::InterfaceFile::extract(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::finalize(), llvm::RuntimeDyldImpl::finalizeAsync(), llvm::orc::LazyCallThroughManager::findReexport(), llvm::lto::findThinLTOModule(), llvm::jitlink::ELFLinkGraphBuilder< ELFT >::forEachRelaRelocation(), llvm::jitlink::COFFLinkGraphBuilder::forEachRelocation(), llvm::jitlink::ELFLinkGraphBuilder< ELFT >::forEachRelRelocation(), llvm::orc::shared::detail::fromSPSSerializable(), llvm::DWARFFormValue::getAsCString(), getBitcodeFileMachine(), llvm::orc::ExecutorProcessControl::getBootstrapMapValue(), llvm::orc::ExecutorProcessControl::getBootstrapSymbols(), getCOFFFileMachine(), llvm::jitlink::BasicLayout::getContiguousPageBasedLayoutSizes(), llvm::orc::JITDylib::getDFSLinkOrder(), llvm::json::Path::Root::getError(), llvm::yaml::FrameIndex::getFI(), llvm::DWARFDie::getLocations(), llvm::DWARFUnit::getStringOffsetSectionItem(), llvm::jitlink::ELFLinkGraphBuilder< ELFT >::getSymbolLinkageAndScope(), llvm::jitlink::ELFLinkGraphBuilder< ELFT >::graphifySymbols(), llvm::orc::SimpleRemoteEPC::handleMessage(), llvm::orc::SimpleRemoteEPCServer::handleMessage(), llvm::pdb::hashTagRecord(), initAndLookupTarget(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::initialize(), jitLinkForORC(), llvm::orc::DynamicLibrarySearchGenerator::Load(), llvm::PassPlugin::Load(), llvm::orc::StaticLibraryDefinitionGenerator::Load(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::loadClangModule(), llvm::orc::SelfExecutorProcessControl::loadDylib(), llvm::LegacyJITSymbolResolver::lookup(), llvm::orc::rt_bootstrap::SimpleExecutorDylibManager::lookup(), llvm::orc::lookupAndRecordAddrs(), llvm::orc::makeUnexpectedEOFError(), llvm::MachO::InterfaceFile::merge(), llvm::orc::rt_bootstrap::SimpleExecutorDylibManager::open(), llvm::pdb::InputFile::open(), llvm::orc::LoadAndLinkDynLibrary::operator()(), llvm::orc::ExecutorNativePlatform::operator()(), llvm::orc::SimpleCompiler::operator()(), llvm::PassBuilder::parseAAPipeline(), parseAMDGPUAtomicOptimizerStrategy(), parseCachePruningPolicy(), parseDuration(), llvm::remarks::parseHotnessThresholdOption(), llvm::PassBuilder::parsePassPipeline(), llvm::MCSectionMachO::ParseSectionSpecifier(), llvm::PassBuilder::parseSinglePassOption(), llvm::orc::preserveDebugSections(), llvm::RuntimeDyldMachOAArch64::processRelocationRef(), llvm::irsymtab::readBitcode(), llvm::orc::ExecutionSession::registerJITDispatchHandlers(), llvm::orc::SharedMemoryMapper::release(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::release(), llvm::MachO::InterfaceFile::remove(), reportError(), llvm::orc::SharedMemoryMapper::reserve(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::reserve(), llvm::orc::shared::WrapperFunctionCall::runWithSPSRet(), llvm::orc::FDSimpleRemoteEPCTransport::sendMessage(), llvm::lto::thinBackend(), llvm::MCDwarfLineTableHeader::tryGetFile(), unsupportedBatch(), llvm::orc::ELFDebugObjectSection< ELFT >::validateInBounds(), llvm::codeview::CVSymbolVisitor::visitSymbolStreamFiltered(), llvm::offloading::wrapCudaBinary(), llvm::offloading::wrapHIPBinary(), llvm::offloading::wrapOpenMPBinaries(), and llvm::orc::DefinitionGenerator::~DefinitionGenerator().

◆ inferAlignFromPtrInfo()

Align llvm::inferAlignFromPtrInfo ( MachineFunction MF,
const MachinePointerInfo MPO 
)

◆ inferAttributesFromOthers()

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

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 4157 of file Local.cpp.

References F.

Referenced by deriveAttrsInPostOrder(), and inferAllPrototypeAttributes().

◆ inferNonMandatoryLibFuncAttrs() [1/2]

bool llvm::inferNonMandatoryLibFuncAttrs ( Function F,
const TargetLibraryInfo TLI 
)

◆ inferNonMandatoryLibFuncAttrs() [2/2]

bool llvm::inferNonMandatoryLibFuncAttrs ( Module M,
StringRef  Name,
const TargetLibraryInfo TLI 
)

Analyze the name and prototype of the given function and set any applicable attributes.

Note that this merely helps optimizations on an already existing function but does not consider mandatory attributes.

If the library function is unavailable, this doesn't modify it.

Returns true if any attributes were set and false otherwise.

Definition at line 253 of file BuildLibCalls.cpp.

References F, inferNonMandatoryLibFuncAttrs(), and Name.

Referenced by emitBinaryFloatFnCallHelper(), emitCalloc(), emitFPutC(), emitFPutS(), emitFWrite(), emitHotColdNew(), emitHotColdNewAligned(), emitHotColdNewAlignedNoThrow(), emitHotColdNewNoThrow(), emitLibCall(), emitMalloc(), emitPutChar(), emitPutS(), inferAllPrototypeAttributes(), and inferNonMandatoryLibFuncAttrs().

◆ inFunctionScope()

static bool llvm::inFunctionScope ( CompileUnit U,
unsigned  Idx 
)
static

Check if the DIE at Idx is in the scope of a function.

Definition at line 40 of file DWARFLinkerCompileUnit.cpp.

References Idx.

Referenced by llvm::dwarf_linker::classic::CompileUnit::markEverythingAsKept().

◆ initDebugCounterOptions()

void llvm::initDebugCounterOptions ( )

Definition at line 75 of file DebugCounter.cpp.

References llvm::DebugCounter::instance().

Referenced by initCommonOptions().

◆ initDebugOptions()

void llvm::initDebugOptions ( )

Definition at line 145 of file Debug.cpp.

References Debug, DebugBufferSize, and DebugOnly.

Referenced by initCommonOptions().

◆ initGraphWriterOptions()

void llvm::initGraphWriterOptions ( )

Definition at line 52 of file GraphWriter.cpp.

Referenced by initCommonOptions().

◆ initializeAArch64A53Fix835769Pass()

void llvm::initializeAArch64A53Fix835769Pass ( PassRegistry )

◆ initializeAArch64A57FPLoadBalancingPass()

void llvm::initializeAArch64A57FPLoadBalancingPass ( PassRegistry )

◆ initializeAArch64AdvSIMDScalarPass()

void llvm::initializeAArch64AdvSIMDScalarPass ( PassRegistry )

◆ initializeAArch64Arm64ECCallLoweringPass()

void llvm::initializeAArch64Arm64ECCallLoweringPass ( PassRegistry )

◆ initializeAArch64BranchTargetsPass()

void llvm::initializeAArch64BranchTargetsPass ( PassRegistry )

◆ initializeAArch64CFIFixupPass()

void llvm::initializeAArch64CFIFixupPass ( PassRegistry )

◆ initializeAArch64CollectLOHPass()

void llvm::initializeAArch64CollectLOHPass ( PassRegistry )

◆ initializeAArch64CompressJumpTablesPass()

void llvm::initializeAArch64CompressJumpTablesPass ( PassRegistry )

◆ initializeAArch64CondBrTuningPass()

void llvm::initializeAArch64CondBrTuningPass ( PassRegistry )

◆ initializeAArch64ConditionalComparesPass()

void llvm::initializeAArch64ConditionalComparesPass ( PassRegistry )

◆ initializeAArch64ConditionOptimizerPass()

void llvm::initializeAArch64ConditionOptimizerPass ( PassRegistry )

◆ initializeAArch64DAGToDAGISelPass()

void llvm::initializeAArch64DAGToDAGISelPass ( PassRegistry )

◆ initializeAArch64DeadRegisterDefinitionsPass()

void llvm::initializeAArch64DeadRegisterDefinitionsPass ( PassRegistry )

◆ initializeAArch64ExpandPseudoPass()

void llvm::initializeAArch64ExpandPseudoPass ( PassRegistry )

◆ initializeAArch64GlobalsTaggingPass()

void llvm::initializeAArch64GlobalsTaggingPass ( PassRegistry )

◆ initializeAArch64LoadStoreOptPass()

void llvm::initializeAArch64LoadStoreOptPass ( PassRegistry )

◆ initializeAArch64LoopIdiomTransformLegacyPassPass()

void llvm::initializeAArch64LoopIdiomTransformLegacyPassPass ( PassRegistry )

◆ initializeAArch64LowerHomogeneousPrologEpilogPass()

void llvm::initializeAArch64LowerHomogeneousPrologEpilogPass ( PassRegistry )

◆ initializeAArch64MIPeepholeOptPass()

void llvm::initializeAArch64MIPeepholeOptPass ( PassRegistry )

◆ initializeAArch64O0PreLegalizerCombinerPass()

void llvm::initializeAArch64O0PreLegalizerCombinerPass ( PassRegistry )

◆ initializeAArch64PointerAuthPass()

void llvm::initializeAArch64PointerAuthPass ( PassRegistry )

◆ initializeAArch64PostCoalescerPass()

void llvm::initializeAArch64PostCoalescerPass ( PassRegistry )

◆ initializeAArch64PostLegalizerCombinerPass()

void llvm::initializeAArch64PostLegalizerCombinerPass ( PassRegistry )

◆ initializeAArch64PostLegalizerLoweringPass()

void llvm::initializeAArch64PostLegalizerLoweringPass ( PassRegistry )

◆ initializeAArch64PostSelectOptimizePass()

void llvm::initializeAArch64PostSelectOptimizePass ( PassRegistry )

◆ initializeAArch64PreLegalizerCombinerPass()

void llvm::initializeAArch64PreLegalizerCombinerPass ( PassRegistry )

◆ initializeAArch64PromoteConstantPass()

void llvm::initializeAArch64PromoteConstantPass ( PassRegistry )

◆ initializeAArch64RedundantCopyEliminationPass()

void llvm::initializeAArch64RedundantCopyEliminationPass ( PassRegistry )

◆ initializeAArch64SIMDInstrOptPass()

void llvm::initializeAArch64SIMDInstrOptPass ( PassRegistry )

◆ initializeAArch64SLSHardeningPass()

void llvm::initializeAArch64SLSHardeningPass ( PassRegistry )

◆ initializeAArch64SpeculationHardeningPass()

void llvm::initializeAArch64SpeculationHardeningPass ( PassRegistry )

◆ initializeAArch64StackTaggingPass()

void llvm::initializeAArch64StackTaggingPass ( PassRegistry )

◆ initializeAArch64StackTaggingPreRAPass()

void llvm::initializeAArch64StackTaggingPreRAPass ( PassRegistry )

◆ initializeAArch64StorePairSuppressPass()

void llvm::initializeAArch64StorePairSuppressPass ( PassRegistry )

◆ initializeAAResultsWrapperPassPass()

void llvm::initializeAAResultsWrapperPassPass ( PassRegistry )

◆ InitializeAllAsmParsers()

void llvm::InitializeAllAsmParsers ( )
inline

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.

It is legal for a client to make multiple calls to this function.

Definition at line 99 of file TargetSelect.h.

◆ InitializeAllAsmPrinters()

void llvm::InitializeAllAsmPrinters ( )
inline

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.

It is legal for a client to make multiple calls to this function.

Definition at line 89 of file TargetSelect.h.

◆ InitializeAllDisassemblers()

void llvm::InitializeAllDisassemblers ( )
inline

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.

It is legal for a client to make multiple calls to this function.

Definition at line 109 of file TargetSelect.h.

◆ InitializeAllTargetInfos()

void llvm::InitializeAllTargetInfos ( )
inline

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.

It is legal for a client to make multiple calls to this function.

Definition at line 56 of file TargetSelect.h.

Referenced by InitializeAllTargets().

◆ InitializeAllTargetMCAs()

void llvm::InitializeAllTargetMCAs ( )
inline

InitializeAllTargetMCAs - The main program should call this function to initialize the target CustomBehaviour and InstrPostProcess classes.

Definition at line 170 of file TargetSelect.h.

◆ InitializeAllTargetMCs()

void llvm::InitializeAllTargetMCs ( )
inline

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.

It is legal for a client to make multiple calls to this function.

Definition at line 79 of file TargetSelect.h.

◆ InitializeAllTargets()

void llvm::InitializeAllTargets ( )
inline

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.

It is legal for a client to make multiple calls to this function.

Definition at line 66 of file TargetSelect.h.

References InitializeAllTargetInfos().

◆ initializeAlwaysInlinerLegacyPassPass()

void llvm::initializeAlwaysInlinerLegacyPassPass ( PassRegistry )

Referenced by initializeIPO().

◆ initializeAMDGPUAAWrapperPassPass()

void llvm::initializeAMDGPUAAWrapperPassPass ( PassRegistry )

◆ initializeAMDGPUAlwaysInlinePass()

void llvm::initializeAMDGPUAlwaysInlinePass ( PassRegistry )

◆ initializeAMDGPUAnnotateKernelFeaturesPass()

void llvm::initializeAMDGPUAnnotateKernelFeaturesPass ( PassRegistry )

◆ initializeAMDGPUAnnotateUniformValuesPass()

void llvm::initializeAMDGPUAnnotateUniformValuesPass ( PassRegistry )

◆ initializeAMDGPUArgumentUsageInfoPass()

void llvm::initializeAMDGPUArgumentUsageInfoPass ( PassRegistry )

◆ initializeAMDGPUAtomicOptimizerPass()

void llvm::initializeAMDGPUAtomicOptimizerPass ( PassRegistry )

◆ initializeAMDGPUAttributorLegacyPass()

void llvm::initializeAMDGPUAttributorLegacyPass ( PassRegistry )

◆ initializeAMDGPUCodeGenPreparePass()

void llvm::initializeAMDGPUCodeGenPreparePass ( PassRegistry )

◆ initializeAMDGPUCtorDtorLoweringLegacyPass()

void llvm::initializeAMDGPUCtorDtorLoweringLegacyPass ( PassRegistry )

◆ initializeAMDGPUDAGToDAGISelPass()

void llvm::initializeAMDGPUDAGToDAGISelPass ( PassRegistry )

◆ initializeAMDGPUExternalAAWrapperPass()

void llvm::initializeAMDGPUExternalAAWrapperPass ( PassRegistry )

◆ initializeAMDGPUGlobalISelDivergenceLoweringPass()

void llvm::initializeAMDGPUGlobalISelDivergenceLoweringPass ( PassRegistry )

◆ initializeAMDGPUImageIntrinsicOptimizerPass()

void llvm::initializeAMDGPUImageIntrinsicOptimizerPass ( PassRegistry )

◆ initializeAMDGPUInsertDelayAluPass()

void llvm::initializeAMDGPUInsertDelayAluPass ( PassRegistry )

◆ initializeAMDGPUInsertSingleUseVDSTPass()

void llvm::initializeAMDGPUInsertSingleUseVDSTPass ( PassRegistry )

◆ initializeAMDGPULateCodeGenPreparePass()

void llvm::initializeAMDGPULateCodeGenPreparePass ( PassRegistry )

◆ initializeAMDGPULowerBufferFatPointersPass()

void llvm::initializeAMDGPULowerBufferFatPointersPass ( PassRegistry )

◆ initializeAMDGPULowerKernelArgumentsPass()

void llvm::initializeAMDGPULowerKernelArgumentsPass ( PassRegistry )

◆ initializeAMDGPULowerKernelAttributesPass()

void llvm::initializeAMDGPULowerKernelAttributesPass ( PassRegistry )

◆ initializeAMDGPULowerModuleLDSLegacyPass()

void llvm::initializeAMDGPULowerModuleLDSLegacyPass ( PassRegistry )

◆ initializeAMDGPUMachineCFGStructurizerPass()

void llvm::initializeAMDGPUMachineCFGStructurizerPass ( PassRegistry )

◆ initializeAMDGPUMarkLastScratchLoadPass()

void llvm::initializeAMDGPUMarkLastScratchLoadPass ( PassRegistry )

◆ initializeAMDGPUOpenCLEnqueuedBlockLoweringPass()

void llvm::initializeAMDGPUOpenCLEnqueuedBlockLoweringPass ( PassRegistry )

◆ initializeAMDGPUPerfHintAnalysisPass()

void llvm::initializeAMDGPUPerfHintAnalysisPass ( PassRegistry )

◆ initializeAMDGPUPostLegalizerCombinerPass()

void llvm::initializeAMDGPUPostLegalizerCombinerPass ( PassRegistry )

◆ initializeAMDGPUPreLegalizerCombinerPass()

void llvm::initializeAMDGPUPreLegalizerCombinerPass ( PassRegistry )

◆ initializeAMDGPUPrintfRuntimeBindingPass()

void llvm::initializeAMDGPUPrintfRuntimeBindingPass ( PassRegistry )

◆ initializeAMDGPUPromoteAllocaPass()

void llvm::initializeAMDGPUPromoteAllocaPass ( PassRegistry )

◆ initializeAMDGPUPromoteAllocaToVectorPass()

void llvm::initializeAMDGPUPromoteAllocaToVectorPass ( PassRegistry )

◆ initializeAMDGPUPromoteKernelArgumentsPass()

void llvm::initializeAMDGPUPromoteKernelArgumentsPass ( PassRegistry )

◆ initializeAMDGPURegBankCombinerPass()

void llvm::initializeAMDGPURegBankCombinerPass ( PassRegistry )

◆ initializeAMDGPURegBankSelectPass()

void llvm::initializeAMDGPURegBankSelectPass ( PassRegistry )

◆ initializeAMDGPURemoveIncompatibleFunctionsPass()

void llvm::initializeAMDGPURemoveIncompatibleFunctionsPass ( PassRegistry )

◆ initializeAMDGPUResourceUsageAnalysisPass()

void llvm::initializeAMDGPUResourceUsageAnalysisPass ( PassRegistry )

◆ initializeAMDGPURewriteOutArgumentsPass()

void llvm::initializeAMDGPURewriteOutArgumentsPass ( PassRegistry )

◆ initializeAMDGPURewriteUndefForPHILegacyPass()

void llvm::initializeAMDGPURewriteUndefForPHILegacyPass ( PassRegistry )

◆ initializeAMDGPUSetWavePriorityPass()

void llvm::initializeAMDGPUSetWavePriorityPass ( PassRegistry )

◆ initializeAMDGPUUnifyDivergentExitNodesPass()

void llvm::initializeAMDGPUUnifyDivergentExitNodesPass ( PassRegistry )

◆ initializeAMDGPUUnifyMetadataPass()

void llvm::initializeAMDGPUUnifyMetadataPass ( PassRegistry )

◆ initializeAnalysis()

void llvm::initializeAnalysis ( PassRegistry Registry)

Initialize all passes linked into the Analysis library.

initializeAnalysis - Initialize all passes linked into the Analysis library.

Definition at line 20 of file Analysis.cpp.

References initializeAAResultsWrapperPassPass(), initializeBasicAAWrapperPassPass(), initializeBlockFrequencyInfoWrapperPassPass(), initializeBranchProbabilityInfoWrapperPassPass(), initializeCallGraphDOTPrinterPass(), initializeCallGraphViewerPass(), initializeCallGraphWrapperPassPass(), initializeCycleInfoWrapperPassPass(), initializeDependenceAnalysisWrapperPassPass(), initializeDominanceFrontierWrapperPassPass(), initializeDomOnlyPrinterWrapperPassPass(), initializeDomOnlyViewerWrapperPassPass(), initializeDomPrinterWrapperPassPass(), initializeDomViewerWrapperPassPass(), initializeGlobalsAAWrapperPassPass(), initializeIRSimilarityIdentifierWrapperPassPass(), initializeIVUsersWrapperPassPass(), initializeLazyBlockFrequencyInfoPassPass(), initializeLazyBranchProbabilityInfoPassPass(), initializeLazyValueInfoWrapperPassPass(), initializeLCSSAVerificationPassPass(), initializeLoopInfoWrapperPassPass(), initializeMemoryDependenceWrapperPassPass(), initializeMemorySSAWrapperPassPass(), initializeModuleSummaryIndexWrapperPassPass(), initializeOptimizationRemarkEmitterWrapperPassPass(), initializePhiValuesWrapperPassPass(), initializePostDominatorTreeWrapperPassPass(), initializePostDomOnlyPrinterWrapperPassPass(), initializePostDomOnlyViewerWrapperPassPass(), initializePostDomPrinterWrapperPassPass(), initializePostDomViewerWrapperPassPass(), initializeRegionInfoPassPass(), initializeRegionOnlyPrinterPass(), initializeRegionOnlyViewerPass(), initializeRegionPrinterPass(), initializeRegionViewerPass(), initializeScalarEvolutionWrapperPassPass(), initializeSCEVAAWrapperPassPass(), initializeScopedNoAliasAAWrapperPassPass(), initializeStackSafetyGlobalInfoWrapperPassPass(), initializeStackSafetyInfoWrapperPassPass(), initializeTargetTransformInfoWrapperPassPass(), and initializeTypeBasedAAWrapperPassPass().

◆ initializeARCBranchFinalizePass()

void llvm::initializeARCBranchFinalizePass ( PassRegistry Registry)

◆ initializeARCDAGToDAGISelPass()

void llvm::initializeARCDAGToDAGISelPass ( PassRegistry )

Referenced by LLVMInitializeARCTarget().

◆ initializeARCOptAddrModePass()

void llvm::initializeARCOptAddrModePass ( PassRegistry )

◆ initializeARMBlockPlacementPass()

void llvm::initializeARMBlockPlacementPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeARMBranchTargetsPass()

void llvm::initializeARMBranchTargetsPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeARMConstantIslandsPass()

void llvm::initializeARMConstantIslandsPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeARMDAGToDAGISelPass()

void llvm::initializeARMDAGToDAGISelPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeARMExecutionDomainFixPass()

void llvm::initializeARMExecutionDomainFixPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeARMExpandPseudoPass()

void llvm::initializeARMExpandPseudoPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeARMFixCortexA57AES1742098Pass()

void llvm::initializeARMFixCortexA57AES1742098Pass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeARMLoadStoreOptPass()

void llvm::initializeARMLoadStoreOptPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeARMLowOverheadLoopsPass()

void llvm::initializeARMLowOverheadLoopsPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeARMParallelDSPPass()

void llvm::initializeARMParallelDSPPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeARMPreAllocLoadStoreOptPass()

void llvm::initializeARMPreAllocLoadStoreOptPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeARMSLSHardeningPass()

void llvm::initializeARMSLSHardeningPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeAssignmentTrackingAnalysisPass()

void llvm::initializeAssignmentTrackingAnalysisPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeAssumptionCacheTrackerPass()

void llvm::initializeAssumptionCacheTrackerPass ( PassRegistry )

◆ initializeAtomicExpandLegacyPass()

void llvm::initializeAtomicExpandLegacyPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeAVRDAGToDAGISelPass()

void llvm::initializeAVRDAGToDAGISelPass ( PassRegistry )

Referenced by LLVMInitializeAVRTarget().

◆ initializeAVRExpandPseudoPass()

void llvm::initializeAVRExpandPseudoPass ( PassRegistry )

Referenced by LLVMInitializeAVRTarget().

◆ initializeAVRShiftExpandPass()

void llvm::initializeAVRShiftExpandPass ( PassRegistry )

Referenced by LLVMInitializeAVRTarget().

◆ initializeBarrierNoopPass()

void llvm::initializeBarrierNoopPass ( PassRegistry )

Referenced by initializeIPO().

◆ initializeBasicAAWrapperPassPass()

void llvm::initializeBasicAAWrapperPassPass ( PassRegistry )

◆ initializeBasicBlockPathCloningPass()

void llvm::initializeBasicBlockPathCloningPass ( PassRegistry )

◆ initializeBasicBlockSectionsPass()

void llvm::initializeBasicBlockSectionsPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeBasicBlockSectionsProfileReaderWrapperPassPass()

void llvm::initializeBasicBlockSectionsProfileReaderWrapperPassPass ( PassRegistry )

◆ initializeBlockFrequencyInfoWrapperPassPass()

void llvm::initializeBlockFrequencyInfoWrapperPassPass ( PassRegistry )

◆ initializeBPFCheckAndAdjustIRPass()

void llvm::initializeBPFCheckAndAdjustIRPass ( PassRegistry )

Referenced by LLVMInitializeBPFTarget().

◆ initializeBPFDAGToDAGISelPass()

void llvm::initializeBPFDAGToDAGISelPass ( PassRegistry )

Referenced by LLVMInitializeBPFTarget().

◆ initializeBPFMIPeepholePass()

void llvm::initializeBPFMIPeepholePass ( PassRegistry )

Referenced by LLVMInitializeBPFTarget().

◆ initializeBPFMIPreEmitCheckingPass()

void llvm::initializeBPFMIPreEmitCheckingPass ( PassRegistry )

◆ initializeBPFMIPreEmitPeepholePass()

void llvm::initializeBPFMIPreEmitPeepholePass ( PassRegistry )

◆ initializeBPFMISimplifyPatchablePass()

void llvm::initializeBPFMISimplifyPatchablePass ( PassRegistry )

◆ initializeBranchFolderPassPass()

void llvm::initializeBranchFolderPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeBranchProbabilityInfoWrapperPassPass()

void llvm::initializeBranchProbabilityInfoWrapperPassPass ( PassRegistry )

◆ initializeBranchRelaxationPass()

void llvm::initializeBranchRelaxationPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeBreakCriticalEdgesPass()

void llvm::initializeBreakCriticalEdgesPass ( PassRegistry )

◆ initializeBreakFalseDepsPass()

void llvm::initializeBreakFalseDepsPass ( PassRegistry )

◆ initializeCallBrPreparePass()

void llvm::initializeCallBrPreparePass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeCallGraphDOTPrinterPass()

void llvm::initializeCallGraphDOTPrinterPass ( PassRegistry )

Referenced by initializeAnalysis().

◆ initializeCallGraphViewerPass()

void llvm::initializeCallGraphViewerPass ( PassRegistry )

Referenced by initializeAnalysis().

◆ initializeCallGraphWrapperPassPass()

void llvm::initializeCallGraphWrapperPassPass ( PassRegistry )

◆ initializeCanonicalizeFreezeInLoopsPass()

void llvm::initializeCanonicalizeFreezeInLoopsPass ( PassRegistry )

◆ initializeCFGSimplifyPassPass()

void llvm::initializeCFGSimplifyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeCFGuardLongjmpPass()

void llvm::initializeCFGuardLongjmpPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeCFGuardPass()

void llvm::initializeCFGuardPass ( PassRegistry )

◆ initializeCFIFixupPass()

void llvm::initializeCFIFixupPass ( PassRegistry )

◆ initializeCFIInstrInserterPass()

void llvm::initializeCFIInstrInserterPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeCheckDebugMachineModulePass()

void llvm::initializeCheckDebugMachineModulePass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeCodeGen()

void llvm::initializeCodeGen ( PassRegistry Registry)

Initialize all passes linked into the CodeGen library.

initializeCodeGen - Initialize all passes linked into the CodeGen library.

Definition at line 20 of file CodeGen.cpp.

References initializeAssignmentTrackingAnalysisPass(), initializeAtomicExpandLegacyPass(), initializeBasicBlockPathCloningPass(), initializeBasicBlockSectionsPass(), initializeBranchFolderPassPass(), initializeBranchRelaxationPass(), initializeBreakFalseDepsPass(), initializeCallBrPreparePass(), initializeCFGuardLongjmpPass(), initializeCFIFixupPass(), initializeCFIInstrInserterPass(), initializeCheckDebugMachineModulePass(), initializeCodeGenPrepareLegacyPassPass(), initializeDeadMachineInstructionElimPass(), initializeDebugifyMachineModulePass(), initializeDetectDeadLanesPass(), initializeDwarfEHPrepareLegacyPassPass(), initializeEarlyIfConverterPass(), initializeEarlyIfPredicatorPass(), initializeEarlyMachineLICMPass(), initializeEarlyTailDuplicatePass(), initializeExpandLargeDivRemLegacyPassPass(), initializeExpandLargeFpConvertLegacyPassPass(), initializeExpandMemCmpLegacyPassPass(), initializeExpandPostRAPass(), initializeFEntryInserterPass(), initializeFinalizeISelPass(), initializeFinalizeMachineBundlesPass(), initializeFixupStatepointCallerSavedPass(), initializeFuncletLayoutPass(), initializeGCMachineCodeAnalysisPass(), initializeGCModuleInfoPass(), initializeHardwareLoopsLegacyPass(), initializeIfConverterPass(), initializeImplicitNullChecksPass(), initializeIndirectBrExpandLegacyPassPass(), initializeInitUndefPass(), initializeInterleavedAccessPass(), initializeInterleavedLoadCombinePass(), initializeJMCInstrumenterPass(), initializeLiveDebugValuesPass(), initializeLiveDebugVariablesPass(), initializeLiveIntervalsPass(), initializeLiveRangeShrinkPass(), initializeLiveStacksPass(), initializeLiveVariablesPass(), initializeLocalStackSlotPassPass(), initializeLowerGlobalDtorsLegacyPassPass(), initializeLowerIntrinsicsPass(), initializeMachineBlockFrequencyInfoPass(), initializeMachineBlockPlacementPass(), initializeMachineBlockPlacementStatsPass(), initializeMachineCFGPrinterPass(), initializeMachineCombinerPass(), initializeMachineCopyPropagationPass(), initializeMachineCSEPass(), initializeMachineCycleInfoPrinterPassPass(), initializeMachineCycleInfoWrapperPassPass(), initializeMachineDominatorTreePass(), initializeMachineFunctionPrinterPassPass(), initializeMachineLateInstrsCleanupPass(), initializeMachineLICMPass(), initializeMachineLoopInfoPass(), initializeMachineModuleInfoWrapperPassPass(), initializeMachineOptimizationRemarkEmitterPassPass(), initializeMachineOutlinerPass(), initializeMachinePipelinerPass(), initializeMachinePostDominatorTreePass(), initializeMachineRegionInfoPassPass(), initializeMachineSanitizerBinaryMetadataPass(), initializeMachineSchedulerPass(), initializeMachineSinkingPass(), initializeMachineUniformityAnalysisPassPass(), initializeMachineUniformityInfoPrinterPassPass(), initializeMachineVerifierPassPass(), initializeMIRAddFSDiscriminatorsPass(), initializeMIRCanonicalizerPass(), initializeMIRNamerPass(), initializeMIRProfileLoaderPassPass(), initializeModuloScheduleTestPass(), initializeObjCARCContractLegacyPassPass(), initializeOptimizePHIsPass(), initializePatchableFunctionPass(), initializePeepholeOptimizerPass(), initializePEIPass(), initializePHIEliminationPass(), initializePostMachineSchedulerPass(), initializePostRAHazardRecognizerPass(), initializePostRAMachineSinkingPass(), initializePostRASchedulerPass(), initializePreISelIntrinsicLoweringLegacyPassPass(), initializeProcessImplicitDefsPass(), initializeRABasicPass(), initializeRAGreedyPass(), initializeRegAllocFastPass(), initializeRegisterCoalescerPass(), initializeRegUsageInfoCollectorPass(), initializeRegUsageInfoPropagationPass(), initializeRemoveRedundantDebugValuesPass(), initializeRenameIndependentSubregsPass(), initializeSafeStackLegacyPassPass(), initializeSelectOptimizePass(), initializeShadowStackGCLoweringPass(), initializeShrinkWrapPass(), initializeSjLjEHPreparePass(), initializeSlotIndexesPass(), initializeStackColoringPass(), initializeStackFrameLayoutAnalysisPassPass(), initializeStackMapLivenessPass(), initializeStackProtectorPass(), initializeStackSlotColoringPass(), initializeStripDebugMachineModulePass(), initializeTailDuplicatePass(), initializeTargetPassConfigPass(), initializeTwoAddressInstructionPassPass(), initializeTypePromotionLegacyPass(), initializeUnpackMachineBundlesPass(), initializeUnreachableBlockElimLegacyPassPass(), initializeUnreachableMachineBlockElimPass(), initializeVirtRegMapPass(), initializeVirtRegRewriterPass(), initializeWasmEHPreparePass(), initializeWinEHPreparePass(), and initializeXRayInstrumentationPass().

Referenced by llvm::TargetPassConfig::TargetPassConfig().

◆ initializeCodeGenPrepareLegacyPassPass()

void llvm::initializeCodeGenPrepareLegacyPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeComplexDeinterleavingLegacyPassPass()

void llvm::initializeComplexDeinterleavingLegacyPassPass ( PassRegistry )

◆ initializeCompressEVEXPassPass()

void llvm::initializeCompressEVEXPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeConstantHoistingLegacyPassPass()

void llvm::initializeConstantHoistingLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeCore()

void llvm::initializeCore ( PassRegistry Registry)

◆ initializeCSKYConstantIslandsPass()

void llvm::initializeCSKYConstantIslandsPass ( PassRegistry )

◆ initializeCSKYDAGToDAGISelPass()

void llvm::initializeCSKYDAGToDAGISelPass ( PassRegistry )

◆ initializeCycleInfoWrapperPassPass()

void llvm::initializeCycleInfoWrapperPassPass ( PassRegistry )

◆ initializeDAEPass()

void llvm::initializeDAEPass ( PassRegistry )

Referenced by initializeIPO().

◆ initializeDAHPass()

void llvm::initializeDAHPass ( PassRegistry )

Referenced by initializeIPO().

◆ initializeDCELegacyPassPass()

void llvm::initializeDCELegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeDeadMachineInstructionElimPass()

void llvm::initializeDeadMachineInstructionElimPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeDebugifyMachineModulePass()

void llvm::initializeDebugifyMachineModulePass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeDependenceAnalysisWrapperPassPass()

void llvm::initializeDependenceAnalysisWrapperPassPass ( PassRegistry )

◆ initializeDetectDeadLanesPass()

void llvm::initializeDetectDeadLanesPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeDominanceFrontierWrapperPassPass()

void llvm::initializeDominanceFrontierWrapperPassPass ( PassRegistry )

◆ initializeDominatorTreeWrapperPassPass()

void llvm::initializeDominatorTreeWrapperPassPass ( PassRegistry )

◆ initializeDomOnlyPrinterWrapperPassPass()

void llvm::initializeDomOnlyPrinterWrapperPassPass ( PassRegistry )

◆ initializeDomOnlyViewerWrapperPassPass()

void llvm::initializeDomOnlyViewerWrapperPassPass ( PassRegistry )

Referenced by initializeAnalysis().

◆ initializeDomPrinterWrapperPassPass()

void llvm::initializeDomPrinterWrapperPassPass ( PassRegistry )

◆ initializeDomViewerWrapperPassPass()

void llvm::initializeDomViewerWrapperPassPass ( PassRegistry )

Referenced by initializeAnalysis().

◆ initializeDummyCGSCCPassPass()

void llvm::initializeDummyCGSCCPassPass ( PassRegistry )

◆ initializeDwarfEHPrepareLegacyPassPass()

void llvm::initializeDwarfEHPrepareLegacyPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeDXContainerGlobalsPass()

void llvm::initializeDXContainerGlobalsPass ( PassRegistry )

Initializer for DXContainerGlobals pass.

Referenced by LLVMInitializeDirectXTarget().

◆ initializeDXILIntrinsicExpansionLegacyPass()

void llvm::initializeDXILIntrinsicExpansionLegacyPass ( PassRegistry )

Initializer for DXIL Intrinsic Expansion.

Referenced by LLVMInitializeDirectXTarget().

◆ initializeDXILOpLoweringLegacyPass()

void llvm::initializeDXILOpLoweringLegacyPass ( PassRegistry )

Initializer for DXILOpLowering.

Referenced by LLVMInitializeDirectXTarget().

◆ initializeDXILPrepareModulePass()

void llvm::initializeDXILPrepareModulePass ( PassRegistry )

Initializer for DXIL-prepare.

Referenced by LLVMInitializeDirectXTarget().

◆ initializeDXILPrettyPrinterPass()

void llvm::initializeDXILPrettyPrinterPass ( PassRegistry )

Initializer for DXILPrettyPrinter.

◆ initializeDXILResourceWrapperPass()

void llvm::initializeDXILResourceWrapperPass ( PassRegistry )

Initializer for DXILTranslateMetadata.

Referenced by LLVMInitializeDirectXTarget().

◆ initializeDXILTranslateMetadataPass()

void llvm::initializeDXILTranslateMetadataPass ( PassRegistry )

Initializer for DXILTranslateMetadata.

Referenced by LLVMInitializeDirectXTarget().

◆ initializeEarlyCSELegacyPassPass()

void llvm::initializeEarlyCSELegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeEarlyCSEMemSSALegacyPassPass()

void llvm::initializeEarlyCSEMemSSALegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeEarlyIfConverterPass()

void llvm::initializeEarlyIfConverterPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeEarlyIfPredicatorPass()

void llvm::initializeEarlyIfPredicatorPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeEarlyMachineLICMPass()

void llvm::initializeEarlyMachineLICMPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeEarlyTailDuplicatePass()

void llvm::initializeEarlyTailDuplicatePass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeEdgeBundlesPass()

void llvm::initializeEdgeBundlesPass ( PassRegistry )

◆ initializeEHContGuardCatchretPass()

void llvm::initializeEHContGuardCatchretPass ( PassRegistry )

◆ initializeEmbedDXILPassPass()

void llvm::initializeEmbedDXILPassPass ( PassRegistry )

Initializer for dxil embedder pass.

Referenced by LLVMInitializeDirectXTarget().

◆ initializeExpandLargeDivRemLegacyPassPass()

void llvm::initializeExpandLargeDivRemLegacyPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeExpandLargeFpConvertLegacyPassPass()

void llvm::initializeExpandLargeFpConvertLegacyPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeExpandMemCmpLegacyPassPass()

void llvm::initializeExpandMemCmpLegacyPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeExpandPostRAPass()

void llvm::initializeExpandPostRAPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeExpandReductionsPass()

void llvm::initializeExpandReductionsPass ( PassRegistry )

◆ initializeExpandVectorPredicationPass()

void llvm::initializeExpandVectorPredicationPass ( PassRegistry )

◆ initializeExternalAAWrapperPassPass()

void llvm::initializeExternalAAWrapperPassPass ( PassRegistry )

◆ initializeFalkorHWPFFixPass()

void llvm::initializeFalkorHWPFFixPass ( PassRegistry )

◆ initializeFalkorMarkStridedAccessesLegacyPass()

void llvm::initializeFalkorMarkStridedAccessesLegacyPass ( PassRegistry )

◆ initializeFEntryInserterPass()

void llvm::initializeFEntryInserterPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeFinalizeISelPass()

void llvm::initializeFinalizeISelPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeFinalizeMachineBundlesPass()

void llvm::initializeFinalizeMachineBundlesPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeFixFunctionBitcastsPass()

void llvm::initializeFixFunctionBitcastsPass ( PassRegistry )

◆ initializeFixIrreduciblePass()

void llvm::initializeFixIrreduciblePass ( PassRegistry )

◆ initializeFixupBWInstPassPass()

void llvm::initializeFixupBWInstPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeFixupLEAPassPass()

void llvm::initializeFixupLEAPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeFixupStatepointCallerSavedPass()

void llvm::initializeFixupStatepointCallerSavedPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeFlattenCFGLegacyPassPass()

void llvm::initializeFlattenCFGLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeFPSPass()

void llvm::initializeFPSPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeFuncletLayoutPass()

void llvm::initializeFuncletLayoutPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeGCEmptyBasicBlocksPass()

void llvm::initializeGCEmptyBasicBlocksPass ( PassRegistry )

◆ initializeGCMachineCodeAnalysisPass()

void llvm::initializeGCMachineCodeAnalysisPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeGCModuleInfoPass()

void llvm::initializeGCModuleInfoPass ( PassRegistry )

◆ initializeGCNCreateVOPDPass()

void llvm::initializeGCNCreateVOPDPass ( PassRegistry )

◆ initializeGCNDPPCombinePass()

void llvm::initializeGCNDPPCombinePass ( PassRegistry )

◆ initializeGCNNSAReassignPass()

void llvm::initializeGCNNSAReassignPass ( PassRegistry )

◆ initializeGCNPreRALongBranchRegPass()

void llvm::initializeGCNPreRALongBranchRegPass ( PassRegistry )

◆ initializeGCNPreRAOptimizationsPass()

void llvm::initializeGCNPreRAOptimizationsPass ( PassRegistry )

◆ initializeGCNRegPressurePrinterPass()

void llvm::initializeGCNRegPressurePrinterPass ( PassRegistry )

◆ initializeGCNRewritePartialRegUsesPass()

void llvm::initializeGCNRewritePartialRegUsesPass ( llvm::PassRegistry )

◆ initializeGenericToNVVMLegacyPassPass()

void llvm::initializeGenericToNVVMLegacyPassPass ( PassRegistry )

◆ initializeGISelCSEAnalysisWrapperPassPass()

void llvm::initializeGISelCSEAnalysisWrapperPassPass ( PassRegistry )

◆ initializeGISelKnownBitsAnalysisPass()

void llvm::initializeGISelKnownBitsAnalysisPass ( PassRegistry )

◆ initializeGlobalISel()

void llvm::initializeGlobalISel ( PassRegistry Registry)

◆ initializeGlobalMergePass()

void llvm::initializeGlobalMergePass ( PassRegistry )

◆ initializeGlobalsAAWrapperPassPass()

void llvm::initializeGlobalsAAWrapperPassPass ( PassRegistry )

◆ initializeGVNLegacyPassPass()

void llvm::initializeGVNLegacyPassPass ( PassRegistry )

◆ initializeHardwareLoopsLegacyPass()

void llvm::initializeHardwareLoopsLegacyPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeHexagonBitSimplifyPass()

void llvm::initializeHexagonBitSimplifyPass ( PassRegistry Registry)

◆ initializeHexagonBranchRelaxationPass()

void llvm::initializeHexagonBranchRelaxationPass ( PassRegistry )

◆ initializeHexagonCallFrameInformationPass()

void llvm::initializeHexagonCallFrameInformationPass ( PassRegistry )

◆ initializeHexagonCFGOptimizerPass()

void llvm::initializeHexagonCFGOptimizerPass ( PassRegistry )

◆ initializeHexagonCommonGEPPass()

void llvm::initializeHexagonCommonGEPPass ( PassRegistry )

◆ initializeHexagonConstExtendersPass()

void llvm::initializeHexagonConstExtendersPass ( PassRegistry )

◆ initializeHexagonConstPropagationPass()

void llvm::initializeHexagonConstPropagationPass ( PassRegistry Registry)

◆ initializeHexagonCopyToCombinePass()

void llvm::initializeHexagonCopyToCombinePass ( PassRegistry )

◆ initializeHexagonDAGToDAGISelPass()

void llvm::initializeHexagonDAGToDAGISelPass ( PassRegistry )

◆ initializeHexagonEarlyIfConversionPass()

void llvm::initializeHexagonEarlyIfConversionPass ( PassRegistry Registry)

◆ initializeHexagonExpandCondsetsPass()

void llvm::initializeHexagonExpandCondsetsPass ( PassRegistry )

◆ initializeHexagonFixupHwLoopsPass()

void llvm::initializeHexagonFixupHwLoopsPass ( PassRegistry )

◆ initializeHexagonGenExtractPass()

void llvm::initializeHexagonGenExtractPass ( PassRegistry )

◆ initializeHexagonGenInsertPass()

void llvm::initializeHexagonGenInsertPass ( PassRegistry )

◆ initializeHexagonGenMemAbsolutePass()

void llvm::initializeHexagonGenMemAbsolutePass ( PassRegistry Registry)

◆ initializeHexagonGenMuxPass()

void llvm::initializeHexagonGenMuxPass ( PassRegistry Registry)

◆ initializeHexagonGenPredicatePass()

void llvm::initializeHexagonGenPredicatePass ( PassRegistry Registry)

◆ initializeHexagonHardwareLoopsPass()

void llvm::initializeHexagonHardwareLoopsPass ( PassRegistry )

◆ initializeHexagonLoopAlignPass()

void llvm::initializeHexagonLoopAlignPass ( PassRegistry )

◆ initializeHexagonLoopIdiomRecognizeLegacyPassPass()

void llvm::initializeHexagonLoopIdiomRecognizeLegacyPassPass ( PassRegistry )

◆ initializeHexagonLoopReschedulingPass()

void llvm::initializeHexagonLoopReschedulingPass ( PassRegistry )

◆ initializeHexagonNewValueJumpPass()

void llvm::initializeHexagonNewValueJumpPass ( PassRegistry )

◆ initializeHexagonOptAddrModePass()

void llvm::initializeHexagonOptAddrModePass ( PassRegistry )

◆ initializeHexagonOptimizeSZextendsPass()

void llvm::initializeHexagonOptimizeSZextendsPass ( PassRegistry )

◆ initializeHexagonPacketizerPass()

void llvm::initializeHexagonPacketizerPass ( PassRegistry )

◆ initializeHexagonPeepholePass()

void llvm::initializeHexagonPeepholePass ( PassRegistry )

◆ initializeHexagonRDFOptPass()

void llvm::initializeHexagonRDFOptPass ( PassRegistry )

◆ initializeHexagonSplitConst32AndConst64Pass()

void llvm::initializeHexagonSplitConst32AndConst64Pass ( PassRegistry )

◆ initializeHexagonSplitDoubleRegsPass()

void llvm::initializeHexagonSplitDoubleRegsPass ( PassRegistry )

◆ initializeHexagonStoreWideningPass()

void llvm::initializeHexagonStoreWideningPass ( PassRegistry )

◆ initializeHexagonTfrCleanupPass()

void llvm::initializeHexagonTfrCleanupPass ( PassRegistry )

◆ initializeHexagonVectorCombineLegacyPass()

void llvm::initializeHexagonVectorCombineLegacyPass ( PassRegistry )

◆ initializeHexagonVectorLoopCarriedReuseLegacyPassPass()

void llvm::initializeHexagonVectorLoopCarriedReuseLegacyPassPass ( PassRegistry )

◆ initializeHexagonVectorPrintPass()

void llvm::initializeHexagonVectorPrintPass ( PassRegistry )

◆ initializeHexagonVExtractPass()

void llvm::initializeHexagonVExtractPass ( PassRegistry )

◆ initializeIfConverterPass()

void llvm::initializeIfConverterPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeImmutableModuleSummaryIndexWrapperPassPass()

void llvm::initializeImmutableModuleSummaryIndexWrapperPassPass ( PassRegistry )

◆ initializeImplicitNullChecksPass()

void llvm::initializeImplicitNullChecksPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeIndirectBrExpandLegacyPassPass()

void llvm::initializeIndirectBrExpandLegacyPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeInferAddressSpacesPass()

void llvm::initializeInferAddressSpacesPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeInitUndefPass()

void llvm::initializeInitUndefPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeInstCombine()

Combine redundant false void llvm::initializeInstCombine ( PassRegistry Registry)

Initialize all passes linked into the InstCombine library.

Definition at line 5425 of file InstructionCombining.cpp.

References initializeInstructionCombiningPassPass().

◆ initializeInstructionCombiningPassPass()

void llvm::initializeInstructionCombiningPassPass ( PassRegistry )

◆ initializeInstructionSelectPass()

void llvm::initializeInstructionSelectPass ( PassRegistry )

Referenced by initializeGlobalISel().

◆ initializeInstSimplifyLegacyPassPass()

void llvm::initializeInstSimplifyLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeInterleavedAccessPass()

void llvm::initializeInterleavedAccessPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeInterleavedLoadCombinePass()

void llvm::initializeInterleavedLoadCombinePass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeIPO()

void llvm::initializeIPO ( PassRegistry Registry)

◆ initializeIRSimilarityIdentifierWrapperPassPass()

void llvm::initializeIRSimilarityIdentifierWrapperPassPass ( PassRegistry )

◆ initializeIRTranslatorPass()

void llvm::initializeIRTranslatorPass ( PassRegistry )

Referenced by initializeGlobalISel().

◆ initializeIVUsersWrapperPassPass()

void llvm::initializeIVUsersWrapperPassPass ( PassRegistry )

◆ initializeJMCInstrumenterPass()

void llvm::initializeJMCInstrumenterPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeKCFIPass()

void llvm::initializeKCFIPass ( PassRegistry )

◆ initializeLanaiDAGToDAGISelPass()

void llvm::initializeLanaiDAGToDAGISelPass ( PassRegistry )

◆ initializeLanaiMemAluCombinerPass()

void llvm::initializeLanaiMemAluCombinerPass ( PassRegistry )

◆ initializeLazyBFIPassPass()

void llvm::initializeLazyBFIPassPass ( PassRegistry Registry)

Helper for client passes to initialize dependent passes for LBFI.

Definition at line 68 of file LazyBlockFrequencyInfo.cpp.

References INITIALIZE_PASS_DEPENDENCY, and initializeLazyBPIPassPass().

◆ initializeLazyBlockFrequencyInfoPassPass()

void llvm::initializeLazyBlockFrequencyInfoPassPass ( PassRegistry )

◆ initializeLazyBPIPassPass()

void llvm::initializeLazyBPIPassPass ( PassRegistry Registry)

Helper for client passes to initialize dependent passes for LBPI.

Definition at line 71 of file LazyBranchProbabilityInfo.cpp.

References INITIALIZE_PASS_DEPENDENCY.

Referenced by initializeLazyBFIPassPass().

◆ initializeLazyBranchProbabilityInfoPassPass()

void llvm::initializeLazyBranchProbabilityInfoPassPass ( PassRegistry )

◆ initializeLazyMachineBlockFrequencyInfoPassPass()

void llvm::initializeLazyMachineBlockFrequencyInfoPassPass ( PassRegistry )

◆ initializeLazyValueInfoWrapperPassPass()

void llvm::initializeLazyValueInfoWrapperPassPass ( PassRegistry )

◆ initializeLCSSAVerificationPassPass()

void llvm::initializeLCSSAVerificationPassPass ( PassRegistry )

◆ initializeLCSSAWrapperPassPass()

void llvm::initializeLCSSAWrapperPassPass ( PassRegistry )

◆ initializeLDTLSCleanupPass()

void llvm::initializeLDTLSCleanupPass ( PassRegistry )

◆ initializeLegacyLICMPassPass()

void llvm::initializeLegacyLICMPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeLegalizerPass()

void llvm::initializeLegalizerPass ( PassRegistry )

Referenced by initializeGlobalISel().

◆ initializeLiveDebugValuesPass()

void llvm::initializeLiveDebugValuesPass ( PassRegistry )

◆ initializeLiveDebugVariablesPass()

void llvm::initializeLiveDebugVariablesPass ( PassRegistry )

◆ initializeLiveIntervalsPass()

void llvm::initializeLiveIntervalsPass ( PassRegistry )

◆ initializeLiveRangeShrinkPass()

void llvm::initializeLiveRangeShrinkPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeLiveRegMatrixPass()

void llvm::initializeLiveRegMatrixPass ( PassRegistry )

◆ initializeLiveStacksPass()

void llvm::initializeLiveStacksPass ( PassRegistry )

◆ initializeLiveVariablesPass()

void llvm::initializeLiveVariablesPass ( PassRegistry )

◆ initializeLoadStoreOptPass()

void llvm::initializeLoadStoreOptPass ( PassRegistry )

Referenced by initializeGlobalISel().

◆ initializeLoadStoreVectorizerLegacyPassPass()

void llvm::initializeLoadStoreVectorizerLegacyPassPass ( PassRegistry )

Referenced by initializeVectorization().

◆ initializeLocalizerPass()

void llvm::initializeLocalizerPass ( PassRegistry )

Referenced by initializeGlobalISel().

◆ initializeLocalStackSlotPassPass()

void llvm::initializeLocalStackSlotPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeLoongArchDAGToDAGISelPass()

void llvm::initializeLoongArchDAGToDAGISelPass ( PassRegistry )

◆ initializeLoongArchExpandAtomicPseudoPass()

void llvm::initializeLoongArchExpandAtomicPseudoPass ( PassRegistry )

◆ initializeLoongArchExpandPseudoPass()

void llvm::initializeLoongArchExpandPseudoPass ( PassRegistry )

◆ initializeLoongArchPreRAExpandPseudoPass()

void llvm::initializeLoongArchPreRAExpandPseudoPass ( PassRegistry )

◆ initializeLoopDataPrefetchLegacyPassPass()

void llvm::initializeLoopDataPrefetchLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeLoopExtractorLegacyPassPass()

void llvm::initializeLoopExtractorLegacyPassPass ( PassRegistry )

Referenced by initializeIPO().

◆ initializeLoopInfoWrapperPassPass()

void llvm::initializeLoopInfoWrapperPassPass ( PassRegistry )

◆ initializeLoopPassPass()

void llvm::initializeLoopPassPass ( PassRegistry Registry)

Manually defined generic "LoopPass" dependency initialization.

This is used to initialize the exact set of passes from above in getLoopAnalysisUsage. It can be used within a loop pass's initialization with:

INITIALIZE_PASS_DEPENDENCY(LoopPass)

As-if "LoopPass" were a pass.

Definition at line 189 of file LoopUtils.cpp.

References INITIALIZE_PASS_DEPENDENCY.

◆ initializeLoopSimplifyPass()

void llvm::initializeLoopSimplifyPass ( PassRegistry )

◆ initializeLoopStrengthReducePass()

void llvm::initializeLoopStrengthReducePass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeLoopUnrollPass()

void llvm::initializeLoopUnrollPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeLowerAtomicLegacyPassPass()

void llvm::initializeLowerAtomicLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeLowerConstantIntrinsicsPass()

void llvm::initializeLowerConstantIntrinsicsPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeLowerEmuTLSPass()

void llvm::initializeLowerEmuTLSPass ( PassRegistry )

◆ initializeLowerGlobalDtorsLegacyPassPass()

void llvm::initializeLowerGlobalDtorsLegacyPassPass ( PassRegistry )

◆ initializeLowerIntrinsicsPass()

void llvm::initializeLowerIntrinsicsPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeLowerInvokeLegacyPassPass()

void llvm::initializeLowerInvokeLegacyPassPass ( PassRegistry )

◆ initializeLowerSwitchLegacyPassPass()

void llvm::initializeLowerSwitchLegacyPassPass ( PassRegistry )

◆ initializeM68kCollapseMOVEMPass()

void llvm::initializeM68kCollapseMOVEMPass ( PassRegistry )

◆ initializeM68kDAGToDAGISelPass()

void llvm::initializeM68kDAGToDAGISelPass ( PassRegistry )

◆ initializeM68kExpandPseudoPass()

void llvm::initializeM68kExpandPseudoPass ( PassRegistry )

◆ initializeM68kGlobalBaseRegPass()

void llvm::initializeM68kGlobalBaseRegPass ( PassRegistry )

◆ initializeMachineBlockFrequencyInfoPass()

void llvm::initializeMachineBlockFrequencyInfoPass ( PassRegistry )

◆ initializeMachineBlockPlacementPass()

void llvm::initializeMachineBlockPlacementPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachineBlockPlacementStatsPass()

void llvm::initializeMachineBlockPlacementStatsPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachineBranchProbabilityInfoPass()

void llvm::initializeMachineBranchProbabilityInfoPass ( PassRegistry )

◆ initializeMachineCFGPrinterPass()

void llvm::initializeMachineCFGPrinterPass ( PassRegistry )

◆ initializeMachineCombinerPass()

void llvm::initializeMachineCombinerPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachineCopyPropagationPass()

void llvm::initializeMachineCopyPropagationPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachineCSEPass()

void llvm::initializeMachineCSEPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachineCycleInfoPrinterPassPass()

void llvm::initializeMachineCycleInfoPrinterPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachineCycleInfoWrapperPassPass()

void llvm::initializeMachineCycleInfoWrapperPassPass ( PassRegistry )

◆ initializeMachineDominanceFrontierPass()

void llvm::initializeMachineDominanceFrontierPass ( PassRegistry )

◆ initializeMachineDominatorTreePass()

void llvm::initializeMachineDominatorTreePass ( PassRegistry )

◆ initializeMachineFunctionPrinterPassPass()

void llvm::initializeMachineFunctionPrinterPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachineFunctionSplitterPass()

void llvm::initializeMachineFunctionSplitterPass ( PassRegistry )

◆ initializeMachineLateInstrsCleanupPass()

void llvm::initializeMachineLateInstrsCleanupPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachineLICMPass()

void llvm::initializeMachineLICMPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachineLoopInfoPass()

void llvm::initializeMachineLoopInfoPass ( PassRegistry )

◆ initializeMachineModuleInfoWrapperPassPass()

void llvm::initializeMachineModuleInfoWrapperPassPass ( PassRegistry )

◆ initializeMachineOptimizationRemarkEmitterPassPass()

void llvm::initializeMachineOptimizationRemarkEmitterPassPass ( PassRegistry )

◆ initializeMachineOutlinerPass()

void llvm::initializeMachineOutlinerPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachinePipelinerPass()

void llvm::initializeMachinePipelinerPass ( PassRegistry )

◆ initializeMachinePostDominatorTreePass()

void llvm::initializeMachinePostDominatorTreePass ( PassRegistry )

◆ initializeMachineRegionInfoPassPass()

void llvm::initializeMachineRegionInfoPassPass ( PassRegistry )

◆ initializeMachineSanitizerBinaryMetadataPass()

void llvm::initializeMachineSanitizerBinaryMetadataPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachineSchedulerPass()

void llvm::initializeMachineSchedulerPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachineSinkingPass()

void llvm::initializeMachineSinkingPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachineTraceMetricsPass()

void llvm::initializeMachineTraceMetricsPass ( PassRegistry )

◆ initializeMachineUniformityAnalysisPassPass()

void llvm::initializeMachineUniformityAnalysisPassPass ( PassRegistry )

◆ initializeMachineUniformityInfoPrinterPassPass()

void llvm::initializeMachineUniformityInfoPrinterPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMachineVerifierPassPass()

void llvm::initializeMachineVerifierPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMemoryDependenceWrapperPassPass()

void llvm::initializeMemoryDependenceWrapperPassPass ( PassRegistry )

◆ initializeMemorySSAWrapperPassPass()

void llvm::initializeMemorySSAWrapperPassPass ( PassRegistry )

◆ initializeMergeICmpsLegacyPassPass()

void llvm::initializeMergeICmpsLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeMicroMipsSizeReducePass()

void llvm::initializeMicroMipsSizeReducePass ( PassRegistry )

◆ initializeMipsBranchExpansionPass()

void llvm::initializeMipsBranchExpansionPass ( PassRegistry )

◆ initializeMipsDAGToDAGISelPass()

void llvm::initializeMipsDAGToDAGISelPass ( PassRegistry )

◆ initializeMipsDelaySlotFillerPass()

void llvm::initializeMipsDelaySlotFillerPass ( PassRegistry )

◆ initializeMipsMulMulBugFixPass()

void llvm::initializeMipsMulMulBugFixPass ( PassRegistry )

◆ initializeMipsPostLegalizerCombinerPass()

void llvm::initializeMipsPostLegalizerCombinerPass ( PassRegistry )

◆ initializeMipsPreLegalizerCombinerPass()

void llvm::initializeMipsPreLegalizerCombinerPass ( PassRegistry )

◆ initializeMIRAddFSDiscriminatorsPass()

void llvm::initializeMIRAddFSDiscriminatorsPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMIRCanonicalizerPass()

void llvm::initializeMIRCanonicalizerPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMIRNamerPass()

void llvm::initializeMIRNamerPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMIRPrintingPassPass()

void llvm::initializeMIRPrintingPassPass ( PassRegistry )

◆ initializeMIRProfileLoaderPassPass()

void llvm::initializeMIRProfileLoaderPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeModuleSummaryIndexWrapperPassPass()

void llvm::initializeModuleSummaryIndexWrapperPassPass ( PassRegistry )

◆ initializeModuloScheduleTestPass()

void llvm::initializeModuloScheduleTestPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeMSP430DAGToDAGISelPass()

void llvm::initializeMSP430DAGToDAGISelPass ( PassRegistry )

◆ initializeMVEGatherScatterLoweringPass()

void llvm::initializeMVEGatherScatterLoweringPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeMVELaneInterleavingPass()

void llvm::initializeMVELaneInterleavingPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeMVETailPredicationPass()

void llvm::initializeMVETailPredicationPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeMVETPAndVPTOptimisationsPass()

void llvm::initializeMVETPAndVPTOptimisationsPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeMVEVPTBlockPass()

void llvm::initializeMVEVPTBlockPass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeNaryReassociateLegacyPassPass()

void llvm::initializeNaryReassociateLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ InitializeNativeTarget()

bool llvm::InitializeNativeTarget ( )
inline

InitializeNativeTarget - The main program should call this function to initialize the native target corresponding to the host.

This is useful for JIT applications to ensure that the target gets linked in correctly.

It is legal for a client to make multiple calls to this function.

Definition at line 119 of file TargetSelect.h.

◆ InitializeNativeTargetAsmParser()

bool llvm::InitializeNativeTargetAsmParser ( )
inline

InitializeNativeTargetAsmParser - The main program should call this function to initialize the native target asm parser.

Definition at line 145 of file TargetSelect.h.

◆ InitializeNativeTargetAsmPrinter()

bool llvm::InitializeNativeTargetAsmPrinter ( )
inline

InitializeNativeTargetAsmPrinter - The main program should call this function to initialize the native target asm printer.

Definition at line 133 of file TargetSelect.h.

◆ InitializeNativeTargetDisassembler()

bool llvm::InitializeNativeTargetDisassembler ( )
inline

InitializeNativeTargetDisassembler - The main program should call this function to initialize the native target disassembler.

Definition at line 157 of file TargetSelect.h.

◆ initializeNVPTXAAWrapperPassPass()

void llvm::initializeNVPTXAAWrapperPassPass ( PassRegistry )

◆ initializeNVPTXAllocaHoistingPass()

void llvm::initializeNVPTXAllocaHoistingPass ( PassRegistry )

◆ initializeNVPTXAssignValidGlobalNamesPass()

void llvm::initializeNVPTXAssignValidGlobalNamesPass ( PassRegistry )

◆ initializeNVPTXAtomicLowerPass()

void llvm::initializeNVPTXAtomicLowerPass ( PassRegistry )

◆ initializeNVPTXCtorDtorLoweringLegacyPass()

void llvm::initializeNVPTXCtorDtorLoweringLegacyPass ( PassRegistry )

◆ initializeNVPTXDAGToDAGISelPass()

void llvm::initializeNVPTXDAGToDAGISelPass ( PassRegistry )

◆ initializeNVPTXExternalAAWrapperPass()

void llvm::initializeNVPTXExternalAAWrapperPass ( PassRegistry )

◆ initializeNVPTXLowerAggrCopiesPass()

void llvm::initializeNVPTXLowerAggrCopiesPass ( PassRegistry )

◆ initializeNVPTXLowerAllocaPass()

void llvm::initializeNVPTXLowerAllocaPass ( PassRegistry )

◆ initializeNVPTXLowerArgsPass()

void llvm::initializeNVPTXLowerArgsPass ( PassRegistry )

◆ initializeNVPTXLowerUnreachablePass()

void llvm::initializeNVPTXLowerUnreachablePass ( PassRegistry )

◆ initializeNVPTXPeepholePass()

void llvm::initializeNVPTXPeepholePass ( PassRegistry )

◆ initializeNVPTXProxyRegErasurePass()

void llvm::initializeNVPTXProxyRegErasurePass ( PassRegistry )

◆ initializeNVVMIntrRangePass()

void llvm::initializeNVVMIntrRangePass ( PassRegistry )

◆ initializeNVVMReflectPass()

void llvm::initializeNVVMReflectPass ( PassRegistry )

◆ initializeObjCARCContractLegacyPassPass()

void llvm::initializeObjCARCContractLegacyPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeOptimizationRemarkEmitterWrapperPassPass()

void llvm::initializeOptimizationRemarkEmitterWrapperPassPass ( PassRegistry )

◆ initializeOptimizePHIsPass()

void llvm::initializeOptimizePHIsPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeOptimizeReturnedPass()

void llvm::initializeOptimizeReturnedPass ( PassRegistry )

◆ initializePartiallyInlineLibCallsLegacyPassPass()

void llvm::initializePartiallyInlineLibCallsLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializePatchableFunctionPass()

void llvm::initializePatchableFunctionPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializePeepholeOptimizerPass()

void llvm::initializePeepholeOptimizerPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializePEIPass()

void llvm::initializePEIPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializePHIEliminationPass()

void llvm::initializePHIEliminationPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializePhiValuesWrapperPassPass()

void llvm::initializePhiValuesWrapperPassPass ( PassRegistry )

◆ initializePhysicalRegisterUsageInfoPass()

void llvm::initializePhysicalRegisterUsageInfoPass ( PassRegistry )

◆ initializePlaceBackedgeSafepointsLegacyPassPass()

void llvm::initializePlaceBackedgeSafepointsLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializePostDominatorTreeWrapperPassPass()

void llvm::initializePostDominatorTreeWrapperPassPass ( PassRegistry )

◆ initializePostDomOnlyPrinterWrapperPassPass()

void llvm::initializePostDomOnlyPrinterWrapperPassPass ( PassRegistry )

◆ initializePostDomOnlyViewerWrapperPassPass()

void llvm::initializePostDomOnlyViewerWrapperPassPass ( PassRegistry )

Referenced by initializeAnalysis().

◆ initializePostDomPrinterWrapperPassPass()

void llvm::initializePostDomPrinterWrapperPassPass ( PassRegistry )

◆ initializePostDomViewerWrapperPassPass()

void llvm::initializePostDomViewerWrapperPassPass ( PassRegistry )

Referenced by initializeAnalysis().

◆ initializePostMachineSchedulerPass()

void llvm::initializePostMachineSchedulerPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializePostRAHazardRecognizerPass()

void llvm::initializePostRAHazardRecognizerPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializePostRAMachineSinkingPass()

void llvm::initializePostRAMachineSinkingPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializePostRASchedulerPass()

void llvm::initializePostRASchedulerPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializePPCBoolRetToIntPass()

void llvm::initializePPCBoolRetToIntPass ( PassRegistry )

◆ initializePPCBranchCoalescingPass()

void llvm::initializePPCBranchCoalescingPass ( PassRegistry )

◆ initializePPCBSelPass()

void llvm::initializePPCBSelPass ( PassRegistry )

◆ initializePPCCTRLoopsPass()

void llvm::initializePPCCTRLoopsPass ( PassRegistry )

◆ initializePPCCTRLoopsVerifyPass()

void llvm::initializePPCCTRLoopsVerifyPass ( PassRegistry )

◆ initializePPCDAGToDAGISelPass()

void llvm::initializePPCDAGToDAGISelPass ( PassRegistry )

◆ initializePPCEarlyReturnPass()

void llvm::initializePPCEarlyReturnPass ( PassRegistry )

◆ initializePPCExpandAtomicPseudoPass()

void llvm::initializePPCExpandAtomicPseudoPass ( PassRegistry )

◆ initializePPCExpandISELPass()

void llvm::initializePPCExpandISELPass ( PassRegistry )

◆ initializePPCGenScalarMASSEntriesPass()

void llvm::initializePPCGenScalarMASSEntriesPass ( PassRegistry )

◆ initializePPCLoopInstrFormPrepPass()

void llvm::initializePPCLoopInstrFormPrepPass ( PassRegistry )

◆ initializePPCLowerMASSVEntriesPass()

void llvm::initializePPCLowerMASSVEntriesPass ( PassRegistry )

◆ initializePPCMergeStringPoolPass()

void llvm::initializePPCMergeStringPoolPass ( PassRegistry )

◆ initializePPCMIPeepholePass()

void llvm::initializePPCMIPeepholePass ( PassRegistry )

◆ initializePPCPreEmitPeepholePass()

void llvm::initializePPCPreEmitPeepholePass ( PassRegistry )

◆ initializePPCReduceCRLogicalsPass()

void llvm::initializePPCReduceCRLogicalsPass ( PassRegistry )

◆ initializePPCTLSDynamicCallPass()

void llvm::initializePPCTLSDynamicCallPass ( PassRegistry )

◆ initializePPCTOCRegDepsPass()

void llvm::initializePPCTOCRegDepsPass ( PassRegistry )

◆ initializePPCVSXCopyPass()

void llvm::initializePPCVSXCopyPass ( PassRegistry )

◆ initializePPCVSXFMAMutatePass()

void llvm::initializePPCVSXFMAMutatePass ( PassRegistry )

◆ initializePPCVSXSwapRemovalPass()

void llvm::initializePPCVSXSwapRemovalPass ( PassRegistry )

◆ initializePreISelIntrinsicLoweringLegacyPassPass()

void llvm::initializePreISelIntrinsicLoweringLegacyPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializePrintFunctionPassWrapperPass()

void llvm::initializePrintFunctionPassWrapperPass ( PassRegistry )

Referenced by initializeCore().

◆ initializePrintModulePassWrapperPass()

void llvm::initializePrintModulePassWrapperPass ( PassRegistry )

Referenced by initializeCore().

◆ initializeProcessImplicitDefsPass()

void llvm::initializeProcessImplicitDefsPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeProfileSummaryInfoWrapperPassPass()

void llvm::initializeProfileSummaryInfoWrapperPassPass ( PassRegistry )

Referenced by INITIALIZE_PASS().

◆ initializePromoteLegacyPassPass()

void llvm::initializePromoteLegacyPassPass ( PassRegistry )

◆ initializePseudoProbeInserterPass()

void llvm::initializePseudoProbeInserterPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeR600ClauseMergePassPass()

void llvm::initializeR600ClauseMergePassPass ( PassRegistry )

◆ initializeR600ControlFlowFinalizerPass()

void llvm::initializeR600ControlFlowFinalizerPass ( PassRegistry )

◆ initializeR600EmitClauseMarkersPass()

void llvm::initializeR600EmitClauseMarkersPass ( PassRegistry )

◆ initializeR600ExpandSpecialInstrsPassPass()

void llvm::initializeR600ExpandSpecialInstrsPassPass ( PassRegistry )

◆ initializeR600MachineCFGStructurizerPass()

void llvm::initializeR600MachineCFGStructurizerPass ( PassRegistry )

◆ initializeR600PacketizerPass()

void llvm::initializeR600PacketizerPass ( PassRegistry )

◆ initializeR600VectorRegMergerPass()

void llvm::initializeR600VectorRegMergerPass ( PassRegistry )

◆ initializeRABasicPass()

void llvm::initializeRABasicPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeRAGreedyPass()

void llvm::initializeRAGreedyPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeReachingDefAnalysisPass()

void llvm::initializeReachingDefAnalysisPass ( PassRegistry )

◆ initializeReassociateLegacyPassPass()

void llvm::initializeReassociateLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeRegAllocEvictionAdvisorAnalysisPass()

void llvm::initializeRegAllocEvictionAdvisorAnalysisPass ( PassRegistry )

◆ initializeRegAllocFastPass()

void llvm::initializeRegAllocFastPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeRegAllocPriorityAdvisorAnalysisPass()

void llvm::initializeRegAllocPriorityAdvisorAnalysisPass ( PassRegistry )

◆ initializeRegAllocScoringPass()

void llvm::initializeRegAllocScoringPass ( PassRegistry )

◆ initializeRegBankSelectPass()

void llvm::initializeRegBankSelectPass ( PassRegistry )

Referenced by initializeGlobalISel().

◆ initializeRegionInfoPassPass()

void llvm::initializeRegionInfoPassPass ( PassRegistry )

◆ initializeRegionOnlyPrinterPass()

void llvm::initializeRegionOnlyPrinterPass ( PassRegistry )

Referenced by initializeAnalysis().

◆ initializeRegionOnlyViewerPass()

void llvm::initializeRegionOnlyViewerPass ( PassRegistry )

Referenced by initializeAnalysis().

◆ initializeRegionPrinterPass()

void llvm::initializeRegionPrinterPass ( PassRegistry )

Referenced by initializeAnalysis().

◆ initializeRegionViewerPass()

void llvm::initializeRegionViewerPass ( PassRegistry )

Referenced by initializeAnalysis().

◆ initializeRegisterCoalescerPass()

void llvm::initializeRegisterCoalescerPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeRegUsageInfoCollectorPass()

void llvm::initializeRegUsageInfoCollectorPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeRegUsageInfoPropagationPass()

void llvm::initializeRegUsageInfoPropagationPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeRemoveRedundantDebugValuesPass()

void llvm::initializeRemoveRedundantDebugValuesPass ( PassRegistry )

◆ initializeRenameIndependentSubregsPass()

void llvm::initializeRenameIndependentSubregsPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeReplaceWithVeclibLegacyPass()

void llvm::initializeReplaceWithVeclibLegacyPass ( PassRegistry )

◆ initializeResetMachineFunctionPass()

void llvm::initializeResetMachineFunctionPass ( PassRegistry )

◆ initializeRISCVCodeGenPreparePass()

void llvm::initializeRISCVCodeGenPreparePass ( PassRegistry )

◆ initializeRISCVDAGToDAGISelPass()

void llvm::initializeRISCVDAGToDAGISelPass ( PassRegistry )

◆ initializeRISCVDeadRegisterDefinitionsPass()

void llvm::initializeRISCVDeadRegisterDefinitionsPass ( PassRegistry )

◆ initializeRISCVExpandAtomicPseudoPass()

void llvm::initializeRISCVExpandAtomicPseudoPass ( PassRegistry )

◆ initializeRISCVExpandPseudoPass()

void llvm::initializeRISCVExpandPseudoPass ( PassRegistry )

◆ initializeRISCVFoldMasksPass()

void llvm::initializeRISCVFoldMasksPass ( PassRegistry )

◆ initializeRISCVGatherScatterLoweringPass()

void llvm::initializeRISCVGatherScatterLoweringPass ( PassRegistry )

◆ initializeRISCVInsertReadWriteCSRPass()

void llvm::initializeRISCVInsertReadWriteCSRPass ( PassRegistry )

◆ initializeRISCVInsertVSETVLIPass()

void llvm::initializeRISCVInsertVSETVLIPass ( PassRegistry )

◆ initializeRISCVInsertWriteVXRMPass()

void llvm::initializeRISCVInsertWriteVXRMPass ( PassRegistry )

◆ initializeRISCVMakeCompressibleOptPass()

void llvm::initializeRISCVMakeCompressibleOptPass ( PassRegistry )

◆ initializeRISCVMergeBaseOffsetOptPass()

void llvm::initializeRISCVMergeBaseOffsetOptPass ( PassRegistry )

◆ initializeRISCVMoveMergePass()

void llvm::initializeRISCVMoveMergePass ( PassRegistry )

◆ initializeRISCVO0PreLegalizerCombinerPass()

void llvm::initializeRISCVO0PreLegalizerCombinerPass ( PassRegistry )

◆ initializeRISCVOptWInstrsPass()

void llvm::initializeRISCVOptWInstrsPass ( PassRegistry )

◆ initializeRISCVPostLegalizerCombinerPass()

void llvm::initializeRISCVPostLegalizerCombinerPass ( PassRegistry )

◆ initializeRISCVPostRAExpandPseudoPass()

void llvm::initializeRISCVPostRAExpandPseudoPass ( PassRegistry )

◆ initializeRISCVPreLegalizerCombinerPass()

void llvm::initializeRISCVPreLegalizerCombinerPass ( PassRegistry )

◆ initializeRISCVPreRAExpandPseudoPass()

void llvm::initializeRISCVPreRAExpandPseudoPass ( PassRegistry )

◆ initializeRISCVPushPopOptPass()

void llvm::initializeRISCVPushPopOptPass ( PassRegistry )

◆ initializeRISCVRedundantCopyEliminationPass()

void llvm::initializeRISCVRedundantCopyEliminationPass ( PassRegistry )

◆ initializeSafepointIRVerifierPass()

void llvm::initializeSafepointIRVerifierPass ( PassRegistry )

Referenced by initializeCore().

◆ initializeSafeStackLegacyPassPass()

void llvm::initializeSafeStackLegacyPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeScalarEvolutionWrapperPassPass()

void llvm::initializeScalarEvolutionWrapperPassPass ( PassRegistry )

◆ initializeScalarizeMaskedMemIntrinLegacyPassPass()

void llvm::initializeScalarizeMaskedMemIntrinLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeScalarOpts()

void llvm::initializeScalarOpts ( PassRegistry Registry)

◆ initializeScavengerTestPass()

void llvm::initializeScavengerTestPass ( PassRegistry )

◆ initializeSCEVAAWrapperPassPass()

void llvm::initializeSCEVAAWrapperPassPass ( PassRegistry )

◆ initializeScopedNoAliasAAWrapperPassPass()

void llvm::initializeScopedNoAliasAAWrapperPassPass ( PassRegistry )

◆ initializeSelectOptimizePass()

void llvm::initializeSelectOptimizePass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeSeparateConstOffsetFromGEPLegacyPassPass()

void llvm::initializeSeparateConstOffsetFromGEPLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeShaderFlagsAnalysisWrapperPass()

void llvm::initializeShaderFlagsAnalysisWrapperPass ( PassRegistry )

◆ initializeShadowStackGCLoweringPass()

void llvm::initializeShadowStackGCLoweringPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeShrinkWrapPass()

void llvm::initializeShrinkWrapPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeSIAnnotateControlFlowPass()

void llvm::initializeSIAnnotateControlFlowPass ( PassRegistry )

◆ initializeSIFixSGPRCopiesPass()

void llvm::initializeSIFixSGPRCopiesPass ( PassRegistry )

◆ initializeSIFixVGPRCopiesPass()

void llvm::initializeSIFixVGPRCopiesPass ( PassRegistry )

◆ initializeSIFoldOperandsPass()

void llvm::initializeSIFoldOperandsPass ( PassRegistry )

◆ initializeSIFormMemoryClausesPass()

void llvm::initializeSIFormMemoryClausesPass ( PassRegistry )

◆ initializeSIInsertHardClausesPass()

void llvm::initializeSIInsertHardClausesPass ( PassRegistry )

◆ initializeSIInsertWaitcntsPass()

void llvm::initializeSIInsertWaitcntsPass ( PassRegistry )

◆ initializeSILateBranchLoweringPass()

void llvm::initializeSILateBranchLoweringPass ( PassRegistry )

◆ initializeSILoadStoreOptimizerPass()

void llvm::initializeSILoadStoreOptimizerPass ( PassRegistry )

◆ initializeSILowerControlFlowPass()

void llvm::initializeSILowerControlFlowPass ( PassRegistry )

◆ initializeSILowerI1CopiesPass()

void llvm::initializeSILowerI1CopiesPass ( PassRegistry )

◆ initializeSILowerSGPRSpillsPass()

void llvm::initializeSILowerSGPRSpillsPass ( PassRegistry )

◆ initializeSILowerWWMCopiesPass()

void llvm::initializeSILowerWWMCopiesPass ( PassRegistry )

◆ initializeSIMemoryLegalizerPass()

void llvm::initializeSIMemoryLegalizerPass ( PassRegistry )

◆ initializeSIModeRegisterPass()

void llvm::initializeSIModeRegisterPass ( PassRegistry )

◆ initializeSingleLoopExtractorPass()

void llvm::initializeSingleLoopExtractorPass ( PassRegistry )

Referenced by initializeIPO().

◆ initializeSinkingLegacyPassPass()

void llvm::initializeSinkingLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeSIOptimizeExecMaskingPass()

void llvm::initializeSIOptimizeExecMaskingPass ( PassRegistry )

◆ initializeSIOptimizeExecMaskingPreRAPass()

void llvm::initializeSIOptimizeExecMaskingPreRAPass ( PassRegistry )

◆ initializeSIOptimizeVGPRLiveRangePass()

void llvm::initializeSIOptimizeVGPRLiveRangePass ( PassRegistry )

◆ initializeSIPeepholeSDWAPass()

void llvm::initializeSIPeepholeSDWAPass ( PassRegistry )

◆ initializeSIPostRABundlerPass()

void llvm::initializeSIPostRABundlerPass ( PassRegistry )

◆ initializeSIPreAllocateWWMRegsPass()

void llvm::initializeSIPreAllocateWWMRegsPass ( PassRegistry )

◆ initializeSIPreEmitPeepholePass()

void llvm::initializeSIPreEmitPeepholePass ( PassRegistry )

◆ initializeSIShrinkInstructionsPass()

void llvm::initializeSIShrinkInstructionsPass ( PassRegistry )

◆ initializeSIWholeQuadModePass()

void llvm::initializeSIWholeQuadModePass ( PassRegistry )

◆ initializeSjLjEHPreparePass()

void llvm::initializeSjLjEHPreparePass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeSlotIndexesPass()

void llvm::initializeSlotIndexesPass ( PassRegistry )

◆ initializeSMEABIPass()

void llvm::initializeSMEABIPass ( PassRegistry )

◆ initializeSparcDAGToDAGISelPass()

void llvm::initializeSparcDAGToDAGISelPass ( PassRegistry )

◆ initializeSpeculativeExecutionLegacyPassPass()

void llvm::initializeSpeculativeExecutionLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeSpillPlacementPass()

void llvm::initializeSpillPlacementPass ( PassRegistry )

◆ initializeSPIRVConvergenceRegionAnalysisWrapperPassPass()

void llvm::initializeSPIRVConvergenceRegionAnalysisWrapperPassPass ( PassRegistry )

◆ initializeSPIRVEmitIntrinsicsPass()

void llvm::initializeSPIRVEmitIntrinsicsPass ( PassRegistry )

◆ initializeSPIRVModuleAnalysisPass()

void llvm::initializeSPIRVModuleAnalysisPass ( PassRegistry )

◆ initializeSPIRVPostLegalizerPass()

void llvm::initializeSPIRVPostLegalizerPass ( PassRegistry )

◆ initializeSPIRVPreLegalizerPass()

void llvm::initializeSPIRVPreLegalizerPass ( PassRegistry )

◆ initializeSPIRVPrepareFunctionsPass()

void llvm::initializeSPIRVPrepareFunctionsPass ( PassRegistry )

◆ initializeSPIRVRegularizerPass()

void llvm::initializeSPIRVRegularizerPass ( PassRegistry )

◆ initializeSPIRVStripConvergentIntrinsicsPass()

void llvm::initializeSPIRVStripConvergentIntrinsicsPass ( PassRegistry )

◆ initializeSROALegacyPassPass()

void llvm::initializeSROALegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeStackColoringPass()

void llvm::initializeStackColoringPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeStackFrameLayoutAnalysisPassPass()

void llvm::initializeStackFrameLayoutAnalysisPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeStackMapLivenessPass()

void llvm::initializeStackMapLivenessPass ( PassRegistry )

◆ initializeStackProtectorPass()

void llvm::initializeStackProtectorPass ( PassRegistry )

◆ initializeStackSafetyGlobalInfoWrapperPassPass()

void llvm::initializeStackSafetyGlobalInfoWrapperPassPass ( PassRegistry )

◆ initializeStackSafetyInfoWrapperPassPass()

void llvm::initializeStackSafetyInfoWrapperPassPass ( PassRegistry )

◆ initializeStackSlotColoringPass()

void llvm::initializeStackSlotColoringPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeStraightLineStrengthReduceLegacyPassPass()

void llvm::initializeStraightLineStrengthReduceLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeStripDebugMachineModulePass()

void llvm::initializeStripDebugMachineModulePass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeStructurizeCFGLegacyPassPass()

void llvm::initializeStructurizeCFGLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeSVEIntrinsicOptsPass()

void llvm::initializeSVEIntrinsicOptsPass ( PassRegistry )

◆ initializeSystemZCopyPhysRegsPass()

void llvm::initializeSystemZCopyPhysRegsPass ( PassRegistry )

◆ initializeSystemZDAGToDAGISelPass()

void llvm::initializeSystemZDAGToDAGISelPass ( PassRegistry )

◆ initializeSystemZElimComparePass()

void llvm::initializeSystemZElimComparePass ( PassRegistry )

◆ initializeSystemZLDCleanupPass()

void llvm::initializeSystemZLDCleanupPass ( PassRegistry )

◆ initializeSystemZLongBranchPass()

void llvm::initializeSystemZLongBranchPass ( PassRegistry )

◆ initializeSystemZPostRewritePass()

void llvm::initializeSystemZPostRewritePass ( PassRegistry )

◆ initializeSystemZShortenInstPass()

void llvm::initializeSystemZShortenInstPass ( PassRegistry )

◆ initializeSystemZTDCPassPass()

void llvm::initializeSystemZTDCPassPass ( PassRegistry )

◆ initializeTailCallElimPass()

void llvm::initializeTailCallElimPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeTailDuplicatePass()

void llvm::initializeTailDuplicatePass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeTarget()

void llvm::initializeTarget ( PassRegistry Registry)

Initialize all passes linked into the CodeGen library.

Definition at line 37 of file Target.cpp.

References initializeTargetLibraryInfoWrapperPassPass(), and initializeTargetTransformInfoWrapperPassPass().

◆ initializeTargetLibraryInfoWrapperPassPass()

void llvm::initializeTargetLibraryInfoWrapperPassPass ( PassRegistry )

◆ initializeTargetPassConfigPass()

void llvm::initializeTargetPassConfigPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeTargetTransformInfoWrapperPassPass()

void llvm::initializeTargetTransformInfoWrapperPassPass ( PassRegistry )

◆ initializeThumb2ITBlockPass()

void llvm::initializeThumb2ITBlockPass ( PassRegistry )

◆ initializeThumb2SizeReducePass()

void llvm::initializeThumb2SizeReducePass ( PassRegistry )

Referenced by LLVMInitializeARMTarget().

◆ initializeTLSVariableHoistLegacyPassPass()

void llvm::initializeTLSVariableHoistLegacyPassPass ( PassRegistry )

Referenced by initializeScalarOpts().

◆ initializeTransformUtils()

void llvm::initializeTransformUtils ( PassRegistry Registry)

◆ initializeTwoAddressInstructionPassPass()

void llvm::initializeTwoAddressInstructionPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeTypeBasedAAWrapperPassPass()

void llvm::initializeTypeBasedAAWrapperPassPass ( PassRegistry )

◆ initializeTypePromotionLegacyPass()

void llvm::initializeTypePromotionLegacyPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeUniformityInfoWrapperPassPass()

void llvm::initializeUniformityInfoWrapperPassPass ( PassRegistry )

◆ initializeUnifyLoopExitsLegacyPassPass()

void llvm::initializeUnifyLoopExitsLegacyPassPass ( PassRegistry )

◆ initializeUnpackMachineBundlesPass()

void llvm::initializeUnpackMachineBundlesPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeUnreachableBlockElimLegacyPassPass()

void llvm::initializeUnreachableBlockElimLegacyPassPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeUnreachableMachineBlockElimPass()

void llvm::initializeUnreachableMachineBlockElimPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeVectorization()

void llvm::initializeVectorization ( PassRegistry Registry)

Initialize all passes linked into the Vectorize library.

Initialize all passes linked into the Vectorization library.

Definition at line 21 of file Vectorize.cpp.

References initializeLoadStoreVectorizerLegacyPassPass().

◆ initializeVEDAGToDAGISelPass()

void llvm::initializeVEDAGToDAGISelPass ( PassRegistry )

Referenced by LLVMInitializeVETarget().

◆ initializeVerifierLegacyPassPass()

void llvm::initializeVerifierLegacyPassPass ( PassRegistry )

Referenced by initializeCore().

◆ initializeVirtRegMapPass()

void llvm::initializeVirtRegMapPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeVirtRegRewriterPass()

void llvm::initializeVirtRegRewriterPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeWasmEHPreparePass()

void llvm::initializeWasmEHPreparePass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeWebAssemblyAddMissingPrototypesPass()

void llvm::initializeWebAssemblyAddMissingPrototypesPass ( PassRegistry )

◆ initializeWebAssemblyArgumentMovePass()

void llvm::initializeWebAssemblyArgumentMovePass ( PassRegistry )

◆ initializeWebAssemblyCFGSortPass()

void llvm::initializeWebAssemblyCFGSortPass ( PassRegistry )

◆ initializeWebAssemblyCFGStackifyPass()

void llvm::initializeWebAssemblyCFGStackifyPass ( PassRegistry )

◆ initializeWebAssemblyDAGToDAGISelPass()

void llvm::initializeWebAssemblyDAGToDAGISelPass ( PassRegistry )

◆ initializeWebAssemblyDebugFixupPass()

void llvm::initializeWebAssemblyDebugFixupPass ( PassRegistry )

◆ initializeWebAssemblyExceptionInfoPass()

void llvm::initializeWebAssemblyExceptionInfoPass ( PassRegistry )

◆ initializeWebAssemblyExplicitLocalsPass()

void llvm::initializeWebAssemblyExplicitLocalsPass ( PassRegistry )

◆ initializeWebAssemblyFixBrTableDefaultsPass()

void llvm::initializeWebAssemblyFixBrTableDefaultsPass ( PassRegistry )

◆ initializeWebAssemblyFixIrreducibleControlFlowPass()

void llvm::initializeWebAssemblyFixIrreducibleControlFlowPass ( PassRegistry )

◆ initializeWebAssemblyLateEHPreparePass()

void llvm::initializeWebAssemblyLateEHPreparePass ( PassRegistry )

◆ initializeWebAssemblyLowerBrUnlessPass()

void llvm::initializeWebAssemblyLowerBrUnlessPass ( PassRegistry )

◆ initializeWebAssemblyLowerEmscriptenEHSjLjPass()

void llvm::initializeWebAssemblyLowerEmscriptenEHSjLjPass ( PassRegistry )

◆ initializeWebAssemblyLowerRefTypesIntPtrConvPass()

void llvm::initializeWebAssemblyLowerRefTypesIntPtrConvPass ( PassRegistry )

◆ initializeWebAssemblyMCLowerPrePassPass()

void llvm::initializeWebAssemblyMCLowerPrePassPass ( PassRegistry )

◆ initializeWebAssemblyMemIntrinsicResultsPass()

void llvm::initializeWebAssemblyMemIntrinsicResultsPass ( PassRegistry )

◆ initializeWebAssemblyNullifyDebugValueListsPass()

void llvm::initializeWebAssemblyNullifyDebugValueListsPass ( PassRegistry )

◆ initializeWebAssemblyOptimizeLiveIntervalsPass()

void llvm::initializeWebAssemblyOptimizeLiveIntervalsPass ( PassRegistry )

◆ initializeWebAssemblyPeepholePass()

void llvm::initializeWebAssemblyPeepholePass ( PassRegistry )

◆ initializeWebAssemblyRefTypeMem2LocalPass()

void llvm::initializeWebAssemblyRefTypeMem2LocalPass ( PassRegistry )

◆ initializeWebAssemblyRegColoringPass()

void llvm::initializeWebAssemblyRegColoringPass ( PassRegistry )

◆ initializeWebAssemblyRegNumberingPass()

void llvm::initializeWebAssemblyRegNumberingPass ( PassRegistry )

◆ initializeWebAssemblyRegStackifyPass()

void llvm::initializeWebAssemblyRegStackifyPass ( PassRegistry )

◆ initializeWebAssemblyReplacePhysRegsPass()

void llvm::initializeWebAssemblyReplacePhysRegsPass ( PassRegistry )

◆ initializeWebAssemblySetP2AlignOperandsPass()

void llvm::initializeWebAssemblySetP2AlignOperandsPass ( PassRegistry )

◆ initializeWinEHPreparePass()

void llvm::initializeWinEHPreparePass ( PassRegistry )

Referenced by initializeCodeGen().

◆ initializeWinEHStatePassPass()

void llvm::initializeWinEHStatePassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeWriteBitcodePassPass()

void llvm::initializeWriteBitcodePassPass ( PassRegistry )

◆ initializeWriteDXILPassPass()

void llvm::initializeWriteDXILPassPass ( PassRegistry )

Initializer for dxil writer pass.

Referenced by LLVMInitializeDirectXTarget().

◆ initializeX86ArgumentStackSlotPassPass()

void llvm::initializeX86ArgumentStackSlotPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86AvoidSFBPassPass()

void llvm::initializeX86AvoidSFBPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86AvoidTrailingCallPassPass()

void llvm::initializeX86AvoidTrailingCallPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86CallFrameOptimizationPass()

void llvm::initializeX86CallFrameOptimizationPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86CmovConverterPassPass()

void llvm::initializeX86CmovConverterPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86DAGToDAGISelPass()

void llvm::initializeX86DAGToDAGISelPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86DomainReassignmentPass()

void llvm::initializeX86DomainReassignmentPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86ExecutionDomainFixPass()

void llvm::initializeX86ExecutionDomainFixPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86ExpandPseudoPass()

void llvm::initializeX86ExpandPseudoPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86FastPreTileConfigPass()

void llvm::initializeX86FastPreTileConfigPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86FastTileConfigPass()

void llvm::initializeX86FastTileConfigPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86FixupInstTuningPassPass()

void llvm::initializeX86FixupInstTuningPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86FixupSetCCPassPass()

void llvm::initializeX86FixupSetCCPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86FixupVectorConstantsPassPass()

void llvm::initializeX86FixupVectorConstantsPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86FlagsCopyLoweringPassPass()

void llvm::initializeX86FlagsCopyLoweringPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86LoadValueInjectionLoadHardeningPassPass()

void llvm::initializeX86LoadValueInjectionLoadHardeningPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86LoadValueInjectionRetHardeningPassPass()

void llvm::initializeX86LoadValueInjectionRetHardeningPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86LowerAMXIntrinsicsLegacyPassPass()

void llvm::initializeX86LowerAMXIntrinsicsLegacyPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86LowerAMXTypeLegacyPassPass()

void llvm::initializeX86LowerAMXTypeLegacyPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86LowerTileCopyPass()

void llvm::initializeX86LowerTileCopyPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86OptimizeLEAPassPass()

void llvm::initializeX86OptimizeLEAPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86PartialReductionPass()

void llvm::initializeX86PartialReductionPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86PreTileConfigPass()

void llvm::initializeX86PreTileConfigPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86ReturnThunksPass()

void llvm::initializeX86ReturnThunksPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86SpeculativeExecutionSideEffectSuppressionPass()

void llvm::initializeX86SpeculativeExecutionSideEffectSuppressionPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86SpeculativeLoadHardeningPassPass()

void llvm::initializeX86SpeculativeLoadHardeningPassPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeX86TileConfigPass()

void llvm::initializeX86TileConfigPass ( PassRegistry )

Referenced by LLVMInitializeX86Target().

◆ initializeXCoreDAGToDAGISelPass()

void llvm::initializeXCoreDAGToDAGISelPass ( PassRegistry )

◆ initializeXCoreLowerThreadLocalPass()

void llvm::initializeXCoreLowerThreadLocalPass ( PassRegistry p)

◆ initializeXRayInstrumentationPass()

void llvm::initializeXRayInstrumentationPass ( PassRegistry )

Referenced by initializeCodeGen().

◆ InitialSyntheticCount()

cl::opt< int > llvm::InitialSyntheticCount ( "initial-synthetic-count"  ,
cl::Hidden  ,
cl::init(10)  ,
cl::desc("Initial value of synthetic entry count")   
)

◆ initRandomSeedOptions()

void llvm::initRandomSeedOptions ( )

Definition at line 42 of file RandomNumberGenerator.cpp.

References Seed.

Referenced by initCommonOptions().

◆ initSignalsOptions()

void llvm::initSignalsOptions ( )

Definition at line 64 of file Signals.cpp.

Referenced by initCommonOptions().

◆ initStatisticOptions()

void llvm::initStatisticOptions ( )

Definition at line 49 of file Statistic.cpp.

References EnableStats, llvm::cl::Hidden, llvm::cl::location(), and StatsAsJSON.

Referenced by initCommonOptions().

◆ initTimerOptions()

void llvm::initTimerOptions ( )

Definition at line 90 of file Timer.cpp.

Referenced by initCommonOptions().

◆ initTypeSizeOptions()

void llvm::initTypeSizeOptions ( )

Definition at line 33 of file TypeSize.cpp.

References ScalableErrorAsWarning.

Referenced by initCommonOptions().

◆ initWithColorOptions()

void llvm::initWithColorOptions ( )

Definition at line 34 of file WithColor.cpp.

References UseColor.

Referenced by initCommonOptions().

◆ inlineCostFeatureToMlFeature()

constexpr FeatureIndex llvm::inlineCostFeatureToMlFeature ( InlineCostFeatureIndex  Feature)
constexpr

Definition at line 141 of file InlineModelFeatureMaps.h.

Referenced by llvm::MLInlineAdvisor::getAdviceImpl().

◆ inlineCostStr()

std::string llvm::inlineCostStr ( const InlineCost IC)

Utility for extracting the inline cost message to a string.

Definition at line 356 of file InlineAdvisor.cpp.

References Remark.

Referenced by shouldInline().

◆ InlineFunction()

llvm::InlineResult llvm::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.

This returns false if it is not possible to inline this call. The program is still in a well defined state if this occurs though.

Note that this only does one level of inlining. For example, if the instruction 'call B' is inlined, and 'B' calls 'C', then the call to 'C' now exists in the instruction stream. Similarly this will inline a recursive function by one level.

Note that while this routine is allowed to cleanup and optimize the inlined code to minimize the actual inserted code, it must not delete code in the caller as users of this routine may have pointers to instructions in the caller that need to remain stable.

If ForwardVarArgsTo is passed, inlining a function with varargs is allowed and all varargs at the callsite will be passed to any calls to ForwardVarArgsTo. The caller of InlineFunction has to make sure any varargs are only used by ForwardVarArgsTo.

The callee's function attributes are merged into the callers' if MergeAttributes is set to true.

This returns false if it is not possible to inline this call. The program is still in a well defined state if this occurs though.

Note that this only does one level of inlining. For example, if the instruction 'call B' is inlined, and 'B' calls 'C', then the call to 'C' now exists in the instruction stream. Similarly this will inline a recursive function by one level.

Preserve all attributes on of the call and its parameters.

Definition at line 2032 of file InlineFunction.cpp.

References AddAliasScopeMetadata(), AddAlignmentAssumptions(), AddReturnAttributes(), allocaWouldBeStaticInEntry(), llvm::SmallVectorImpl< T >::append(), append_range(), llvm::Function::arg_begin(), llvm::CallBase::arg_begin(), llvm::Function::arg_end(), llvm::CallBase::arg_size(), llvm::CallBase::args(), assert(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::BasicBlock::begin(), llvm::InlineFunctionInfo::CalleeBFI, llvm::InlineFunctionInfo::CallerBFI, changeToUnreachable(), classifyEHPersonality(), llvm::SmallVectorImpl< T >::clear(), CloneAndPruneFunctionInto(), llvm::ClonedCodeInfo::ContainsCalls, llvm::ClonedCodeInfo::ContainsDynamicAllocas, llvm::ClonedCodeInfo::ContainsMemProfMetadata, llvm::BranchInst::Create(), llvm::CallBase::Create(), llvm::CallInst::Create(), llvm::PHINode::Create(), llvm::IRBuilderBase::CreateBitCast(), llvm::IRBuilderBase::CreateCall(), llvm::IRBuilderBase::CreateLifetimeEnd(), llvm::IRBuilderBase::CreateLifetimeStart(), llvm::IRBuilderBase::CreateRet(), llvm::IRBuilderBase::CreateRetVoid(), llvm::IRBuilderBase::CreateStackRestore(), llvm::IRBuilderBase::CreateStackSave(), DL, llvm::CallBase::doesNotThrow(), llvm::SmallVectorImpl< T >::emplace_back(), llvm::SmallVectorBase< Size_T >::empty(), llvm::SmallVectorTemplateCommon< T, typename >::end(), erase_if(), llvm::BasicBlock::eraseFromParent(), llvm::Instruction::eraseFromParent(), F, llvm::InlineResult::failure(), fixupAssignments(), fixupLineNumbers(), llvm::Function::front(), llvm::AttributeList::get(), llvm::PoisonValue::get(), llvm::AllocaInst::getAllocatedType(), llvm::CallBase::getArgOperand(), llvm::AllocaInst::getArraySize(), llvm::InlineFunctionInfo::GetAssumptionCache, llvm::objcarc::getAttachedARCFunctionKind(), llvm::CallBase::getAttributes(), llvm::BlockFrequencyInfo::getBlockFreq(), llvm::CallBase::getCalledFunction(), llvm::CallBase::getCalledOperand(), llvm::Function::getCallingConv(), llvm::CallBase::getCallingConv(), llvm::Value::getContext(), llvm::Instruction::getDebugLoc(), getDebugLoc(), llvm::Intrinsic::getDeclaration(), llvm::Function::getEntryBlock(), llvm::Function::getEntryCount(), llvm::BasicBlock::getFirstNonPHI(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::Instruction::getFunction(), llvm::Function::getFunctionType(), llvm::CallBase::getFunctionType(), llvm::Function::getGC(), llvm::Type::getInt64Ty(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Value::getName(), llvm::InvokeInst::getNormalDest(), llvm::CallBase::getNumOperandBundles(), llvm::FunctionType::getNumParams(), llvm::Instruction::getOpcode(), llvm::CallBase::getOperandBundle(), llvm::CallBase::getOperandBundleAt(), llvm::CallBase::getOperandBundlesAsDefs(), llvm::Function::getParamAlign(), llvm::AttributeList::getParamAttrs(), llvm::CallBase::getParamByValType(), llvm::BasicBlock::getParent(), llvm::Instruction::getParent(), llvm::Function::getPersonalityFn(), llvm::Function::getReturnType(), llvm::ReturnInst::getReturnValue(), llvm::Function::getSubprogram(), llvm::CallInst::getTailCallKind(), llvm::BasicBlock::getTerminatingDeoptimizeCall(), llvm::BasicBlock::getTerminatingMustTailCall(), llvm::BasicBlock::getTerminator(), llvm::Value::getType(), llvm::InvokeInst::getUnwindDest(), getUnwindDestToken(), HandleByValArgument(), HandleByValArgumentInit(), HandleInlinedEHPad(), HandleInlinedLandingPad(), llvm::Function::hasGC(), hasLifetimeMarkers(), llvm::CallBase::hasOperandBundles(), llvm::Function::hasPersonalityFn(), I, llvm::InlineFunctionInfo::InlinedCallSites, inlineRetainOrClaimRVCalls(), isAssignmentTrackingEnabled(), isAsynchronousEHPersonality(), llvm::CallBase::isByValArgument(), llvm::CallBase::isConvergent(), llvm::GlobalValue::isDeclaration(), llvm::Function::isIntrinsic(), llvm::CallInst::isMustTailCall(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable(), isScopedEHPersonality(), llvm::AllocaInst::isSwiftError(), llvm::Type::isVoidTy(), make_early_inc_range(), make_range(), llvm::AttributeFuncs::mergeAttributesForInlining(), llvm::LLVMContext::OB_clang_arc_attachedcall, llvm::LLVMContext::OB_convergencectrl, llvm::LLVMContext::OB_deopt, llvm::LLVMContext::OB_funclet, llvm::LLVMContext::OB_kcfi, llvm::ClonedCodeInfo::OperandBundleCallSites, PHI, pred_empty(), Profile, PropagateCallSiteMetadata(), propagateMemProfMetadata(), PropagateOperandBundles(), llvm::InlineFunctionInfo::PSI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::CallBase::removeRetAttrs(), llvm::Value::replaceAllUsesWith(), llvm::SmallVectorImpl< T >::reserve(), llvm::InlineFunctionInfo::reset(), salvageKnowledge(), llvm::CallBase::setAttributes(), llvm::BlockFrequencyInfo::setBlockFreq(), llvm::Function::setCallingConv(), llvm::CallBase::setCallingConv(), llvm::Instruction::setDebugLoc(), llvm::CallBase::setDoesNotThrow(), llvm::User::setOperand(), llvm::CallInst::setTailCallKind(), simplifyInstruction(), llvm::SmallVectorBase< Size_T >::size(), llvm::BasicBlock::splice(), llvm::BasicBlock::splitBasicBlock(), llvm::InlineFunctionInfo::StaticAllocas, llvm::Constant::stripPointerCasts(), llvm::InlineResult::success(), std::swap(), llvm::CallInst::TCK_None, llvm::CallInst::TCK_NoTail, trackInlinedStores(), llvm::AttributeFuncs::typeIncompatible(), updateCallerBFI(), updateCallProfile(), llvm::InlineFunctionInfo::UpdateProfile, and llvm::Value::use_empty().

Referenced by InsertSafepointPoll(), replaceCoroEndAsync(), and splitAsyncCoroutine().

◆ insertAssignInstr()

Register llvm::insertAssignInstr ( Register  Reg,
Type Ty,
SPIRVType SpirvTy,
SPIRVGlobalRegistry GR,
MachineIRBuilder MIB,
MachineRegisterInfo MRI 
)

Helper external function for inserting ASSIGN_TYPE instuction between Reg and its definition, set the new register as a destination of the definition, assign SPIRVType to both registers.

If SpirvTy is provided, use it as SPIRVType in ASSIGN_TYPE, otherwise create it from Ty. Defined in SPIRVPreLegalizer.cpp.

Definition at line 308 of file SPIRVPreLegalizer.cpp.

References llvm::MachineInstrBuilder::addDef(), llvm::MachineInstrBuilder::addUse(), assert(), llvm::SPIRVGlobalRegistry::assignSPIRVTypeToVReg(), llvm::MachineIRBuilder::buildInstr(), llvm::MachineIRBuilder::getMF(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeID(), MRI, llvm::MachineIRBuilder::setInsertPt(), and llvm::MachineInstrBuilder::setMIFlags().

Referenced by generateAssignInstrs(), genWorkgroupQuery(), and processNewInstrs().

◆ insertDebugValuesForPHIs()

void llvm::insertDebugValuesForPHIs ( BasicBlock BB,
SmallVectorImpl< PHINode * > &  InsertedPHIs 
)

◆ insertIfNotContained()

template<typename CycleT >
static bool llvm::insertIfNotContained ( SmallVector< CycleT * > &  Cycles,
CycleT *  Candidate 
)
static

Add Candidate to Cycles if it is not already contained in Cycles.

Returns
true iff Candidate was added to Cycles.

Definition at line 926 of file GenericUniformityImpl.h.

References any_of(), llvm::CallingConv::C, and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by llvm::GenericUniformityAnalysisImpl< ContextT >::analyzeControlDivergence().

◆ insertLineSequence()

static void llvm::insertLineSequence ( std::vector< DWARFDebugLine::Row > &  Seq,
std::vector< DWARFDebugLine::Row > &  Rows 
)
static

Insert the new line info sequence Seq into the current set of already linked line info Rows.

Definition at line 2052 of file DWARFLinker.cpp.

References llvm::object::SectionedAddress::Address, append_range(), and partition_point().

◆ insertMultibyteShift()

static void llvm::insertMultibyteShift ( MachineInstr MI,
MachineBasicBlock BB,
MutableArrayRef< std::pair< Register, int > >  Regs,
ISD::NodeType  Opc,
int64_t  ShiftAmt 
)
static

◆ InsertPreheaderForLoop()

BasicBlock * llvm::InsertPreheaderForLoop ( 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.

This method has two phases: preheader insertion and analysis updating.

Definition at line 118 of file LoopSimplify.cpp.

References dbgs(), llvm::Value::getName(), LLVM_DEBUG, P, placeSplitBlockCarefully(), predecessors(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and SplitBlockPredecessors().

Referenced by simplifyOneLoop().

◆ inst_begin() [1/4]

const_inst_iterator llvm::inst_begin ( const Function F)
inline

Definition at line 150 of file InstIterator.h.

References F.

◆ inst_begin() [2/4]

const_inst_iterator llvm::inst_begin ( const Function F)
inline

Definition at line 136 of file InstIterator.h.

References F.

◆ inst_begin() [3/4]

inst_iterator llvm::inst_begin ( Function F)
inline

Definition at line 145 of file InstIterator.h.

References F.

◆ inst_begin() [4/4]

inst_iterator llvm::inst_begin ( Function F)
inline

Definition at line 131 of file InstIterator.h.

References F.

Referenced by dumpExampleDependence(), and instructions().

◆ inst_end() [1/4]

const_inst_iterator llvm::inst_end ( const Function F)
inline

Definition at line 153 of file InstIterator.h.

References F.

◆ inst_end() [2/4]

const_inst_iterator llvm::inst_end ( const Function F)
inline

Definition at line 139 of file InstIterator.h.

References F.

◆ inst_end() [3/4]

inst_iterator llvm::inst_end ( Function F)
inline

Definition at line 146 of file InstIterator.h.

References F.

◆ inst_end() [4/4]

inst_iterator llvm::inst_end ( Function F)
inline

Definition at line 132 of file InstIterator.h.

References F.

Referenced by dumpExampleDependence(), and instructions().

◆ install_bad_alloc_error_handler()

void llvm::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.

failing malloc/calloc, is encountered by LLVM.

The user can install a bad alloc handler, in order to define the behavior in case of failing allocations, e.g. throwing an exception. Note that this handler must not trigger any additional allocations itself.

If no error handler is installed the default is to print the error message to stderr, and call exit(1). If an error handler is installed then it is the handler's responsibility to log the message, it will no longer be printed to stderr. If the error handler returns, then exit(1) will be called.

Parameters
user_data- An argument which will be passed to the installed error handler.

Definition at line 128 of file ErrorHandling.cpp.

References assert(), BadAllocErrorHandler, and BadAllocErrorHandlerUserData.

◆ install_fatal_error_handler()

void llvm::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.

If no error handler is installed the default is to print the error message to stderr, and call exit(1). If an error handler is installed then it is the handler's responsibility to log the message, it will no longer be printed to stderr. If the error handler returns, then exit(1) will be called.

It is dangerous to naively use an error handler which throws an exception. Even though some applications desire to gracefully recover from arbitrary faults, blindly throwing exceptions through unfamiliar code isn't a way to achieve this.

Parameters
user_data- An argument which will be passed to the install error handler.

Definition at line 64 of file ErrorHandling.cpp.

References assert(), ErrorHandler, and ErrorHandlerUserData.

Referenced by LLVMInstallFatalErrorHandler(), and llvm::ScopedFatalErrorHandler::ScopedFatalErrorHandler().

◆ install_out_of_memory_new_handler()

void llvm::install_out_of_memory_new_handler ( )

Definition at line 194 of file ErrorHandling.cpp.

References assert(), and out_of_memory_new_handler().

Referenced by llvm::InitLLVM::InitLLVM().

◆ instrprof_category()

const std::error_category & llvm::instrprof_category ( )

Definition at line 192 of file InstrProf.cpp.

Referenced by make_error_code().

◆ instrs() [1/2]

auto llvm::instrs ( const BasicBlock BB)
inline

Definition at line 27 of file SSAContext.h.

References llvm::BasicBlock::begin(), llvm::BasicBlock::end(), and make_range().

◆ instrs() [2/2]

auto llvm::instrs ( const MachineBasicBlock BB)
inline

Definition at line 33 of file MachineSSAContext.h.

References llvm::MachineBasicBlock::instrs().

◆ instructions() [1/4]

const_inst_range llvm::instructions ( const Function F)
inline

Definition at line 156 of file InstIterator.h.

References F, inst_begin(), and inst_end().

◆ instructions() [2/4]

const_inst_range llvm::instructions ( const Function F)
inline

Definition at line 142 of file InstIterator.h.

References F, inst_begin(), and inst_end().

◆ instructions() [3/4]

inst_range llvm::instructions ( Function F)
inline

Definition at line 147 of file InstIterator.h.

References F, inst_begin(), and inst_end().

◆ instructions() [4/4]

inst_range llvm::instructions ( Function F)
inline

Definition at line 133 of file InstIterator.h.

References F, inst_begin(), and inst_end().

◆ instructionsWithoutDebug()

template<typename IterT >
auto llvm::instructionsWithoutDebug ( IterT  It,
IterT  End,
bool  SkipPseudoOp = true 
)
inline

Construct a range iterator which begins at It and moves forwards until End is reached, skipping any debug instructions.

Definition at line 1374 of file MachineBasicBlock.h.

References End, make_filter_range(), make_range(), and MI.

Referenced by areCFlagsAccessedBetweenInstrs(), examineCFlagsUse(), forAllMIsUntilDef(), llvm::ReachingDefAnalysis::getLiveInUses(), isNZCVTouchedInInstructionRange(), llvm::ReachingDefAnalysis::isRegUsedAfter(), and llvm::MachineBasicBlock::sizeWithoutDebugLargerThan().

◆ intCCToAVRCC()

static AVRCC::CondCodes llvm::intCCToAVRCC ( ISD::CondCode  CC)
static

◆ intCondCode2Icc()

static VECC::CondCode llvm::intCondCode2Icc ( ISD::CondCode  CC)
inlinestatic

◆ interleave() [1/4]

template<typename Container , typename StreamT , typename T = detail::ValueOfRange<Container>>
void llvm::interleave ( const Container &  c,
StreamT &  os,
const StringRef separator 
)
inline

Definition at line 2157 of file STLExtras.h.

References interleave().

◆ interleave() [2/4]

template<typename Container , typename UnaryFunctor , typename StreamT , typename T = detail::ValueOfRange<Container>>
void llvm::interleave ( const Container &  c,
StreamT &  os,
UnaryFunctor  each_fn,
const StringRef separator 
)
inline

Overload of interleave for the common case of string separator.

Definition at line 2151 of file STLExtras.h.

References adl_begin(), adl_end(), and interleave().

◆ interleave() [3/4]

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 llvm::interleave ( const Container &  c,
UnaryFunctor  each_fn,
NullaryFunctor  between_fn 
)
inline

Definition at line 2143 of file STLExtras.h.

References adl_begin(), adl_end(), and interleave().

◆ interleave() [4/4]

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 llvm::interleave ( ForwardIterator  begin,
ForwardIterator  end,
UnaryFunctor  each_fn,
NullaryFunctor  between_fn 
)
inline

An STL-style algorithm similar to std::for_each that applies a second functor between every pair of elements.

This provides the control flow logic to, for example, print a comma-separated list:

interleave(names.begin(), names.end(),
[&](StringRef name) { os << name; },
[&] { os << ", "; });
static const char * name
Definition: SMEABIPass.cpp:49
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:50
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 e...
Definition: STLExtras.h:2127

Definition at line 2127 of file STLExtras.h.

Referenced by interleave(), and interleaveComma().

◆ interleaveComma() [1/2]

template<typename Container , typename StreamT , typename T = detail::ValueOfRange<Container>>
void llvm::interleaveComma ( const Container &  c,
StreamT &  os 
)
inline

Definition at line 2171 of file STLExtras.h.

References interleaveComma().

◆ interleaveComma() [2/2]

template<typename Container , typename UnaryFunctor , typename StreamT , typename T = detail::ValueOfRange<Container>>
void llvm::interleaveComma ( const Container &  c,
StreamT &  os,
UnaryFunctor  each_fn 
)
inline

◆ internalizeModule()

bool llvm::internalizeModule ( Module TheModule,
std::function< bool(const GlobalValue &)>  MustPreserveGV 
)
inline

Helper function to internalize functions and variables in a Module.

Definition at line 75 of file Internalize.h.

References llvm::InternalizePass::internalizeModule().

Referenced by thinLTOInternalizeModule().

◆ interpretDecimal()

static Error llvm::interpretDecimal ( StringRef::iterator  begin,
StringRef::iterator  end,
decimalInfo D 
)
static

◆ intersectAccessGroups()

MDNode * llvm::intersectAccessGroups ( const Instruction Inst1,
const Instruction Inst2 
)

Compute the access-group list of access groups that Inst1 and Inst2 are both in.

If either instruction does not access memory at all, it is considered to be in every list.

If the list contains just one access group, it is returned directly. If the list is empty, returns nullptr.

Definition at line 739 of file VectorUtils.cpp.

References addToAccessGroupList(), assert(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::SmallVectorTemplateCommon< T, typename >::front(), llvm::MDNode::get(), llvm::Value::getContext(), llvm::Instruction::getMetadata(), llvm::MDNode::getNumOperands(), isValidAsAccessGroup(), llvm::Instruction::mayReadOrWriteMemory(), llvm::MDNode::operands(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::SmallVectorBase< Size_T >::size().

Referenced by combineMetadata(), and propagateMetadata().

◆ invalidateParentIListOrdering() [1/2]

template<>
void llvm::invalidateParentIListOrdering ( BasicBlock BB)

Definition at line 172 of file BasicBlock.cpp.

References llvm::BasicBlock::invalidateOrders().

◆ invalidateParentIListOrdering() [2/2]

template<typename ParentClass >
void llvm::invalidateParentIListOrdering ( ParentClass *  Parent)
inline

◆ inverse_children()

template<class GraphType >
iterator_range< typename GraphTraits< Inverse< GraphType > >::ChildIteratorType > llvm::inverse_children ( const typename GraphTraits< GraphType >::NodeRef &  G)

Definition at line 130 of file GraphTraits.h.

References G, and make_range().

◆ inverse_depth_first()

template<class T >
iterator_range< idf_iterator< T > > llvm::inverse_depth_first ( const T G)

Definition at line 278 of file DepthFirstIterator.h.

References G, idf_begin(), idf_end(), and make_range().

Referenced by findArgParts(), and MarkBlocksLiveIn().

◆ inverse_depth_first_ext()

template<class T , class SetTy >
iterator_range< idf_ext_iterator< T, SetTy > > llvm::inverse_depth_first_ext ( const T G,
SetTy &  S 
)

◆ inverse_fabs()

FPClassTest llvm::inverse_fabs ( FPClassTest  Mask)

Return the test mask which returns true after fabs is applied to the value.

Definition at line 35 of file FloatingPointMode.cpp.

References fcInf, fcNan, fcNormal, fcPosInf, fcPosNormal, fcPosSubnormal, fcPosZero, fcSubnormal, and fcZero.

Referenced by fcmpImpliesClass(), and llvm::InstCombinerImpl::SimplifyDemandedUseFPClass().

◆ inverse_nodes()

template<class GraphType >
iterator_range< typename GraphTraits< Inverse< GraphType > >::nodes_iterator > llvm::inverse_nodes ( const GraphType &  G)

Definition at line 116 of file GraphTraits.h.

References G, and make_range().

◆ inverse_post_order()

template<class T >
iterator_range< ipo_iterator< T > > llvm::inverse_post_order ( const T G)

Definition at line 238 of file PostOrderIterator.h.

References G, ipo_begin(), ipo_end(), and make_range().

◆ inverse_post_order_ext()

template<class T , class SetType >
iterator_range< ipo_ext_iterator< T, SetType > > llvm::inverse_post_order_ext ( const T G,
SetType &  S 
)

Definition at line 263 of file PostOrderIterator.h.

References G, ipo_ext_begin(), ipo_ext_end(), and make_range().

◆ inversePermutation()

static void llvm::inversePermutation ( ArrayRef< unsigned Indices,
SmallVectorImpl< int > &  Mask 
)
static

◆ InvertBranch()

void llvm::InvertBranch ( BranchInst PBI,
IRBuilderBase Builder 
)

◆ invertCondition()

Value * llvm::invertCondition ( Value Condition)

◆ invertFPClassTestIfSimpler()

FPClassTest llvm::invertFPClassTestIfSimpler ( FPClassTest  Test)

Evaluates if the specified FP class test is better performed as the inverse (i.e.

fewer instructions should be required to lower it). An example is the test "inf|normal|subnormal|zero", which is an inversion of "nan".

Parameters
TestThe test as specified in 'is_fpclass' intrinsic invocation.
Returns
The inverted test, or fcNone, if inversion does not produce a simpler test.

Definition at line 176 of file CodeGenCommonISel.cpp.

References fcFinite, fcInf, fcNan, fcNegFinite, fcNegInf, fcNegNormal, fcNegSubnormal, fcNegZero, fcNone, fcNormal, fcPosFinite, fcPosInf, fcPosNormal, fcPosSubnormal, fcPosZero, fcQNan, fcSNan, fcSubnormal, fcZero, and llvm_unreachable.

Referenced by llvm::TargetLowering::expandIS_FPCLASS().

◆ ipo_begin()

template<class T >
ipo_iterator< T > llvm::ipo_begin ( const T G)

◆ ipo_end()

template<class T >
ipo_iterator< T > llvm::ipo_end ( const T G)

◆ ipo_ext_begin()

template<class T , class SetType >
ipo_ext_iterator< T, SetType > llvm::ipo_ext_begin ( const T G,
SetType &  S 
)

◆ ipo_ext_end()

template<class T , class SetType >
ipo_ext_iterator< T, SetType > llvm::ipo_ext_end ( const T G,
SetType &  S 
)

◆ IRBuilder() [1/7]

template<typename FolderTy >
llvm::IRBuilder ( BasicBlock ,
BasicBlock::iterator  ,
FolderTy  ,
MDNode ,
ArrayRef< OperandBundleDef  
) -> IRBuilder< FolderTy >

◆ IRBuilder() [2/7]

◆ IRBuilder() [3/7]

template<typename FolderTy >
llvm::IRBuilder ( BasicBlock ,
FolderTy  ,
MDNode ,
ArrayRef< OperandBundleDef  
) -> IRBuilder< FolderTy >

◆ IRBuilder() [4/7]

◆ IRBuilder() [5/7]

◆ IRBuilder() [6/7]

template<typename FolderTy , typename InserterTy >
llvm::IRBuilder ( LLVMContext ,
FolderTy  ,
InserterTy  ,
MDNode ,
ArrayRef< OperandBundleDef  
) -> IRBuilder< FolderTy, InserterTy >

◆ IRBuilder() [7/7]

◆ is_contained() [1/2]

template<typename R , typename E >
bool llvm::is_contained ( R &&  Range,
const E Element 
)

Returns true if Element is found in Range.

Delegates the check to either .contains(Element), .find(Element), or std::find, in this order of preference. This is intended as the canonical way to check if an element exists in a range in generic code or range type that does not expose a .contains(Element) member.

Definition at line 1879 of file STLExtras.h.

References adl_begin(), and adl_end().

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo(), llvm::dwarf_linker::classic::DWARFLinker::addAccelTableKind(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::addAccelTableKind(), llvm::cl::Option::addCategory(), addLocIfNotPresent(), llvm::RecurrenceDescriptor::AddReductionVar(), addRegDescribedVar(), llvm::orc::JITDylib::addToLinkOrder(), llvm::DbgVariableRecord::addVariableLocationOps(), llvm::DbgVariableIntrinsic::addVariableLocationOps(), llvm::SDNode::areOnlyUsersOf(), BBHasFallthrough(), buildDbgValueForSpill(), llvm::opt::OptTable::buildPrefixChars(), canCreateUndefOrPoison(), canEvaluateShuffled(), canMoveAboveCall(), llvm::TargetRegisterInfo::checkAllSuperRegsMarked(), CheckTyN(), checkVOPDRegConstraints(), clobbersFlagRegisters(), llvm::dwarf_linker::parallel::CompileUnit::cloneAndEmit(), colorEHFunclets(), combineX86ShufflesRecursively(), computeUnlikelySuccessors(), llvm::SetVector< T, Vector, Set, N >::contains(), llvm::AppleAcceleratorTable::containsAtomType(), llvm::opt::Arg::containsValue(), llvm::SetVector< T, Vector, Set, N >::count(), llvm::AllocationOrder::create(), createAndCollectMergePhiForReduction(), llvm::VPRecipeBuilder::createEdgeMask(), createUnreachableSwitchDefault(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::DeleteEdge(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::DeleteUnreachable(), directlyImpliesPoison(), llvm::object::ELFObjectFile< ELFT >::dynamic_relocation_sections(), llvm::LiveRangeEdit::eliminateDeadDefs(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::emitCommonSectionsAndWriteCompileUnitsToTheOutput(), llvm::RISCVTargetLowering::EmitKCFICheck(), llvm::Evaluator::EvaluateFunction(), ExpandCryptoAEK(), llvm::LegalizerHelper::fewerElementsVectorMultiEltType(), llvm::X86::fillValidTuneCPUList(), FindCheckType(), llvm::dwarf_linker::parallel::TypeUnit::finishCloningAndEmit(), llvm::InstCombinerImpl::foldAggregateConstructionIntoAggregateReuse(), FoldBranchToCommonDest(), foldPatchpoint(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectShuffleWith1Binop(), foldShuffleWithInsert(), llvm::InstCombinerImpl::foldVectorBinop(), llvm::AliasSetTracker::getAliasSetFor(), llvm::VPRecipeBuilder::getEdgeMask(), llvm::AArch64MCInstLower::GetGlobalValueSymbol(), getKnowledgeForValue(), getKnowledgeFromUse(), getMaxPushPopReg(), getOutliningPenalty(), llvm::ARMBaseRegisterInfo::getRegAllocationHints(), llvm::RISCVRegisterInfo::getRegAllocationHints(), llvm::SystemZRegisterInfo::getRegAllocationHints(), llvm::TargetRegisterInfo::getRegAllocationHints(), llvm::CallBase::hasArgument(), HasImplicitCPSRDef(), llvm::MCInstrDesc::hasImplicitUseOfPhysReg(), llvm::CallBase::hasOperandBundlesOtherThan(), hasSameNumEltsOnAllVectorOperands(), hasSelfReference(), llvm::MachO::InterfaceFile::hasTarget(), llvm::MachO::Symbol::hasTarget(), llvm::MachO::InterfaceFileRef::hasTarget(), llvm::rdf::DataFlowGraph::hasUntrackedRef(), llvm::cl::HideUnrelatedOptions(), llvm::HexagonBlockRanges::RangeList::include(), llvm::jitlink::initRelaxAux(), llvm::SetVector< T, Vector, Set, N >::insert(), insertDbgVariableRecordsForPHIs(), insertDebugValuesForPHIs(), llvm::MemorySSAUpdater::insertDef(), llvm::mca::Scheduler::instructionCheck(), llvm::DWARFContext::isAddressSizeSupported(), llvm::Loop::isAnnotatedParallel(), llvm::AArch64RegisterInfo::isArgumentRegister(), isCriticalEdge(), llvm::HexagonInstrInfo::isDependent(), llvm::jitlink::ELFLinkGraphBuilderBase::isDwarfSection(), isEndbrImm64(), llvm::GenericCycle< ContextT >::isEntry(), isEphemeralValueOf(), isExitBlock(), llvm::rdf::TargetOperandInfo::isFixedReg(), llvm::AllocationOrder::isHint(), llvm::HexagonSubtarget::isHVXElementType(), llvm::HexagonSubtarget::isHVXVectorType(), isImageReadOnly(), isImageReadWrite(), isImageWriteOnly(), llvm::VLIWResourceModel::isInPacket(), llvm::LoadAndStorePromoter::isInstInList(), llvm::DataLayout::isLegalInteger(), llvm::PPCInstrInfo::isLoadFromStackSlot(), llvm::LoopBase< BlockT, LoopT >::isLoopLatch(), llvm::AArch64InstrInfo::isMBBSafeToSplitToCold(), IsMinMaxConsistingOf(), llvm::DataLayout::isNonIntegralAddressSpace(), llvm::SDValue::isOperandOf(), isPHIRegionIndex(), llvm::MachineBasicBlock::isPredecessor(), isRegisterClassType(), llvm::ShuffleVectorInst::isReplicationMask(), llvm::SCEVExpander::isSafeToExpandAt(), isSampler(), llvm::RISCVMachineFunctionInfo::isSExt32Register(), llvm::PPCInstrInfo::isStoreToStackSlot(), llvm::MachineBasicBlock::isSuccessor(), llvm::MCRegisterInfo::isSuperRegister(), llvm::Record::isTemplateArg(), llvm::Value::isUsedInBasicBlock(), llvm::object::MachOObjectFile::isValidArch(), isValidCandidateForColdCC(), lowerV8I16GeneralSingleInputShuffle(), lowerVECTOR_SHUFFLE(), llvm::yaml::MappingTraits< SIArgument >::mapping(), llvm::objcopy::NameMatcher::matches(), llvm::logicalview::LVPatterns::matchOffsetPattern(), llvm::dwarf_linker::parallel::DependencyTracker::maybeAddReferencedRoots(), llvm::JumpThreadingPass::maybethreadThroughTwoBasicBlocks(), MergeBlockIntoPredecessor(), llvm::SIInstrInfo::modifiesModeRegister(), llvm::pdb::NativeEnumGlobals::NativeEnumGlobals(), llvm::pdb::NativeEnumTypes::NativeEnumTypes(), llvm::VPUser::onlyFirstLaneUsed(), llvm::VPInstruction::onlyFirstLaneUsed(), llvm::VPScalarCastRecipe::onlyFirstLaneUsed(), llvm::VPVectorPointerRecipe::onlyFirstLaneUsed(), llvm::VPBlendRecipe::onlyFirstLaneUsed(), llvm::VPInterleaveRecipe::onlyFirstLaneUsed(), llvm::VPReplicateRecipe::onlyFirstLaneUsed(), llvm::VPWidenLoadRecipe::onlyFirstLaneUsed(), llvm::VPWidenStoreRecipe::onlyFirstLaneUsed(), llvm::VPCanonicalIVPHIRecipe::onlyFirstLaneUsed(), llvm::VPEVLBasedIVPHIRecipe::onlyFirstLaneUsed(), llvm::VPDerivedIVRecipe::onlyFirstLaneUsed(), llvm::VPScalarIVStepsRecipe::onlyFirstLaneUsed(), llvm::VPUser::onlyFirstPartUsed(), llvm::VPInstruction::onlyFirstPartUsed(), llvm::VPCanonicalIVPHIRecipe::onlyFirstPartUsed(), llvm::slpvectorizer::BoUpSLP::optimizeGatherSequence(), llvm::X86::parseTuneCPU(), llvm::yaml::Scanner::peekNext(), performVSelectCombine(), PhiHasDebugValue(), llvm::PMDataManager::preserveHigherLevelAnalysis(), llvm::SDValue::reachesChainWithoutSideEffects(), llvm::DomConditionCache::registerBranch(), llvm::orc::RTDyldObjectLinkingLayer::registerJITEventListener(), llvm::OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs >::Result::registerOuterAnalysisInvalidation(), rematerializeChain(), llvm::PMDataManager::removeNotPreservedAnalysis(), llvm::BasicBlock::removePredecessor(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::RemoveRedundantRoots(), removeSwitchAfterSelectFold(), llvm::DIMacroFile::replaceElements(), llvm::DICompositeType::replaceElements(), llvm::User::replaceUsesOfWith(), rescheduleCanonically(), llvm::RecordResolver::resolve(), salvageDebugInfoForDbgValues(), llvm::SelectionDAGISel::SelectCodeCommon(), shouldFoldCondBranchesToCommonDestination(), shouldPrintBeforeOrAfterPass(), shouldUseFrameHelper(), llvm::InstCombinerImpl::SimplifyAnyMemSet(), simplifyShuffleVectorInst(), llvm::MachineBasicBlock::SplitCriticalEdge(), SplitKnownCriticalEdge(), llvm::MachineBasicBlock::splitSuccessor(), llvm::SelectionDAG::transferDbgValues(), llvm::LegalityPredicates::typeInSet(), llvm::LegalityPredicates::typePairInSet(), UnrollRuntimeLoopRemainder(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::UpdateRootsBeforeInsertion(), usesOperand(), llvm::VPUser::usesScalars(), llvm::VPLiveOut::usesScalars(), llvm::VPReplicateRecipe::usesScalars(), llvm::VPBranchOnMaskRecipe::usesScalars(), llvm::VPPredInstPHIRecipe::usesScalars(), ValidateMVEStore(), llvm::GenericCycleInfo< ContextT >::validateTree(), llvm::slpvectorizer::BoUpSLP::vectorizeTree(), llvm::ScalarEvolution::verify(), llvm::GenericConvergenceVerifier< ContextT >::verify(), verifyBlock(), llvm::SIInstrInfo::verifyInstruction(), and llvm::MemorySSA::verifyOrderingDominationAndDefUses().

◆ is_contained() [2/2]

template<typename T , typename E >
constexpr bool llvm::is_contained ( std::initializer_list< T Set,
const E Element 
)
constexpr

Returns true iff Element exists in Set.

This overload takes Set as an initializer list and is constexpr-friendly.

Definition at line 1892 of file STLExtras.h.

◆ is_sorted() [1/2]

template<typename R >
bool llvm::is_sorted ( R &&  Range)

Wrapper function around std::is_sorted to check if elements in a range R are sorted in non-descending order.

Definition at line 1908 of file STLExtras.h.

References adl_begin(), and adl_end().

◆ is_sorted() [2/2]

template<typename R , typename Compare >
bool llvm::is_sorted ( R &&  Range,
Compare  C 
)

◆ is_TC1()

bool llvm::is_TC1 ( unsigned  SchedClass)
inline

Definition at line 18 of file HexagonDepTimingClasses.h.

Referenced by llvm::HexagonInstrInfo::isTC1().

◆ is_TC2()

bool llvm::is_TC2 ( unsigned  SchedClass)
inline

Definition at line 67 of file HexagonDepTimingClasses.h.

Referenced by llvm::HexagonInstrInfo::isTC2().

◆ is_TC2early()

bool llvm::is_TC2early ( unsigned  SchedClass)
inline

Definition at line 99 of file HexagonDepTimingClasses.h.

Referenced by llvm::HexagonInstrInfo::isTC2Early().

◆ is_TC3x()

bool llvm::is_TC3x ( unsigned  SchedClass)
inline

Definition at line 110 of file HexagonDepTimingClasses.h.

◆ is_TC4x()

bool llvm::is_TC4x ( unsigned  SchedClass)
inline

Definition at line 143 of file HexagonDepTimingClasses.h.

Referenced by llvm::HexagonInstrInfo::isTC4x().

◆ isa() [1/2]

template<typename To , typename From >
bool llvm::isa ( const From Val)
inline

isa<X> - Return true if the parameter to the template is an instance of one of the template type arguments.

Used like this:

if (isa<Type>(myVal)) { ... } if (isa<Type0, Type1, Type2>(myVal)) { ... }

Definition at line 548 of file Casting.h.

References llvm::CastIsPossible< To, From, Enable >::isPossible().

Referenced by llvm::DwarfUnit::applySubprogramAttributes(), getOutputElfType(), llvm::slpvectorizer::BoUpSLP::getVectorElementSize(), isa(), isa_and_present(), llvm::detail::IsaCheckPredicate< Types >::operator()(), llvm::slpvectorizer::BoUpSLP::reorderTopToBottom(), llvm::MCDwarfLoc::setIsa(), and llvm::VPlanTransforms::truncateToMinimalBitwidths().

◆ isa() [2/2]

template<typename First , typename Second , typename... Rest, typename From >
bool llvm::isa ( const From Val)
inline

Definition at line 553 of file Casting.h.

References isa().

◆ isa_and_nonnull()

template<typename... X, class Y >
bool llvm::isa_and_nonnull ( const Y Val)
inline

Definition at line 682 of file Casting.h.

References isa_and_present(), and X.

◆ isa_and_present()

template<typename... X, class Y >
bool llvm::isa_and_present ( const Y Val)
inline

isa_and_present<X> - Functionally identical to isa, except that a null value is accepted.

Definition at line 675 of file Casting.h.

References isa(), llvm::detail::isPresent(), and X.

Referenced by isa_and_nonnull(), and llvm::detail::IsaAndPresentCheckPredicate< Types >::operator()().

◆ isAArch64FrameOffsetLegal()

int llvm::isAArch64FrameOffsetLegal ( const MachineInstr MI,
StackOffset Offset,
bool OutUseUnscaledOp = nullptr,
unsigned OutUnscaledOp = nullptr,
int64_t *  EmittableOffset = nullptr 
)

Check if the Offset is a valid frame offset for MI.

The returned value reports the validity of the frame offset for MI. It uses the values defined by AArch64FrameOffsetStatus for that. If result == AArch64FrameOffsetCannotUpdate, MI cannot be updated to use an offset.eq If result & AArch64FrameOffsetIsLegal, Offset can completely be rewritten in MI. If result & AArch64FrameOffsetCanUpdate, Offset contains the amount that is off the limit of the legal offset. If set, OutUseUnscaledOp will contain the whether MI should be turned into an unscaled operator, which opcode is in OutUnscaledOp. If set, EmittableOffset contains the amount that can be set in MI (possibly with OutUnscaledOp if OutUseUnscaledOp is true) and that is a legal offset.

Definition at line 5626 of file AArch64InstrInfo.cpp.

References AArch64FrameOffsetCannotUpdate, AArch64FrameOffsetCanUpdate, AArch64FrameOffsetIsLegal, assert(), llvm::StackOffset::get(), llvm::StackOffset::getFixed(), llvm::MachineOperand::getImm(), llvm::AArch64InstrInfo::getLoadStoreImmIdx(), llvm::AArch64InstrInfo::getMemOpInfo(), llvm::StackOffset::getScalable(), llvm::AArch64InstrInfo::getUnscaledLdSt(), llvm_unreachable, MI, and Offset.

Referenced by llvm::AArch64RegisterInfo::eliminateFrameIndex(), estimateRSStackSizeLimit(), llvm::AArch64RegisterInfo::isFrameOffsetLegal(), and rewriteAArch64FrameIndex().

◆ isAcquireOrStronger()

bool llvm::isAcquireOrStronger ( AtomicOrdering  AO)
inline

◆ isAddrAligned()

bool llvm::isAddrAligned ( Align  Lhs,
const void *  Addr 
)
inline

◆ isAESPair()

static bool llvm::isAESPair ( const MachineInstr FirstMI,
const MachineInstr SecondMI 
)
static

Definition at line 22 of file ARMMacroFusion.cpp.

References llvm::MachineInstr::getOpcode().

Referenced by shouldScheduleAdjacent().

◆ isAligned()

bool llvm::isAligned ( Align  Lhs,
uint64_t  SizeInBytes 
)
inline

◆ isAllocaPromotable()

bool llvm::isAllocaPromotable ( const AllocaInst AI)

Return true if this alloca is legal for promotion.

This is true if there are only loads, stores, and lifetime markers (transitively) using this alloca. This also enforces that there is only ever one layer of bitcasts or GEPs between the alloca and the lifetime markers.

Definition at line 64 of file PromoteMemoryToRegister.cpp.

References llvm::AllocaInst::getAllocatedType(), onlyUsedByLifetimeMarkers(), onlyUsedByLifetimeMarkersOrDroppableInsts(), and llvm::Value::users().

Referenced by doPromotion(), eliminateSwiftErrorAlloca(), llvm::memtag::StackInfoBuilder::isInterestingAlloca(), and promoteMemoryToRegister().

◆ isAllocationFn() [1/2]

bool llvm::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).

Definition at line 299 of file MemoryBuiltins.cpp.

References AnyAlloc, checkFnAllocKind(), and getAllocationData().

Referenced by CleanupPointerRootUsers(), getPotentialCopiesOfMemoryValue(), IsSafeComputationToRemove(), and optimizeOnceStoredGlobal().

◆ isAllocationFn() [2/2]

bool llvm::isAllocationFn ( const Value V,
function_ref< const TargetLibraryInfo &(Function &)>  GetTLI 
)

Definition at line 303 of file MemoryBuiltins.cpp.

References AnyAlloc, checkFnAllocKind(), and getAllocationData().

◆ isAllocLikeFn()

bool llvm::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).

Definition at line 325 of file MemoryBuiltins.cpp.

References AllocLike, checkFnAllocKind(), and getAllocationData().

Referenced by computePointerICmp(), isNeverEqualToUnescapedAlloc(), and isRemovableAlloc().

◆ isAllOnesConstant()

bool llvm::isAllOnesConstant ( SDValue  V)

◆ isAllOnesOrAllOnesSplat() [1/2]

bool llvm::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).

Definition at line 1525 of file Utils.cpp.

References isBuildVectorAllOnes(), MI, and MRI.

Referenced by combineAndMaskToShift(), foldAndOrOfSETCC(), foldSelectOfConstantsUsingSra(), foldVSelectToSignBitSplatMask(), llvm::CombinerHelper::matchFoldBinOpIntoSelect(), matchShuffleWithPACK(), and shouldConvertSelectOfConstantsToMath().

◆ isAllOnesOrAllOnesSplat() [2/2]

bool llvm::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).

Does not permit build vector implicit truncation.

Definition at line 11759 of file SelectionDAG.cpp.

References BitWidth, llvm::CallingConv::C, isConstOrConstSplat(), N, and peekThroughBitcasts().

◆ isAlmostDeadIV()

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

Conservatively returns false if analysis is insufficient.

Definition at line 469 of file LoopUtils.cpp.

References assert(), Cond, llvm::PHINode::getBasicBlockIndex(), llvm::PHINode::getIncomingValue(), and llvm::Value::users().

Referenced by canFoldTermCondOfLoop(), and FindLoopCounter().

◆ isARMArea1Register()

static bool llvm::isARMArea1Register ( unsigned  Reg,
bool  SplitFramePushPop 
)
inlinestatic

isARMArea1Register - Returns true if the register is a low register (r0-r7) or a stack/pc register that we should push/pop.

Definition at line 46 of file ARMBaseRegisterInfo.h.

References R2, R4, R6, and Reg.

Referenced by llvm::ARMFrameLowering::restoreCalleeSavedRegisters(), and llvm::ARMFrameLowering::spillCalleeSavedRegisters().

◆ isARMArea2Register()

static bool llvm::isARMArea2Register ( unsigned  Reg,
bool  SplitFramePushPop 
)
inlinestatic

◆ isARMArea3Register()

static bool llvm::isARMArea3Register ( unsigned  Reg,
bool  SplitFramePushPop 
)
inlinestatic

◆ isARMLowRegister()

static bool llvm::isARMLowRegister ( unsigned  Reg)
inlinestatic

◆ isAssignmentTrackingEnabled()

bool llvm::isAssignmentTrackingEnabled ( const Module M)

◆ isAssumeLikeIntrinsic()

bool llvm::isAssumeLikeIntrinsic ( const Instruction I)

Return true if it is an intrinsic that cannot be speculated but also cannot trap.

Definition at line 473 of file ValueTracking.cpp.

References I.

◆ isAssumeWithEmptyBundle()

bool llvm::isAssumeWithEmptyBundle ( const AssumeInst Assume)

Return true iff the operand bundles of the provided llvm.assume doesn't contain any valuable information.

This is true when:

  • The operand bundle is empty
  • The operand bundle only contains information about dropped values or constant folded values.

the argument to the call of llvm.assume may still be useful even if the function returned true.

Definition at line 128 of file AssumeBundleQueries.cpp.

References llvm::CallBase::bundle_op_infos(), and none_of().

Referenced by llvm::InstCombinerImpl::visitCallInst(), and wouldInstructionBeTriviallyDead().

◆ isAsynchronousEHPersonality()

bool llvm::isAsynchronousEHPersonality ( EHPersonality  Pers)
inline

◆ isAtLeastOrStrongerThan()

bool llvm::isAtLeastOrStrongerThan ( AtomicOrdering  AO,
AtomicOrdering  Other 
)
inline

◆ isBasePlusOffsetMemoryAccess()

bool llvm::isBasePlusOffsetMemoryAccess ( unsigned  Opcode,
unsigned AddrIdx,
bool IsStore = nullptr 
)

Definition at line 210 of file MipsNaClELFStreamer.cpp.

◆ isBitcode()

bool llvm::isBitcode ( const unsigned char BufPtr,
const unsigned char BufEnd 
)
inline

isBitcode - Return true if the given bytes are the magic bytes for LLVM IR bitcode, either with or without a wrapper.

Definition at line 265 of file BitcodeReader.h.

References isBitcodeWrapper(), and isRawBitcode().

Referenced by embedBitcodeInModule(), getLazyIRModule(), and parseIR().

◆ isBitcodeContainingObjCCategory()

Expected< bool > llvm::isBitcodeContainingObjCCategory ( MemoryBufferRef  Buffer)

Return true if Buffer contains a bitcode file with ObjC code (category or class) in it.

Definition at line 8470 of file BitcodeReader.cpp.

References hasObjCCategory(), initStream(), and llvm::Expected< T >::takeError().

◆ isBitcodeWrapper()

bool llvm::isBitcodeWrapper ( const unsigned char BufPtr,
const unsigned char BufEnd 
)
inline

isBitcodeWrapper - Return true if the given bytes are the magic bytes for an LLVM IR bitcode wrapper.

Definition at line 239 of file BitcodeReader.h.

Referenced by analyzeHeader(), initStream(), and isBitcode().

◆ isBitcodeWriterPass()

bool llvm::isBitcodeWriterPass ( Pass P)

Check whether a pass is a BitcodeWriterPass.

Definition at line 81 of file BitcodeWriterPass.cpp.

References P.

Referenced by llvm::DebugifyCustomPassManager::add().

◆ isBitwiseNot()

bool llvm::isBitwiseNot ( SDValue  V,
bool  AllowUndefs = false 
)

◆ IsBlockFollowedByDeoptOrUnreachable()

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

All blocks in the traversed sequence must have an unique successor, maybe except for the last one.

Definition at line 742 of file BasicBlockUtils.cpp.

References Depth, llvm::BasicBlock::getTerminatingDeoptimizeCall(), llvm::BasicBlock::getTerminator(), llvm::BasicBlock::getUniqueSuccessor(), llvm::SmallPtrSetImpl< PtrType >::insert(), and MaxDeoptOrUnreachableSuccessorCheckDepth.

Referenced by canPeel(), and SinkCommonCodeFromPredecessors().

◆ isBoolSGPR()

bool llvm::isBoolSGPR ( SDValue  V)

◆ isBranchWeightMD()

bool llvm::isBranchWeightMD ( const MDNode ProfileData)

Checks if an MDNode contains Branch Weight Metadata.

Definition at line 76 of file ProfDataUtils.cpp.

Referenced by extractBranchWeights(), extractFromBranchWeightMD(), getBranchWeightMDNode(), and hasBranchWeightMD().

◆ isBuildVectorAllOnes()

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

Definition at line 1418 of file Utils.cpp.

References isBuildVectorConstantSplat(), MI, and MRI.

Referenced by llvm::GIMatchTableExecutor::executeMatchTable(), and isAllOnesOrAllOnesSplat().

◆ isBuildVectorAllZeros()

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

Definition at line 1412 of file Utils.cpp.

References isBuildVectorConstantSplat(), MI, and MRI.

Referenced by llvm::GIMatchTableExecutor::executeMatchTable(), isNullOrNullSplat(), and llvm::CombinerHelper::matchPtrAddZero().

◆ isBuildVectorConstantSplat() [1/2]

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

Definition at line 1364 of file Utils.cpp.

References isBuildVectorConstantSplat(), MI, and MRI.

◆ isBuildVectorConstantSplat() [2/2]

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

Definition at line 1356 of file Utils.cpp.

References llvm::MIPatternMatch::m_SpecificICst(), llvm::MIPatternMatch::mi_match(), and MRI.

Referenced by isBuildVectorAllOnes(), isBuildVectorAllZeros(), isBuildVectorConstantSplat(), llvm::MIPatternMatch::SpecificConstantSplatMatch::match(), and llvm::MIPatternMatch::SpecificConstantOrSplatMatch::match().

◆ isBytewiseValue()

Value * llvm::isBytewiseValue ( 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.

This is true for all i8 values obviously, but is also true for i32 0, i32 -1, i16 0xF0F0, double 0.0 etc. If the value can't be handled with a repeated byte store (e.g. i16 0x1234), return null. If the value is entirely undef and padding, return undef.

Definition at line 5715 of file ValueTracking.cpp.

References assert(), BitWidth, llvm::CallingConv::C, ConstantFoldIntegerCast(), DL, llvm::UndefValue::get(), llvm::ConstantExpr::getBitCast(), llvm::Type::getInt16Ty(), llvm::Type::getInt32Ty(), llvm::Type::getInt64Ty(), llvm::Type::getInt8Ty(), llvm::Type::getIntNTy(), llvm::Constant::getNullValue(), I, isBytewiseValue(), LHS, Merge, and RHS.

Referenced by isBytewiseValue().

◆ isCalleeSavedRegister()

static bool llvm::isCalleeSavedRegister ( unsigned  Reg,
const MCPhysReg CSRegs 
)
inlinestatic

Definition at line 119 of file ARMBaseRegisterInfo.h.

References Reg.

Referenced by tryFoldSPUpdateIntoPushPop().

◆ isCheckForZeroAndMulWithOverflow() [1/2]

bool llvm::isCheckForZeroAndMulWithOverflow ( Value Op0,
Value Op1,
bool  IsAnd 
)

Definition at line 67 of file OverflowInstAnalysis.cpp.

References isCheckForZeroAndMulWithOverflow(), and Y.

◆ isCheckForZeroAndMulWithOverflow() [2/2]

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

[us]mul.with.overflow.i4(i4 X, i4 Y) Op1 = extractvalue { i4, i1 } Agg, 1 ret = select i1 Op0, i1 Op1, i1 false / ret = and i1 Op0, Op1

Op0 = icmp eq i4 X, 0 Agg = call { i4, i1 } @llvm.[us]mul.with.overflow.i4(i4 X, i4 Y) NotOp1 = extractvalue { i4, i1 } Agg, 1 Op1 = xor i1 NotOp1, true ret = select i1 Op0, i1 true, i1 Op1 / ret = or i1 Op0, Op1

Callers are expected to align that with the operands of the select/logic. IsAnd is set to true if the Op0 and Op1 are used as the first pattern. If Op0 and Op1 match one of the patterns above, return true and fill Y's use.

Agg = call { i4, i1 } @llvm.[us]mul.with.overflow.i4(i4 X, i4 %???) V = extractvalue { i4, i1 } Agg, 1

Definition at line 21 of file OverflowInstAnalysis.cpp.

References llvm::CallBase::getArgOperand(), llvm::CallBase::getArgOperandUse(), llvm::PatternMatch::m_CombineOr(), llvm::PatternMatch::m_ICmp(), llvm::PatternMatch::m_Not(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::m_Zero(), llvm::PatternMatch::match(), X, and Y.

Referenced by isCheckForZeroAndMulWithOverflow(), simplifyAndCommutative(), and simplifyOrInst().

◆ isCompileUnit()

bool llvm::isCompileUnit ( const std::unique_ptr< DWARFUnit > &  U)
inline

◆ isCondBranchOpcode() [1/2]

static bool llvm::isCondBranchOpcode ( int  Opc)
inlinestatic

◆ isCondBranchOpcode() [2/2]

static bool llvm::isCondBranchOpcode ( int  Opc)
inlinestatic

Definition at line 660 of file ARMBaseInstrInfo.h.

◆ isConsecutiveAccess()

bool llvm::isConsecutiveAccess ( Value A,
Value B,
const DataLayout DL,
ScalarEvolution SE,
bool  CheckType = true 
)

Returns true if the memory operations A and B are consecutive.

This is a simple API that does not depend on the analysis pass.

Definition at line 1669 of file LoopAccessAnalysis.cpp.

References A, B, CheckType(), DL, getLoadStorePointerOperand(), getLoadStoreType(), and getPointersDiff().

◆ IsConstantOffsetFromGlobal()

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

Because of constantexprs, this function is recursive. If the global is part of a dso_local_equivalent constant, return it through Equiv if it is provided.

Because of constantexprs, this function is recursive.

Definition at line 291 of file ConstantFolding.cpp.

References BitWidth, llvm::CallingConv::C, DL, GEP, llvm::GlobalValue::getType(), IsConstantOffsetFromGlobal(), and Offset.

Referenced by findFuncPointers(), IsConstantOffsetFromGlobal(), llvm::AsmPrinter::lowerConstant(), shouldConvertToRelLookupTable(), and simplifyRelativeLoad().

◆ isConstantOrConstantSplatVector()

std::optional< APInt > llvm::isConstantOrConstantSplatVector ( MachineInstr MI,
const MachineRegisterInfo MRI 
)

Determines if MI defines a constant integer or a splat vector of constant integers.

Returns
the scalar constant or std::nullopt.

Definition at line 1495 of file Utils.cpp.

References llvm::CallingConv::C, getIConstantSplatSExtVal(), getIConstantVRegValWithLookThrough(), MI, and MRI.

Referenced by llvm::CombinerHelper::matchCombineShlOfExtend(), llvm::CombinerHelper::matchConstantOp(), llvm::CombinerHelper::matchConstantSelectCmp(), and llvm::CombinerHelper::tryReassocBinOp().

◆ isConstantOrConstantVector() [1/2]

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

If AllowFP is true, this will consider G_FCONSTANT in addition to G_CONSTANT. If AllowOpaqueConstants is true, constant-like instructions such as G_GLOBAL_VALUE will also be considered.

Definition at line 1475 of file Utils.cpp.

References I, isBuildVectorOp(), isConstantScalar(), MI, and MRI.

Referenced by foldSelectOfConstantsUsingSra(), isAnyConstantBuildVector(), llvm::CombinerHelper::matchFoldBinOpIntoSelect(), and llvm::CombinerHelper::matchUDivByConst().

◆ isConstantOrConstantVector() [2/2]

bool llvm::isConstantOrConstantVector ( MachineInstr MI,
const MachineRegisterInfo MRI 
)

Determines if MI defines a constant integer or a build vector of constant integers.

Treats undef values as constants.

Definition at line 1458 of file Utils.cpp.

References llvm::CallingConv::C, getIConstantVRegValWithLookThrough(), llvm::GMergeLikeInstr::getNumSources(), llvm::GMergeLikeInstr::getSourceReg(), MI, and MRI.

◆ isConstFalseVal()

bool llvm::isConstFalseVal ( 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 false value.

Definition at line 1585 of file Utils.cpp.

References llvm::TargetLoweringBase::getBooleanContents(), and llvm_unreachable.

Referenced by llvm::TargetLowering::SimplifySetCC().

◆ isConstOrConstSplat() [1/2]

ConstantSDNode * llvm::isConstOrConstSplat ( SDValue  N,
bool  AllowUndefs = false,
bool  AllowTruncation = false 
)

◆ isConstOrConstSplat() [2/2]

ConstantSDNode * llvm::isConstOrConstSplat ( 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.

Definition at line 11679 of file SelectionDAG.cpp.

References assert(), llvm::EVT::bitsGE(), llvm::SDNode::getValueType(), N, llvm::BitVector::none(), and llvm::ISD::SPLAT_VECTOR.

◆ isConstOrConstSplatFP() [1/2]

ConstantFPSDNode * llvm::isConstOrConstSplatFP ( SDValue  N,
bool  AllowUndefs = false 
)

◆ isConstOrConstSplatFP() [2/2]

ConstantFPSDNode * llvm::isConstOrConstSplatFP ( SDValue  N,
const APInt DemandedElts,
bool  AllowUndefs = false 
)

Returns the SDNode if it is a demanded constant splat BuildVector or constant float.

Definition at line 11724 of file SelectionDAG.cpp.

References N, llvm::BitVector::none(), and llvm::ISD::SPLAT_VECTOR.

◆ isConstTrueVal()

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

Definition at line 1572 of file Utils.cpp.

References llvm::TargetLoweringBase::getBooleanContents(), and llvm_unreachable.

Referenced by isConstValidTrue().

◆ isControlFlowEquivalent() [1/2]

bool llvm::isControlFlowEquivalent ( const BasicBlock BB0,
const BasicBlock BB1,
const DominatorTree DT,
const PostDominatorTree PDT 
)

Return true if BB0 and BB1 are control flow equivalent.

Two basic blocks are control flow equivalent if when one executes, the other is guaranteed to execute.

Definition at line 237 of file CodeMoverUtils.cpp.

References dbgs(), llvm::DominatorTree::dominates(), llvm::PostDominatorTree::dominates(), llvm::DominatorTree::findNearestCommonDominator(), llvm::Value::getName(), and LLVM_DEBUG.

◆ isControlFlowEquivalent() [2/2]

bool llvm::isControlFlowEquivalent ( const Instruction I0,
const Instruction I1,
const DominatorTree DT,
const PostDominatorTree PDT 
)

Return true if I0 and I1 are control flow equivalent.

Two instructions are control flow equivalent if their basic blocks are control flow equivalent.

Definition at line 231 of file CodeMoverUtils.cpp.

References llvm::Instruction::getParent(), and isControlFlowEquivalent().

Referenced by isControlFlowEquivalent(), isSafeToMoveBefore(), and nonStrictlyPostDominate().

◆ isConvergenceControlIntrinsic()

static bool llvm::isConvergenceControlIntrinsic ( unsigned  IntrinsicID)
inlinestatic

Check if ID corresponds to a convergence control intrinsic.

Definition at line 1764 of file IntrinsicInst.h.

Referenced by llvm::ConvergenceControlInst::classof().

◆ isCopyMulResult()

static bool llvm::isCopyMulResult ( MachineBasicBlock::iterator const I)
static

Definition at line 2261 of file AVRISelLowering.cpp.

References I.

◆ IsCPSRDead()

template<typename InstrType >
bool llvm::IsCPSRDead ( const InstrType Instr)

Referenced by isV8EligibleForIT().

◆ IsCPSRDead< MachineInstr >()

Definition at line 761 of file ARMBaseInstrInfo.cpp.

References MI.

◆ IsCPSRDead< MCInst >()

template<>
bool llvm::IsCPSRDead< MCInst > ( const MCInst Instr)
inline

Definition at line 11240 of file ARMAsmParser.cpp.

◆ isCriticalEdge() [1/2]

bool llvm::isCriticalEdge ( const Instruction TI,
const BasicBlock Succ,
bool  AllowIdenticalEdges = false 
)

◆ isCriticalEdge() [2/2]

bool llvm::isCriticalEdge ( const Instruction TI,
unsigned  SuccNum,
bool  AllowIdenticalEdges = false 
)

Return true if the specified edge is a critical edge.

isCriticalEdge - Return true if the specified edge is a critical edge.

Critical edges are edges from a block with multiple successors to a block with multiple predecessors.

Definition at line 95 of file CFG.cpp.

References assert(), llvm::Instruction::getSuccessor(), and isCriticalEdge().

Referenced by DemoteRegToStack(), isCriticalEdge(), skipPGOUse(), SplitCriticalEdge(), SplitCriticalEdges(), and SplitEdge().

◆ isCurrentDebugType()

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

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.

Definition at line 52 of file Debug.cpp.

References CurrentDebugType.

Referenced by isDebug().

◆ isCycleInvariant()

bool llvm::isCycleInvariant ( const MachineCycle Cycle,
MachineInstr I 
)

◆ isDbgInfoIntrinsic()

static bool llvm::isDbgInfoIntrinsic ( Intrinsic::ID  ID)
inlinestatic

Check if ID corresponds to a debug info intrinsic.

Definition at line 165 of file IntrinsicInst.h.

Referenced by llvm::CallGraph::CallGraph(), llvm::DbgInfoIntrinsic::classof(), and llvm::CallGraph::populateCallGraphNode().

◆ isDefaultFPEnvironment()

bool llvm::isDefaultFPEnvironment ( fp::ExceptionBehavior  EB,
RoundingMode  RM 
)
inline

Returns true if the exception handling behavior and rounding mode match what is used in the default floating point environment.

Definition at line 65 of file FPEnv.h.

References llvm::fp::ebIgnore, and NearestTiesToEven.

Referenced by simplifyFAddInst(), simplifyFDivInst(), simplifyFMAFMul(), simplifyFMulInst(), simplifyFPOp(), simplifyFRemInst(), and simplifyFSubInst().

◆ isDereferenceableAndAlignedInLoop()

bool llvm::isDereferenceableAndAlignedInLoop ( LoadInst LI,
Loop L,
ScalarEvolution SE,
DominatorTree DT,
AssumptionCache AC = 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.

(i.e. does not require predication beyond that required by the header itself and could be hoisted into the header if desired.) This is more powerful than the variants above when the address loaded from is analyzeable by SCEV.

Definition at line 262 of file Loads.cpp.

References assert(), llvm::sampleprof::Base, DL, llvm::LoadInst::getAlign(), llvm::Module::getDataLayout(), llvm::Instruction::getModule(), llvm::LoadInst::getPointerOperand(), llvm::ScalarEvolution::getSCEV(), llvm::ScalarEvolution::getSmallConstantMaxTripCount(), llvm::Value::getType(), isDereferenceableAndAlignedPointer(), llvm::ScalarEvolution::isLoopInvariant(), Offset, Ptr, llvm::APInt::sgt(), llvm::APInt::uadd_ov(), llvm::APInt::urem(), and llvm::Align::value().

◆ isDereferenceableAndAlignedPointer() [1/2]

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

If the context instruction is specified performs context-sensitive analysis and returns true if the pointer is dereferenceable at the specified instruction.

Definition at line 187 of file Loads.cpp.

References DL, and Size.

◆ isDereferenceableAndAlignedPointer() [2/2]

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

If the context instruction is specified performs context-sensitive analysis and returns true if the pointer is dereferenceable at the specified instruction.

Definition at line 201 of file Loads.cpp.

References DL, isDereferenceableAndAlignedPointer(), llvm::Type::isScalableTy(), and llvm::Type::isSized().

Referenced by allCallersPassValidPointerForArgument(), canTransformToMemCmp(), llvm::TargetLoweringBase::getLoadMemOperandFlags(), llvm::MachinePointerInfo::isDereferenceable(), isDereferenceableForAllocaSize(), isSafeToSpeculativelyExecuteWithOpcode(), promoteLoopAccessesToScalars(), and llvm::MemDerefPrinterPass::run().

◆ isDereferenceablePointer()

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

If the context instruction is specified perform context-sensitive analysis and return true if the pointer is dereferenceable at the specified instruction.

Definition at line 221 of file Loads.cpp.

References DL, and isDereferenceableAndAlignedPointer().

Referenced by peelToTurnInvariantLoadsDerefencebale(), promoteLoopAccessesToScalars(), and llvm::MemDerefPrinterPass::run().

◆ isDoLoopStart()

static bool llvm::isDoLoopStart ( const MachineInstr MI)
inlinestatic

Definition at line 71 of file MVETailPredUtils.h.

References MI.

Referenced by isLoopStart().

◆ isEmbeddedModelEvaluatorValid()

template<class T >
bool llvm::isEmbeddedModelEvaluatorValid ( )

Definition at line 89 of file ReleaseModeModelRunner.h.

◆ isEmbeddedModelEvaluatorValid< NoopSavedModelImpl >()

Definition at line 91 of file ReleaseModeModelRunner.h.

◆ isEnqueueKernelBI()

static bool llvm::isEnqueueKernelBI ( const StringRef  MangledName)
static

Definition at line 284 of file SPIRVUtils.cpp.

Referenced by isNonMangledOCLBuiltin().

◆ isEntryPoint()

bool llvm::isEntryPoint ( const Function F)

Definition at line 358 of file SPIRVUtils.cpp.

References F, and llvm::CallingConv::SPIR_KERNEL.

Referenced by llvm::SPIRVCallLowering::lowerFormalArguments().

◆ isEqual()

◆ isEscapeSource()

bool llvm::isEscapeSource ( const Value V)

Returns true if the pointer is one which would have been considered an escape by isNonEscapingLocalObject.

Definition at line 867 of file AliasAnalysis.cpp.

References isIntrinsicReturningPointerAliasingArgumentWithoutCapturing().

Referenced by AddAliasScopeMetadata().

◆ isExpandableUser()

static bool llvm::isExpandableUser ( User U)
static

Definition at line 21 of file ReplaceConstant.cpp.

Referenced by convertUsersOfConstantsToInstructions().

◆ isFilterPassesEmpty()

bool llvm::isFilterPassesEmpty ( )

Definition at line 150 of file PrintPasses.cpp.

References FilterPasses.

◆ isFinite()

bool llvm::isFinite ( const Loop L)

Return true if this loop can be assumed to run for a finite number of iterations.

Definition at line 1108 of file LoopInfo.cpp.

Referenced by llvm::detail::IEEEFloat::getExactLog2Abs(), and llvm::ScalarEvolution::loopIsFiniteByAssumption().

◆ isFuncletEHPersonality()

bool llvm::isFuncletEHPersonality ( EHPersonality  Pers)
inline

Returns true if this is a personality function that invokes handler funclets (which must return to it).

Definition at line 64 of file EHPersonalities.h.

References CoreCLR, llvm_unreachable, MSVC_CXX, MSVC_TableSEH, and MSVC_X86SEH.

Referenced by llvm::X86TargetLowering::getExceptionSelectorRegister(), llvm::StackProtectorPass::run(), llvm::StackProtector::runOnFunction(), and llvm::FunctionLoweringInfo::set().

◆ isFunctionInPrintList()

bool llvm::isFunctionInPrintList ( StringRef  FunctionName)

◆ isGather()

bool llvm::isGather ( IntrinsicInst IntInst)
inline

Definition at line 945 of file ARMBaseInstrInfo.h.

References llvm::IntrinsicInst::getIntrinsicID().

Referenced by isGatherScatter().

◆ isGatherScatter()

bool llvm::isGatherScatter ( IntrinsicInst IntInst)
inline

Definition at line 973 of file ARMBaseInstrInfo.h.

References isGather(), and isScatter().

Referenced by hasAllGatScatUsers().

◆ isGEPBasedOnPointerToString()

bool llvm::isGEPBasedOnPointerToString ( const GEPOperator GEP,
unsigned  CharSize = 8 
)

Returns true if the GEP is based on a pointer to a string (array of.

Definition at line 5981 of file ValueTracking.cpp.

References GEP, llvm::ArrayType::getElementType(), llvm::Type::isIntegerTy(), and llvm::ConstantInt::isZero().

◆ isGlobalRelativeToPICBase()

static bool llvm::isGlobalRelativeToPICBase ( unsigned char  TargetFlag)
inlinestatic

isGlobalRelativeToPICBase - Return true if the specified global value reference is relative to a 32-bit PIC base (X86ISD::GlobalBaseReg).

If this is true, the addressing mode has the PIC base register added in (e.g. EBX).

Definition at line 127 of file X86InstrInfo.h.

References llvm::X86II::MO_DARWIN_NONLAZY_PIC_BASE, llvm::X86II::MO_GOT, llvm::X86II::MO_GOTOFF, llvm::X86II::MO_PIC_BASE_OFFSET, and llvm::X86II::MO_TLVP.

Referenced by llvm::X86TargetLowering::isLegalAddressingMode().

◆ isGlobalStubReference()

static bool llvm::isGlobalStubReference ( unsigned char  TargetFlag)
inlinestatic

isGlobalStubReference - Return true if the specified TargetFlag operand is a reference to a stub for a global, not the global itself.

Definition at line 109 of file X86InstrInfo.h.

References llvm::X86II::MO_COFFSTUB, llvm::X86II::MO_DARWIN_NONLAZY, llvm::X86II::MO_DARWIN_NONLAZY_PIC_BASE, llvm::X86II::MO_DLLIMPORT, llvm::X86II::MO_GOT, llvm::X86II::MO_GOTPCREL, and llvm::X86II::MO_GOTPCREL_NORELAX.

Referenced by llvm::X86TargetLowering::isLegalAddressingMode(), and llvm::X86TargetLowering::LowerAsmOperandForConstraint().

◆ isGuaranteedNotToBePoison() [1/2]

bool llvm::isGuaranteedNotToBePoison ( const Value V,
AssumptionCache AC,
BasicBlock::iterator  CtxI,
const DominatorTree DT = nullptr,
unsigned  Depth = 0 
)
inline

Definition at line 1028 of file ValueTracking.h.

References Depth, and isGuaranteedNotToBePoison().

◆ isGuaranteedNotToBePoison() [2/2]

bool llvm::isGuaranteedNotToBePoison ( const Value V,
AssumptionCache AC = nullptr,
const Instruction CtxI = nullptr,
const DominatorTree DT = nullptr,
unsigned  Depth = 0 
)

◆ isGuaranteedNotToBeUndef()

bool llvm::isGuaranteedNotToBeUndef ( const Value V,
AssumptionCache AC = nullptr,
const Instruction CtxI = nullptr,
const DominatorTree DT = nullptr,
unsigned  Depth = 0 
)

◆ isGuaranteedNotToBeUndefOrPoison()

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

If V is an aggregate value or vector, check whether all elements (except padding) are not undef or poison. Note that this is different from canCreateUndefOrPoison because the function assumes Op's operands are not poison/undef.

If CtxI and DT are specified this method performs flow-sensitive analysis and returns true if it is guaranteed to be never undef or poison immediately before the CtxI.

Definition at line 7308 of file ValueTracking.cpp.

References Depth.

Referenced by buildPartialUnswitchConditionalBranch(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), constantFoldOperationIntoSelectOperand(), despeculateCountZeros(), findForkedSCEVs(), foldAndOrOfICmpsWithConstEq(), llvm::InstCombinerImpl::foldFreezeIntoRecurrence(), foldLogOpOfMaskedICmps(), isGuaranteedNotToBeUndefOrPoison(), llvm::AANoUndef::isImpliedByIR(), optimizeDivRem(), llvm::InstCombinerImpl::pushFreezeToPreventPoisonFromPropagating(), shouldInsertFreeze(), simplifyFreezeInst(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), UnrollRuntimeLoopRemainder(), unswitchBestCondition(), and llvm::InstCombinerImpl::visitFNeg().

◆ isGuaranteedToExecuteForEveryIteration()

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

Note that this currently only considers the loop header.

Definition at line 7449 of file ValueTracking.cpp.

References I, isGuaranteedToTransferExecutionToSuccessor(), and llvm_unreachable.

Referenced by checkOverflow(), and isMustExecuteIn().

◆ isGuaranteedToTransferExecutionToSuccessor() [1/4]

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

ScanLimit bounds the search to avoid scanning huge blocks.

Definition at line 7428 of file ValueTracking.cpp.

References End, isGuaranteedToTransferExecutionToSuccessor(), and make_range().

◆ isGuaranteedToTransferExecutionToSuccessor() [2/4]

bool llvm::isGuaranteedToTransferExecutionToSuccessor ( const BasicBlock BB)

Returns true if this block does not contain a potential implicit exit.

This is equivelent to saying that all instructions within the basic block are guaranteed to transfer execution to their successor within the basic block. This has the same assumptions w.r.t. undefined behavior as the instruction variant of this function.

Definition at line 7419 of file ValueTracking.cpp.

References I, and isGuaranteedToTransferExecutionToSuccessor().

◆ isGuaranteedToTransferExecutionToSuccessor() [3/4]

bool llvm::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).

E.g. this is not guaranteed for function calls that could loop infinitely.

In other words, this function returns false for instructions that may transfer execution or fail to transfer execution in a way that is not captured in the CFG nor in the sequence of instructions within a basic block.

Undefined behavior is assumed not to happen, so e.g. division is guaranteed to transfer execution to the following instruction even though division by zero might cause undefined behavior.

Definition at line 7387 of file ValueTracking.cpp.

References classifyEHPersonality(), CoreCLR, and I.

Referenced by addArgumentAttrsFromCallsites(), llvm::SimpleLoopSafetyInfo::computeLoopSafetyInfo(), findArgParts(), llvm::MustBeExecutedContextExplorer::findForwardJoinPoint(), llvm::InstCombinerImpl::foldBinopWithPhiOperands(), llvm::MustBeExecutedContextExplorer::getMustBeExecutedNextInstruction(), isGuaranteedToExecuteForEveryIteration(), isGuaranteedToTransferExecutionToSuccessor(), llvm::ImplicitControlFlowTracking::isSpecialInstruction(), isValidAssumeForContext(), llvm::JumpThreadingPass::maybeMergeBasicBlockIntoOnlyPred(), MayContainThrowingOrExitingCallAfterCB(), mayHaveNonDefUseDependency(), optimizeDivRem(), passingValueIsAlwaysUndefined(), programUndefinedIfUndefOrPoison(), llvm::InstCombinerImpl::removeInstructionsBeforeUnreachable(), replaceFoldableUses(), llvm::InstCombinerImpl::simplifyDivRemOfSelectWithZeroOp(), llvm::JumpThreadingPass::simplifyPartiallyRedundantLoad(), and skippedInstrFlags().

◆ isGuaranteedToTransferExecutionToSuccessor() [4/4]

bool llvm::isGuaranteedToTransferExecutionToSuccessor ( iterator_range< BasicBlock::const_iterator Range,
unsigned  ScanLimit = 32 
)

Same as previous, but with range expressed via iterator_range.

Definition at line 7435 of file ValueTracking.cpp.

References assert(), I, and isGuaranteedToTransferExecutionToSuccessor().

◆ isGuard()

bool llvm::isGuard ( const User U)

◆ isGuardAsWidenableBranch()

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

Definition at line 33 of file GuardUtils.cpp.

References llvm::SmallPtrSetImpl< PtrType >::insert(), Insn, isWidenableBranch(), and llvm::PatternMatch::match().

Referenced by isSupportedGuardInstruction().

◆ isHeader()

static bool llvm::isHeader ( StringRef  S)
static

Definition at line 214 of file Debuginfod.cpp.

References all_of(), llvm::CallingConv::C, Name, and llvm::StringRef::split().

Referenced by getHeaders().

◆ isHeuristicInlineCostFeature()

constexpr bool llvm::isHeuristicInlineCostFeature ( InlineCostFeatureIndex  Feature)
constexpr

Definition at line 82 of file InlineModelFeatureMaps.h.

◆ isIdentifiedFunctionLocal()

bool llvm::isIdentifiedFunctionLocal ( const Value V)

Return true if V is umabigously identified at the function-level.

Different IdentifiedFunctionLocals can't alias. Further, an IdentifiedFunctionLocal can not alias with any function arguments other than itself, which is not necessarily true for IdentifiedObjects.

Definition at line 863 of file AliasAnalysis.cpp.

References isNoAliasCall(), and isNoAliasOrByValArgument().

Referenced by llvm::AAResults::callCapturesBefore(), isNonEscapingLocalObject(), and llvm::EarliestEscapeInfo::isNotCapturedBefore().

◆ isIdentifiedObject()

bool llvm::isIdentifiedObject ( const Value V)

Return true if this pointer refers to a distinct and identifiable object.

This returns true for: Global Variables and Functions (but not Global Aliases) Allocas ByVal and NoAlias Arguments NoAlias returns (e.g. calls to malloc)

Definition at line 851 of file AliasAnalysis.cpp.

References isNoAliasCall(), and isNoAliasOrByValArgument().

Referenced by AddAliasScopeMetadata(), addLocAccess(), getUnderlyingObjects(), getUnderlyingObjectsForCodeGen(), getUnderlyingObjectsForInstr(), isObjectSmallerThan(), and underlyingObjectsAlias().

◆ isImage()

bool llvm::isImage ( const Value val)

Definition at line 223 of file NVPTXUtilities.cpp.

References isImageReadOnly(), isImageReadWrite(), and isImageWriteOnly().

◆ isImageReadOnly()

bool llvm::isImageReadOnly ( const Value val)

Definition at line 187 of file NVPTXUtilities.cpp.

References findAllNVVMAnnotation(), llvm::GlobalValue::getParent(), and is_contained().

Referenced by isImage().

◆ isImageReadWrite()

bool llvm::isImageReadWrite ( const Value val)

Definition at line 211 of file NVPTXUtilities.cpp.

References findAllNVVMAnnotation(), llvm::GlobalValue::getParent(), and is_contained().

Referenced by isImage().

◆ isImageWriteOnly()

bool llvm::isImageWriteOnly ( const Value val)

Definition at line 199 of file NVPTXUtilities.cpp.

References findAllNVVMAnnotation(), llvm::GlobalValue::getParent(), and is_contained().

Referenced by isImage().

◆ isImmSExti16i8Value()

bool llvm::isImmSExti16i8Value ( uint64_t  Value)
inline

Definition at line 16 of file X86AsmParserCommon.h.

Referenced by llvm::X86Operand::isImmSExti16i8().

◆ isImmSExti32i8Value()

bool llvm::isImmSExti32i8Value ( uint64_t  Value)
inline

Definition at line 21 of file X86AsmParserCommon.h.

Referenced by llvm::X86Operand::isImmSExti32i8().

◆ isImmSExti64i32Value()

bool llvm::isImmSExti64i32Value ( uint64_t  Value)
inline

Definition at line 30 of file X86AsmParserCommon.h.

Referenced by llvm::X86Operand::isImmSExti64i32().

◆ isImmSExti64i8Value()

bool llvm::isImmSExti64i8Value ( uint64_t  Value)
inline

Definition at line 26 of file X86AsmParserCommon.h.

Referenced by llvm::X86Operand::isImmSExti64i8().

◆ isImmUnsignedi4Value()

bool llvm::isImmUnsignedi4Value ( uint64_t  Value)
inline

Definition at line 38 of file X86AsmParserCommon.h.

Referenced by llvm::X86Operand::isImmUnsignedi4().

◆ isImmUnsignedi8Value()

bool llvm::isImmUnsignedi8Value ( uint64_t  Value)
inline

Definition at line 34 of file X86AsmParserCommon.h.

Referenced by llvm::X86Operand::isImmUnsignedi8().

◆ isImpliedByDomCondition() [1/2]

std::optional< bool > llvm::isImpliedByDomCondition ( CmpInst::Predicate  Pred,
const Value LHS,
const Value RHS,
const Instruction ContextI,
const DataLayout DL 
)

Definition at line 8949 of file ValueTracking.cpp.

References DL, getDomPredecessorCondition(), isImpliedCondition(), LHS, and RHS.

◆ isImpliedByDomCondition() [2/2]

std::optional< bool > llvm::isImpliedByDomCondition ( 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.

Definition at line 8939 of file ValueTracking.cpp.

References assert(), Cond, DL, getDomPredecessorCondition(), and isImpliedCondition().

Referenced by computeOverflowForUnsignedSub(), getKnownSign(), getKnownSignOrZero(), simplifyByDomEq(), simplifyICmpInst(), and simplifySelectInst().

◆ isImpliedCondition() [1/2]

std::optional< bool > llvm::isImpliedCondition ( const Value LHS,
CmpInst::Predicate  RHSPred,
const Value RHSOp0,
const Value RHSOp1,
const DataLayout DL,
bool  LHSIsTrue = true,
unsigned  Depth = 0 
)

The LHS should be an 'or', 'and', or a 'select' instruction. We expect the RHS to be an icmp. FIXME: Add support for and/or/select on the RHS.

Definition at line 8818 of file ValueTracking.cpp.

References assert(), Depth, DL, llvm::Value::getType(), isImpliedCondAndOr(), isImpliedCondICmps(), llvm::Type::isIntOrIntVectorTy(), llvm::Type::isVectorTy(), LHS, llvm::PatternMatch::m_Not(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), and MaxAnalysisRecursionDepth.

◆ isImpliedCondition() [2/2]

std::optional< bool > llvm::isImpliedCondition ( 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.

Return false if RHS is known to be implied false by LHS. Otherwise, return std::nullopt if no implication can be made. A & B must be i1 (boolean) values or a vector of such values. Note that the truth table for implication is the same as <=u on i1 values (but not <=s!). The truth table for both is: | T | F (B) T | T | F F | T | T (A)

Definition at line 8855 of file ValueTracking.cpp.

References Depth, DL, isImpliedCondition(), LHS, llvm::PatternMatch::m_LogicalAnd(), llvm::PatternMatch::m_LogicalOr(), llvm::PatternMatch::m_Not(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), MaxAnalysisRecursionDepth, and RHS.

Referenced by llvm::InstCombinerImpl::foldSelectICmp(), isImpliedByDomCondition(), isImpliedCondAndOr(), isImpliedCondition(), llvm::JumpThreadingPass::processImpliedCondition(), simplifyAndInst(), simplifyICmpOfBools(), simplifyICmpWithDominatingAssume(), simplifyInstructionWithPHI(), simplifyOrInst(), and llvm::JumpThreadingPass::threadGuard().

◆ isIndirectBranchOpcode() [1/2]

static bool llvm::isIndirectBranchOpcode ( int  Opc)
inlinestatic

◆ isIndirectBranchOpcode() [2/2]

static bool llvm::isIndirectBranchOpcode ( int  Opc)
inlinestatic

Definition at line 671 of file ARMBaseInstrInfo.h.

◆ isIndirectCall()

static bool llvm::isIndirectCall ( const MachineInstr MI)
inlinestatic

◆ isIndirectControlFlowNotComingBack()

static bool llvm::isIndirectControlFlowNotComingBack ( const MachineInstr MI)
inlinestatic

◆ isInlineViable()

InlineResult llvm::isInlineViable ( Function Callee)

◆ isInstructionTriviallyDead()

bool llvm::isInstructionTriviallyDead ( Instruction I,
const TargetLibraryInfo TLI = nullptr 
)

Return true if the result produced by the instruction is not used, and the instruction will return.

isInstructionTriviallyDead - Return true if the result produced by the instruction is not used, and the instruction has no side effects.

Certain side-effecting instructions are also considered dead if there are no uses of the instruction.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 399 of file Local.cpp.

References I, and wouldInstructionBeTriviallyDead().

Referenced by CloneAndPruneIntoFromInst(), ConstantPropUsersOf(), DCEInstruction(), doCallSiteSplitting(), llvm::InstCombinerImpl::prepareWorklist(), llvm::JumpThreadingPass::processBlock(), RecursivelyDeleteTriviallyDeadInstructions(), RecursivelyDeleteTriviallyDeadInstructionsPermissive(), rewriteLoopExitValues(), llvm::InstCombinerImpl::run(), llvm::ReassociatePass::run(), runImpl(), simplifyAndDCEInstruction(), simplifyLoopAfterUnroll(), simplifyLoopInst(), sinkRegion(), UnrollRuntimeLoopRemainder(), and while().

◆ isInt()

template<unsigned N>
constexpr bool llvm::isInt ( int64_t  x)
inlineconstexpr

Checks if an integer fits into the given bit width.

Definition at line 151 of file MathExtras.h.

References N.

◆ isInTailCallPosition()

bool llvm::isInTailCallPosition ( const CallBase Call,
const TargetMachine TM 
)

Test if the given instruction is in a position to be optimized with a tail-call.

This roughly means that it's in a block with a return and there's nothing that needs to be scheduled between it and the return.

This function only tests target-independent requirements.

Definition at line 535 of file Analysis.cpp.

References llvm::BasicBlock::end(), F, llvm::BasicBlock::getParent(), llvm::BasicBlock::getTerminator(), isSafeToSpeculativelyExecute(), returnTypeIsEligibleForTailCall(), llvm::CallingConv::SwiftTail, llvm::CallingConv::Tail, and TM.

Referenced by llvm::FastISel::lowerCall(), llvm::CallLowering::lowerCall(), and llvm::SelectionDAGBuilder::LowerCallTo().

◆ isIntN()

bool llvm::isIntN ( unsigned  N,
int64_t  x 
)
inline

◆ isIntOrFPConstant()

bool llvm::isIntOrFPConstant ( SDValue  V)
inline

◆ isIntrinsicReturningPointerAliasingArgumentWithoutCapturing()

bool llvm::isIntrinsicReturningPointerAliasingArgumentWithoutCapturing ( const CallBase Call,
bool  MustPreserveNullness 
)

{launder,strip}.invariant.group returns pointer that aliases its argument, and it only captures pointer by returning it.

These intrinsics are not marked as nocapture, because returning is considered as capture. The arguments are not marked as returned neither, because it would make it useless. If MustPreserveNullness is true, the intrinsic must preserve the nullness of the pointer.

Definition at line 6238 of file ValueTracking.cpp.

Referenced by determinePointerAccessAttrs(), DetermineUseCaptureKind(), getArgumentAliasingToReturnedPointer(), and isEscapeSource().

◆ isIntS16Immediate() [1/2]

bool llvm::isIntS16Immediate ( SDNode N,
int16_t &  Imm 
)

isIntS16Immediate - This method tests to see if the node is either a 32-bit or 64-bit immediate, and if the value can be accurately represented as a sign extension from a 16-bit value.

If so, this returns true and the immediate.

Definition at line 2643 of file PPCISelLowering.cpp.

References N.

Referenced by isIntS16Immediate(), llvm::PPCTargetLowering::SelectAddressRegImm(), llvm::PPCTargetLowering::SelectAddressRegReg(), llvm::PPCTargetLowering::SelectAddressRegRegOnly(), llvm::PPCTargetLowering::SelectForceXFormMode(), and llvm::PPCTargetLowering::SelectOptimalAddrMode().

◆ isIntS16Immediate() [2/2]

bool llvm::isIntS16Immediate ( SDValue  Op,
int16_t &  Imm 
)

Definition at line 2653 of file PPCISelLowering.cpp.

References isIntS16Immediate().

◆ isIntS34Immediate() [1/2]

bool llvm::isIntS34Immediate ( SDNode N,
int64_t &  Imm 
)

isIntS34Immediate - This method tests if value of node given can be accurately represented as a sign extension from a 34-bit value.

If so, this returns true and the immediate.

Definition at line 2692 of file PPCISelLowering.cpp.

References N.

Referenced by isIntS34Immediate(), llvm::PPCTargetLowering::SelectAddressRegImm34(), and llvm::PPCTargetLowering::SelectOptimalAddrMode().

◆ isIntS34Immediate() [2/2]

bool llvm::isIntS34Immediate ( SDValue  Op,
int64_t &  Imm 
)

Definition at line 2699 of file PPCISelLowering.cpp.

References isIntS34Immediate().

◆ isIntVECondCode()

static bool llvm::isIntVECondCode ( VECC::CondCode  CC)
inlinestatic

Definition at line 150 of file VE.h.

References CC, and llvm::VECC::CC_AF.

Referenced by isI32Insn().

◆ isIRPGOFlagSet()

bool llvm::isIRPGOFlagSet ( const Module M)

Check if INSTR_PROF_RAW_VERSION_VAR is defined.

This global is only being set in IR PGO compilation.

Definition at line 1402 of file InstrProf.cpp.

Referenced by getVarName().

◆ isIRPrintingPass()

bool llvm::isIRPrintingPass ( Pass P)

Return true if a pass is for IR printing.

Definition at line 138 of file IRPrintingPasses.cpp.

References P.

Referenced by llvm::DebugifyCustomPassManager::add().

◆ isJumpTableBranchOpcode()

static bool llvm::isJumpTableBranchOpcode ( int  Opc)
inlinestatic

◆ isKernelFunction()

bool llvm::isKernelFunction ( const Function F)

◆ isKernelQueryBI()

static bool llvm::isKernelQueryBI ( const StringRef  MangledName)
static

Definition at line 291 of file SPIRVUtils.cpp.

Referenced by isNonMangledOCLBuiltin().

◆ isKnownNegation()

bool llvm::isKnownNegation ( const Value X,
const Value Y,
bool  NeedNSW = false 
)

Return true if the two given values are negation.

Currently can recoginze Value pair: 1: <X, Y> if X = sub (0, Y) or Y = sub (0, X) 2: <X, Y> if X = sub (A, B) and Y = sub (B, A)

Definition at line 8042 of file ValueTracking.cpp.

References A, assert(), B, llvm::PatternMatch::m_NSWNeg(), llvm::PatternMatch::m_NSWSub(), llvm::PatternMatch::m_Specific(), llvm::PatternMatch::m_Sub(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::m_ZeroInt(), llvm::PatternMatch::match(), X, and Y.

Referenced by matchSelectPattern(), simplifyAddInst(), simplifySDivInst(), simplifySRemInst(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitSDiv().

◆ isKnownNegative()

bool llvm::isKnownNegative ( const Value V,
const SimplifyQuery DL,
unsigned  Depth = 0 
)

Returns true if the given value is known be negative (i.e.

non-positive and non-zero).

Definition at line 294 of file ValueTracking.cpp.

References computeKnownBits(), and Depth.

Referenced by computeKnownBitsMul().

◆ isKnownNegativeInLoop()

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

Definition at line 1255 of file LoopUtils.cpp.

References llvm::SCEV::getType(), llvm::ScalarEvolution::getZero(), llvm::ScalarEvolution::isAvailableAtLoopEntry(), and llvm::ScalarEvolution::isLoopEntryGuardedByCond().

◆ isKnownNeverInfinity()

bool llvm::isKnownNeverInfinity ( const Value V,
unsigned  Depth,
const SimplifyQuery SQ 
)
inline

Return true if the floating-point scalar value is not an infinity or if the floating-point vector value has no infinities.

Return false if a value could ever be infinity.

Definition at line 552 of file ValueTracking.h.

References computeKnownFPClass(), Depth, fcInf, and llvm::KnownFPClass::isKnownNeverInfinity().

Referenced by isKnownIntegral().

◆ isKnownNeverInfOrNaN()

bool llvm::isKnownNeverInfOrNaN ( const Value V,
unsigned  Depth,
const SimplifyQuery SQ 
)
inline

Return true if the floating-point value can never contain a NaN or infinity.

Definition at line 559 of file ValueTracking.h.

References computeKnownFPClass(), Depth, fcInf, fcNan, llvm::KnownFPClass::isKnownNeverInfinity(), and llvm::KnownFPClass::isKnownNeverNaN().

Referenced by llvm::GCNTTIImpl::canSimplifyLegacyMulToMul(), and isKnownIntegral().

◆ isKnownNeverNaN() [1/2]

bool llvm::isKnownNeverNaN ( const Value V,
unsigned  Depth,
const SimplifyQuery SQ 
)
inline

Return true if the floating-point scalar value is not a NaN or if the floating-point vector value has no NaN elements.

Return false if a value could ever be NaN.

Definition at line 568 of file ValueTracking.h.

References computeKnownFPClass(), Depth, fcNan, and llvm::KnownFPClass::isKnownNeverNaN().

Referenced by llvm::InstCombinerImpl::foldSelectIntoOp(), foldSelectShuffleWith1Binop(), isKnownNeverNaN(), isKnownNeverSNaN(), simplifyAndOrOfFCmps(), simplifyFCmpInst(), llvm::InstCombinerImpl::visitFCmpInst(), and llvm::InstCombinerImpl::visitFMul().

◆ isKnownNeverNaN() [2/2]

bool llvm::isKnownNeverNaN ( Register  Val,
const MachineRegisterInfo MRI,
bool  SNaN = false 
)

◆ isKnownNeverSNaN()

bool llvm::isKnownNeverSNaN ( Register  Val,
const MachineRegisterInfo MRI 
)
inline

Returns true if Val can be assumed to never be a signaling NaN.

Definition at line 334 of file Utils.h.

References isKnownNeverNaN(), and MRI.

Referenced by isKnownNeverNaN(), and llvm::LegalizerHelper::lowerFMinNumMaxNum().

◆ isKnownNonEqual()

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

Supports scalar integer types only.

Definition at line 302 of file ValueTracking.cpp.

References DL, and safeCxtI().

Referenced by simplifyICmpInst().

◆ isKnownNonNegative()

bool llvm::isKnownNonNegative ( const Value V,
const SimplifyQuery SQ,
unsigned  Depth = 0 
)

◆ isKnownNonNegativeInLoop()

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

Definition at line 1262 of file LoopUtils.cpp.

References llvm::SCEV::getType(), llvm::ScalarEvolution::getZero(), llvm::ScalarEvolution::isAvailableAtLoopEntry(), and llvm::ScalarEvolution::isLoopEntryGuardedByCond().

Referenced by llvm::LoopStructure::parseLoopStructure().

◆ isKnownNonPositiveInLoop()

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

Definition at line 1276 of file LoopUtils.cpp.

References llvm::SCEV::getType(), llvm::ScalarEvolution::getZero(), llvm::ScalarEvolution::isAvailableAtLoopEntry(), and llvm::ScalarEvolution::isLoopEntryGuardedByCond().

◆ isKnownNonZero()

bool llvm::isKnownNonZero ( const Value V,
const SimplifyQuery Q,
unsigned  Depth = 0 
)

Return true if the given value is known to be non-zero when defined.

For vectors, return true if every element is known to be non-zero when defined. For pointers, if the context instruction and dominator tree are specified, perform context-sensitive analysis and return true if the pointer couldn't possibly be null at the specified instruction. Supports values with integer or pointer type and vectors of integers.

Definition at line 3104 of file ValueTracking.cpp.

References Depth, and llvm::APInt::getAllOnes().

Referenced by annotateNonNullAndDereferenceable(), computePointerICmp(), convertMetadataToAssumes(), despeculateCountZeros(), llvm::InstCombinerImpl::foldAddWithConstant(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldICmpWithZero(), foldICmpXorXX(), foldUnsignedUnderflowCheck(), llvm::LazyValueInfo::getPredicateAt(), isDereferenceableAndAlignedPointer(), isReturnNonNull(), matchSelectPattern(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithZero(), simplifyUnsignedRangeCheck(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitPHINode().

◆ isKnownPositive()

bool llvm::isKnownPositive ( const Value V,
const SimplifyQuery SQ,
unsigned  Depth = 0 
)

Returns true if the given value is known be positive (i.e.

non-negative and non-zero).

Definition at line 282 of file ValueTracking.cpp.

References computeKnownBits(), Depth, isKnownNonZero(), llvm::KnownBits::isNonNegative(), and llvm::KnownBits::isNonZero().

Referenced by llvm::InstCombinerImpl::foldICmpWithZero().

◆ isKnownPositiveInLoop()

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

Definition at line 1269 of file LoopUtils.cpp.

References llvm::SCEV::getType(), llvm::ScalarEvolution::getZero(), llvm::ScalarEvolution::isAvailableAtLoopEntry(), and llvm::ScalarEvolution::isLoopEntryGuardedByCond().

◆ isKnownToBeAPowerOfTwo() [1/2]

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

For vectors return true if every element is known to be a power of two when defined. Supports values with integer or pointer type and vectors of integers. If 'OrZero' is set, then return true if the given value is either a power of two or zero.

Definition at line 265 of file ValueTracking.cpp.

References Depth, DL, and safeCxtI().

Referenced by llvm::InstCombiner::isKnownToBeAPowerOfTwo(), isKnownToBeAPowerOfTwo(), isMaskOrZero(), llvm::CombinerHelper::matchOperandIsKnownToBeAPowerOfTwo(), simplifyAndCommutative(), simplifyAndInst(), and simplifyUnaryIntrinsic().

◆ isKnownToBeAPowerOfTwo() [2/2]

bool llvm::isKnownToBeAPowerOfTwo ( Register  Val,
const MachineRegisterInfo MRI,
GISelKnownBits KnownBits = nullptr 
)

Test if the given value is known to have exactly one bit set.

This differs from computeKnownBits in that it doesn't necessarily determine which bit is set.

Definition at line 1068 of file Utils.cpp.

References BitWidth, llvm::KnownBits::countMaxPopulation(), llvm::KnownBits::countMinPopulation(), drop_begin(), getDefSrcRegIgnoringCopies(), getIConstantVRegVal(), llvm::GISelKnownBits::getKnownBits(), llvm::LLT::getScalarSizeInBits(), llvm::ConstantInt::getValue(), isKnownToBeAPowerOfTwo(), llvm::APInt::isPowerOf2(), MI, MRI, and llvm::APInt::zextOrTrunc().

◆ isLeaMem()

static bool llvm::isLeaMem ( const MachineInstr MI,
unsigned  Op 
)
inlinestatic

◆ isLegalAddressImm()

bool llvm::isLegalAddressImm ( unsigned  Opcode,
int  Imm,
const TargetInstrInfo TII 
)
inline

◆ isLegalAVL()

bool llvm::isLegalAVL ( SDValue  AVL)

◆ isLegalToPromote()

bool llvm::isLegalToPromote ( const CallBase CB,
Function Callee,
const char **  FailureReason = nullptr 
)

Return true if the given indirect call site can be made to call Callee.

This function ensures that the number and type of the call site's arguments and return value match those of the given function. If the types do not match exactly, they must at least be bitcast compatible. If FailureReason is non-null and the indirect call cannot be promoted, the failure reason will be stored in it.

Definition at line 383 of file CallPromotionUtils.cpp.

References llvm::CallBase::arg_size(), assert(), DL, llvm::PointerType::getAddressSpace(), llvm::CallBase::getArgOperand(), llvm::CallBase::getAttributes(), llvm::CallBase::getCalledFunction(), llvm::Value::getType(), llvm::AttributeList::hasParamAttr(), I, llvm::CastInst::isBitOrNoopPointerCastable(), llvm::CallBase::isMustTailCall(), and llvm::CallBase::paramHasAttr().

Referenced by tryPromoteCall().

◆ isLegalUTF8()

static Boolean llvm::isLegalUTF8 ( const UTF8 source,
int  length 
)
static

◆ isLegalUTF8Sequence()

Boolean llvm::isLegalUTF8Sequence ( const UTF8 source,
const UTF8 sourceEnd 
)

Definition at line 428 of file ConvertUTF.cpp.

References isLegalUTF8(), and trailingBytesForUTF8.

Referenced by findMaximalSubpartOfIllFormedUTF8Sequence().

◆ isLegalUTF8String()

Boolean llvm::isLegalUTF8String ( const UTF8 **  source,
const UTF8 sourceEnd 
)

Definition at line 555 of file ConvertUTF.cpp.

References isLegalUTF8(), and trailingBytesForUTF8.

Referenced by ConvertUTF8toWide(), convertWideToUTF8(), and llvm::json::isUTF8().

◆ isLibFreeFunction()

bool llvm::isLibFreeFunction ( const Function F,
const LibFunc  TLIFn 
)

◆ isLibFuncEmittable() [1/2]

bool llvm::isLibFuncEmittable ( const Module M,
const TargetLibraryInfo TLI,
LibFunc  TheLibFunc 
)

◆ isLibFuncEmittable() [2/2]

bool llvm::isLibFuncEmittable ( const Module M,
const TargetLibraryInfo TLI,
StringRef  Name 
)

◆ isLifetimeIntrinsic()

static bool llvm::isLifetimeIntrinsic ( Intrinsic::ID  ID)
inlinestatic

Check if ID corresponds to a lifetime intrinsic.

Definition at line 140 of file IntrinsicInst.h.

Referenced by llvm::LifetimeIntrinsic::classof().

◆ isLiteralsPair()

static bool llvm::isLiteralsPair ( const MachineInstr FirstMI,
const MachineInstr SecondMI 
)
static

Definition at line 38 of file ARMMacroFusion.cpp.

References llvm::MachineInstr::getOpcode().

Referenced by shouldScheduleAdjacent().

◆ isLoopStart()

static bool llvm::isLoopStart ( const MachineInstr MI)
inlinestatic

Definition at line 82 of file MVETailPredUtils.h.

References isDoLoopStart(), isWhileLoopStart(), and MI.

Referenced by AlignBlocks(), and IsInvalidTPInstruction().

◆ isMallocOrCallocLikeFn()

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

Definition at line 318 of file MemoryBuiltins.cpp.

References getAllocationData(), and MallocOrOpNewLike.

Referenced by llvm::BasicAAResult::getModRefInfo().

◆ isManaged()

bool llvm::isManaged ( const Value val)

Definition at line 227 of file NVPTXUtilities.cpp.

References assert(), and findOneNVVMAnnotation().

◆ isMask_32()

constexpr bool llvm::isMask_32 ( uint32_t  Value)
inlineconstexpr

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).

Ex. isMask_32(0x0000FFFFU) == true.

Definition at line 240 of file MathExtras.h.

Referenced by CombineANDShift(), isImmMskBitp(), isMImm32Val(), isShiftedMask_32(), and PerformShiftCombine().

◆ isMask_64()

constexpr bool llvm::isMask_64 ( uint64_t  Value)
inlineconstexpr

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).

Definition at line 246 of file MathExtras.h.

Referenced by llvm::AArch64TargetLowering::isDesirableToCommuteWithShift(), isEndChunk(), llvm::APInt::isMask(), isMImmVal(), isSeveralBitsExtractOpFromShr(), isSeveralBitsPositioningOpFromShl(), isShiftedMask_64(), isStartChunk(), llvm::RISCVDAGToDAGISel::Select(), translateSetCCForBranch(), and tryOrrWithShift().

◆ isMaskArithmetic()

bool llvm::isMaskArithmetic ( SDValue  Op)

◆ isMaskType()

bool llvm::isMaskType ( EVT  SomeVT)

◆ isMathLibCallNoop()

bool llvm::isMathLibCallNoop ( const CallBase Call,
const TargetLibraryInfo TLI 
)

◆ isMem()

static bool llvm::isMem ( const MachineInstr MI,
unsigned  Op 
)
inlinestatic

Definition at line 158 of file X86InstrInfo.h.

References llvm::X86::AddrNumOperands, llvm::X86::AddrSegmentReg, isLeaMem(), and MI.

◆ isMImm32Val()

static bool llvm::isMImm32Val ( uint32_t  Val)
inlinestatic

Definition at line 344 of file VE.h.

References isMask_32(), and isShiftedMask_32().

Referenced by isMImm().

◆ isMImmVal()

static bool llvm::isMImmVal ( uint64_t  Val)
inlinestatic

Definition at line 331 of file VE.h.

References isMask_64(), and isShiftedMask_64().

Referenced by llvm::VEInstrInfo::foldImmediate(), and isMImm().

◆ isMinSignedConstant()

bool llvm::isMinSignedConstant ( SDValue  V)

Returns true if V is a constant min signed integer value.

Definition at line 11568 of file SelectionDAG.cpp.

Referenced by llvm::SelectionDAG::isADDLike(), and lowerAtomicArith().

◆ isModAndRefSet()

bool llvm::isModAndRefSet ( const ModRefInfo  MRI)
inline

Definition at line 45 of file ModRef.h.

References ModRef, and MRI.

Referenced by llvm::AliasSet::aliasesUnknownInst(), and llvm::BasicAAResult::getModRefInfo().

◆ isModOrRefSet()

bool llvm::isModOrRefSet ( const ModRefInfo  MRI)
inline

◆ isModSet()

bool llvm::isModSet ( const ModRefInfo  MRI)
inline

◆ isMovRegOpcode()

static bool llvm::isMovRegOpcode ( int  Opc)
inlinestatic

Definition at line 754 of file ARMBaseInstrInfo.h.

◆ isMustProgress()

bool llvm::isMustProgress ( const Loop L)

Return true if this loop can be assumed to make progress.

(i.e. can't be infinite without side effects without also being undefined)

Definition at line 1118 of file LoopInfo.cpp.

References hasMustProgress().

Referenced by detectShiftUntilZeroIdiom(), hasPartialIVCondition(), and llvm::ScalarEvolution::loopIsFiniteByAssumption().

◆ isNeutralConstant()

bool llvm::isNeutralConstant ( unsigned  Opc,
SDNodeFlags  Flags,
SDValue  V,
unsigned  OperandNo 
)

◆ isNewLikeFn()

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

Definition at line 312 of file MemoryBuiltins.cpp.

References getAllocationData(), and OpNewLike.

Referenced by readMemprof().

◆ isNoAliasCall()

bool llvm::isNoAliasCall ( const Value V)

◆ isNoModRef()

bool llvm::isNoModRef ( const ModRefInfo  MRI)
inline

◆ isNonEscapingLocalObject()

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

Definition at line 458 of file CaptureTracking.cpp.

References llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::insert(), isIdentifiedFunctionLocal(), and PointerMayBeCaptured().

Referenced by llvm::SimpleCaptureInfo::isNotCapturedBefore().

◆ isNonMangledOCLBuiltin()

static bool llvm::isNonMangledOCLBuiltin ( StringRef  Name)
static

◆ isNoOpWithoutInvoke()

bool llvm::isNoOpWithoutInvoke ( EHPersonality  Pers)
inline

Return true if this personality may be safely removed if there are no invoke instructions remaining in the current function.

Definition at line 95 of file EHPersonalities.h.

References llvm_unreachable, and Unknown.

Referenced by llvm::DwarfCFIException::beginFunction(), llvm::WinException::beginFunction(), llvm::ARMException::endFunction(), needFuncLabels(), and llvm::TargetLoweringObjectFileXCOFF::ShouldEmitEHBlock().

◆ isNotVisibleOnUnwind()

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

If the RequiresNoCaptureBeforeUnwind out parameter is set to true, then the memory is only not visible if the object has not been captured prior to the unwind. Otherwise it is not visible even if captured.

Definition at line 894 of file AliasAnalysis.cpp.

References A, and isNoAliasCall().

Referenced by mayBeVisibleThroughUnwinding().

◆ isNullConstant()

bool llvm::isNullConstant ( SDValue  V)

Returns true if V is a constant integer zero.

Definition at line 11548 of file SelectionDAG.cpp.

Referenced by AddCombineTo64bitUMAAL(), checkBoolTestAndOrSetCCCombine(), collectConcatOps(), combine_CC(), combineArithReduction(), combineBallotPattern(), combineBinOpOfExtractToReduceTree(), combineBinOpToReduce(), combineBitcast(), combineCMov(), combineCMP(), combineExtractVectorElt(), combineFMA(), combineINSERT_SUBVECTOR(), combineMaskedLoadConstantMask(), combineOr(), combineOrCmpEqZeroToCtlzSrl(), combineSBB(), combineScalarToVector(), combineSelect(), combineSelectAndUse(), combineSelectAsExtAnd(), combineSelectOfTwoConstants(), combineSelectToBinOp(), combineStore(), combineSub(), combineSubABS(), combineTargetShuffle(), combineToFPTruncExtElt(), combineUADDO_CARRYDiamond(), combineVectorInsert(), combineVectorSizedSetCCEquality(), combineX86ShufflesRecursively(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), llvm::AMDGPUTargetLowering::ComputeNumSignBitsForTargetNode(), llvm::SelectionDAG::computeOverflowForSignedAdd(), llvm::SelectionDAG::computeOverflowForSignedMul(), llvm::SelectionDAG::computeOverflowForSignedSub(), llvm::SelectionDAG::computeOverflowForUnsignedAdd(), llvm::SelectionDAG::computeOverflowForUnsignedMul(), llvm::SelectionDAG::computeOverflowForUnsignedSub(), EmitAVX512Test(), EmitCmp(), emitComparison(), emitConditionalComparison(), llvm::ARMSelectionDAGInfo::EmitSpecializedLibcall(), extractSubVector(), foldADCToCINC(), foldAddSubBoolOfMaskedVal(), foldCSELofCTTZ(), foldOverflowCheck(), foldSelectOfCTTZOrCTLZ(), generateComparison(), llvm::PPC::get_VSPLTI_elt(), getBMIMatchingOp(), getCSETCondCode(), getFauxShuffleMask(), llvm::VECustomDAG::getGatherScatterAddress(), getIdxEn(), llvm::SelectionDAG::getMemset(), getMemsetStores(), llvm::SelectionDAG::getVectorShuffle(), isCMN(), IsCMPZCSINC(), isFloatingPointZero(), isHorizontalBinOp(), llvm::SelectionDAG::isKnownNeverZero(), isNegatedInteger(), IsNOT(), llvm::SelectionDAG::isUndef(), llvm::X86::isZeroNode(), isZeroOrAllOnes(), isZerosVector(), isZeroVector(), LookThroughSetCC(), llvm::RISCVTargetLowering::LowerAsmOperandForConstraint(), lowerAtomicArith(), LowerBR_CC(), lowerBuildVectorAsBroadcast(), llvm::SITargetLowering::LowerCall(), llvm::TargetLowering::lowerCmpEqZeroToCtlzSrl(), LowerEXTRACT_VECTOR_ELT_SSE4(), lowerScalarInsert(), lowerScalarSplat(), LowerSELECT_CC(), llvm::MSP430TargetLowering::LowerSETCC(), llvm::SelectionDAG::matchBinOpReduction(), MatchVectorAllEqualTest(), PerformAddcSubcCombine(), performANDORCSELCombine(), llvm::ARMTargetLowering::PerformBRCONDCombine(), performBRCONDCombine(), llvm::ARMTargetLowering::PerformCMOVCombine(), llvm::ARMTargetLowering::PerformCMOVToBFICombine(), llvm::AMDGPUTargetLowering::performCtlz_CttzCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), llvm::RISCVTargetLowering::PerformDAGCombine(), performExtractVectorEltCombine(), performFirstTrueTestVectorCombine(), PerformMVEVMULLCombine(), performOrXorChainCombine(), performScalarToVectorCombine(), performSETCCCombine(), performSUBCombine(), PerformSubCSINCCombine(), PerformUMLALCombine(), pushAddIntoCmovOfConsts(), refineUniformBase(), removeRedundantInsertVectorElt(), llvm::RISCVTargetLowering::ReplaceNodeResults(), replaceZeroVectorStore(), scalarizeExtEltFP(), llvm::RISCVDAGToDAGISel::selectSETCC(), selectSOffset(), shouldCombineToPostInc(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::TargetLowering::SimplifyDemandedVectorElts(), llvm::TargetLowering::SimplifyMultipleUseDemandedBits(), translateSetCCForBranch(), tryCombineMULLWithUZP1(), tryDemorganOfBooleanCondition(), llvm::X86InstrInfo::unfoldMemoryOperand(), useInversedSetcc(), and vectorizeExtractedCast().

◆ isNullFPConstant()

bool llvm::isNullFPConstant ( SDValue  V)

Returns true if V is an FP constant with a value of positive zero.

Definition at line 11553 of file SelectionDAG.cpp.

Referenced by generateComparison(), isNullFPScalarOrVectorConst(), llvm::X86::isZeroNode(), isZerosVector(), replaceZeroVectorStore(), and llvm::TargetLowering::SimplifyDemandedVectorElts().

◆ isNullOrNullSplat() [1/2]

bool llvm::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).

This will handle G_BUILD_VECTOR and G_BUILD_VECTOR_TRUNC as truncation is not an issue for null values.

Definition at line 1507 of file Utils.cpp.

References isBuildVectorAllZeros(), llvm::ConstantFP::isNegative(), llvm::ConstantFP::isZero(), MI, and MRI.

Referenced by combineSelect(), combineVWADDSUBWSelect(), foldAndOrOfSETCC(), foldBoolSelectToLogic(), foldSelectOfConstantsUsingSra(), foldVSelectToSignBitSplatMask(), isSaturatingMinMax(), isTruncateOf(), llvm::CombinerHelper::matchFoldBinOpIntoSelect(), matchShuffleWithPACK(), shouldConvertSelectOfConstantsToMath(), and llvm::SelectionDAG::simplifyShift().

◆ isNullOrNullSplat() [2/2]

bool llvm::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).

Build vector implicit truncation is not an issue for null values.

Definition at line 11746 of file SelectionDAG.cpp.

References llvm::CallingConv::C, isConstOrConstSplat(), and N.

◆ isNZCVTouchedInInstructionRange()

bool llvm::isNZCVTouchedInInstructionRange ( const MachineInstr DefMI,
const MachineInstr UseMI,
const TargetRegisterInfo TRI 
)

Return true if there is an instruction /after/ DefMI and before UseMI which either reads or clobbers NZCV.

Definition at line 5117 of file AArch64InstrInfo.cpp.

References any_of(), DefMI, I, instructionsWithoutDebug(), TRI, and UseMI.

◆ isODRAttribute()

static bool llvm::isODRAttribute ( uint16_t  Attr)
static
Returns
whether the passed Attr type might contain a DIE reference suitable for ODR uniquing.

Definition at line 95 of file DWARFLinker.cpp.

References llvm_unreachable.

◆ isODRCanonicalCandidate()

static bool llvm::isODRCanonicalCandidate ( const DWARFDie Die,
CompileUnit CU 
)
static

Definition at line 709 of file DWARFLinker.cpp.

References llvm::DWARFDie::getTag(), and Info.

◆ isOfRegClass()

bool llvm::isOfRegClass ( const TargetInstrInfo::RegSubRegPair P,
const TargetRegisterClass TRC,
MachineRegisterInfo MRI 
)
inline

Returns true if a reg:subreg pair P has a TRC class.

Definition at line 1383 of file SIInstrInfo.h.

References MRI, P, and TRI.

◆ isOneConstant()

bool llvm::isOneConstant ( SDValue  V)

◆ isOneOrOneSplat()

bool llvm::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).

Build vector implicit truncation is allowed, but the truncated bits need to be zero.

Definition at line 11753 of file SelectionDAG.cpp.

References llvm::CallingConv::C, isConstOrConstSplat(), and N.

Referenced by llvm::TargetLowering::expandIntMINMAX(), foldAddSubMasked1(), foldBoolSelectToLogic(), and performMULCombine().

◆ isOnlyUsedInZeroEqualityComparison()

bool llvm::isOnlyUsedInZeroEqualityComparison ( const Instruction CxtI)

Definition at line 255 of file ValueTracking.cpp.

References all_of(), and I.

Referenced by optimizeMemCmpConstantSize().

◆ isOverflowIntrinsicNoWrap()

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

Definition at line 6861 of file ValueTracking.cpp.

References any_of(), assert(), B, llvm::DominatorTree::dominates(), llvm::BasicBlockEdge::isSingleEdge(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), Results, and llvm::Value::users().

Referenced by MatchBinaryOp().

◆ isPackedVectorType()

bool llvm::isPackedVectorType ( EVT  SomeVT)

◆ isPackingSupportOpcode()

bool llvm::isPackingSupportOpcode ( unsigned  Opc)

◆ isPartOfGOTToPCRelPair()

std::optional< bool > llvm::isPartOfGOTToPCRelPair ( const MCInst Inst,
const MCSubtargetInfo STI 
)

◆ isPassInPrintList()

bool llvm::isPassInPrintList ( StringRef  PassName)

Definition at line 144 of file PrintPasses.cpp.

References FilterPasses, and PassName.

◆ isPGSOColdCodeOnly()

static bool llvm::isPGSOColdCodeOnly ( ProfileSummaryInfo PSI)
inlinestatic

◆ isPipeOrAddressSpaceCastBI()

static bool llvm::isPipeOrAddressSpaceCastBI ( const StringRef  MangledName)
static

Definition at line 260 of file SPIRVUtils.cpp.

Referenced by isNonMangledOCLBuiltin().

◆ isPointerTy()

bool llvm::isPointerTy ( const Type T)
inline

◆ isPopOpcode()

static bool llvm::isPopOpcode ( int  Opc)
inlinestatic

Definition at line 736 of file ARMBaseInstrInfo.h.

Referenced by tryFoldSPUpdateIntoPushPop().

◆ isPotentiallyReachable() [1/2]

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

Determine whether there is a path from From to To within a single function. Returns false only if we can prove that once 'From' has been reached then 'To' can not be executed. Conservatively returns true.

Definition at line 207 of file CFG.cpp.

References A, assert(), B, llvm::SmallPtrSetImplBase::empty(), isPotentiallyReachableFromMany(), llvm::DominatorTree::isReachableFromEntry(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

◆ isPotentiallyReachable() [2/2]

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

Determine whether there is a path from From to To within a single function. Returns false only if we can prove that once 'From' has been executed then 'To' can not be executed. Conservatively returns true.

This function is linear with respect to the number of blocks in the CFG, walking down successors from From to reach To, with a fixed threshold. Using DT or LI allows us to answer more quickly. LI reduces the cost of an entire loop of any number of blocks to be the same as the cost of a single block. DT reduces the cost by allowing the search to terminate when we find a block that dominates the block containing 'To'. DT is most useful on branchy code but not loops, and LI is most useful on code with loops but does not help on branchy code outside loops.

Definition at line 231 of file CFG.cpp.

References A, llvm::SmallVectorImpl< T >::append(), assert(), B, llvm::SmallVectorBase< Size_T >::empty(), llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), llvm::BasicBlock::isEntryBlock(), isPotentiallyReachable(), isPotentiallyReachableFromMany(), succ_begin(), and succ_end().

Referenced by llvm::InstCombinerImpl::foldOpIntoPhi(), llvm::memtag::forAllReachableExits(), InsertSafepointPoll(), llvm::EarliestEscapeInfo::isNotCapturedBefore(), isPotentiallyReachable(), liesBetween(), and reportMayClobberedLoad().

◆ isPotentiallyReachableFromMany()

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

Determine whether there is a path from at least one block in Worklist to StopBB within a single function without passing through any of the blocks in 'ExclusionSet'. Returns false only if we can prove that once any block in 'Worklist' has been reached then 'StopBB' can not be executed. Conservatively returns true.

Definition at line 133 of file CFG.cpp.

References llvm::SmallVectorImpl< T >::append(), llvm::SmallPtrSetImpl< PtrType >::count(), DefaultMaxBBsToExplore, llvm::DominatorTree::dominates(), llvm::SmallPtrSetImplBase::empty(), llvm::SmallVectorBase< Size_T >::empty(), getOutermostLoop(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::DominatorTree::isReachableFromEntry(), llvm::SmallVectorImpl< T >::pop_back_val(), succ_begin(), and succ_end().

Referenced by isNotInCycle(), and isPotentiallyReachable().

◆ isPowerOf2_32()

constexpr bool llvm::isPowerOf2_32 ( uint32_t  Value)
inlineconstexpr

Return true if the argument is a power of two > 0.

Ex. isPowerOf2_32(0x00100000U) == true (32 bit edition.)

Definition at line 264 of file MathExtras.h.

References has_single_bit().

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo(), adjustDown(), adjustUp(), llvm::LegalizerHelper::bitcastExtractVectorElt(), llvm::LegalizerHelper::bitcastInsertVectorElt(), canLowerByDroppingElements(), llvm::slpvectorizer::BoUpSLP::canVectorizeLoads(), clampDynamicVectorIndex(), clampVectorIndex(), combineArithReduction(), combineBasicSADPattern(), combineBitcast(), combineFP_EXTEND(), combineFP_ROUND(), combineMulToPMADDWD(), combineMulToPMULDQ(), combinePredicateReduction(), combineShiftRightLogical(), combineTruncateWithSat(), combineVPDPBUSDPattern(), combineX86ShufflesRecursively(), llvm::HvxSelector::completeToPerfect(), llvm::LoopVectorizationCostModel::computeMaxVF(), llvm::TargetLoweringBase::computeRegisterProperties(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::AArch64TargetLowering::createComplexDeinterleavingIR(), CreateTripRemainder(), decodeLLVMAttributesForBitcode(), DecodeVALIGNMask(), detectPMADDUBSW(), EltsFromConsecutiveLoads(), llvm::VFRange::end(), llvm::TargetLowering::expandBITREVERSE(), llvm::TargetLowering::expandCTLZ(), llvm::TargetLowering::expandCTTZ(), llvm::TargetLowering::expandFunnelShift(), llvm::TargetLowering::expandROT(), llvm::TargetLowering::expandShiftParts(), llvm::TargetLowering::expandVPBITREVERSE(), expandVPFunnelShift(), extractSubVector(), llvm::LegalizerHelper::fewerElementsVectorReductions(), llvm::LegalizerHelper::fewerElementsVectorShuffle(), findMemType(), foldGuardedFunnelShift(), foldIdentityPaddedShuffles(), foldSwitchToSelect(), llvm::AArch64TTIImpl::getArithmeticReductionCost(), llvm::X86TTIImpl::getArithmeticReductionCost(), llvm::ARMTTIImpl::getArithmeticReductionCost(), getContainerForFixedLengthVector(), getInputSegmentList(), llvm::BasicTTIImplBase< T >::getIntrinsicInstrCost(), getMaxShiftAmount(), llvm::AArch64TTIImpl::getMemoryOpCost(), llvm::ARMTTIImpl::getMinMaxReductionCost(), llvm::X86TTIImpl::getMinMaxReductionCost(), llvm::InnerLoopVectorizer::getOrCreateVectorTripCount(), llvm::AArch64TTIImpl::getPopcntSupport(), llvm::GCNTTIImpl::getPopcntSupport(), llvm::PPCTTIImpl::getPopcntSupport(), llvm::RISCVTTIImpl::getPopcntSupport(), llvm::SystemZTTIImpl::getPopcntSupport(), llvm::X86TTIImpl::getPopcntSupport(), llvm::WebAssemblyTTIImpl::getPopcntSupport(), llvm::HexagonTargetLowering::getPreferredVectorAction(), llvm::BuildVectorSDNode::getRepeatedSequence(), getRuntimeLoopCount(), getRuntimeLoopRemainder(), getShuffleReduction(), llvm::PPCTargetLowering::getStackProbeSize(), llvm::SystemZTargetLowering::getStackProbeSize(), llvm::AArch64TTIImpl::getStoreMinimumVF(), llvm::RISCVTargetMachine::getSubtargetImpl(), llvm::TargetLoweringBase::getTypeConversion(), llvm::TargetLoweringBase::getVectorTypeBreakdown(), llvm::X86TargetLowering::getVectorTypeBreakdownForCallingConv(), getVectorTypeBreakdownMVT(), getX86MaskVec(), handleMaskRegisterForCallingConv(), insertSubVector(), llvm::AArch64TargetLowering::isComplexDeinterleavingOperationSupported(), llvm::ARMTargetLowering::isComplexDeinterleavingOperationSupported(), isDispOrCDisp8(), llvm::ShuffleVectorInst::isInterleaveMask(), llvm::ARMTargetLowering::isLegalAddressingMode(), llvm::X86TTIImpl::isLegalAltInstr(), llvm::AArch64TargetLowering::isLegalInterleavedAccessType(), llvm::TargetTransformInfoImplBase::isLegalNTLoad(), llvm::X86TTIImpl::isLegalNTStore(), llvm::ARMTargetLowering::isLegalT2ScaledAddressingMode(), llvm::PPC::isSplatShuffleMask(), llvm::ShuffleVectorInst::isTransposeMask(), isTypeLegalForLookupTable(), llvm::RISCVVType::isValidLMUL(), llvm::HexagonInstrInfo::isValidOffset(), llvm::RISCVVType::isValidSEW(), llvm::AMDGPULegalizerInfo::legalizeSBufferLoad(), lowerBuildVectorOfConstants(), LowerCONCAT_VECTORS_i1(), LowerCONCAT_VECTORSvXi1(), llvm::HexagonTargetLowering::LowerConstantPool(), llvm::LegalizerHelper::lowerEXT(), llvm::LegalizerHelper::lowerFunnelShiftAsShifts(), llvm::LegalizerHelper::lowerFunnelShiftWithInverse(), lowerGetVectorLength(), llvm::LegalizerHelper::lowerLoad(), llvm::RISCVTargetLowering::LowerOperation(), llvm::LegalizerHelper::lowerStore(), llvm::LegalizerHelper::lowerTRUNC(), LowerTruncateVecPack(), matchAddReduction(), llvm::CombinerHelper::matchCombineLoadWithAndMask(), matchPMADDWD(), matchPMADDWD_2(), llvm::CombinerHelper::matchSextInRegOfLoad(), llvm::rdf::NodeAllocator::NodeAllocator(), llvm::LegalityPredicates::numElementsNotPow2(), PerformSplittingToWideningLoad(), PerformTruncatingStoreCombine(), llvm::LoopVectorizationPlanner::plan(), llvm::LoopVectorizationPlanner::planInVPlanNativePath(), llvm::slpvectorizer::BoUpSLP::VLOperands::reorder(), llvm::LegalityPredicates::scalarOrEltSizeNotPow2(), llvm::LoongArchDAGToDAGISel::selectShiftMask(), llvm::RISCVDAGToDAGISel::selectShiftMask(), llvm::HexagonDAGToDAGISel::SelectVAlignAddr(), llvm::object::coff_tls_directory< IntTy >::setAlignment(), llvm::KnownBits::shl(), shouldWidenLoad(), llvm::InstCombinerImpl::SimplifyAnyMemSet(), llvm::TargetLowering::SimplifyDemandedBits(), simplifyNeonVld1(), truncateVectorWithNARROW(), truncateVectorWithPACK(), upgradeX86ALIGNIntrinsics(), llvm::VFRange::VFRange(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitLShr().

◆ isPowerOf2_64()

constexpr bool llvm::isPowerOf2_64 ( uint64_t  Value)
inlineconstexpr

Return true if the argument is a power of two > 0 (64 bit edition.)

Definition at line 269 of file MathExtras.h.

References has_single_bit().

Referenced by llvm::Align::Align(), llvm::jitlink::InProcessMemoryManager::allocate(), CheckTy0Ty1MemSizeAlign(), combine_CC(), combineMul(), combineMulSpecial(), computeKnownBitsFromContext(), createVariablePermute(), CTLog2(), llvm::PPCTargetLowering::decomposeMulByConstant(), expandMul(), llvm::FastISel::fastEmit_ri_(), FindSingleBitChange(), foldLoadsRecursive(), generateInstSeqImpl(), getNewAlignmentDiff(), getOptimalRepmovsType(), llvm::PPCFrameLowering::inlineStackProbe(), llvm::yaml::ScalarTraits< Align >::input(), llvm::yaml::ScalarTraits< MaybeAlign >::input(), llvm::AArch64TargetLowering::isLegalAddressingMode(), llvm::AArch64TTIImpl::isLegalNTStoreLoad(), isPow2Splat(), llvm::APInt::isPowerOf2(), isUnalignedMemmoryAccess(), llvm::MipsLegalizerInfo::legalizeCustom(), LowerAndToBT(), LowerAndToBTST(), llvm::PPCTargetLowering::LowerAsmOperandForConstraint(), lowerBuildVectorOfConstants(), LowerCONCAT_VECTORSvXi1(), llvm::RISCVTargetLowering::LowerOperation(), LowerSaturatingConditional(), matchRotateSub(), llvm::MaybeAlign::MaybeAlign(), llvm::MipsLegalizerInfo::MipsLegalizerInfo(), llvm::RISCVInstrInfo::mulImm(), llvm::SIInstrInfo::optimizeCompareInstr(), llvm::AArch64InstrInfo::optimizeCondBranch(), llvm::RISCVTargetLowering::PerformDAGCombine(), llvm::MipsAsmPrinter::PrintAsmOperand(), llvm::AMDGPUInstPrinter::printSwizzle(), llvm::FastISel::selectBinaryOp(), llvm::jitlink::Block::setAlignment(), SimplifyValuePattern(), translateSetCCForBranch(), and llvm::InstCombinerImpl::visitCallInst().

◆ isPrefixedHexStyle()

bool llvm::isPrefixedHexStyle ( HexPrintStyle  S)

◆ isPreISelGenericFloatingPointOpcode()

bool llvm::isPreISelGenericFloatingPointOpcode ( unsigned  Opc)

Returns whether opcode Opc is a pre-isel generic floating-point opcode, having only floating-point operands.

Definition at line 1669 of file Utils.cpp.

Referenced by llvm::AArch64RegisterBankInfo::getInstrMapping(), llvm::RISCVRegisterBankInfo::getInstrMapping(), isFloatingPointOpcodeDef(), and isFloatingPointOpcodeUse().

◆ isPreISelGenericOpcode()

bool llvm::isPreISelGenericOpcode ( unsigned  Opcode)
inline

◆ isPreISelGenericOptimizationHint()

bool llvm::isPreISelGenericOptimizationHint ( unsigned  Opcode)
inline
Returns
true if Opcode is an optimization hint opcode which is not supposed to appear after ISel.

Definition at line 42 of file TargetOpcodes.h.

Referenced by llvm::RegBankSelect::assignInstr(), getDefSrcRegIgnoringCopies(), and llvm::InstructionSelect::runOnMachineFunction().

◆ isPresplitCoroSuspendExitEdge()

bool llvm::isPresplitCoroSuspendExitEdge ( const BasicBlock Src,
const BasicBlock Dest 
)

Definition at line 2224 of file BasicBlockUtils.cpp.

References assert(), llvm::BasicBlock::getParent(), and Intr.

◆ isProcessableCondBI()

static bool llvm::isProcessableCondBI ( const ScalarEvolution SE,
const BranchInst BI 
)
static

◆ isProfitableToTransform()

static bool llvm::isProfitableToTransform ( const Loop L,
const BranchInst BI 
)
static

◆ isPTrueOpcode()

static bool llvm::isPTrueOpcode ( unsigned  Opc)
inlinestatic

Definition at line 693 of file AArch64InstrInfo.h.

◆ isPushOpcode()

static bool llvm::isPushOpcode ( int  Opc)
inlinestatic

Definition at line 742 of file ARMBaseInstrInfo.h.

Referenced by tryFoldSPUpdateIntoPushPop().

◆ isRawBitcode()

bool llvm::isRawBitcode ( const unsigned char BufPtr,
const unsigned char BufEnd 
)
inline

isRawBitcode - Return true if the given bytes are the magic bytes for raw LLVM IR bitcode (without a wrapper).

Definition at line 252 of file BitcodeReader.h.

Referenced by isBitcode().

◆ isReachedBefore()

bool llvm::isReachedBefore ( const Instruction I0,
const Instruction I1,
const DominatorTree DT,
const PostDominatorTree PDT 
)

◆ isReadOnlyData()

static bool llvm::isReadOnlyData ( const SectionRef  Section)
static

◆ isReallocLikeFn()

bool llvm::isReallocLikeFn ( const Function F)

Tests if a function is a call or invoke to a library function that reallocates memory (e.g., realloc).

Tests if a functions is a call or invoke to a library function that reallocates memory (e.g., realloc).

Definition at line 332 of file MemoryBuiltins.cpp.

References checkFnAllocKind(), and F.

Referenced by inferNonMandatoryLibFuncAttrs().

◆ isRefSet()

bool llvm::isRefSet ( const ModRefInfo  MRI)
inline

◆ isReleaseOrStronger()

bool llvm::isReleaseOrStronger ( AtomicOrdering  AO)
inline

◆ isRemovableAlloc()

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

Ex: If our allocation routine has a counter for the number of objects allocated, and the program prints it on exit, can the value change due to optimization? Answer is highly language dependent. Note: Removable really does mean removable; it does not mean observable. A language (e.g. C++) can allow removing allocations without allowing insertion or speculative execution of allocation routines.

Definition at line 342 of file MemoryBuiltins.cpp.

References isAllocLikeFn().

Referenced by tryToOptimizeStoreOfAllocationToGlobal(), llvm::InstCombinerImpl::visitAllocSite(), and wouldInstructionBeTriviallyDead().

◆ isRequiredForExecution()

static bool llvm::isRequiredForExecution ( const SectionRef  Section)
static

◆ isRMOpcode()

static bool llvm::isRMOpcode ( unsigned  Opcode)
inlinestatic

◆ isRRMOpcode()

static bool llvm::isRRMOpcode ( unsigned  Opcode)
inlinestatic

Definition at line 170 of file LanaiInstrInfo.h.

Referenced by PostOperandDecodeAdjust().

◆ isRunOfOnes()

static bool llvm::isRunOfOnes ( unsigned  Val,
unsigned MB,
unsigned ME 
)
inlinestatic

Returns true iff Val consists of one contiguous run of 1s with any number of 0s on either side.

The 1s are allowed to wrap from LSB to MSB, so 0x000FFF0, 0x0000FFFF, and 0xFF0000FF are all runs. 0x0F0F0000 is not, since all 1s are not contiguous.

Definition at line 76 of file PPCMCTargetDesc.h.

References countl_zero(), and isShiftedMask_32().

Referenced by llvm::PPCInstrInfo::combineRLWINM().

◆ isRunOfOnes64()

static bool llvm::isRunOfOnes64 ( uint64_t  Val,
unsigned MB,
unsigned ME 
)
inlinestatic

Definition at line 100 of file PPCMCTargetDesc.h.

References countl_zero(), and isShiftedMask_64().

◆ isSafeToDestroyConstant()

bool llvm::isSafeToDestroyConstant ( const Constant C)

It is safe to destroy a constant iff it is only used by constants itself.

Note that constants cannot be cyclic, so this test is pretty easy to implement recursively.

Note that while constants cannot be cyclic, they can be tree-like, so we should keep a visited set to avoid exponential runtime.

Definition at line 43 of file GlobalStatus.cpp.

References llvm::CallingConv::C, llvm::SmallVectorBase< Size_T >::empty(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::SmallVectorImpl< T >::pop_back_val(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by analyzeGlobalAux(), collectSRATypes(), eliminateAvailableExternally(), llvm::GlobalDCEPass::run(), and SRAGlobal().

◆ isSafeToLoadUnconditionally() [1/2]

bool llvm::isSafeToLoadUnconditionally ( Value V,
Align  Alignment,
APInt Size,
const DataLayout DL,
Instruction ScanFrom = nullptr,
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.

Check if executing a load of this pointer value cannot trap.

If DT and ScanFrom are specified this method performs context-sensitive analysis and returns true if it is safe to load immediately before ScanFrom.

If it is not obviously safe to load from the specified pointer, we do a quick local scan of the basic block containing ScanFrom, to determine if the address is already accessed.

If DT and ScanFrom are specified this method performs context-sensitive analysis and returns true if it is safe to load immediately before ScanFrom.

If it is not obviously safe to load from the specified pointer, we do a quick local scan of the basic block containing ScanFrom, to determine if the address is already accessed.

This uses the pointee type to determine how many bytes need to be safe to load from the pointer.

Definition at line 352 of file Loads.cpp.

References AreEquivalentAddressValues(), llvm::BasicBlock::begin(), DL, llvm::TypeSize::getFixed(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Instruction::getParent(), isDereferenceableAndAlignedPointer(), Size, and llvm::Value::stripPointerCasts().

Referenced by canMoveAboveCall(), isSafeLoadOfSelectToSpeculate(), isSafePHIToSpeculate(), isSafeToLoadUnconditionally(), and llvm::InstCombinerImpl::visitLoadInst().

◆ isSafeToLoadUnconditionally() [2/2]

bool llvm::isSafeToLoadUnconditionally ( Value V,
Type Ty,
Align  Alignment,
const DataLayout DL,
Instruction ScanFrom = nullptr,
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.

If DT and ScanFrom are specified this method performs context-sensitive analysis and returns true if it is safe to load immediately before ScanFrom.

If it is not obviously safe to load from the specified pointer, we do a quick local scan of the basic block containing ScanFrom, to determine if the address is already accessed.

Definition at line 429 of file Loads.cpp.

References DL, llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), isSafeToLoadUnconditionally(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable(), and Size.

◆ isSafeToMoveBefore() [1/2]

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

Definition at line 412 of file CodeMoverUtils.cpp.

References all_of(), llvm::BasicBlock::getTerminator(), I, and isSafeToMoveBefore().

◆ isSafeToMoveBefore() [2/2]

bool llvm::isSafeToMoveBefore ( Instruction I,
Instruction InsertPoint,
DominatorTree DT,
const PostDominatorTree PDT = nullptr,
DependenceInfo DI = nullptr,
bool  CheckForEntireBlock = false 
)

◆ isSafeToSpeculativelyExecute() [1/2]

bool llvm::isSafeToSpeculativelyExecute ( const Instruction I,
BasicBlock::iterator  CtxI,
AssumptionCache AC = nullptr,
const DominatorTree DT = nullptr,
const TargetLibraryInfo TLI = nullptr 
)
inline

Definition at line 794 of file ValueTracking.h.

References I, and isSafeToSpeculativelyExecute().

◆ isSafeToSpeculativelyExecute() [2/2]

bool llvm::isSafeToSpeculativelyExecute ( const Instruction I,
const Instruction CtxI = nullptr,
AssumptionCache AC = nullptr,
const DominatorTree DT = nullptr,
const TargetLibraryInfo TLI = nullptr 
)

Return true if the instruction does not have any effects besides calculating the result and does not have undefined behavior.

This method never returns true for an instruction that returns true for mayHaveSideEffects; however, this method also does some other checks in addition. It checks for undefined behavior, like dividing by zero or loading from an invalid pointer (but not for undefined results, like a shift with a shift amount larger than the width of the result). It checks for malloc and alloca because speculatively executing them might cause a memory leak. It also returns false for instructions related to control flow, specifically terminators and PHI nodes.

If the CtxI is specified this method performs context-sensitive analysis and returns true if it is safe to execute the instruction immediately before the CtxI.

If the CtxI is NOT specified this method only looks at the instruction itself and its operands, so if this method returns true, it is safe to move the instruction as long as the correct dominance relationships for the operands and users hold.

This method can return true for instructions that read memory; for such instructions, moving them may change the resulting value.

Definition at line 6524 of file ValueTracking.cpp.

References llvm::Instruction::getOpcode(), and isSafeToSpeculativelyExecuteWithOpcode().

Referenced by llvm::IVUsers::AddUsersIfInteresting(), checkOuterLoopInsts(), checkSafeInstruction(), computeSpeculationCost(), dominatesMergePoint(), FoldBranchToCommonDest(), llvm::InstCombinerImpl::foldVectorBinop(), llvm::LoopVectorizationCostModel::getDivRemSpeculationCost(), llvm::LazyValueInfoImpl::getValueAtUse(), isHoistable(), isInTailCallPosition(), llvm::LoopVectorizationCostModel::isPredicatedInst(), isSafeToExecuteUnconditionally(), isSafeToHoistInstr(), isSafeToMoveBefore(), isSafeToSpeculativelyExecute(), llvm::Loop::makeLoopInvariant(), mayHaveNonDefUseDependency(), shouldSpeculateInstrs(), llvm::InstCombinerImpl::simplifyBinOpSplats(), llvm::JumpThreadingPass::simplifyPartiallyRedundantLoad(), SinkCommonCodeFromPredecessors(), sinkSelectOperand(), and llvm::InstCombinerImpl::visitCallInst().

◆ isSafeToSpeculativelyExecuteWithOpcode()

bool llvm::isSafeToSpeculativelyExecuteWithOpcode ( unsigned  Opcode,
const Instruction Inst,
const Instruction CtxI = nullptr,
AssumptionCache AC = nullptr,
const DominatorTree DT = nullptr,
const TargetLibraryInfo TLI = nullptr 
)

This returns the same result as isSafeToSpeculativelyExecute if Opcode is the actual opcode of Inst.

If the provided and actual opcode differ, the function (virtually) overrides the opcode of Inst with the provided Opcode. There are come constraints in this case:

  • If Opcode has a fixed number of operands (eg, as binary operators do), then Inst has to have at least as many leading operands. The function will ignore all trailing operands beyond that number.
  • If Opcode allows for an arbitrary number of operands (eg, as CallInsts do), then all operands are considered.
  • The virtual instruction has to satisfy all typing rules of the provided Opcode.
  • This function is pessimistic in the following sense: If one actually materialized the virtual instruction, then isSafeToSpeculativelyExecute may say that the materialized instruction is speculatable whereas this function may have said that the instruction wouldn't be speculatable. This behavior is a shortcoming in the current implementation and not intentional.

Definition at line 6533 of file ValueTracking.cpp.

References assert(), DL, llvm::LoadInst::getAlign(), llvm::Module::getDataLayout(), llvm::Instruction::getModule(), llvm::User::getNumOperands(), llvm::Instruction::getOpcode(), llvm::User::getOperand(), llvm::LoadInst::getPointerOperand(), llvm::Value::getType(), llvm::APInt::isAllOnes(), llvm::Instruction::isBinaryOp(), isDereferenceableAndAlignedPointer(), llvm::APInt::isMinSignedValue(), llvm::Instruction::isUnaryOp(), llvm::PatternMatch::m_APInt(), llvm::PatternMatch::match(), and mustSuppressSpeculation().

Referenced by isSafeToSpeculativelyExecute(), and maySpeculateLanes().

◆ isSafeToUnrollAndJam()

bool llvm::isSafeToUnrollAndJam ( Loop L,
ScalarEvolution SE,
DominatorTree DT,
DependenceInfo DI,
LoopInfo LI 
)

◆ isSampler()

bool llvm::isSampler ( const Value val)

◆ isScale()

static bool llvm::isScale ( const MachineOperand MO)
inlinestatic

Definition at line 140 of file X86InstrInfo.h.

References llvm::MachineOperand::getImm(), and llvm::MachineOperand::isImm().

Referenced by isLeaMem().

◆ isScatter()

bool llvm::isScatter ( IntrinsicInst IntInst)
inline

Definition at line 959 of file ARMBaseInstrInfo.h.

References llvm::IntrinsicInst::getIntrinsicID().

Referenced by isGatherScatter().

◆ isScopedEHPersonality()

bool llvm::isScopedEHPersonality ( EHPersonality  Pers)
inline

Returns true if this personality uses scope-style EH IR instructions: catchswitch, catchpad/ret, and cleanuppad/ret.

Definition at line 79 of file EHPersonalities.h.

References CoreCLR, llvm_unreachable, MSVC_CXX, MSVC_TableSEH, MSVC_X86SEH, and Wasm_CXX.

Referenced by llvm::LoopSafetyInfo::computeBlockColors(), InlineFunction(), instrumentOneFunc(), isUsingScopeBasedEH(), and llvm::EscapeEnumerator::Next().

◆ isSEHInstruction()

static bool llvm::isSEHInstruction ( const MachineInstr MI)
inlinestatic

Definition at line 780 of file ARMBaseInstrInfo.h.

References MI.

Referenced by insertSEHRange(), and llvm::ARMBaseInstrInfo::isSchedulingBoundary().

◆ isSentinelProbe()

static bool llvm::isSentinelProbe ( uint32_t  Flags)
inlinestatic

◆ isShiftedInt()

template<unsigned N, unsigned S>
constexpr bool llvm::isShiftedInt ( int64_t  x)
inlineconstexpr

Checks if a signed integer is an N bit number shifted left by S.

Definition at line 166 of file MathExtras.h.

References N.

◆ isShiftedMask_32() [1/2]

constexpr bool llvm::isShiftedMask_32 ( uint32_t  Value)
inlineconstexpr

Return true if the argument contains a non-empty sequence of ones with the remainder zero (32 bit version.) Ex.

isShiftedMask_32(0x0000FF00U) == true.

Definition at line 252 of file MathExtras.h.

References isMask_32().

Referenced by CombineANDShift(), llvm::PPCTTIImpl::getIntImmCostInst(), llvm::ARM::isBitFieldInvertedMask(), isMImm32Val(), isRunOfOnes(), isShiftedMask(), and isShiftedMask_32().

◆ isShiftedMask_32() [2/2]

bool llvm::isShiftedMask_32 ( uint32_t  Value,
unsigned MaskIdx,
unsigned MaskLen 
)
inline

Return true if the argument contains a non-empty sequence of ones with the remainder zero (32 bit version.) Ex.

isShiftedMask_32(0x0000FF00U) == true. 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.

Definition at line 278 of file MathExtras.h.

References countr_zero(), isShiftedMask_32(), and popcount().

◆ isShiftedMask_64() [1/2]

constexpr bool llvm::isShiftedMask_64 ( uint64_t  Value)
inlineconstexpr

◆ isShiftedMask_64() [2/2]

bool llvm::isShiftedMask_64 ( uint64_t  Value,
unsigned MaskIdx,
unsigned MaskLen 
)
inline

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.

Definition at line 291 of file MathExtras.h.

References countr_zero(), isShiftedMask_64(), and popcount().

◆ isShiftedUInt()

template<unsigned N, unsigned S>
constexpr bool llvm::isShiftedUInt ( uint64_t  x)
inlineconstexpr

Checks if a unsigned integer is an N bit number shifted left by S.

Definition at line 190 of file MathExtras.h.

References N.

◆ isSignBitCheck()

bool llvm::isSignBitCheck ( ICmpInst::Predicate  Pred,
const APInt RHS,
bool TrueIfSigned 
)

◆ isSpecialOpaqueType()

bool llvm::isSpecialOpaqueType ( const Type Ty)

Definition at line 351 of file SPIRVUtils.cpp.

References hasBuiltinTypePrefix().

Referenced by llvm::SPIRVGlobalRegistry::getOrCreateSPIRVType().

◆ isSpecialPass()

bool llvm::isSpecialPass ( StringRef  PassID,
const std::vector< StringRef > &  Specials 
)

◆ isSpeculationBarrierEndBBOpcode()

static bool llvm::isSpeculationBarrierEndBBOpcode ( int  Opc)
inlinestatic

Definition at line 729 of file ARMBaseInstrInfo.h.

Referenced by llvm::ARMBaseInstrInfo::analyzeBranch().

◆ isSplatValue()

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

If an index element is specified, either every element of the vector is poisoned or the element at that index is not poisoned and equal to every other non-poisoned element. This may be more powerful than the related getSplatValue() because it is not limited by finding a scalar source value to a splatted vector.

Definition at line 264 of file VectorUtils.cpp.

References all_equal(), assert(), llvm::CallingConv::C, Depth, isSplatValue(), llvm::PatternMatch::m_BinOp(), llvm::PatternMatch::m_Select(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), MaxAnalysisRecursionDepth, X, and Y.

Referenced by llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), instCombineSVELast(), isSplatValue(), simplifyUnaryIntrinsic(), and llvm::InstCombinerImpl::visitCallInst().

◆ isSplitFPArea1Register()

static bool llvm::isSplitFPArea1Register ( unsigned  Reg,
bool  SplitFramePushPop 
)
inlinestatic

◆ isSplitFPArea2Register()

static bool llvm::isSplitFPArea2Register ( unsigned  Reg,
bool  SplitFramePushPop 
)
inlinestatic

◆ isSPLSOpcode()

static bool llvm::isSPLSOpcode ( unsigned  Opcode)
inlinestatic

◆ isSpvIntrinsic()

bool llvm::isSpvIntrinsic ( const MachineInstr MI,
Intrinsic::ID  IntrinsicID 
)

◆ isStatepointDirectiveAttr()

bool llvm::isStatepointDirectiveAttr ( Attribute  Attr)

Return true if the Attr is an attribute that is a statepoint directive.

Definition at line 18 of file Statepoint.cpp.

References llvm::Attribute::hasAttribute().

Referenced by legalizeCallAttributes().

◆ IsStringMapEntry()

template<typename KeyMatcherT , typename ValueMatcherT >
detail::StringMapEntryMatcher< KeyMatcherT, ValueMatcherT > llvm::IsStringMapEntry ( KeyMatcherT  KM,
ValueMatcherT  VM 
)

Returns a gMock matcher that matches a StringMapEntry whose string key matches KeyMatcher, and whose value matches ValueMatcher.

Definition at line 122 of file StringMapEntry.h.

◆ isStrongerThan()

bool llvm::isStrongerThan ( AtomicOrdering  AO,
AtomicOrdering  Other 
)
inline

Returns true if ao is stronger than other as defined by the AtomicOrdering lattice, which is based on C++'s definition.

Definition at line 91 of file AtomicOrdering.h.

References lookup(), and Other.

Referenced by llvm::GIMatchTableExecutor::executeMatchTable(), getMergedAtomicOrdering(), llvm::AAResults::getModRefInfo(), llvm::MemoryDependenceResults::getSimplePointerDependencyFrom(), isStrongerThanMonotonic(), and isStrongerThanUnordered().

◆ isStrongerThanMonotonic()

bool llvm::isStrongerThanMonotonic ( AtomicOrdering  AO)
inline

◆ isStrongerThanUnordered()

bool llvm::isStrongerThanUnordered ( AtomicOrdering  AO)
inline

◆ isSubImmOpcode()

static bool llvm::isSubImmOpcode ( int  Opc)
inlinestatic

Definition at line 747 of file ARMBaseInstrInfo.h.

◆ isSurface()

bool llvm::isSurface ( const Value val)

Definition at line 155 of file NVPTXUtilities.cpp.

References assert(), and findOneNVVMAnnotation().

◆ isTargetSpecificOpcode()

bool llvm::isTargetSpecificOpcode ( unsigned  Opcode)
inline

Check whether the given Opcode is a target-specific opcode.

Definition at line 36 of file TargetOpcodes.h.

Referenced by llvm::RegBankSelect::assignRegisterBanks(), constrainOperandRegClass(), and llvm::SIInstrInfo::mayReadEXEC().

◆ isTexture()

bool llvm::isTexture ( const Value val)

Definition at line 144 of file NVPTXUtilities.cpp.

References assert(), and findOneNVVMAnnotation().

◆ isThumbFunc()

static bool llvm::isThumbFunc ( object::symbol_iterator  Symbol,
const object::ObjectFile Obj,
object::section_iterator  Section 
)
static

◆ isTLIScalarize()

static bool llvm::isTLIScalarize ( const TargetLibraryInfo TLI,
const CallInst CI 
)
static

Checks if a function is scalarizable according to the TLI, in the sense that it should be vectorized and then expanded in multiple scalar calls.

This is represented in the TLI via mappings that do not specify a vector name, as in the following example:

const VecDesc VecIntrinsics[] = { {"llvm.phx.abs.i32", "", 4} };

Definition at line 768 of file LoopVectorizationLegality.cpp.

References assert(), llvm::CallBase::getCalledFunction(), llvm::ElementCount::getFixed(), llvm::Value::getName(), llvm::ElementCount::getScalable(), llvm::TargetLibraryInfo::getWidestVF(), llvm::TargetLibraryInfo::isFunctionVectorizable(), llvm::details::FixedOrScalableQuantity< ElementCount, unsigned >::isKnownLE(), and llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isZero().

◆ isTLS()

static bool llvm::isTLS ( const SectionRef  Section)
static

◆ isTlsAddressCode()

static bool llvm::isTlsAddressCode ( uint8_t  DW_OP_Code)
static

Definition at line 400 of file DWARFLinker.cpp.

◆ isTriviallyDead()

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

Definition at line 220 of file Utils.cpp.

References MI, and MRI.

Referenced by llvm::Combiner::combineMachineInstrs(), eraseInstrs(), llvm::Legalizer::legalizeMachineFunction(), and llvm::InstructionSelect::runOnMachineFunction().

◆ isTriviallyVectorizable()

bool llvm::isTriviallyVectorizable ( Intrinsic::ID  ID)

Identify if the intrinsic is trivially vectorizable.

Return true if all of the intrinsic's arguments and return type are scalars for the scalar form of the intrinsic, and vectors for the vector form of the intrinsic (except operands that are marked as always being scalar by isVectorIntrinsicWithScalarOpAtArg).

This method returns true if the intrinsic's argument types are all scalars for the scalar form of the intrinsic and all vectors (or scalars handled by isVectorIntrinsicWithScalarOpAtArg) for the vector form of the intrinsic.

Definition at line 45 of file VectorUtils.cpp.

Referenced by generateKeySubkey(), getSameOpcode(), getVectorIntrinsicIDForCall(), and isTriviallyScalariable().

◆ isTypedPointerTy()

bool llvm::isTypedPointerTy ( const Type T)
inline

◆ isTypeTag()

static bool llvm::isTypeTag ( uint16_t  Tag)
static

Definition at line 109 of file DWARFLinker.cpp.

Referenced by updatePruning().

◆ isUInt()

template<unsigned N>
constexpr bool llvm::isUInt ( uint64_t  x)
inlineconstexpr

Checks if an unsigned integer fits into the given bit width.

Definition at line 174 of file MathExtras.h.

References N.

◆ isUIntN()

bool llvm::isUIntN ( unsigned  N,
uint64_t  x 
)
inline

◆ isUncondBranchOpcode() [1/2]

static bool llvm::isUncondBranchOpcode ( int  Opc)
inlinestatic

◆ isUncondBranchOpcode() [2/2]

static bool llvm::isUncondBranchOpcode ( int  Opc)
inlinestatic

Definition at line 584 of file ARMBaseInstrInfo.h.

◆ isUniformLoop()

static bool llvm::isUniformLoop ( Loop Lp,
Loop OuterLp 
)
static

◆ isUniformLoopNest()

static bool llvm::isUniformLoopNest ( Loop Lp,
Loop OuterLp 
)
static

Definition at line 382 of file LoopVectorizationLegality.cpp.

References isUniformLoop(), and isUniformLoopNest().

Referenced by isUniformLoopNest().

◆ isUntypedPointerTy()

bool llvm::isUntypedPointerTy ( const Type T)
inline

◆ isUsedOutsideBlock()

static bool llvm::isUsedOutsideBlock ( Value V)
static

Checks if the provided value does not require scheduling.

It does not require scheduling if this is not an instruction or it is an instruction that does not read/write memory and all users are phi nodes or instructions from the different blocks.

Definition at line 997 of file SLPVectorizer.cpp.

References all_of(), I, and UsesLimit.

Referenced by doesNotNeedToBeScheduled(), and doesNotNeedToSchedule().

◆ isUZPMask()

bool llvm::isUZPMask ( ArrayRef< int >  M,
EVT  VT,
unsigned WhichResult 
)
inline

◆ Isv2x16VT()

bool llvm::Isv2x16VT ( EVT  VT)

◆ isV8EligibleForIT()

template<typename InstrType >
bool llvm::isV8EligibleForIT ( const InstrType Instr)
inline

Definition at line 24 of file ARMFeatures.h.

References IsCPSRDead().

Referenced by llvm::ARMBaseInstrInfo::isPredicable().

◆ isValidAsAccessGroup()

bool llvm::isValidAsAccessGroup ( MDNode AccGroup)

Return whether an MDNode might represent an access group.

Access group metadata nodes have to be distinct and empty. Being always-empty ensures that it never needs to be changed (which – because MDNodes are designed immutable – would require creating a new MDNode). Note that this is not a sufficient condition: not every distinct and empty NDNode is representing an access group.

Definition at line 1122 of file LoopInfo.cpp.

Referenced by addToAccessGroupList(), intersectAccessGroups(), and llvm::Loop::isAnnotatedParallel().

◆ isValidAssumeForContext()

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

By default, ephemeral values of the assumption are treated as an invalid context, to prevent the assumption from being used to optimize away its argument. If the caller can ensure that this won't happen, it can call with AllowEphemerals set to true to get more valid assumptions.

Definition at line 480 of file ValueTracking.cpp.

References llvm::Instruction::comesBefore(), llvm::DominatorTree::dominates(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Instruction::getParent(), llvm::BasicBlock::getSinglePredecessor(), isEphemeralValueOf(), isGuaranteedToTransferExecutionToSuccessor(), and make_range().

Referenced by computeConstantRange(), computeKnownBitsFromContext(), computeKnownFPClassFromContext(), getKnowledgeValidInContext(), isDereferenceableAndAlignedPointer(), isKnownNonNullFromDominatingCondition(), isKnownNonZeroFromAssume(), llvm::AlignmentFromAssumptionsPass::processAssumption(), simplifyICmpWithDominatingAssume(), and llvm::InstCombinerImpl::visitCallInst().

◆ isValidAtomicOrdering()

template<typename Int >
bool llvm::isValidAtomicOrdering ( Int  I)
inline

Definition at line 75 of file AtomicOrdering.h.

References I, Int, NotAtomic, and SequentiallyConsistent.

Referenced by upgradeAMDGCNIntrinsicCall().

◆ isValidAtomicOrderingCABI()

template<typename Int >
bool llvm::isValidAtomicOrderingCABI ( Int  I)
inline

Definition at line 44 of file AtomicOrdering.h.

References I, Int, relaxed, and seq_cst.

◆ isValidCoprocessorNumber()

static bool llvm::isValidCoprocessorNumber ( unsigned  Num,
const FeatureBitset featureBits 
)
inlinestatic

isValidCoprocessorNumber - decide whether an explicit coprocessor number is legal in generic instructions like CDP.

The answer can vary with the subtarget.

Definition at line 760 of file ARMBaseInstrInfo.h.

Referenced by DecodeCoprocessor().

◆ isValidMCLOHType()

static bool llvm::isValidMCLOHType ( unsigned  Kind)
inlinestatic

◆ isVCTP()

static bool llvm::isVCTP ( const MachineInstr MI)
inlinestatic

Definition at line 58 of file MVETailPredUtils.h.

References MI.

Referenced by llvm::ARMBaseInstrInfo::analyzeLoopForPipelining().

◆ isVectorIntrinsicWithOverloadTypeAtArg()

bool llvm::isVectorIntrinsicWithOverloadTypeAtArg ( Intrinsic::ID  ID,
int  OpdIdx 
)

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.

Definition at line 124 of file VectorUtils.cpp.

References assert(), and llvm::Intrinsic::not_intrinsic.

Referenced by llvm::VPWidenCallRecipe::execute().

◆ isVectorIntrinsicWithScalarOpAtArg()

bool llvm::isVectorIntrinsicWithScalarOpAtArg ( Intrinsic::ID  ID,
unsigned  ScalarOpdIdx 
)

Identifies if the vector form of the intrinsic has a scalar operand.

Definition at line 105 of file VectorUtils.cpp.

Referenced by buildIntrinsicArgTypes(), llvm::VPWidenCallRecipe::execute(), and replaceWithCallToVeclib().

◆ isVPTOpcode()

static bool llvm::isVPTOpcode ( int  Opc)
inlinestatic

Definition at line 591 of file ARMBaseInstrInfo.h.

Referenced by recomputeVPTBlockMask().

◆ isVREVMask()

bool llvm::isVREVMask ( ArrayRef< int >  M,
EVT  VT,
unsigned  BlockSize 
)
inline

isVREVMask - Check if a vector shuffle corresponds to a VREV instruction with the specified blocksize.

(The order of the elements within each block of the vector is reversed.)

Definition at line 343 of file ARMTargetTransformInfo.h.

References assert(), BlockSize, and llvm::EVT::getScalarSizeInBits().

Referenced by llvm::ARMTTIImpl::getShuffleCost(), llvm::ARMTargetLowering::isShuffleMaskLegal(), and LowerVECTOR_SHUFFLE().

◆ isVVPBinaryOp()

bool llvm::isVVPBinaryOp ( unsigned  VVPOpcode)

Definition at line 146 of file VECustomDAG.cpp.

Referenced by getAVLPos(), getMaskPos(), and llvm::VETargetLowering::lowerToVVP().

◆ isVVPOrVEC()

bool llvm::isVVPOrVEC ( unsigned  Opcode)

◆ isVVPReductionOp()

bool llvm::isVVPReductionOp ( unsigned  Opcode)

Definition at line 156 of file VECustomDAG.cpp.

Referenced by getIdiomaticVectorType(), and llvm::VETargetLowering::lowerToVVP().

◆ isVVPUnaryOp()

bool llvm::isVVPUnaryOp ( unsigned  VVPOpcode)

Definition at line 136 of file VECustomDAG.cpp.

Referenced by llvm::VETargetLowering::lowerToVVP().

◆ isWhileLoopStart()

static bool llvm::isWhileLoopStart ( const MachineInstr MI)
inlinestatic

◆ isWidenableBranch()

bool llvm::isWidenableBranch ( const User U)

Returns true iff U is a widenable branch (that is, extractWidenableCondition returns widenable condition).

Definition at line 26 of file GuardUtils.cpp.

References parseWidenableBranch().

Referenced by FindWidenableTerminatorAboveLoop(), isGuardAsWidenableBranch(), makeGuardControlFlowExplicit(), parseWidenableGuard(), setWidenableBranchCond(), tryWidenCondBranchToCondBranch(), turnToExplicitForm(), and widenWidenableBranch().

◆ isWidenableCondition()

bool llvm::isWidenableCondition ( const Value V)

Returns true iff V has semantics of llvm.experimental.widenable.condition call.

Definition at line 22 of file GuardUtils.cpp.

References llvm::PatternMatch::match().

Referenced by extractWidenableCondition(), and parseWidenableGuard().

◆ isWritableObject()

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

Additionally, at the point Object is declared, stores can be introduced without data races. At later points, this is only the case if the pointer can not escape to a different thread.

If ExplicitlyDereferenceableOnly is set to true, this property only holds for the part of Object that is explicitly marked as dereferenceable, e.g. using the dereferenceable(N) attribute. It does not necessarily hold for parts that are only known to be dereferenceable due to the presence of loads.

Definition at line 919 of file AliasAnalysis.cpp.

References A, and isNoAliasCall().

Referenced by promoteLoopAccessesToScalars().

◆ isZeroInit()

static bool llvm::isZeroInit ( const SectionRef  Section)
static

◆ isZIPMask()

bool llvm::isZIPMask ( ArrayRef< int >  M,
EVT  VT,
unsigned WhichResult 
)
inline

◆ itaniumDemangle()

char * llvm::itaniumDemangle ( 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.

Otherwise, may return nullptr if mangled_name is not a valid mangling or is nullptr.

Definition at line 369 of file ItaniumDemangle.cpp.

References assert().

Referenced by llvm::GCOVFunction::getName(), getOclOrSpirvBuiltinDemangledName(), and nonMicrosoftDemangle().

◆ IterativeBFIMaxIterationsPerBlock()

cl::opt< unsigned > llvm::IterativeBFIMaxIterationsPerBlock ( "iterative-bfi-max-iterations-per-block"  ,
cl::init(1000)  ,
cl::Hidden  ,
cl::desc("Iterative inference: maximum number of update iterations " "per block")   
)

◆ IterativeBFIPrecision()

cl::opt< double > llvm::IterativeBFIPrecision ( "iterative-bfi-precision"  ,
cl::init(1e-12)  ,
cl::Hidden  ,
cl::desc("Iterative inference: delta convergence precision; smaller values " "typically lead to better results at the cost of worsen runtime")   
)

◆ iterator_range()

template<typename Container >
llvm::iterator_range ( Container &&  ) -> iterator_range< llvm::detail::IterOfRange< Container > >

◆ jit_noop()

static int llvm::jit_noop ( )
static

◆ jitLinkForORC() [1/2]

void llvm::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 
)

◆ jitLinkForORC() [2/2]

void llvm::jitLinkForORC ( object::OwningBinary< object::ObjectFile O,
RuntimeDyld::MemoryManager MemMgr,
JITSymbolResolver Resolver,
bool  ProcessAllSections,
unique_function< Error(const object::ObjectFile &Obj, RuntimeDyld::LoadedObjectInfo &LoadedObj, std::map< StringRef, JITEvaluatedSymbol >)>  OnLoaded,
unique_function< void(object::OwningBinary< object::ObjectFile >, std::unique_ptr< RuntimeDyld::LoadedObjectInfo >, Error)>  OnEmitted 
)

◆ jitTargetAddressToFunction()

template<typename T >
T llvm::jitTargetAddressToFunction ( JITTargetAddress  Addr)

Convert a JITTargetAddress to a callable function pointer.

Casts the given address to a callable function pointer. This operation will perform pointer signing for platforms that require it (e.g. arm64e).

Definition at line 61 of file JITSymbol.h.

References Addr, and value.

◆ jitTargetAddressToPointer()

template<typename T >
T llvm::jitTargetAddressToPointer ( JITTargetAddress  Addr)

Convert a JITTargetAddress to a pointer.

Note: This is a raw cast of the address bit pattern to the given pointer type. When casting to a function pointer in order to execute JIT'd code jitTargetAddressToFunction should be preferred, as it will also perform pointer signing on targets that require it.

Definition at line 50 of file JITSymbol.h.

References Addr, and assert().

◆ joinErrors()

Error llvm::joinErrors ( Error  E1,
Error  E2 
)
inline

Concatenate errors.

The resulting Error is unchecked, and contains the ErrorInfo(s), if any, contained in E1, followed by the ErrorInfo(s), if any, contained in E2.

Definition at line 431 of file Error.h.

Referenced by llvm::jitlink::InProcessMemoryManager::IPInFlightAlloc::abandon(), llvm::orc::EPCIndirectionUtils::cleanup(), llvm::orc::JITDylib::clear(), llvm::xray::PipelineConsumer::consume(), llvm::orc::SimpleRemoteEPC::Create(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::deallocate(), llvm::jitlink::InProcessMemoryManager::deallocate(), decodeBBAddrMapImpl(), llvm::FileCheckPatternContext::defineCmdlineVariables(), llvm::orc::InProcessMemoryMapper::deinitialize(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::deinitialize(), llvm::dwarf::CIE::dump(), llvm::dwarf::FDE::dump(), llvm::DWARFYAML::emitDebugSections(), llvm::orc::ExecutionSession::endSession(), llvm::BinaryOperation::eval(), llvm::DWARFUnitHeader::extract(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::finalize(), llvm::DWARFUnit::findLoclistFromOffset(), llvm::BinaryOperation::getImplicitFormat(), llvm::object::ELFFile< ELFT >::getSectionAndRelocations(), llvm::orc::SimpleRemoteEPC::handleDisconnect(), llvm::orc::SimpleRemoteEPCServer::handleDisconnect(), llvm::pdb::NamedStreamMap::load(), llvm::orc::Platform::lookupInitSymbols(), llvm::orc::Platform::lookupInitSymbolsAsync(), llvm::Pattern::match(), llvm::orc::ObjectLinkingLayerJITLinkContext::notifyFailed(), llvm::orc::EHFrameRegistrationPlugin::notifyRemovingResources(), parallelForEachError(), llvm::DWARFDebugLine::Prologue::parse(), llvm::xray::FileBasedRecordProducer::produce(), readGSIHashBuckets(), readGSIHashRecords(), llvm::pdb::readSparseBitVector(), llvm::orc::InProcessMemoryMapper::release(), llvm::orc::SharedMemoryMapper::release(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::release(), llvm::pdb::InfoStream::reload(), llvm::pdb::PublicsStream::reload(), llvm::orc::ExecutionSession::removeJITDylibs(), llvm::objcopy::coff::Object::removeSymbols(), llvm::orc::shared::runDeallocActions(), llvm::orc::shared::runFinalizeActions(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::shutdown(), writeArchive(), llvm::pdb::writeSparseBitVector(), writeToOutput(), and llvm::object::writeUniversalBinary().

◆ left_justify()

FormattedString llvm::left_justify ( StringRef  Str,
unsigned  Width 
)
inline

◆ lexMIToken()

StringRef llvm::lexMIToken ( StringRef  Source,
MIToken Token,
function_ref< void(StringRef::iterator, const Twine &)>  ErrorCallback 
)

Consume a single machine instruction token in the given source and return the remaining source string.

Referenced by llvm::MIRFormatter::parseIRValue().

◆ libDriverMain()

int llvm::libDriverMain ( ArrayRef< const char * >  ARgs)

◆ linkAllBuiltinGCs()

void llvm::linkAllBuiltinGCs ( )

FIXME: Collector instances are not useful on their own.

These no longer serve any purpose except to link in the plugins. Ensure the definition of the builtin GCs gets linked in

Definition at line 132 of file BuiltinGCs.cpp.

Referenced by getGCStrategy().

◆ linkErlangGCPrinter()

void llvm::linkErlangGCPrinter ( )

Creates an erlang-compatible metadata printer.

Definition at line 117 of file ErlangGCPrinter.cpp.

◆ linkOcamlGCPrinter()

void llvm::linkOcamlGCPrinter ( )

Creates an ocaml-compatible metadata printer.

Definition at line 49 of file OcamlGCPrinter.cpp.

◆ lintFunction()

void llvm::lintFunction ( const Function F)

lintFunction - Check a function for errors, printing messages on stderr.

Definition at line 733 of file Lint.cpp.

References assert(), F, FAM, llvm::AAManager::registerFunctionAnalysis(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::registerPass(), and llvm::LintPass::run().

Referenced by lintModule().

◆ lintModule()

void llvm::lintModule ( const Module M)

Lint a module.

lintModule - Check a module for errors, printing messages on stderr.

This should only be used for debugging, because it plays games with PassManagers and stuff.

Definition at line 753 of file Lint.cpp.

References F, and lintFunction().

◆ LLVM_DECLARE_ENUM_AS_BITMASK() [1/2]

llvm::LLVM_DECLARE_ENUM_AS_BITMASK ( FPClassTest  ,
fcPosInf   
)

◆ LLVM_DECLARE_ENUM_AS_BITMASK() [2/2]

llvm::LLVM_DECLARE_ENUM_AS_BITMASK ( TailFoldingOpts  ,
(long) TailFoldingOpts::Reverse   
)

◆ LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE()

llvm::LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE ( )

◆ llvm_is_multithreaded()

constexpr bool llvm::llvm_is_multithreaded ( )
constexpr

◆ llvm_shutdown()

void llvm::llvm_shutdown ( )

llvm_shutdown - Deallocate and destroy all ManagedStatic variables.

IMPORTANT: it's only safe to call llvm_shutdown() in single thread, without any other threads executing LLVM APIs. llvm_shutdown() should be the last use of LLVM APIs.

Definition at line 75 of file ManagedStatic.cpp.

References llvm::ManagedStaticBase::destroy(), and StaticList.

Referenced by LLVMShutdown(), llvm::InitLLVM::~InitLLVM(), and llvm::llvm_shutdown_obj::~llvm_shutdown_obj().

◆ llvm_unreachable_internal()

void llvm::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.

Use the llvm_unreachable macro (that adds location info), instead of calling this function directly.

Definition at line 202 of file ErrorHandling.cpp.

References dbgs(), and file().

Referenced by rewriteMemOpOfSelect().

◆ LLVMInitializeAVRTarget()

LLVM_EXTERNAL_VISIBILITY void llvm::LLVMInitializeAVRTarget ( )

◆ LO10()

static unsigned llvm::LO10 ( int64_t  imm)
inlinestatic

Definition at line 177 of file Sparc.h.

Referenced by replaceFI().

◆ Lo_32()

constexpr uint32_t llvm::Lo_32 ( uint64_t  Value)
inlineconstexpr

◆ LoadIntFromMemory()

void llvm::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.

Definition at line 3046 of file APInt.cpp.

References assert(), and llvm::sys::IsLittleEndianHost.

Referenced by llvm::ExecutionEngine::LoadValueFromMemory().

◆ LoadOpt()

static cl::opt< PluginLoader, false, cl::parser< std::string > > llvm::LoadOpt ( "load"  ,
cl::value_desc("pluginfilename")  ,
cl::desc("Load the specified plugin")   
)
static

◆ localCache()

Expected< FileCache > llvm::localCache ( 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.

This function does not immediately create the cache directory if it does not yet exist; this is done lazily the first time a file is added. The cache name appears in error messages for errors during caching. The temporary file prefix is used in the temporary file naming scheme used when writing files atomically.

Definition at line 29 of file Caching.cpp.

References llvm::sys::path::append(), llvm::sys::fs::closeFile(), consumeError(), llvm::sys::fs::convertFDToNativeFile(), llvm::sys::fs::TempFile::create(), llvm::sys::fs::create_directories(), createStringError(), llvm::sys::fs::TempFile::discard(), E, errorCodeToError(), errorToErrorCode(), llvm::sys::fs::TempFile::FD, llvm::ErrorOr< T >::getError(), llvm::MemoryBuffer::getMemBufferCopy(), llvm::MemoryBuffer::getOpenFile(), handleErrors(), llvm::sys::fs::TempFile::keep(), llvm::sys::fs::OF_UpdateAtime, llvm::sys::fs::openNativeFileForRead(), OS, llvm::sys::fs::owner_read, llvm::sys::fs::owner_write, report_fatal_error(), llvm::Error::success(), llvm::Expected< T >::takeError(), llvm::sys::fs::TempFile::TmpName, llvm::dwarf::toString(), and llvm::Twine::toVector().

Referenced by getCachedOrDownloadArtifact().

◆ Log2()

unsigned llvm::Log2 ( Align  A)
inline

Returns the log2 of the alignment.

Definition at line 208 of file Alignment.h.

Referenced by llvm::AMDGPURegisterBankInfo::applyMappingDynStackAlloc(), computeKnownBits(), llvm::SelectionDAG::computeKnownBits(), llvm::GISelKnownBits::computeKnownBitsForAlignment(), llvm::TargetLowering::computeKnownBitsForFrameIndex(), llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), ConstantFoldBinaryInstruction(), emitAligningInstructions(), llvm::MCELFStreamer::emitBundleAlignMode(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::CSKYFrameLowering::emitPrologue(), llvm::LoongArchFrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), llvm::RISCVFrameLowering::emitPrologue(), llvm::BPFSelectionDAGInfo::EmitTargetCodeForMemcpy(), llvm::MCSymbolMachO::getEncodedFlags(), llvm::HexagonTTIImpl::getMemoryOpCost(), INITIALIZE_PASS(), llvm::PPCFrameLowering::inlineStackProbe(), llvm::APInt::isAligned(), llvm::HexagonTargetLowering::isLegalAddressingMode(), llvm::AMDGPULegalizerInfo::legalizeFExp2(), llvm::AMDGPULegalizerInfo::legalizeFlog2(), llvm::AMDGPULegalizerInfo::legalizeFSQRTF16(), llvm::AMDGPUTargetLowering::LowerFLOG2(), llvm::RISCVTargetLowering::LowerOperation(), llvm::LegalizerHelper::lowerVAArg(), mayCrossBoundary(), performANDCombine(), llvm::BasicBlockInfo::postKnownBits(), rewriteP2Align(), llvm::LoongArchDAGToDAGISel::selectVSplatUimmInvPow2(), llvm::LoongArchDAGToDAGISel::selectVSplatUimmPow2(), llvm::AllocaInst::setAlignment(), llvm::LoadInst::setAlignment(), llvm::StoreInst::setAlignment(), llvm::AtomicCmpXchgInst::setAlignment(), llvm::AtomicRMWInst::setAlignment(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), UnknownPadding(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFMul(), and llvm::MachObjectWriter::writeSection().

◆ log2()

static double llvm::log2 ( double  V)
static

Definition at line 886 of file AMDGPULibCalls.cpp.

References llvm::numbers::ln2.

Referenced by constantFoldFpUnary(), and getHeatColor().

◆ Log2_32()

unsigned llvm::Log2_32 ( uint32_t  Value)
inline

Return the floor log base 2 of the specified value, -1 if the value is zero.

(32 bit edition.) Ex. Log2_32(32) == 5, Log2_32(1) == 0, Log2_32(0) == -1, Log2_32(6) == 2

Definition at line 313 of file MathExtras.h.

References countl_zero().

Referenced by llvm::LegalizerHelper::bitcastExtractVectorElt(), llvm::LegalizerHelper::bitcastInsertVectorElt(), CalculateUnswitchCostMultiplier(), clampDynamicVectorIndex(), clampVectorIndex(), combineArithReduction(), combineBasicSADPattern(), combineBT(), combineVPDPBUSDPattern(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromOperator(), llvm::TargetLowering::CTTZTableLookup(), llvm::RISCVVType::encodeLMUL(), llvm::RISCVVType::encodeSEW(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldSwitchToSelect(), getARMFixupKindMachOInfo(), getBitcastWiderVectorElementOffset(), llvm::RISCVTTIImpl::getCastInstrCost(), getElSizeLog2Diff(), getFalkorUnrollingPreferences(), getInputSegmentList(), getMaxShiftAmount(), llvm::BasicTTIImplBase< T >::getMinMaxReductionCost(), getRuntimeLoopCount(), getScaledOffsetForBitWidth(), llvm::SIInstrInfo::getScratchRsrcWords23(), llvm::BasicTTIImplBase< T >::getTreeReductionCost(), hasAllNBitUsers(), llvm::RISCVDAGToDAGISel::hasAllNBitUsers(), isValidAsScaledImmediate(), llvm::HexagonInstrInfo::isValidOffset(), llvm::MipsLegalizerInfo::legalizeCustom(), lowerBuildVectorViaDominantValues(), llvm::TargetLowering::lowerCmpEqZeroToCtlzSrl(), lowerShuffleWithPACK(), llvm::RISCVRegisterInfo::lowerVRELOAD(), llvm::RISCVRegisterInfo::lowerVSPILL(), lowerX86CmpEqZeroToCtlzSrl(), matchAddReduction(), llvm::SelectionDAG::matchBinOpReduction(), matchTruncateWithPACK(), llvm::RISCVInstrInfo::mulImm(), packSegmentMask(), PerformMULCombine(), llvm::AArch64InstPrinter::printMemExtendImpl(), llvm::RISCVDAGToDAGISel::Select(), llvm::RISCVDAGToDAGISel::selectSF_VC_X_SE(), llvm::LoongArchDAGToDAGISel::selectShiftMask(), llvm::RISCVDAGToDAGISel::selectVLSEG(), llvm::RISCVDAGToDAGISel::selectVLSEGFF(), llvm::RISCVDAGToDAGISel::selectVLXSEG(), llvm::RISCVDAGToDAGISel::selectVSSEG(), llvm::RISCVDAGToDAGISel::selectVSXSEG(), llvm::object::coff_tls_directory< IntTy >::setAlignment(), llvm::AArch64TargetLowering::shouldReduceLoadWidth(), llvm::TargetLowering::SimplifySetCC(), simplifySetCCWithCTPOP(), tryToRecognizeTableBasedCttz(), UnrollRuntimeLoopRemainder(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitZExt().

◆ Log2_32_Ceil()

unsigned llvm::Log2_32_Ceil ( uint32_t  Value)
inline

◆ Log2_64()

unsigned llvm::Log2_64 ( uint64_t  Value)
inline

◆ Log2_64_Ceil()

unsigned llvm::Log2_64_Ceil ( uint64_t  Value)
inline

Return the ceil log base 2 of the specified value, 64 if the value is zero.

(64 bit edition.)

Definition at line 332 of file MathExtras.h.

References countl_zero().

Referenced by buildFrameType(), llvm::ArrayRecycler< T, Align >::Capacity::get(), getEstimate(), LowerAndToBT(), LowerAndToBTST(), llvm::raw_ostream::operator<<(), PowerOf2Ceil(), and llvm::InstCombinerImpl::visitZExt().

◆ logAllUnhandledErrors()

void llvm::logAllUnhandledErrors ( Error  E,
raw_ostream OS,
Twine  ErrorBanner = {} 
)

Log all errors (if any) in E to OS.

If there are any errors, ErrorBanner will be printed before the first one is logged. A newline will be printed after each error.

This function is compatible with the helpers from Support/WithColor.h. You can pass any of them as the OS. Please consider using them instead of including 'error: ' in the ErrorBanner.

This is useful in the base level of your program to allow clean termination (allowing clean deallocation of resources, etc.), while reporting error information to the user.

Definition at line 65 of file Error.cpp.

Referenced by computeImportForFunction(), llvm::gsym::ObjectFileTransformer::convert(), llvm::orc::SimpleRemoteEPCServer::Create(), doImportingForModuleForTest(), llvm::gsym::GsymReader::dump(), llvm::MCJIT::generateCodeForModule(), llvm::BTFParser::hasBTFSections(), llvm::LTOModule::isThinLTO(), isThumbFunc(), llvm::ThinLTOCodeGenerator::linkCombinedIndex(), LLVMGetSymbolAddress(), LLVMGetSymbolName(), LLVMMoveToContainingSection(), llvm::RuntimeDyldELF::loadObject(), llvm::RuntimeDyldMachO::loadObject(), llvm::RuntimeDyldCOFF::loadObject(), llvm::MemProfContextDisambiguation::MemProfContextDisambiguation(), llvm::Pattern::parsePattern(), llvm::RuntimeDyldELF::processRelocationRef(), llvm::FileCheck::readCheckFile(), and llvm::orc::EPCGenericRTDyldMemoryManager::~EPCGenericRTDyldMemoryManager().

◆ lookupBroadcastFoldTable()

const X86FoldTableEntry * llvm::lookupBroadcastFoldTable ( unsigned  RegOp,
unsigned  OpNum 
)

Definition at line 146 of file X86InstrFoldTables.cpp.

References lookupFoldTableImpl().

◆ lookupBroadcastFoldTableBySize()

const X86FoldTableEntry * llvm::lookupBroadcastFoldTableBySize ( unsigned  MemOp,
unsigned  BroadcastBits 
)

Definition at line 325 of file X86InstrFoldTables.cpp.

References I, lower_bound(), and matchBroadcastSize().

◆ lookupBuiltin()

static std::unique_ptr< const SPIRV::IncomingCall > llvm::lookupBuiltin ( StringRef  DemangledCall,
SPIRV::InstructionSet::InstructionSet  Set,
Register  ReturnRegister,
const SPIRVType ReturnType,
const SmallVectorImpl< Register > &  Arguments 
)
static

Looks up the demangled builtin call in the SPIRVBuiltins.td records using the provided DemangledCall and specified Set.

The lookup follows the following algorithm, returning the first successful match:

  1. Search with the plain demangled name (expecting a 1:1 match).
  2. Search with the prefix before or suffix after the demangled name signyfying the type of the first argument.
Returns
Wrapper around the demangled call and found builtin definition.

Definition at line 183 of file SPIRVBuiltins.cpp.

References Arguments, contains(), llvm::StringRef::find(), llvm::SmallVectorBase< Size_T >::size(), llvm::StringRef::slice(), llvm::StringRef::split(), llvm::StringRef::str(), and llvm::StringRef::substr().

Referenced by llvm::SPIRV::lowerBuiltin().

◆ lookupFoldTable()

const X86FoldTableEntry * llvm::lookupFoldTable ( unsigned  RegOp,
unsigned  OpNum 
)

Definition at line 128 of file X86InstrFoldTables.cpp.

References lookupFoldTableImpl().

Referenced by llvm::X86InstrInfo::foldMemoryOperandImpl().

◆ lookupPGONameFromMetadata()

static std::optional< std::string > llvm::lookupPGONameFromMetadata ( MDNode MD)
static

Definition at line 323 of file InstrProf.cpp.

References llvm::MDNode::getOperand(), and llvm::StringRef::str().

Referenced by getIRPGOObjectName(), and getPGOFuncName().

◆ lookupTwoAddrFoldTable()

const X86FoldTableEntry * llvm::lookupTwoAddrFoldTable ( unsigned  RegOp)

Definition at line 124 of file X86InstrFoldTables.cpp.

References lookupFoldTableImpl().

Referenced by llvm::X86InstrInfo::foldMemoryOperandImpl().

◆ lookupUnfoldTable()

const X86FoldTableEntry * llvm::lookupUnfoldTable ( unsigned  MemOp)

◆ LoopRotation()

bool llvm::LoopRotation ( Loop L,
LoopInfo LI,
const TargetTransformInfo TTI,
AssumptionCache AC,
DominatorTree DT,
ScalarEvolution SE,
MemorySSAUpdater MSSAU,
const SimplifyQuery SQ,
bool  RotationOnly = true,
unsigned  Threshold = unsigned(-1),
bool  IsUtilMode = true,
bool  PrepareForLTO = false 
)

Convert a loop into a loop with bottom test.

The utility to convert a loop into a loop with bottom test.

It may perform loop latch simplication as well if the flag RotationOnly is false. The flag Threshold represents the size threshold of the loop header. If the loop header's size exceeds the threshold, the loop rotation will give up. The flag IsUtilMode controls the heuristic used in the LoopRotation. If it is true, the profitability heuristic will be ignored.

Definition at line 1082 of file LoopRotationUtils.cpp.

Referenced by llvm::LoopRotatePass::run().

◆ lostFractionThroughTruncation()

static lostFraction llvm::lostFractionThroughTruncation ( const APFloatBase::integerPart parts,
unsigned int  partCount,
unsigned int  bits 
)
static

◆ lower_bound() [1/2]

template<typename R , typename T >
auto llvm::lower_bound ( R &&  Range,
T &&  Value 
)

Provide wrappers to std::lower_bound which take ranges instead of having to pass begin/end explicitly.

Definition at line 1954 of file STLExtras.h.

References adl_begin(), and adl_end().

Referenced by addAttributeImpl(), llvm::MachO::InterfaceFile::addDocument(), llvm::MachO::addEntry(), llvm::MachO::InterfaceFile::addParentUmbrella(), llvm::MachO::InterfaceFile::addRPath(), llvm::LiveIntervals::checkRegMaskInterference(), CompressEVEXImpl(), computeBucketCount(), llvm::orc::AllocGroupSmallMap< T >::find(), Find(), findDefaultVersion(), llvm::AttrBuilder::getAttribute(), llvm::InstrProfSymtab::getFuncOrVarName(), llvm::InstrProfSymtab::getFunction(), getIntrinsicWithChain(), getIntrinsicWithoutChain(), llvm::RISCVLoadFPImm::getLoadFPImm(), llvm::MCSection::getSubsectionInsertionPoint(), llvm::TargetLibraryInfoImpl::getVectorMappingInfo(), llvm::TargetLibraryInfoImpl::getWidestVF(), llvm::MachO::InterfaceFile::inlineLibrary(), llvm::MCSubtargetInfo::isCPUStringValid(), isExperimentalExtension(), llvm::TargetLibraryInfoImpl::isFunctionVectorizable(), llvm::RISCVISAInfo::isSupportedExtension(), llvm::RISCVISAInfo::isSupportedExtensionFeature(), Lookup(), lookupBroadcastFoldTableBySize(), lookupFoldTableImpl(), LookupNEONLdSt(), lookupUnfoldTable(), lowerV8I16GeneralSingleInputShuffle(), llvm::MCInstPrinter::matchAliasPatterns(), llvm::sys::unicode::nearestMatchesForCodepointName(), llvm::orc::AllocGroupSmallMap< T >::operator[](), llvm::LiveRange::overlaps(), llvm::RISCVISAInfo::parseFeatures(), promoteSingleBlockAlloca(), llvm::AttrBuilder::removeAttribute(), and llvm::JumpThreadingPass::simplifyPartiallyRedundantLoad().

◆ lower_bound() [2/2]

template<typename R , typename T , typename Compare >
auto llvm::lower_bound ( R &&  Range,
T &&  Value,
Compare  C 
)

Definition at line 1960 of file STLExtras.h.

References adl_begin(), adl_end(), and llvm::CallingConv::C.

◆ LowerARMMachineInstrToMCInst()

void llvm::LowerARMMachineInstrToMCInst ( const MachineInstr MI,
MCInst OutMI,
ARMAsmPrinter AP 
)

◆ lowerAtomicCmpXchgInst()

bool llvm::lowerAtomicCmpXchgInst ( AtomicCmpXchgInst CXI)

◆ lowerAtomicRMWInst()

bool llvm::lowerAtomicRMWInst ( AtomicRMWInst RMWI)

◆ LowerDbgDeclare()

bool llvm::LowerDbgDeclare ( Function F)

◆ lowerGlobalIFuncUsersAsGlobalCtor()

bool llvm::lowerGlobalIFuncUsersAsGlobalCtor ( Module M,
ArrayRef< GlobalIFunc * >  IFuncsToLower = {} 
)

Lower all calls to ifuncs by replacing uses with indirect calls loaded out of a global table initialized in a global constructor.

This will introduce one constructor function and adds it to llvm.global_ctors. The constructor will call the resolver function once for each ifunc.

Leaves any unhandled constant initializer uses as-is.

If IFuncsToLower is empty, all ifuncs in the module will be lowered. If IFuncsToLower is non-empty, only the selected ifuncs will be lowered.

The processed ifuncs without remaining users will be removed from the module.

Definition at line 354 of file ModuleUtils.cpp.

References appendToGlobalCtors(), llvm::Function::Create(), llvm::BasicBlock::Create(), llvm::IRBuilderBase::CreateAlignedLoad(), llvm::IRBuilderBase::CreateAlignedStore(), llvm::IRBuilderBase::CreateCall(), llvm::IRBuilderBase::CreateConstInBoundsGEP2_32(), llvm::IRBuilderBase::CreatePointerCast(), llvm::IRBuilderBase::CreateRetVoid(), dbgs(), DL, llvm::ArrayRef< T >::empty(), GEP, llvm::ConstantPointerNull::get(), llvm::PoisonValue::get(), llvm::Function::getFunctionType(), llvm::Value::getName(), llvm::Value::getType(), llvm::Type::getVoidTy(), llvm::GlobalValue::InternalLinkage, LLVM_DEBUG, make_early_inc_range(), llvm::FunctionType::params(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::User::replaceUsesOfWith(), and llvm::ArrayRef< T >::size().

Referenced by llvm::LowerIFuncPass::run().

◆ lowerLoongArchMachineInstrToMCInst()

bool llvm::lowerLoongArchMachineInstrToMCInst ( const MachineInstr MI,
MCInst OutMI,
AsmPrinter AP 
)

◆ lowerLoongArchMachineOperandToMCOperand()

bool llvm::lowerLoongArchMachineOperandToMCOperand ( const MachineOperand MO,
MCOperand MCOp,
const AsmPrinter AP 
)

◆ lowerObjectSizeCall() [1/2]

Value * llvm::lowerObjectSizeCall ( IntrinsicInst ObjectSize,
const DataLayout DL,
const TargetLibraryInfo TLI,
AAResults AA,
bool  MustSucceed,
SmallVectorImpl< Instruction * > *  InsertedInstructions = nullptr 
)

◆ lowerObjectSizeCall() [2/2]

Value * llvm::lowerObjectSizeCall ( 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.

Returns null on failure. If MustSucceed is true, this function will not return null, and may return conservative values governed by the second argument of the call to objectsize.

Definition at line 603 of file MemoryBuiltins.cpp.

References DL, and lowerObjectSizeCall().

Referenced by lowerConstantIntrinsics(), lowerObjectSizeCall(), llvm::InstCombinerImpl::visitAllocSite(), and llvm::InstCombinerImpl::visitCallInst().

◆ LowerPPCMachineInstrToMCInst()

void llvm::LowerPPCMachineInstrToMCInst ( const MachineInstr MI,
MCInst OutMI,
AsmPrinter AP 
)

◆ LowerPPCMachineOperandToMCOperand()

bool llvm::LowerPPCMachineOperandToMCOperand ( const MachineOperand MO,
MCOperand OutMO,
AsmPrinter AP 
)

◆ LowerSparcMachineInstrToMCInst()

void llvm::LowerSparcMachineInstrToMCInst ( const MachineInstr MI,
MCInst OutMI,
AsmPrinter AP 
)

◆ LowerVEMachineInstrToMCInst()

void llvm::LowerVEMachineInstrToMCInst ( const MachineInstr MI,
MCInst OutMI,
AsmPrinter AP 
)

◆ LOX10()

static unsigned llvm::LOX10 ( int64_t  imm)
inlinestatic

Definition at line 185 of file Sparc.h.

Referenced by replaceFI().

◆ M0()

unsigned llvm::M0 ( unsigned  Val)
inline

◆ M1()

unsigned llvm::M1 ( unsigned  Val)
inline

◆ machineFunctionIsIllegal()

const MachineInstr * llvm::machineFunctionIsIllegal ( const MachineFunction MF)

Checks that MIR is fully legal, returns an illegal instruction if it's not, nullptr otherwise.

Definition at line 428 of file LegalizerInfo.cpp.

References llvm::TargetSubtargetInfo::getLegalizerInfo(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), isPreISelGenericOpcode(), MBB, MI, and MRI.

Referenced by llvm::RegBankSelect::checkFunctionIsLegal(), and llvm::InstructionSelect::runOnMachineFunction().

◆ machineToStr()

StringRef llvm::machineToStr ( COFF::MachineTypes  MT)

◆ Make_64()

constexpr uint64_t llvm::Make_64 ( uint32_t  High,
uint32_t  Low 
)
inlineconstexpr

Make a 64-bit integer from a high / low pair of 32-bit integers.

Definition at line 146 of file MathExtras.h.

References High, and Low.

Referenced by KnuthDiv(), and readInstruction64().

◆ make_early_inc_range()

template<typename RangeT >
iterator_range< early_inc_iterator_impl< detail::IterOfRange< RangeT > > > llvm::make_early_inc_range ( RangeT &&  Range)

Make a range that does early increment to allow mutation of the underlying range without disrupting iteration.

The underlying iterator will be incremented immediately after it is dereferenced, allowing deletion of the current node or insertion of nodes to not disrupt iteration provided they do not invalidate the next iterator – the current iterator can be invalidated.

This requires a very exact pattern of use that is only really suitable to range based for loops and other range algorithms that explicitly guarantee to dereference exactly once each element, and to increment exactly once each element.

Definition at line 656 of file STLExtras.h.

References make_range().

Referenced by addImplicitDefs(), llvm::SelectionDAG::AssignTopologicalOrder(), CloneInstructionsIntoPredecessorBlockAndUpdateSSAUses(), llvm::Combiner::combineMachineInstrs(), llvm::BasicBlock::convertToNewDbgValues(), convertToRelativeLookupTables(), createOutlinedFunction(), cse(), DeleteDeadIFuncs(), deleteDeadLoop(), llvm::ConnectedVNInfoEqClasses::Distribute(), doCallSiteSplitting(), DoLowering(), dropTypeTests(), eliminateAvailableExternally(), eliminateDeadCode(), eliminateSwiftErrorAlloca(), llvm::ScheduleDAGSDNodes::EmitSchedule(), llvm::BasicBlock::erase(), eraseLifetimeMarkersOnInputs(), expansionIntrinsics(), llvm::CodeExtractor::extractCodeRegion(), llvm::CodeExtractor::findOrCreateBlockForHoisting(), fixStackStores(), llvm::InstCombinerImpl::foldOpIntoPhi(), foldUnusualPatterns(), formLCSSAForInstructions(), llvm::InstCombinerImpl::freelyInvertAllUsersOf(), HandleCallsInBlockInlinedThroughInvoke(), llvm::InstCombinerImpl::handleUnreachableFrom(), hoistRegion(), INITIALIZE_PASS(), InlineFunction(), inlineRetainOrClaimRVCalls(), InsertStackProtectors(), llvm::InterleavedAccessInfo::invalidateGroupsRequiringScalarEpilogue(), lowerExpectIntrinsic(), lowerGlobalIFuncUsersAsGlobalCtor(), lowerIntrinsic(), lowerIntrinsics(), lowerLoadRelative(), lowerObjCCall(), llvm::MachineRegisterInfo::markUsesInDebugValueAsUndef(), mergeBlocksIntoPredecessors(), mergeConstants(), mergeReplicateRegionsIntoSuccessors(), moveFunctionData(), moveInstructionsToTheBeginning(), moveLCSSAPhis(), llvm::PeelingModuloScheduleExpander::moveStageBetweenBlocks(), llvm::ShuffleBlockStrategy::mutate(), nullifySetjmp(), OptimizeAwayTrappingUsesOfLoads(), OptimizeEmptyGlobalCXXDtors(), OptimizeFunctions(), llvm::slpvectorizer::BoUpSLP::optimizeGatherSequence(), OptimizeGlobalAliases(), OptimizeGlobalVars(), llvm::InstCombinerImpl::prepareWorklist(), llvm::SIFrameLowering::processFunctionBeforeFrameFinalized(), llvm::LoopVectorizePass::processLoop(), processSelect(), processUMulZExtIdiom(), promoteSingleBlockAlloca(), PropagateOperandBundles(), redirectAllPredecessorsTo(), llvm::MemorySSAUpdater::removeBlocks(), llvm::SIInstrInfo::removeBranch(), llvm::SIMachineFunctionInfo::removeDeadFrameIndices(), removeDeadRecipes(), removeDebugInstrs(), removeEmptyCleanup(), removeIntrinsicUsers(), llvm::BasicBlock::removePredecessor(), removeRedundantExpandSCEVRecipes(), removeSSACopy(), removeUnusedBlocksFromParent(), replaceAllPrepares(), replaceConstantValueUsesInFuncWithInstr(), replaceConstatExprUsesInFuncWithInstr(), replaceCreatedSSACopys(), replaceDominatedUses(), replaceDominatedUsesWith(), replaceLoopInvariantUses(), replaceNonLocalUsesWith(), replacePrepare(), replaceRegUsesAfterLoop(), llvm::MachineRegisterInfo::replaceRegWith(), replaceSubOverflowUses(), llvm::Value::replaceUsesWithIf(), rewriteSelectInstMemOps(), rewriteSingleStoreAlloca(), RewriteUsesOfClonedInstructions(), llvm::JumpTableToSwitchPass::run(), llvm::DeadArgumentEliminationPass::run(), llvm::ExtractGVPass::run(), llvm::ModuleToPostOrderCGSCCPassAdaptor::run(), runImpl(), runIPSCCP(), runOnBasicBlock(), setDanglingDebugValuesUndef(), llvm::SCCPSolver::simplifyInstsInBlock(), simplifyLoopAfterUnroll(), simplifyLoopInst(), simplifyRecipes(), sinkLoopInvariantInstructions(), llvm::VPBasicBlock::splitAt(), splitGlobals(), stripDeadPrototypes(), stripDebugInfo(), StripDebugInfo(), llvm::TailDuplicator::tailDuplicateAndUpdate(), llvm::TailDuplicator::tailDuplicateBlocks(), llvm::VPlanTransforms::truncateToMinimalBitwidths(), TryToMergeLandingPad(), tryToMoveFreeBeforeNullTest(), llvm::HexagonPacketizerList::unpacketizeSoloInstrs(), UnrollRuntimeLoopRemainder(), unstackifyVRegsUsedInSplitBB(), unswitchNontrivialInvariants(), updatePublicTypeTestCalls(), UpgradeARCRuntime(), UpgradeCallsToIntrinsic(), llvm::VPlanTransforms::VPInstructionsToVPRecipes(), and llvm::VPDef::~VPDef().

◆ make_error()

template<typename ErrT , typename... ArgTs>
Error llvm::make_error ( ArgTs &&...  Args)

Make a Error instance representing failure using the given error info type.

Definition at line 338 of file Error.h.

◆ make_error_code() [1/4]

std::error_code llvm::make_error_code ( BitcodeError  E)
inline

◆ make_error_code() [2/4]

std::error_code llvm::make_error_code ( errc  E)
inline

Definition at line 78 of file Errc.h.

References E.

◆ make_error_code() [3/4]

std::error_code llvm::make_error_code ( instrprof_error  E)
inline

Definition at line 391 of file InstrProf.h.

References E, and instrprof_category().

◆ make_error_code() [4/4]

std::error_code llvm::make_error_code ( sampleprof_error  E)
inline

Definition at line 65 of file SampleProf.h.

References E, and sampleprof_category().

◆ make_fallible_end()

template<typename Underlying >
fallible_iterator< Underlying > llvm::make_fallible_end ( Underlying  E)

Convenience wrapper to make a fallible_iterator end value from an instance of an underlying iterator.

Definition at line 228 of file fallible_iterator.h.

References E, and llvm::fallible_iterator< Underlying >::end().

Referenced by make_fallible_range().

◆ make_fallible_itr()

template<typename Underlying >
fallible_iterator< Underlying > llvm::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.

Definition at line 221 of file fallible_iterator.h.

References I, and llvm::fallible_iterator< Underlying >::itr().

Referenced by make_fallible_range().

◆ make_fallible_range()

template<typename Underlying >
iterator_range< fallible_iterator< Underlying > > llvm::make_fallible_range ( Underlying  I,
Underlying  E,
Error Err 
)

Definition at line 234 of file fallible_iterator.h.

References E, I, make_fallible_end(), make_fallible_itr(), and make_range().

◆ make_filter_range()

template<typename RangeT , typename PredicateT >
iterator_range< filter_iterator< detail::IterOfRange< RangeT >, PredicateT > > llvm::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.

FIXME: Currently if RangeT && is a rvalue reference to a temporary, the lifetime of that temporary is not kept by the returned range object, and the temporary is going to be dropped on the floor after the make_iterator_range full expression that contains this function call.

Definition at line 572 of file STLExtras.h.

References make_range().

Referenced by llvm::MachineInstr::all_defs(), llvm::MachineInstr::all_uses(), llvm::objcopy::elf::Object::allocSections(), llvm::VPBlockUtils::blocksOnly(), llvm::LoopBodyTraits::child_begin(), llvm::LoopBodyTraits::child_end(), llvm::DWARFContext::compile_units(), llvm::DWARFContext::dwo_compile_units(), llvm::MachO::SymbolSet::exports(), filterDbgVars(), llvm::RandomIRBuilder::findOrCreateGlobalVariable(), llvm::RandomIRBuilder::findOrCreateSource(), llvm::RandomIRBuilder::findPointer(), llvm::MachineInstr::getDebugOperandsForReg(), llvm::MachineFunction::getEntryValueVariableDbgInfo(), llvm::MachineFunction::getInStackSlotVariableDbgInfo(), llvm::StackLifetime::getMarkers(), getUniqueExitBlocksHelper(), llvm::BasicBlock::instructionsWithoutDebug(), instructionsWithoutDebug(), TransferTracker::ResolvedDbgValue::loc_indices(), llvm::InsertCFGStrategy::mutate(), llvm::IRMutationStrategy::mutate(), phys_regs_and_masks(), llvm::MachO::SymbolSet::reexports(), llvm::MachO::Symbol::targets(), llvm::MachO::InterfaceFile::targets(), and llvm::MachO::SymbolSet::undefineds().

◆ make_first_range()

template<typename ContainerTy >
auto llvm::make_first_range ( ContainerTy &&  c)

Given a container of pairs, return a range over the first elements.

Definition at line 1422 of file STLExtras.h.

References map_range().

Referenced by llvm::AppleAcceleratorTable::containsAtomType(), hoistLockstepIdenticalDbgVariableRecords(), and llvm::MCPseudoProbeDecoder::printProbesForAllAddresses().

◆ make_pointee_range()

template<typename RangeT , typename WrappedIteratorT = decltype(std::begin(std::declval<RangeT>()))>
iterator_range< pointee_iterator< WrappedIteratorT > > llvm::make_pointee_range ( RangeT &&  Range)

◆ make_pointer_range()

template<typename RangeT , typename WrappedIteratorT = decltype(std::begin(std::declval<RangeT>()))>
iterator_range< pointer_iterator< WrappedIteratorT > > llvm::make_pointer_range ( RangeT &&  Range)

◆ make_range() [1/2]

template<typename T >
iterator_range< T > llvm::make_range ( std::pair< T, T p)

Definition at line 80 of file iterator_range.h.

◆ make_range() [2/2]

template<class T >
iterator_range< T > llvm::make_range ( T  x,
T  y 
)

Convenience function for iterating over sub-ranges.

This provides a bit of syntactic sugar to make using sub-ranges in for loops a bit easier. Analogous to std::make_pair().

Definition at line 76 of file iterator_range.h.

Referenced by llvm::jitlink::LinkGraph::absolute_symbols(), accessedBetween(), llvm::GCStatepointInst::actual_args(), llvm::ScheduleDAGInstrs::addVRegDefDeps(), llvm::ScheduleDAGInstrs::addVRegUseDeps(), llvm::Module::aliases(), llvm::SelectionDAG::allnodes(), llvm::mca::Scheduler::analyzeDataDependencies(), llvm::BlockFrequencyInfoImplBase::analyzeIrreducible(), llvm::codeview::InlineSiteSym::annotations(), applyDebugify(), llvm::AMDGPURegisterBankInfo::applyMappingImpl(), llvm::AMDGPURegisterBankInfo::applyMappingSBufferLoad(), llvm::Function::args(), llvm::CallBase::args(), llvm::DWARFDie::attributes(), llvm::object::COFFObjectFile::base_relocs(), llvm::MachObjectWriter::bindIndirectSymbols(), llvm::object::MachOObjectFile::bindTable(), llvm::MemoryPhi::blocks(), llvm::jitlink::Section::blocks(), llvm::jitlink::LinkGraph::blocks(), llvm::GenericCycle< ContextT >::blocks(), llvm::PHINode::blocks(), llvm::LoopBase< BlockT, LoopT >::blocks(), llvm::WebAssemblyException::blocks(), llvm::GCOVFunction::blocksRange(), breadth_first(), llvm::AggressiveAntiDepBreaker::BreakAntiDependencies(), buildClonedLoopBlocks(), BuildInstOrderMap(), llvm::CallBase::bundle_op_infos(), llvm::HexagonMCInstrInfo::bundleInstructions(), llvm::StringRef::bytes(), llvm::LoopVectorizationCostModel::calculateRegisterUsage(), llvm::ResourceManager::calculateResMII(), llvm::LazyCallGraph::EdgeSequence::calls(), canRenameComdat(), canSplitCallSite(), llvm::SwitchInst::cases(), llvm::SchedBoundary::checkHazard(), llvm::DIE::children(), llvm::DomTreeNodeBase< NodeT >::children(), llvm::GenericCycle< ContextT >::children(), llvm::DWARFDie::children(), children(), llvm::object::Archive::children(), children_edges(), clearKillFlags(), cloneAndAdaptNoAliasScopes(), CloneAndPruneIntoFromInst(), llvm::DbgMarker::cloneDebugInfoFrom(), llvm::ModuleSlotTracker::collectMDNodes(), llvm::DebugInfoFinder::compile_units(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), computeLiveInValues(), computeMinimumValueSizes(), const_mi_bundle_ops(), llvm::StackMapParser< Endianness >::constants(), containsIrreducibleCFG(), createOutlinedFunction(), createReplicateRegion(), llvm::OnDiskIterableChainedHashTable< Info >::data(), llvm::CallBase::data_ops(), llvm::DataDependenceGraph::DataDependenceGraph(), llvm::Module::debug_compile_units(), llvm::object::COFFObjectFile::debug_directories(), llvm::MachineInstr::debug_operands(), llvm::MachineRegisterInfo::def_bundles(), def_chain(), llvm::MachineRegisterInfo::def_instructions(), llvm::MachineRegisterInfo::def_operands(), llvm::jitlink::LinkGraph::defined_symbols(), llvm::MachineInstr::defs(), llvm::object::COFFObjectFile::delay_import_directories(), llvm::GCStatepointInst::deopt_operands(), depth_first(), depth_first_ext(), detectPopcountIdiom(), detectShiftUntilZeroIdiom(), drop_begin(), drop_end(), llvm::GCOVBlock::dsts(), llvm::SelectionDAG::dump(), llvm::BPFunctionNode::dump(), llvm::ScheduleDAGMI::dumpScheduleTraceBottomUp(), llvm::ScheduleDAGMI::dumpScheduleTraceTopDown(), llvm::object::Archive::ec_symbols(), llvm::jitlink::Block::edges(), llvm::RegionBase< Tr >::elements(), llvm::SystemZHazardRecognizer::emitInstruction(), llvm::AArch64FrameLowering::emitPrologue(), llvm::ScheduleDAGSDNodes::EmitSchedule(), llvm::Registry< T >::entries(), llvm::GenericCycle< ContextT >::entries(), llvm::AppleAcceleratorTable::entries(), llvm::AppleAcceleratorTable::equal_range(), llvm::DWARFDebugNames::NameIndex::equal_range(), llvm::DWARFDebugNames::equal_range(), llvm::BasicBlock::erase(), llvm::AMDGPURegisterBankInfo::executeInWaterfallLoop(), llvm::MachineInstr::explicit_operands(), llvm::MachineInstr::explicit_uses(), llvm::object::COFFObjectFile::export_directories(), llvm::object::MachOObjectFile::exports(), llvm::object::MachOObjectFile::external_relocations(), llvm::jitlink::LinkGraph::external_symbols(), llvm::opt::ArgList::filtered(), llvm::opt::ArgList::filtered_reverse(), llvm::pdb::GSIHashStreamBuilder::finalizeBuckets(), FindAvailableLoadedValue(), findIrreducibleHeaders(), findRedundantFlagInstr(), fixStackStores(), llvm::object::MachOObjectFile::fixupTable(), foldLoadsRecursive(), llvm::Module::functions(), llvm::StackMapParser< Endianness >::functions(), llvm::GCStatepointInst::gc_args(), llvm::GCStatepointInst::gc_transition_args(), llvm::at::getAssignmentInsts(), llvm::at::getAssignmentMarkers(), llvm::TargetInstrInfo::getCallFrameSizeAt(), getCallInstr(), llvm::orc::getConstructors(), llvm::coverage::CoverageMapping::getCoveredFunctions(), llvm::DbgMarker::getDbgRecordRange(), llvm::orc::getDestructors(), llvm::object::ELFObjectFile< ELFT >::getDynamicSymbolIterators(), llvm::DbgMarker::getEmptyDbgRecordRange(), getInsertionRange(), llvm::InterleavedAccessInfo::getInterleaveGroups(), llvm::GraphDiff< NodePtr, InverseGraph >::getLegalizedUpdates(), llvm::coverage::getLineCoverageStats(), getLivePhysRegsUpTo(), llvm::object::MinidumpFile::getMemoryInfoList(), llvm::DiagnosticInfoOptimizationBase::getMsg(), llvm::objcopy::coff::Object::getMutableSections(), llvm::objcopy::coff::Object::getMutableSymbols(), llvm::rdf::Liveness::getNearestAliasedRef(), llvm::SchedBoundary::getNextResourceCycle(), llvm::AArch64InstrInfo::getOutlinableRanges(), getSplatIndex(), llvm::orc::getStaticInitGVs(), llvm::pdb::SymbolStream::getSymbols(), getVFSEntries(), llvm::RegisterBankInfo::OperandsMapper::getVRegs(), llvm::DebugInfoFinder::global_variables(), llvm::Module::globals(), llvm::CatchSwitchInst::handlers(), llvm::InstCombinerImpl::handleUnreachableFrom(), identifyNoAliasScopesToClone(), llvm::Module::ifuncs(), llvm::MachineInstr::implicit_operands(), llvm::object::COFFObjectFile::import_directories(), llvm::object::ImportDirectoryEntryRef::imported_symbols(), llvm::object::DelayImportDirectoryEntryRef::imported_symbols(), llvm::GetElementPtrInst::indices(), llvm::GEPOperator::indices(), llvm::ExtractValueInst::indices(), llvm::InsertValueInst::indices(), INITIALIZE_PASS(), llvm::ScheduleDAGInstrs::initSUnits(), InlineFunction(), inlineRetainOrClaimRVCalls(), llvm::LazyCallGraph::RefSCC::insertIncomingRefEdge(), instrs(), instructionsWithoutDebug(), llvm::HexagonShuffler::insts(), inverse_children(), inverse_depth_first(), inverse_depth_first_ext(), inverse_nodes(), inverse_post_order(), inverse_post_order_ext(), isEFLAGSLive(), isEFLAGSLiveAfter(), isGuaranteedToTransferExecutionToSuccessor(), llvm::AAIsDead::isLiveInstSet(), llvm::MachineRegisterInfo::isPhysRegModified(), isPrintableString(), llvm::IRSimilarity::IRSimilarityCandidate::isSimilar(), isValidAssumeForContext(), llvm::AA::isValidAtPosition(), llvm::OnDiskIterableChainedHashTable< Info >::keys(), llvm::StringMap< ValueTy, AllocatorTy >::keys(), llvm::MachineBasicBlock::liveins(), llvm::MachineBasicBlock::liveins_dbg(), llvm::MachineBasicBlock::liveouts(), llvm::StackMapParser< Endianness >::RecordAccessor::liveouts(), llvm::object::MachOObjectFile::load_commands(), LiveDebugValues::MLocTracker::locations(), llvm::StackMapParser< Endianness >::RecordAccessor::locations(), llvm::object::ImportDirectoryEntryRef::lookup_table_symbols(), llvm::vfs::RedirectingFileSystemParser::lookupOrCreateEntry(), make_early_inc_range(), make_fallible_range(), make_filter_range(), make_pointee_range(), make_pointer_range(), map_range(), llvm::Value::materialized_users(), llvm::Value::materialized_uses(), mayBeVisibleThroughUnwinding(), llvm::BlockFrequencyInfoImplBase::LoopData::members(), mi_bundle_ops(), llvm::object::IRObjectFile::modules(), llvm::PeelingModuloScheduleExpander::moveStageBetweenBlocks(), llvm::ShuffleBlockStrategy::mutate(), llvm::Module::named_metadata(), nodes(), llvm::object::ELFFile< ELFT >::notes(), llvm::object::MachOUniversalBinary::objects(), llvm::object::TapiUniversal::objects(), llvm::SDNode::op_values(), llvm::User::operand_values(), llvm::MachineInstr::operands(), llvm::NamedMDNode::operands(), operator<<(), llvm::X86InstrInfo::optimizeCompareInstr(), optimized_def_chain(), passingValueIsAlwaysUndefined(), pathHasTraversal(), llvm::MachineBasicBlock::phis(), llvm::VPBasicBlock::phis(), post_order(), post_order_ext(), llvm::LazyCallGraph::postorder_ref_sccs(), llvm::MachineBasicBlock::predecessors(), llvm::SystemZInstrInfo::prepareCompareSwapOperands(), llvm::LiveRangeUpdater::print(), llvm::VPReplicateRecipe::print(), PrintByteList(), llvm::vfs::RedirectingFileSystem::printEntry(), programUndefinedIfUndefOrPoison(), PropagateCallSiteMetadata(), llvm::MustBeExecutedContextExplorer::range(), llvm::object::MachOObjectFile::rebaseTable(), rebuildLoopAfterUnswitch(), llvm::StackMapParser< Endianness >::records(), llvm::rdf::RegisterAggr::refs(), llvm::MachineRegisterInfo::reg_bundles(), llvm::MachineRegisterInfo::reg_instructions(), llvm::MachineRegisterInfo::reg_nodbg_bundles(), llvm::MachineRegisterInfo::reg_nodbg_instructions(), llvm::MachineRegisterInfo::reg_nodbg_operands(), llvm::MachineRegisterInfo::reg_operands(), llvm::TargetRegisterInfo::regclasses(), llvm::MCRegisterInfo::regclasses(), llvm::DebugifyEachInstrumentation::registerCallbacks(), llvm::MCRegisterInfo::regunits(), llvm::BasicBlock::reinsertInstInDbgRecords(), llvm::object::SectionRef::relocations(), rematerializeChain(), llvm::PHINode::removeIncomingValueIf(), llvm::LazyCallGraph::RefSCC::removeInternalRefEdge(), llvm::objcopy::elf::Object::removeSections(), llvm::CoroEndResults::return_values(), reverse(), llvm::DominatorTreeBase< NodeT, IsPostDom >::roots(), llvm::BalancedPartitioning::run(), llvm::InstructionSelect::runOnMachineFunction(), llvm::MachineFunction::salvageCopySSAImpl(), llvm::DebugInfoFinder::scopes(), llvm::jitlink::LinkGraph::sections(), llvm::BitVector::set_bits(), llvm::SmallBitVector::set_bits(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::VPBasicBlock::splitAt(), llvm::MachineBasicBlock::SplitCriticalEdge(), llvm::GCOVBlock::srcs(), llvm::DebugInfoFinder::subprograms(), llvm::LiveInterval::subranges(), llvm::MCRegisterInfo::subregs(), llvm::MCRegisterInfo::subregs_inclusive(), llvm::pdb::ModuleDebugStreamRef::subsections(), llvm::MachineBasicBlock::successors(), llvm::BranchInst::successors(), llvm::IndirectBrInst::successors(), llvm::MCRegisterInfo::superregs(), llvm::MCRegisterInfo::superregs_inclusive(), llvm::LazyCallGraph::RefSCC::switchInternalEdgeToCall(), llvm::LazyCallGraph::RefSCC::switchInternalEdgeToRef(), llvm::jitlink::Section::symbols(), llvm::MCAssembler::symbols(), llvm::object::Archive::symbols(), llvm::pdb::ModuleDebugStreamRef::symbols(), llvm::TargetRegistry::targets(), llvm::MachineBasicBlock::terminators(), llvm::GenericCycleInfo< ContextT >::toplevel_cycles(), llvm::VPRecipeBuilder::tryToCreateWidenRecipe(), llvm::DebugInfoFinder::types(), llvm::pdb::TpiStream::types(), llvm::rdf::RegisterAggr::units(), updateCGAndAnalysisManagerForPass(), llvm::AntiDepBreaker::UpdateDbgValues(), updatePostorderSequenceForEdgeInsertion(), llvm::ScheduleDAGMILive::updatePressureDiffs(), upward_defs(), llvm::MachineRegisterInfo::use_bundles(), llvm::MachineRegisterInfo::use_instructions(), llvm::MachineRegisterInfo::use_nodbg_bundles(), llvm::MachineRegisterInfo::use_nodbg_instructions(), llvm::MachineRegisterInfo::use_nodbg_operands(), llvm::MachineRegisterInfo::use_operands(), llvm::MachineInstr::uses(), llvm::SDNode::uses(), llvm::CoroSuspendRetconInst::value_operands(), llvm::DIEValueList::values(), llvm::SDNode::values(), llvm::LiveRange::vnis(), llvm::VPlanTransforms::VPInstructionsToVPRecipes(), and writtenBetween().

◆ make_scope_exit()

template<typename Callable >
detail::scope_exit< std::decay_t< Callable > > llvm::make_scope_exit ( Callable &&  F)

◆ make_second_range()

template<typename ContainerTy >
auto llvm::make_second_range ( ContainerTy &&  c)

Given a container of pairs, return a range over the second elements.

Definition at line 1432 of file STLExtras.h.

References map_range().

Referenced by tailMergeBlocksWithSimilarFunctionTerminators().

◆ MakeErrMsg()

bool llvm::MakeErrMsg ( std::string *  ErrMsg,
const std::string &  prefix 
)

Referenced by ReportLastErrorFatal().

◆ makeFollowupLoopID()

std::optional< MDNode * > llvm::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.

Parameters
OrigLoopIDThe loop ID of the loop before the transformation.
FollowupAttrsList of attribute names that contain attributes to be added to the new loop ID.
InheritOptionsAttrsPrefixSelects which attributes should be inherited from the original loop. The following values are considered: nullptr : Inherit all attributes from OrigLoopID. "" : Do not inherit any attribute from OrigLoopID; only use those specified by a followup attribute. "<prefix>": Inherit all attributes except those which start with <prefix>; commonly used to remove metadata for the applied transformation.
AlwaysNewIf true, do not try to reuse OrigLoopID and never return std::nullopt.
Returns
The loop ID for the after-transformation loop. The following values can be returned: std::nullopt : No followup attribute was found; it is up to the transformation to choose attributes that make sense. OrigLoopID: The original identifier can be reused. nullptr : The new loop has no attributes. MDNode* : A new unique loop identifier.

Definition at line 263 of file LoopUtils.cpp.

References assert(), drop_begin(), findOptionMDForLoopID(), llvm::MDNode::get(), llvm::MDNode::getContext(), llvm::DWARFExpression::Operation::getNumOperands(), llvm::MDNode::getNumOperands(), llvm::MDNode::getOperand(), llvm::MDNode::operands(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::MDNode::replaceOperandWith(), llvm::SmallVectorBase< Size_T >::size(), and llvm::StringRef::starts_with().

Referenced by CloneLoopBlocks(), llvm::LoopVectorizationPlanner::executePlan(), llvm::LoopVectorizePass::processLoop(), tryToUnrollAndJamLoop(), and tryToUnrollLoop().

◆ makeGCNILPScheduler()

std::vector< const SUnit * > llvm::makeGCNILPScheduler ( ArrayRef< const SUnit * >  BotRoots,
const ScheduleDAG DAG 
)

Definition at line 357 of file GCNILPSched.cpp.

Referenced by llvm::GCNIterativeScheduler::scheduleILP().

◆ makeGuardControlFlowExplicit()

void llvm::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.

The taken branch then goes to the block that contains Guard's successors, and the non-taken branch goes to a newly-created deopt block that contains a sole call of the deoptimize function DeoptIntrinsic. If 'UseWC' is set, preserve the widenable nature of the guard by lowering to equivelent form. If not set, lower to a form without widenable semantics.

Definition at line 30 of file GuardUtils.cpp.

References llvm::CallBase::args(), assert(), B, llvm::MDBuilder::createBranchWeights(), drop_begin(), llvm::CallBase::getArgOperand(), llvm::CallBase::getCallingConv(), llvm::Value::getContext(), llvm::Instruction::getMetadata(), llvm::CallBase::getOperandBundle(), llvm::Instruction::getParent(), llvm::Function::getReturnType(), llvm::Type::isVoidTy(), isWidenableBranch(), llvm::LLVMContext::OB_deopt, PredicatePassBranchWeight, and SplitBlockAndInsertIfThen().

Referenced by lowerGuardIntrinsic(), and turnToExplicitForm().

◆ makeInstrRefBasedLiveDebugValues()

LDVImpl * llvm::makeInstrRefBasedLiveDebugValues ( )

Definition at line 3819 of file InstrRefBasedImpl.cpp.

Referenced by INITIALIZE_PASS().

◆ makeIntrusiveRefCnt()

template<typename T , typename... Args>
IntrusiveRefCntPtr< T > llvm::makeIntrusiveRefCnt ( Args &&...  A)

Factory function for creating intrusive ref counted pointers.

Definition at line 313 of file IntrusiveRefCntPtr.h.

References A, and T.

◆ makeMinRegSchedule()

std::vector< const SUnit * > llvm::makeMinRegSchedule ( ArrayRef< const SUnit * >  TopRoots,
const ScheduleDAG DAG 
)

◆ makePostTransformationMetadata()

MDNode * llvm::makePostTransformationMetadata ( 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.

This can be used when no follow-up loop attributes are defined (llvm::makeFollowupLoopID returning None) to stop transformations to be applied again.

Parameters
ContextThe LLVMContext in which to create the new LoopID.
OrigLoopIDThe original LoopID; can be nullptr if the original loop has no LoopID.
RemovePrefixesRemove all loop attributes that have these prefixes. Use to remove metadata of the transformation that has been applied.
AddAttrsAdd these loop attributes to the new LoopID.
Returns
A new LoopID that can be applied using Loop::setLoopID().

Definition at line 1126 of file LoopInfo.cpp.

References any_of(), llvm::SmallVectorImpl< T >::append(), llvm::ArrayRef< T >::begin(), Context, drop_begin(), llvm::ArrayRef< T >::end(), llvm::MDNode::getDistinct(), llvm::MDString::getString(), llvm::MDNode::operands(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::MDNode::replaceOperandWith(), and starts_with().

Referenced by postUnswitch(), llvm::LoopVectorizeHints::setAlreadyVectorized(), llvm::Loop::setLoopAlreadyUnrolled(), and llvm::Loop::setLoopMustProgress().

◆ makeSampler() [1/3]

template<typename T , typename GenT >
ReservoirSampler< T, GenT > llvm::makeSampler ( GenT &  RandGen)

Definition at line 90 of file Random.h.

◆ makeSampler() [2/3]

template<typename GenT , typename T >
ReservoirSampler< T, GenT > llvm::makeSampler ( GenT &  RandGen,
const T Item,
uint64_t  Weight 
)

Definition at line 82 of file Random.h.

References llvm::ReservoirSampler< T, GenT >::sample().

◆ makeSampler() [3/3]

template<typename GenT , typename RangeT , typename ElT = std::remove_reference_t< decltype(*std::begin(std::declval<RangeT>()))>>
ReservoirSampler< ElT, GenT > llvm::makeSampler ( GenT &  RandGen,
RangeT &&  Items 
)

◆ makeVarLocBasedLiveDebugValues()

LDVImpl * llvm::makeVarLocBasedLiveDebugValues ( )

Definition at line 2402 of file VarLocBasedImpl.cpp.

Referenced by INITIALIZE_PASS().

◆ makeVisitor()

template<typename... CallableTs>
constexpr decltype(auto) llvm::makeVisitor ( CallableTs &&...  Callables)
constexpr

Returns an opaquely-typed Callable object whose operator() overload set is the sum of the operator() overload sets of each CallableT in CallableTs.

The type of the returned object derives from each CallableT in CallableTs. The returned object is constructed by invoking the appropriate copy or move constructor of each CallableT, as selected by overload resolution on the corresponding argument to makeVisitor.

Example:

auto visitor = makeVisitor([](auto) { return "unhandled type"; },
[](int i) { return "int"; },
[](std::string s) { return "str"; });
auto a = visitor(42); // `a` is now "int".
auto b = visitor("foo"); // `b` is now "str".
auto c = visitor(3.14f); // `c` is now "unhandled type".
constexpr decltype(auto) makeVisitor(CallableTs &&...Callables)
Returns an opaquely-typed Callable object whose operator() overload set is the sum of the operator() ...
Definition: STLExtras.h:1530

Example of making a visitor with a lambda which captures a move-only type:

std::unique_ptr<FooHandler> FH = /* ... */;
auto visitor = makeVisitor(
[FH{std::move(FH)}](Foo F) { return FH->handle(F); },
[](int i) { return i; },
[](std::string s) { return atoi(s); });
#define F(x, y, z)
Definition: MD5.cpp:55

Definition at line 1530 of file STLExtras.h.

◆ map_iterator()

template<class ItTy , class FuncTy >
mapped_iterator< ItTy, FuncTy > llvm::map_iterator ( ItTy  I,
FuncTy  F 
)
inline

◆ map_range()

template<class ContainerTy , class FuncTy >
auto llvm::map_range ( ContainerTy &&  C,
FuncTy  F 
)

◆ map_to_vector() [1/2]

template<unsigned Size, class ContainerTy , class FuncTy >
auto llvm::map_to_vector ( ContainerTy &&  C,
FuncTy &&  F 
)

Map a range to a SmallVector with element types deduced from the mapping.

Definition at line 24 of file SmallVectorExtras.h.

References llvm::CallingConv::C, F, and map_range().

◆ map_to_vector() [2/2]

template<class ContainerTy , class FuncTy >
auto llvm::map_to_vector ( ContainerTy &&  C,
FuncTy &&  F 
)

Definition at line 29 of file SmallVectorExtras.h.

References llvm::CallingConv::C, F, map_range(), and to_vector().

◆ MapMetadata() [1/2]

MDNode * llvm::MapMetadata ( const MDNode MD,
ValueToValueMapTy VM,
RemapFlags  Flags = RF_None,
ValueMapTypeRemapper TypeMapper = nullptr,
ValueMaterializer Materializer = nullptr 
)
inline

Version of MapMetadata with type safety for MDNode.

Definition at line 249 of file ValueMapper.h.

References llvm::ValueMapper::mapMDNode().

◆ MapMetadata() [2/2]

Metadata * llvm::MapMetadata ( const Metadata MD,
ValueToValueMapTy VM,
RemapFlags  Flags = RF_None,
ValueMapTypeRemapper TypeMapper = nullptr,
ValueMaterializer Materializer = nullptr 
)
inline

Lookup or compute a mapping for a piece of metadata.

Compute and memoize a mapping for MD.

  1. If MD is mapped, return it.
  2. Else if RF_NoModuleLevelChanges or MD is an MDString, return MD.
  3. Else if MD is a ConstantAsMetadata, call MapValue() and re-wrap its return (returning nullptr on nullptr).
  4. Else, MD is an MDNode. These are remapped, along with their transitive operands. Distinct nodes are duplicated or moved depending on RF_MoveDistinctNodes. Uniqued nodes are remapped like constants.
Note
LocalAsMetadata is completely unsupported by MapMetadata. Instead, use MapValue() with its wrapping MetadataAsValue instance.

Definition at line 241 of file ValueMapper.h.

References llvm::ValueMapper::mapMetadata().

Referenced by CloneFunctionInto(), and CloneModule().

◆ MapValue() [1/2]

Constant * llvm::MapValue ( const Constant V,
ValueToValueMapTy VM,
RemapFlags  Flags = RF_None,
ValueMapTypeRemapper TypeMapper = nullptr,
ValueMaterializer Materializer = nullptr 
)
inline

Version of MapValue with type safety for Constant.

Definition at line 307 of file ValueMapper.h.

References llvm::ValueMapper::mapConstant().

◆ MapValue() [2/2]

Value * llvm::MapValue ( const Value V,
ValueToValueMapTy VM,
RemapFlags  Flags = RF_None,
ValueMapTypeRemapper TypeMapper = nullptr,
ValueMaterializer Materializer = nullptr 
)
inline

Look up or compute a value in the value map.

Return a mapped value for a function-local value (Argument, Instruction, BasicBlock), or compute and memoize a value for a Constant.

  1. If V is in VM, return the result.
  2. Else if V can be materialized with Materializer, do so, memoize it in VM, and return it.
  3. Else if V is a function-local value, return nullptr.
  4. Else if V is a GlobalValue, return nullptr or V depending on RF_NullMapMissingGlobalValues.
  5. Else if V is a MetadataAsValue wrapping a LocalAsMetadata, recurse on the local SSA value, and return nullptr or "metadata !{}" on missing depending on RF_IgnoreMissingValues.
  6. Else if V is a MetadataAsValue, rewrap the return of MapMetadata().
  7. Else, compute the equivalent constant, and return it.

Definition at line 219 of file ValueMapper.h.

References llvm::ValueMapper::mapValue().

Referenced by CloneAndPruneIntoFromInst(), CloneFunctionInto(), and CloneModule().

◆ mapWindowsError()

std::error_code llvm::mapWindowsError ( unsigned  EV)

◆ maskContainsAllOneOrUndef()

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

That is, return true if at least one lane can be assumed active.

Definition at line 1015 of file VectorUtils.cpp.

References assert(), and I.

◆ MaskedValueIsZero()

bool llvm::MaskedValueIsZero ( const Value V,
const APInt Mask,
const SimplifyQuery DL,
unsigned  Depth = 0 
)

Return true if 'V & Mask' is known to be zero.

We use this predicate to simplify operations downstream. Mask is known to be zero for bits that V cannot have.

This function is defined on values with integer type, values with pointer type, and vectors of integers. In the case where V is a vector, the mask, known zero, and known one values are the same width as the vector element, and the bit is set only if it is true for all of the elements in the vector.

Definition at line 311 of file ValueTracking.cpp.

References computeKnownBits(), Depth, and llvm::KnownBits::Zero.

Referenced by llvm::slpvectorizer::BoUpSLP::computeMinimumValueSizes(), getAlternateBinop(), llvm::InstCombiner::MaskedValueIsZero(), llvm::AArch64TargetLowering::shouldSinkOperands(), simplifyOrInst(), and simplifyUnaryIntrinsic().

◆ maskIsAllOneOrUndef()

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

That is, return true if all lanes can be assumed active.

Definition at line 989 of file VectorUtils.cpp.

References assert(), and I.

◆ maskIsAllZeroOrUndef()

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

That is, return true if all lanes can be assumed inactive.

Definition at line 963 of file VectorUtils.cpp.

References assert(), and I.

Referenced by simplifyIntrinsic().

◆ maskLeadingOnes()

template<typename T >
T llvm::maskLeadingOnes ( unsigned  N)

Create a bitmask with the N left-most bits set to 1, and all other bits set to 0.

Only unsigned types are allowed.

Definition at line 74 of file MathExtras.h.

References N.

◆ maskLeadingZeros()

template<typename T >
T llvm::maskLeadingZeros ( unsigned  N)

Create a bitmask with the N left-most bits set to 0, and all other bits set to 1.

Only unsigned types are allowed.

Definition at line 86 of file MathExtras.h.

References N.

◆ maskTrailingOnes()

template<typename T >
T llvm::maskTrailingOnes ( unsigned  N)

Create a bitmask with the N right-most bits set to 1, and all other bits set to 0.

Only unsigned types are allowed.

Definition at line 65 of file MathExtras.h.

References assert(), N, and T.

Referenced by DecodeSignedOperand().

◆ maskTrailingZeros()

template<typename T >
T llvm::maskTrailingZeros ( unsigned  N)

Create a bitmask with the N right-most bits set to 0, and all other bits set to 1.

Only unsigned types are allowed.

Definition at line 80 of file MathExtras.h.

References N.

◆ matchBroadcastSize()

bool llvm::matchBroadcastSize ( const X86FoldTableEntry Entry,
unsigned  BroadcastBits 
)

◆ matchDecomposedSelectPattern()

SelectPatternResult llvm::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.

Definition at line 8383 of file ValueTracking.cpp.

References llvm::CallingConv::C, Depth, llvm::Instruction::getFastMathFlags(), llvm::User::getOperand(), llvm::CmpInst::getPredicate(), llvm::Value::getType(), llvm::CmpInst::isEquality(), LHS, lookThroughCast(), RHS, llvm::FastMathFlags::setNoSignedZeros(), SPF_UNKNOWN, and SPNB_NA.

Referenced by matchSelectPattern(), and simplifySelectWithICmpCond().

◆ MATCHER() [1/2]

llvm::MATCHER ( Failed  ,
""   
)

Definition at line 195 of file Error.h.

◆ MATCHER() [2/2]

llvm::MATCHER ( Succeeded  ,
""   
)

Definition at line 194 of file Error.h.

◆ matchSelectPattern() [1/2]

SelectPatternResult llvm::matchSelectPattern ( const Value V,
const Value *&  LHS,
const Value *&  RHS 
)
inline

Definition at line 1114 of file ValueTracking.h.

References LHS, matchSelectPattern(), and RHS.

◆ matchSelectPattern() [2/2]

SelectPatternResult llvm::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.

For ABS/NABS, LHS will be set to the input to the abs idiom. RHS will be the negation instruction from the idiom.

If CastOp is not nullptr, also match MIN/MAX idioms where the type does not match that of the original select. If this is the case, the cast operation (one of Trunc,SExt,Zext) that must be done to transform the type of LHS and RHS into the type of V is returned in CastOp.

For example: %1 = icmp slt i32 a, i32 4 %2 = sext i32 a to i64 %3 = select i1 %1, i64 %2, i64 4

-> LHS = a, RHS = i32 4, *CastOp = Instruction::SExt

Definition at line 8364 of file ValueTracking.cpp.

References Depth, LHS, matchDecomposedSelectPattern(), MaxAnalysisRecursionDepth, RHS, SPF_UNKNOWN, and SPNB_NA.

Referenced by canConvertToMinOrMaxIntrinsic(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), llvm::ARMTTIImpl::getCmpSelInstrCost(), getRangeForSelectPattern(), llvm::RecurrenceDescriptor::getReductionOpChain(), isSSATMinMaxPattern(), matchMinMaxOfMinMax(), matchSelectPattern(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitICmpInst(), and llvm::InstCombinerImpl::visitTrunc().

◆ matchSimpleRecurrence() [1/2]

bool llvm::matchSimpleRecurrence ( const BinaryOperator I,
PHINode *&  P,
Value *&  Start,
Value *&  Step 
)

Analogous to the above, but starting from the binary operator.

Definition at line 8565 of file ValueTracking.cpp.

References I, matchSimpleRecurrence(), and P.

◆ matchSimpleRecurrence() [2/2]

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

A first order recurrence is a formula with the form: X_n = f(X_(n-1))

A couple of notes on subtleties in that definition:

  • The Step does not have to be loop invariant. In math terms, it can be a free variable. We allow recurrences with both constant and variable coefficients. Callers may wish to filter cases where Step does not dominate P.
  • For non-commutative operators, we will match both forms. This results in some odd recurrence structures. Callers may wish to filter out recurrences where the phi is not the LHS of the returned operator.
  • Because of the structure matched, the caller can assume as a post condition of the match the presence of a Loop with P's parent as it's header except in unreachable code. (Dominance decays in unreachable code.)

NOTE: This is intentional simple. If you want the ability to analyze non-trivial loop conditons, see ScalarEvolution instead.

Definition at line 8508 of file ValueTracking.cpp.

References P.

Referenced by canFoldTermCondOfLoop(), computeKnownBitsFromOperator(), foldDependentIVs(), getInvertibleOperands(), isNonZeroRecurrence(), isPowerOfTwoRecurrence(), matchSimpleRecurrence(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitFMul(), and llvm::InstCombinerImpl::visitOr().

◆ matchUnaryPredicate()

bool llvm::matchUnaryPredicate ( const MachineRegisterInfo MRI,
Register  Reg,
std::function< bool(const Constant *ConstVal)>  Match,
bool  AllowUndefs = false 
)

◆ max()

GCNRegPressure llvm::max ( const GCNRegPressure P1,
const GCNRegPressure P2 
)
inline

◆ max_element() [1/2]

template<typename R >
auto llvm::max_element ( R &&  Range)

◆ max_element() [2/2]

template<typename R , typename Compare >
auto llvm::max_element ( R &&  Range,
Compare  C 
)

Definition at line 1990 of file STLExtras.h.

References adl_begin(), adl_end(), and llvm::CallingConv::C.

◆ maximum()

LLVM_READONLY APFloat llvm::maximum ( const APFloat A,
const APFloat B 
)
inline

Implements IEEE 754-2019 maximum semantics.

Returns the larger of 2 arguments, propagating NaNs and treating -0 as less than +0.

Definition at line 1436 of file APFloat.h.

References A, and B.

Referenced by ConstantFoldFPBinOp(), llvm::SelectionDAG::foldConstantFPMath(), and llvm::InstCombinerImpl::visitCallInst().

◆ maxIntN()

int64_t llvm::maxIntN ( int64_t  N)
inline

Gets the maximum value for a N-bit signed integer.

Definition at line 219 of file MathExtras.h.

References assert(), and N.

Referenced by convertStrToInt(), extractBitsForFixup(), isIntN(), llvm::LegalizerHelper::narrowScalarFLDEXP(), reportOutOfRangeError(), and adjust::signed_width().

◆ maxnum()

LLVM_READONLY APFloat llvm::maxnum ( const APFloat A,
const APFloat B 
)
inline

Implements IEEE-754 2019 maximumNumber semantics.

Returns the larger of the 2 arguments if both are not NaN. If either argument is a NaN, returns the other argument. +0 is treated as ordered greater than -0.

Definition at line 1410 of file APFloat.h.

References A, and B.

Referenced by ConstantFoldFPBinOp(), fmed3AMDGCN(), llvm::SelectionDAG::foldConstantFPMath(), and llvm::InstCombinerImpl::visitCallInst().

◆ maxUIntN()

uint64_t llvm::maxUIntN ( uint64_t  N)
inline

◆ maybeMarkSanitizerLibraryCallNoBuiltin()

void llvm::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.

To be used by sanitizers that intend to intercept string functions and want to avoid converting them to target specific instructions.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 4040 of file Local.cpp.

References llvm::CallBase::addFnAttr(), F, llvm::CallBase::getCalledFunction(), llvm::TargetLibraryInfo::getLibFunc(), and llvm::TargetLibraryInfo::hasOptimizedCodeGen().

◆ mayBeOldLoopAttachmentTag()

bool llvm::mayBeOldLoopAttachmentTag ( StringRef  Name)
inline

Check whether a string looks like an old loop attachment tag.

Definition at line 93 of file AutoUpgrade.h.

References Name.

◆ mayContainIrreducibleControl()

bool llvm::mayContainIrreducibleControl ( const Function F,
const LoopInfo LI 
)

◆ mayHaveMemprofSummary()

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

Referenced by computeFunctionSummary().

◆ mayHaveNonDefUseDependency()

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

  • Memory dependence arises for example if the instruction reads from memory or may produce effects or undefined behaviour. Memory dependent instructions generally cannot be reorderd with respect to other memory dependent instructions.
  • Control dependence arises for example if the instruction may fault if lifted above a throwing call or infinite loop.

Definition at line 6633 of file ValueTracking.cpp.

References I, isGuaranteedToTransferExecutionToSuccessor(), and isSafeToSpeculativelyExecute().

Referenced by areAllOperandsNonInsts().

◆ mayHaveValueProfileOfKind()

MDNode * llvm::mayHaveValueProfileOfKind ( const Instruction Inst,
InstrProfValueKind  ValueKind 
)

◆ mayOptimizeThumb2Instruction()

static bool llvm::mayOptimizeThumb2Instruction ( const MachineInstr MI)
static

Definition at line 29 of file ARMBasicBlockInfo.cpp.

References MI.

Referenced by llvm::ARMBasicBlockUtils::computeBlockSize().

◆ maySafelyIgnoreMask()

bool llvm::maySafelyIgnoreMask ( SDValue  Op)

Definition at line 85 of file VECustomDAG.cpp.

References getVVPOpcode().

Referenced by llvm::VETargetLowering::legalizePackedAVL().

◆ MCLOHDirectiveName()

static StringRef llvm::MCLOHDirectiveName ( )
inlinestatic

Definition at line 44 of file MCLinkerOptimizationHint.h.

◆ MCLOHIdToName()

static StringRef llvm::MCLOHIdToName ( MCLOHType  Kind)
inlinestatic

Definition at line 67 of file MCLinkerOptimizationHint.h.

References MCLOHCaseIdToName.

◆ MCLOHIdToNbArgs()

static int llvm::MCLOHIdToNbArgs ( MCLOHType  Kind)
inlinestatic

◆ MCLOHNameToId()

static int llvm::MCLOHNameToId ( StringRef  Name)
inlinestatic

Definition at line 52 of file MCLinkerOptimizationHint.h.

References MCLOHCaseNameToId, and Name.

◆ MD5Hash()

uint64_t llvm::MD5Hash ( StringRef  Str)
inline

Helper to compute and return lower 64 bits of the given string's MD5 hash.

Definition at line 109 of file MD5.h.

References llvm::MD5::final(), and llvm::MD5::update().

◆ MergeBasicBlockIntoOnlyPred()

void llvm::MergeBasicBlockIntoOnlyPred ( BasicBlock BB,
DomTreeUpdater DTU = nullptr 
)

BB is a block with one predecessor and its predecessor is known to have one successor (BB!).

Eliminate the edge between them, moving the instructions in the predecessor into BB. This deletes the predecessor block.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 770 of file Local.cpp.

References llvm::DomTreeUpdater::applyUpdatesPermissive(), assert(), llvm::BasicBlock::begin(), llvm::SmallPtrSetImplBase::clear(), llvm::DomTreeUpdater::deleteBB(), llvm::Constant::destroyConstant(), llvm::BasicBlock::eraseFromParent(), llvm::Instruction::eraseFromParent(), llvm::BlockAddress::get(), llvm::PoisonValue::get(), llvm::BasicBlock::getContext(), llvm::Value::getContext(), llvm::Type::getInt32Ty(), llvm::ConstantExpr::getIntToPtr(), llvm::BasicBlock::getParent(), llvm::BasicBlock::getSinglePredecessor(), llvm::BasicBlock::getTerminator(), llvm::Value::getType(), llvm::BasicBlock::hasAddressTaken(), llvm::DomTreeUpdater::hasDomTree(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::BasicBlock::isEntryBlock(), llvm::BasicBlock::moveAfter(), pred_size(), predecessors(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::DomTreeUpdater::recalculate(), llvm::Value::replaceAllUsesWith(), llvm::SmallVectorImpl< T >::reserve(), llvm::SmallVectorBase< Size_T >::size(), llvm::BasicBlock::size(), and llvm::BasicBlock::splice().

Referenced by llvm::JumpThreadingPass::maybeMergeBasicBlockIntoOnlyPred().

◆ MergeBlockIntoPredecessor()

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

The return value indicates success or failure. By default do not merge blocks if BB's predecessor has multiple successors. If PredecessorWithTwoSuccessors = true, the blocks can only be merged if BB's Pred has a branch to BB and to AnotherBB, and BB has a single successor Sing. In this case the branch will be updated with Sing instead of BB, and BB will still be merged into its predecessor and removed. If DT is not nullptr, update it directly; in that case, DTU must be nullptr.

Definition at line 180 of file BasicBlockUtils.cpp.

References llvm::DomTreeUpdater::applyUpdates(), assert(), llvm::BasicBlock::back(), llvm::BasicBlock::begin(), llvm::CallingConv::C, llvm::DomTreeNodeBase< NodeT >::children(), llvm::SmallPtrSetImplBase::clear(), llvm::SmallPtrSetImpl< PtrType >::contains(), dbgs(), DeleteDeadBlock(), llvm::MemorySSA::End, llvm::BasicBlock::end(), llvm::Instruction::eraseFromParent(), llvm::DominatorTreeBase< NodeT, IsPostDom >::eraseNode(), FoldSingleEntryPHINodes(), llvm::BasicBlock::front(), llvm::BasicBlock::getContext(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::MemorySSA::getMemoryAccess(), llvm::MemorySSAUpdater::getMemorySSA(), llvm::Value::getName(), llvm::DominatorTreeBase< NodeT, IsPostDom >::getNode(), llvm::BranchInst::getSuccessor(), llvm::BasicBlock::getTerminator(), llvm::BasicBlock::getUniquePredecessor(), llvm::BasicBlock::getUniqueSuccessor(), llvm::BasicBlock::hasAddressTaken(), llvm::Value::hasName(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::MemoryDependenceResults::invalidateCachedPredecessors(), is_contained(), llvm::Instruction::isSpecialTerminator(), llvm::BranchInst::isUnconditional(), LLVM_DEBUG, llvm::Instruction::mayHaveSideEffects(), llvm::MemorySSAUpdater::moveAllAfterMergeBlocks(), llvm::Instruction::moveBeforePreserving(), llvm::MemorySSAUpdater::moveToPlace(), llvm::BasicBlock::phis(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::LoopInfoBase< BlockT, LoopT >::removeBlock(), llvm::Value::replaceAllUsesWith(), llvm::BranchInst::setSuccessor(), llvm::BasicBlock::splice(), succ_begin(), succ_empty(), succ_end(), succ_size(), successors(), llvm::Value::takeName(), and to_vector().

Referenced by FoldCondBranchOnValueKnownInPredecessorImpl(), mergeBlocksIntoPredecessors(), MergeBlockSuccessorsIntoGivenBlocks(), UnrollLoop(), and UnrollRuntimeLoopRemainder().

◆ MergeBlockSuccessorsIntoGivenBlocks()

bool llvm::MergeBlockSuccessorsIntoGivenBlocks ( SmallPtrSetImpl< BasicBlock * > &  MergeBlocks,
Loop L = nullptr,
DomTreeUpdater DTU = nullptr,
LoopInfo LI = nullptr 
)

Merge block(s) sucessors, if possible.

Return true if at least two of the blocks were merged together. In order to merge, each block must be terminated by an unconditional branch. If L is provided, then the blocks merged into their predecessors must be in L. In addition, This utility calls on another utility: MergeBlockIntoPredecessor. Blocks are successfully merged when the call to MergeBlockIntoPredecessor returns true.

Definition at line 339 of file BasicBlockUtils.cpp.

References assert(), llvm::SmallPtrSetImpl< PtrType >::begin(), llvm::SmallPtrSetImplBase::empty(), llvm::SmallPtrSetImpl< PtrType >::erase(), llvm::BasicBlock::getSingleSuccessor(), llvm::BasicBlock::getUniquePredecessor(), and MergeBlockIntoPredecessor().

Referenced by UnrollAndJamLoop().

◆ MergeResult()

sampleprof_error llvm::MergeResult ( sampleprof_error Accumulator,
sampleprof_error  Result 
)
inline

◆ mi_bundle_ops()

iterator_range< MIBundleOperands > llvm::mi_bundle_ops ( MachineInstr MI)
inline

Definition at line 210 of file MachineInstrBundle.h.

References llvm::MIBundleOperands::end(), make_range(), and MI.

◆ microsoftDemangle()

char * llvm::microsoftDemangle ( 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.

Returns a pointer to the start of a null-terminated demangled string on success, or nullptr on error. If n_read is non-null and demangling was successful, it receives how many bytes of the input string were consumed. status receives one of the demangle_ enum entries above if it's not nullptr. Flags controls various details of the demangled representation.

Definition at line 2400 of file MicrosoftDemangle.cpp.

References D, demangle_invalid_mangled_name, demangle_success, MSDF_DumpBackrefs, MSDF_NoAccessSpecifier, MSDF_NoCallingConvention, MSDF_NoMemberType, MSDF_NoReturnType, MSDF_NoVariableType, Name, llvm::ms_demangle::OF_Default, llvm::ms_demangle::OF_NoAccessSpecifier, llvm::ms_demangle::OF_NoCallingConvention, llvm::ms_demangle::OF_NoMemberType, llvm::ms_demangle::OF_NoReturnType, llvm::ms_demangle::OF_NoVariableType, and llvm::ms_demangle::SymbolNode::output().

Referenced by demangle(), and llvm::symbolize::LLVMSymbolizer::DemangleName().

◆ mimm2Val()

static uint64_t llvm::mimm2Val ( uint64_t  Val)
inlinestatic

mimm2Val - Convert a target MImm immediate to an integer immediate value.

Definition at line 367 of file VE.h.

Referenced by llvm::VEInstrInfo::foldImmediate().

◆ min_element() [1/2]

template<typename R >
auto llvm::min_element ( R &&  Range)

Definition at line 1978 of file STLExtras.h.

References adl_begin(), and adl_end().

◆ min_element() [2/2]

template<typename R , typename Compare >
auto llvm::min_element ( R &&  Range,
Compare  C 
)

Definition at line 1982 of file STLExtras.h.

References adl_begin(), adl_end(), and llvm::CallingConv::C.

◆ MinAlign()

constexpr uint64_t llvm::MinAlign ( uint64_t  A,
uint64_t  B 
)
inlineconstexpr

◆ minimum()

LLVM_READONLY APFloat llvm::minimum ( const APFloat A,
const APFloat B 
)
inline

Implements IEEE 754-2019 minimum semantics.

Returns the smaller of 2 arguments, propagating NaNs and treating -0 as less than +0.

Definition at line 1423 of file APFloat.h.

References A, and B.

Referenced by ConstantFoldFPBinOp(), llvm::SelectionDAG::foldConstantFPMath(), and llvm::InstCombinerImpl::visitCallInst().

◆ minIntN()

int64_t llvm::minIntN ( int64_t  N)
inline

Gets the minimum value for a N-bit signed integer.

Definition at line 212 of file MathExtras.h.

References assert(), and N.

Referenced by extractBitsForFixup(), isIntN(), llvm::LegalizerHelper::narrowScalarFLDEXP(), reportOutOfRangeError(), and adjust::signed_width().

◆ minnum()

LLVM_READONLY APFloat llvm::minnum ( const APFloat A,
const APFloat B 
)
inline

Implements IEEE-754 2019 minimumNumber semantics.

Returns the smaller of the 2 arguments if both are not NaN. If either argument is a NaN, returns the other argument. -0 is treated as ordered less than +0.

Definition at line 1396 of file APFloat.h.

References A, and B.

Referenced by ConstantFoldFPBinOp(), llvm::SelectionDAG::foldConstantFPMath(), and llvm::InstCombinerImpl::visitCallInst().

◆ move()

template<typename R , typename OutputIt >
OutputIt llvm::move ( R &&  Range,
OutputIt  Out 
)

◆ moveInstructionsToTheBeginning()

void llvm::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.

Definition at line 424 of file CodeMoverUtils.cpp.

References drop_begin(), llvm::BasicBlock::getFirstNonPHIOrDbg(), I, isSafeToMoveBefore(), make_early_inc_range(), and reverse().

◆ moveInstructionsToTheEnd()

void llvm::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.

Definition at line 437 of file CodeMoverUtils.cpp.

References llvm::BasicBlock::front(), llvm::BasicBlock::getTerminator(), I, isSafeToMoveBefore(), and llvm::BasicBlock::size().

◆ MulOverflow()

template<typename T >
std::enable_if_t< std::is_signed_v< T >, T > llvm::MulOverflow ( T  X,
T  Y,
T Result 
)

Multiply two signed integers, computing the two's complement truncated result, returning true if an overflow ocurred.

Definition at line 623 of file MathExtras.h.

References X, and Y.

Referenced by multiplyWithOverflow(), llvm::ConstraintSystem::negateOrEqual(), and llvm::InstructionCost::operator*=().

◆ mustExecuteUBIfPoisonOnPathTo()

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

Return true if undefined behavior would provably be executed on the path to OnPathTo if Root produced a posion result.

Note that this doesn't say anything about whether OnPathTo is actually executed or whether Root is actually poison. This can be used to assess whether a new use of Root can be added at a location which is control equivalent with OnPathTo (such as immediately before it) without introducing UB which didn't previously exist. Note that a false result conveys no information.

Definition at line 7337 of file ValueTracking.cpp.

References any_of(), llvm::DominatorTree::dominates(), llvm::SmallVectorBase< Size_T >::empty(), I, llvm::SmallSet< T, N, C >::insert(), mustTriggerUB(), llvm::SmallVectorImpl< T >::pop_back_val(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by canFoldTermCondOfLoop(), and FindLoopCounter().

◆ mustSuppressSpeculation()

bool llvm::mustSuppressSpeculation ( const LoadInst LI)

Return true if speculation of the given load must be suppressed to avoid ordering or interfering with an active sanitizer.

If not suppressed, dereferenceability and alignment must be proven separately. Note: This is only needed for raw reasoning; if you use the interface below (isSafeToSpeculativelyExecute), this is handled internally.

Definition at line 6513 of file ValueTracking.cpp.

References F, llvm::Instruction::getFunction(), and llvm::LoadInst::isUnordered().

Referenced by canWidenLoad(), and isSafeToSpeculativelyExecuteWithOpcode().

◆ mustTriggerUB()

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

Definition at line 7618 of file ValueTracking.cpp.

References llvm::SmallPtrSetImpl< PtrType >::count(), handleGuaranteedNonPoisonOps(), and I.

Referenced by mustExecuteUBIfPoisonOnPathTo(), and programUndefinedIfUndefOrPoison().

◆ MutableArrayRef() [1/7]

template<class T , unsigned N>
llvm::MutableArrayRef ( SmallVector< T, N > &  Vec) -> MutableArrayRef< T >

◆ MutableArrayRef() [2/7]

template<class T >
llvm::MutableArrayRef ( SmallVectorImpl< T > &  Vec) -> MutableArrayRef< T >

Deduction guide to construct a MutableArrayRef from a SmallVector.

◆ MutableArrayRef() [3/7]

template<class T , std::size_t N>
llvm::MutableArrayRef ( std::array< T, N > &  Vec) -> MutableArrayRef< T >

Deduction guide to construct a MutableArrayRef from a std::array.

◆ MutableArrayRef() [4/7]

template<class T >
llvm::MutableArrayRef ( std::vector< T > &  Vec) -> MutableArrayRef< T >

Deduction guide to construct a MutableArrayRef from a std::vector.

◆ MutableArrayRef() [5/7]

template<class T >
llvm::MutableArrayRef ( T OneElt) -> MutableArrayRef< T >

◆ MutableArrayRef() [6/7]

template<class T >
llvm::MutableArrayRef ( T data,
size_t  length 
) -> MutableArrayRef< T >

Deduction guide to construct a MutableArrayRef from a pointer and length.

◆ MutableArrayRef() [7/7]

template<typename T , size_t N>
llvm::MutableArrayRef ( T(&)  Arr[N]) -> MutableArrayRef< T >

Deduction guide to construct a MutableArrayRef from a C array.

◆ nameUnamedGlobals()

bool llvm::nameUnamedGlobals ( Module M)

Rename all the anon globals in the module using a hash computed from the list of public globals in the module.

Definition at line 64 of file NameAnonGlobals.cpp.

References count().

Referenced by llvm::NameAnonGlobalPass::run().

◆ narrowShuffleMaskElts()

void llvm::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.

Mask elements that are less than 0 (sentinel values) are repeated in the output mask.

Example with Scale = 4: <4 x i32> <3, 2, 0, -1> --> <16 x i8> <12, 13, 14, 15, 8, 9, 10, 11, 0, 1, 2, 3, -1, -1, -1, -1>

This is the reverse process of widening shuffle mask elements, but it always succeeds because the indexes can always be multiplied (scaled up) to map to narrower vector elements.

Definition at line 347 of file VectorUtils.cpp.

References assert(), llvm::SmallVectorImpl< T >::assign(), llvm::SmallVectorImpl< T >::clear(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by combineExtractWithShuffle(), combineX86ShuffleChain(), getFauxShuffleMask(), lowerShuffleAsLanePermuteAndPermute(), lowerV4I64Shuffle(), lowerV4X128Shuffle(), lowerV8I64Shuffle(), matchUnaryPermuteShuffle(), scaleShuffleElements(), truncateVectorWithPACK(), and llvm::InstCombinerImpl::visitShuffleVectorInst().

◆ needsComdatForCounter()

bool llvm::needsComdatForCounter ( const GlobalObject GV,
const Module M 
)

Check if we can use Comdat for profile variables.

This will eliminate the duplicated profile variables for Comdat functions.

Definition at line 1376 of file InstrProf.cpp.

References llvm::GlobalValue::AvailableExternallyLinkage, llvm::GlobalValue::ExternalWeakLinkage, llvm::GlobalValue::getLinkage(), llvm::GlobalObject::hasComdat(), and llvm::Triple::supportsCOMDAT().

Referenced by canRenameComdatFunc().

◆ needsParamAccessSummary()

bool llvm::needsParamAccessSummary ( const Module M)

◆ neg()

APFloat llvm::neg ( APFloat  X)
inline

Returns the negated value of the argument.

Definition at line 1387 of file APFloat.h.

References X.

Referenced by llvm::AMDGPUTargetLowering::combineFMinMaxLegacy(), ConstantFoldUnaryInstruction(), and llvm::TargetLowering::getNegatedExpression().

◆ next_nodbg()

template<typename IterT >
IterT llvm::next_nodbg ( IterT  It,
IterT  End,
bool  SkipPseudoOp = true 
)
inline

Increment It, then continue incrementing it while it points to a debug instruction.

A replacement for std::next.

Definition at line 1360 of file MachineBasicBlock.h.

References End, and skipDebugInstructionsForward().

Referenced by llvm::RegPressureTracker::advance(), emitSelectPseudo(), handleADRP(), INITIALIZE_PASS(), isLibCallInTailPosition(), and llvm::MachineBasicBlock::rfindPrevDebugLoc().

◆ NextPowerOf2()

constexpr uint64_t llvm::NextPowerOf2 ( uint64_t  A)
inlineconstexpr

◆ nodes()

template<class GraphType >
iterator_range< typename GraphTraits< GraphType >::nodes_iterator > llvm::nodes ( const GraphType &  G)

Definition at line 110 of file GraphTraits.h.

References G, and make_range().

◆ none_of()

template<typename R , typename UnaryPredicate >
bool llvm::none_of ( R &&  Range,
UnaryPredicate  P 
)

Provide wrappers to std::none_of which take ranges instead of having to pass begin/end explicitly.

Definition at line 1736 of file STLExtras.h.

References adl_begin(), adl_end(), and P.

Referenced by llvm::SIScheduleBlock::addPred(), llvm::RegionBase< Tr >::addSubRegion(), llvm::SIScheduleBlock::addSucc(), addToFwdRegWorklist(), llvm::X86TTIImpl::areTypesABICompatible(), llvm::PPCTTIImpl::areTypesABICompatible(), basicBlockCanReturn(), llvm::DIExpression::canonicalizeExpressionOps(), llvm::RegAllocEvictionAdvisor::canReassign(), combineConcatVectorOps(), combineX86ShufflesConstants(), llvm::EpilogueVectorizerEpilogueLoop::createEpilogueVectorizedLoopSkeleton(), dependsOnLocalPhi(), llvm::TargetLoweringBase::emitPatchPoint(), emitSCSEpilogue(), emitSCSPrologue(), llvm::TimeTraceProfiler::end(), llvm::InstCombinerImpl::foldICmpSubConstant(), foldShuffledIntrinsicOperands(), llvm::LoopVectorizationCostModel::foldTailWithEVL(), llvm::AttributeList::get(), llvm::GCNTTIImpl::getCallerAllocaCost(), llvm::X86::getFirstAddrOperandIdx(), hoistLockstepIdenticalDbgVariableRecords(), imageIntrinsicOptimizerImpl(), isAssumeWithEmptyBundle(), isPointerValueDeadOnEntryToFunction(), legalizeAndOptimizeInductions(), lowerV16I8Shuffle(), llvm::SelectionDAG::matchBinOpReduction(), llvm::ModuleSummaryIndex::propagateAttributes(), llvm::jitlink::LinkGraph::removeAbsoluteSymbol(), llvm::jitlink::LinkGraph::removeBlock(), llvm::jitlink::LinkGraph::removeExternalSymbol(), llvm::LiveRange::removeValNoIfDead(), llvm::LiveIntervals::repairIntervalsInRange(), llvm::CallGraphUpdater::replaceCallSite(), llvm::LoopVectorizationCostModel::requiresScalarEpilogue(), resolveTargetShuffleInputsAndMask(), llvm::HexagonShuffler::restrictStoreLoadOrder(), llvm::MachineInstr::setPhysRegsDeadExcept(), stashEntryDbgValues(), tryUnmergingGEPsAcrossIndirectBr(), tryWidenCondBranchToCondBranch(), llvm::AssumptionCache::updateAffectedValues(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::UpdateRootsAfterUpdate(), upgradeInstructionLoopAttachment(), and llvm::InstCombinerImpl::visitSub().

◆ nonMicrosoftDemangle()

bool llvm::nonMicrosoftDemangle ( std::string_view  MangledName,
std::string &  Result,
bool  CanHaveLeadingDot = true,
bool  ParseParams = true 
)

◆ nonStrictlyPostDominate()

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

Recursively check the predecessors of ThisBlock up to their common dominator, and see if any of them post-dominates OtherBlock.

Definition at line 449 of file CodeMoverUtils.cpp.

References assert(), llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::PostDominatorTree::dominates(), llvm::SmallVectorBase< Size_T >::empty(), llvm::DominatorTree::findNearestCommonDominator(), llvm::SmallPtrSetImpl< PtrType >::insert(), isControlFlowEquivalent(), llvm::SmallVectorTemplateBase< T, bool >::pop_back(), predecessors(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by isReachedBefore().

◆ NoPGOWarnMismatch()

cl::opt< bool > llvm::NoPGOWarnMismatch ( "no-pgo-warn-mismatch"  ,
cl::init(false)  ,
cl::Hidden  ,
cl::desc("Use this option to turn off/on " "warnings about profile cfg mismatch.")   
)

◆ NoPGOWarnMismatchComdatWeak()

cl::opt< bool > llvm::NoPGOWarnMismatchComdatWeak ( "no-pgo-warn-mismatch-comdat-weak"  ,
cl::init(true ,
cl::Hidden  ,
cl::desc("The option is used to turn on/off " "warnings about hash mismatch for comdat " "or weak functions.")   
)

◆ normalizeForPostIncUse()

const SCEV * llvm::normalizeForPostIncUse ( const SCEV S,
const PostIncLoopSet Loops,
ScalarEvolution SE,
bool  CheckInvertible = true 
)

Normalize S to be post-increment for all loops present in Loops.

Returns nullptr if the result is not invertible and CheckInvertible is true.

Definition at line 97 of file ScalarEvolutionNormalization.cpp.

References denormalizeForPostIncUse(), llvm::SCEVAddRecExpr::getLoop(), Loops, and Normalize.

Referenced by getAnyExtendConsideringPostIncUses(), and llvm::IVUsers::getExpr().

◆ normalizeForPostIncUseIf()

const SCEV * llvm::normalizeForPostIncUseIf ( const SCEV S,
NormalizePredTy  Pred,
ScalarEvolution SE 
)

Normalize S for all add recurrence sub-expressions for which Pred returns true.

Definition at line 115 of file ScalarEvolutionNormalization.cpp.

References Normalize.

Referenced by llvm::IVUsers::AddUsersIfInteresting().

◆ normalizeSpillWeight()

static float llvm::normalizeSpillWeight ( float  UseDefFreq,
unsigned  Size,
unsigned  NumInstr 
)
inlinestatic

Normalize the spill weight of a live interval.

The spill weight of a live interval is computed as:

(sum(use freq) + sum(def freq)) / (K + size)

Parameters
UseDefFreqExpected number of executed use and def instructions per function call. Derived from block frequencies.
SizeSize of live interval as returnexd by getSize()
NumInstrNumber of instructions using this live interval

Definition at line 33 of file CalcSpillWeights.h.

References llvm::SlotIndex::InstrDist, and Size.

Referenced by llvm::VirtRegAuxInfo::normalize().

◆ NoWarnSampleUnused()

cl::opt< bool > llvm::NoWarnSampleUnused ( "no-warn-sample-unused"  ,
cl::init(false)  ,
cl::Hidden  ,
cl::desc("Use this option to turn off/on warnings about function with " "samples but without debug information to use those samples. ")   
)

◆ NullPointerIsDefined()

bool llvm::NullPointerIsDefined ( const Function F,
unsigned  AS = 0 
)

◆ nulls()

raw_ostream & llvm::nulls ( )

This returns a reference to a raw_ostream which simply discards output.

nulls() - This returns a reference to a raw_ostream which discards output.

Definition at line 919 of file raw_ostream.cpp.

Referenced by llvm::DWARFFormValue::dump(), llvm::MCStreamer::getCommentOS(), and LLVMParseCommandLineOptions().

◆ offsetToAlignedAddr()

uint64_t llvm::offsetToAlignedAddr ( const void *  Addr,
Align  Alignment 
)
inline

Returns the necessary adjustment for aligning Addr to Alignment bytes, rounding up.

Definition at line 203 of file Alignment.h.

References Addr, and offsetToAlignment().

Referenced by llvm::coverage::CovMapFunctionRecordV3::advanceByOne(), llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold, GrowthDelay >::Allocate(), and loadTestingFormat().

◆ offsetToAlignment()

uint64_t llvm::offsetToAlignment ( uint64_t  Value,
Align  Alignment 
)
inline

◆ onlyUsedByLifetimeMarkers()

bool llvm::onlyUsedByLifetimeMarkers ( const Value V)

Return true if the only users of this pointer are lifetime markers.

Definition at line 6504 of file ValueTracking.cpp.

References onlyUsedByLifetimeMarkersOrDroppableInstsHelper().

Referenced by isAllocaPromotable().

◆ onlyUsedByLifetimeMarkersOrDroppableInsts()

bool llvm::onlyUsedByLifetimeMarkersOrDroppableInsts ( const Value V)

Return true if the only users of this pointer are lifetime markers or droppable instructions.

Definition at line 6508 of file ValueTracking.cpp.

References onlyUsedByLifetimeMarkersOrDroppableInstsHelper().

Referenced by isAllocaPromotable().

◆ operator!=() [1/29]

bool llvm::operator!= ( Align  Lhs,
Align  Rhs 
)
inline

Definition at line 262 of file Alignment.h.

◆ operator!=() [2/29]

bool llvm::operator!= ( Align  Lhs,
MaybeAlign  Rhs 
)
inline

Definition at line 298 of file Alignment.h.

◆ operator!=() [3/29]

bool llvm::operator!= ( Align  Lhs,
uint64_t  Rhs 
)
inline

Definition at line 237 of file Alignment.h.

References ALIGN_CHECK_ISPOSITIVE, and llvm::Align::value().

◆ operator!=() [4/29]

template<typename T >
bool llvm::operator!= ( ArrayRef< T LHS,
ArrayRef< T RHS 
)
inline

Definition at line 550 of file ArrayRef.h.

References LHS, and RHS.

◆ operator!=() [5/29]

template<typename DerivedT , typename KeyT , typename ValueT , typename KeyInfoT , typename BucketT >
bool llvm::operator!= ( const DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT > &  LHS,
const DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT > &  RHS 
)

Inequality comparison for DenseMap.

Equivalent to !(LHS == RHS). See operator== for performance notes.

Definition at line 732 of file DenseMap.h.

References LHS, and RHS.

◆ operator!=() [6/29]

template<typename DerivedT , typename KeyInfoT , typename BucketT >
bool llvm::operator!= ( const DenseMapBase< DerivedT, SymbolsMapKey, MachO::Symbol *, KeyInfoT, BucketT > &  LHS,
const DenseMapBase< DerivedT, SymbolsMapKey, MachO::Symbol *, KeyInfoT, BucketT > &  RHS 
)

Definition at line 67 of file SymbolSet.h.

References LHS, and RHS.

◆ operator!=() [7/29]

bool llvm::operator!= ( const DWARFDie LHS,
const DWARFDie RHS 
)
inline

Definition at line 345 of file DWARFDie.h.

References LHS, and RHS.

◆ operator!=() [8/29]

bool llvm::operator!= ( const DWARFDie::attribute_iterator LHS,
const DWARFDie::attribute_iterator RHS 
)
inline

Definition at line 335 of file DWARFDie.h.

References LHS, and RHS.

◆ operator!=() [9/29]

bool llvm::operator!= ( const DWARFLocationExpression L,
const DWARFLocationExpression R 
)
inline

Definition at line 36 of file DWARFLocationExpression.h.

◆ operator!=() [10/29]

template<class T , class U >
bool llvm::operator!= ( const IntrusiveRefCntPtr< T > &  A,
const IntrusiveRefCntPtr< U > &  B 
)
inline

Definition at line 246 of file IntrusiveRefCntPtr.h.

References A, and B.

◆ operator!=() [11/29]

template<class T >
bool llvm::operator!= ( const IntrusiveRefCntPtr< T > &  A,
std::nullptr_t  B 
)

Definition at line 287 of file IntrusiveRefCntPtr.h.

References A, and B.

◆ operator!=() [12/29]

template<class T , class U >
bool llvm::operator!= ( const IntrusiveRefCntPtr< T > &  A,
U *  B 
)
inline

Definition at line 257 of file IntrusiveRefCntPtr.h.

References A, and B.

◆ operator!=() [13/29]

bool llvm::operator!= ( const MachineLocation LHS,
const MachineLocation RHS 
)
inline

Definition at line 52 of file MachineLocation.h.

References LHS, and RHS.

◆ operator!=() [14/29]

template<typename PtrType >
bool llvm::operator!= ( const SmallPtrSetImpl< PtrType > &  LHS,
const SmallPtrSetImpl< PtrType > &  RHS 
)

Inequality comparison for SmallPtrSet.

Equivalent to !(LHS == RHS).

Definition at line 417 of file SmallPtrSet.h.

References LHS, and RHS.

◆ operator!=() [15/29]

template<typename T , unsigned LN, unsigned RN, typename C >
bool llvm::operator!= ( const SmallSet< T, LN, C > &  LHS,
const SmallSet< T, RN, C > &  RHS 
)

Inequality comparison for SmallSet.

Equivalent to !(LHS == RHS). See operator== for performance notes.

Definition at line 279 of file SmallSet.h.

References LHS, and RHS.

◆ operator!=() [16/29]

bool llvm::operator!= ( const std::reverse_iterator< DWARFDie::iterator > &  LHS,
const std::reverse_iterator< DWARFDie::iterator > &  RHS 
)
inline

Definition at line 466 of file DWARFDie.h.

References LHS, and RHS.

◆ operator!=() [17/29]

bool llvm::operator!= ( const ValueInfo A,
const ValueInfo B 
)
inline

Definition at line 265 of file ModuleSummaryIndex.h.

References A, assert(), and B.

◆ operator!=() [18/29]

bool llvm::operator!= ( DIDerivedType::PtrAuthData  Lhs,
DIDerivedType::PtrAuthData  Rhs 
)
inline

Definition at line 1137 of file DebugInfoMetadata.h.

◆ operator!=() [19/29]

bool llvm::operator!= ( int64_t  V1,
const APSInt V2 
)
inline

Definition at line 358 of file APSInt.h.

◆ operator!=() [20/29]

bool llvm::operator!= ( MaybeAlign  Lhs,
Align  Rhs 
)
inline

Definition at line 296 of file Alignment.h.

◆ operator!=() [21/29]

bool llvm::operator!= ( MaybeAlign  Lhs,
MaybeAlign  Rhs 
)
inline

Definition at line 303 of file Alignment.h.

◆ operator!=() [22/29]

bool llvm::operator!= ( MaybeAlign  Lhs,
std::nullopt_t   
)
inline

Definition at line 306 of file Alignment.h.

◆ operator!=() [23/29]

template<typename ... PTs>
bool llvm::operator!= ( PointerUnion< PTs... >  lhs,
PointerUnion< PTs... >  rhs 
)

Definition at line 207 of file PointerUnion.h.

References llvm::PointerUnion< PTs >::getOpaqueValue().

◆ operator!=() [24/29]

template<typename T >
bool llvm::operator!= ( SmallVectorImpl< T > &  LHS,
ArrayRef< T RHS 
)
inline

Definition at line 555 of file ArrayRef.h.

References LHS, and RHS.

◆ operator!=() [25/29]

bool llvm::operator!= ( std::nullopt_t  ,
MaybeAlign  Rhs 
)
inline

Definition at line 308 of file Alignment.h.

◆ operator!=() [26/29]

template<class T >
bool llvm::operator!= ( std::nullptr_t  A,
const IntrusiveRefCntPtr< T > &  B 
)

Definition at line 282 of file IntrusiveRefCntPtr.h.

References A, and B.

◆ operator!=() [27/29]

bool llvm::operator!= ( StringRef  LHS,
StringRef  RHS 
)
inline

Definition at line 881 of file StringRef.h.

References LHS, and RHS.

◆ operator!=() [28/29]

template<class T , class U >
bool llvm::operator!= ( T A,
const IntrusiveRefCntPtr< U > &  B 
)
inline

Definition at line 267 of file IntrusiveRefCntPtr.h.

References A, and B.

◆ operator!=() [29/29]

bool llvm::operator!= ( uint64_t  V1,
const APInt V2 
)
inline

Definition at line 2043 of file APInt.h.

References operator!=().

Referenced by operator!=().

◆ operator&() [1/11]

APInt llvm::operator& ( APInt  a,
const APInt b 
)
inline

Definition at line 2053 of file APInt.h.

References operator&().

Referenced by operator&().

◆ operator&() [2/11]

APInt llvm::operator& ( APInt  a,
uint64_t  RHS 
)
inline

Definition at line 2063 of file APInt.h.

References operator&(), and RHS.

◆ operator&() [3/11]

ChangeStatus llvm::operator& ( ChangeStatus  l,
ChangeStatus  r 
)

Definition at line 192 of file Attributor.cpp.

◆ operator&() [4/11]

APInt llvm::operator& ( const APInt a,
APInt &&  b 
)
inline

Definition at line 2058 of file APInt.h.

References operator&().

◆ operator&() [5/11]

JITSymbolFlags llvm::operator& ( const JITSymbolFlags LHS,
const JITSymbolFlags::FlagNames RHS 
)
inline

Definition at line 195 of file JITSymbol.h.

References LHS, and RHS.

◆ operator&() [6/11]

KnownBits llvm::operator& ( const KnownBits LHS,
KnownBits &&  RHS 
)
inline

Definition at line 493 of file KnownBits.h.

References LHS, and RHS.

◆ operator&() [7/11]

SmallBitVector llvm::operator& ( const SmallBitVector LHS,
const SmallBitVector RHS 
)
inline

Definition at line 710 of file SmallBitVector.h.

References LHS, and RHS.

◆ operator&() [8/11]

template<unsigned ElementSize>
SparseBitVector< ElementSize > llvm::operator& ( const SparseBitVector< ElementSize > &  LHS,
const SparseBitVector< ElementSize > &  RHS 
)
inline

Definition at line 859 of file SparseBitVector.h.

References LHS, and RHS.

◆ operator&() [9/11]

FastMathFlags llvm::operator& ( FastMathFlags  LHS,
FastMathFlags  RHS 
)
inline

Definition at line 118 of file FMF.h.

References LHS, and RHS.

◆ operator&() [10/11]

KnownBits llvm::operator& ( KnownBits  LHS,
const KnownBits RHS 
)
inline

Definition at line 488 of file KnownBits.h.

References LHS, and RHS.

◆ operator&() [11/11]

APInt llvm::operator& ( uint64_t  LHS,
APInt  b 
)
inline

Definition at line 2068 of file APInt.h.

References LHS, and operator&().

◆ operator&=() [1/3]

ChangeStatus & llvm::operator&= ( ChangeStatus l,
ChangeStatus  r 
)

Definition at line 195 of file Attributor.cpp.

◆ operator&=() [2/3]

template<unsigned ElementSize>
bool llvm::operator&= ( SparseBitVector< ElementSize > &  LHS,
const SparseBitVector< ElementSize > *  RHS 
)
inline

Definition at line 841 of file SparseBitVector.h.

References LHS, and RHS.

◆ operator&=() [3/3]

template<unsigned ElementSize>
bool llvm::operator&= ( SparseBitVector< ElementSize > *  LHS,
const SparseBitVector< ElementSize > &  RHS 
)
inline

Definition at line 835 of file SparseBitVector.h.

References LHS, and RHS.

◆ operator*() [1/3]

APInt llvm::operator* ( APInt  a,
uint64_t  RHS 
)
inline

◆ operator*() [2/3]

InstructionCost llvm::operator* ( const InstructionCost LHS,
const InstructionCost RHS 
)
inline

Definition at line 266 of file InstructionCost.h.

References LHS, and RHS.

◆ operator*() [3/3]

APInt llvm::operator* ( uint64_t  LHS,
APInt  b 
)
inline

Definition at line 2170 of file APInt.h.

References LHS, and operator*().

◆ operator+() [1/9]

APInt llvm::operator+ ( APInt  a,
const APInt b 
)
inline

Definition at line 2123 of file APInt.h.

References operator+().

Referenced by operator+().

◆ operator+() [2/9]

APInt llvm::operator+ ( APInt  a,
uint64_t  RHS 
)
inline

Definition at line 2133 of file APInt.h.

References operator+(), and RHS.

◆ operator+() [3/9]

APInt llvm::operator+ ( const APInt a,
APInt &&  b 
)
inline

Definition at line 2128 of file APInt.h.

References operator+().

◆ operator+() [4/9]

Twine llvm::operator+ ( const char LHS,
const StringRef RHS 
)
inline

Additional overload to guarantee simplified codegen; this is equivalent to concat().

Definition at line 561 of file Twine.h.

References LHS, and RHS.

◆ operator+() [5/9]

GCNRegPressure llvm::operator+ ( const GCNRegPressure P1,
const GCNRegPressure P2 
)
inline

Definition at line 132 of file GCNRegPressure.h.

◆ operator+() [6/9]

InstructionCost llvm::operator+ ( const InstructionCost LHS,
const InstructionCost RHS 
)
inline

Definition at line 252 of file InstructionCost.h.

References LHS, and RHS.

◆ operator+() [7/9]

Twine llvm::operator+ ( const StringRef LHS,
const char RHS 
)
inline

Additional overload to guarantee simplified codegen; this is equivalent to concat().

Definition at line 568 of file Twine.h.

References LHS, and RHS.

◆ operator+() [8/9]

Twine llvm::operator+ ( const Twine LHS,
const Twine RHS 
)
inline

Definition at line 554 of file Twine.h.

References LHS, and RHS.

◆ operator+() [9/9]

APInt llvm::operator+ ( uint64_t  LHS,
APInt  b 
)
inline

Definition at line 2138 of file APInt.h.

References LHS, and operator+().

◆ operator+=()

std::string & llvm::operator+= ( std::string &  buffer,
StringRef  string 
)
inline

Definition at line 899 of file StringRef.h.

References size().

◆ operator-() [1/8]

APInt llvm::operator- ( APInt  a,
const APInt b 
)
inline

Definition at line 2143 of file APInt.h.

References operator-().

◆ operator-() [2/8]

APInt llvm::operator- ( APInt  a,
uint64_t  RHS 
)
inline

Definition at line 2154 of file APInt.h.

References operator-(), and RHS.

◆ operator-() [3/8]

APInt llvm::operator- ( APInt  v)
inline

Definition at line 2118 of file APInt.h.

References operator-().

Referenced by operator-().

◆ operator-() [4/8]

APInt llvm::operator- ( const APInt a,
APInt &&  b 
)
inline

Definition at line 2148 of file APInt.h.

References operator-().

◆ operator-() [5/8]

GCNRegPressure llvm::operator- ( const GCNRegPressure P1,
const GCNRegPressure P2 
)
inline

Definition at line 139 of file GCNRegPressure.h.

◆ operator-() [6/8]

InstructionCost llvm::operator- ( const InstructionCost LHS,
const InstructionCost RHS 
)
inline

Definition at line 259 of file InstructionCost.h.

References LHS, and RHS.

◆ operator-() [7/8]

template<unsigned ElementSize>
SparseBitVector< ElementSize > llvm::operator- ( const SparseBitVector< ElementSize > &  LHS,
const SparseBitVector< ElementSize > &  RHS 
)
inline

Definition at line 868 of file SparseBitVector.h.

References LHS, and RHS.

◆ operator-() [8/8]

APInt llvm::operator- ( uint64_t  LHS,
APInt  b 
)
inline

Definition at line 2159 of file APInt.h.

References LHS, and operator-().

◆ operator/()

InstructionCost llvm::operator/ ( const InstructionCost LHS,
const InstructionCost RHS 
)
inline

Definition at line 273 of file InstructionCost.h.

References LHS, and RHS.

◆ operator<() [1/20]

bool llvm::operator< ( Align  Lhs,
Align  Rhs 
)
inline

Definition at line 271 of file Alignment.h.

◆ operator<() [2/20]

bool llvm::operator< ( Align  Lhs,
MaybeAlign  Rhs 
)
delete

◆ operator<() [3/20]

bool llvm::operator< ( Align  Lhs,
uint64_t  Rhs 
)
inline

Definition at line 249 of file Alignment.h.

References ALIGN_CHECK_ISPOSITIVE, and llvm::Align::value().

◆ operator<() [4/20]

bool llvm::operator< ( AtomicOrdering  ,
AtomicOrdering   
)
delete

◆ operator<() [5/20]

bool llvm::operator< ( AtomicOrderingCABI  ,
AtomicOrderingCABI   
)
delete

◆ operator<() [6/20]

bool llvm::operator< ( const DbgValueLoc A,
const DbgValueLoc B 
)
inline

Compare two fragments based on their offset.

Definition at line 282 of file DebugLocEntry.h.

◆ operator<() [7/20]

bool llvm::operator< ( const DIExpression::FragmentInfo A,
const DIExpression::FragmentInfo B 
)
inline

Definition at line 3127 of file DebugInfoMetadata.h.

References A, and B.

◆ operator<() [8/20]

bool llvm::operator< ( const DWARFAddressRange LHS,
const DWARFAddressRange RHS 
)
inline

Definition at line 75 of file DWARFAddressRange.h.

References LHS, and RHS.

◆ operator<() [9/20]

bool llvm::operator< ( const DWARFDie LHS,
const DWARFDie RHS 
)
inline

Definition at line 349 of file DWARFDie.h.

References LHS, and RHS.

◆ operator<() [10/20]

static bool llvm::operator< ( const DWARFVerifier::DieRangeInfo LHS,
const DWARFVerifier::DieRangeInfo RHS 
)
inlinestatic

Definition at line 371 of file DWARFVerifier.h.

References LHS, and RHS.

◆ operator<() [11/20]

bool llvm::operator< ( const LiveRange::Segment S,
SlotIndex  V 
)
inline

Definition at line 929 of file LiveInterval.h.

References llvm::LiveRange::Segment::start.

◆ operator<() [12/20]

bool llvm::operator< ( const struct EntryValueInfo LHS,
const struct EntryValueInfo RHS 
)

◆ operator<() [13/20]

bool llvm::operator< ( const struct FrameIndexExpr LHS,
const struct FrameIndexExpr RHS 
)

◆ operator<() [14/20]

bool llvm::operator< ( const ValueInfo A,
const ValueInfo B 
)
inline

Definition at line 271 of file ModuleSummaryIndex.h.

References A, assert(), and B.

◆ operator<() [15/20]

bool llvm::operator< ( int64_t  V1,
const APSInt V2 
)
inline

◆ operator<() [16/20]

bool llvm::operator< ( MaybeAlign  Lhs,
Align  Rhs 
)
delete

◆ operator<() [17/20]

bool llvm::operator< ( MaybeAlign  Lhs,
MaybeAlign  Rhs 
)
delete

◆ operator<() [18/20]

template<typename ... PTs>
bool llvm::operator< ( PointerUnion< PTs... >  lhs,
PointerUnion< PTs... >  rhs 
)

Definition at line 212 of file PointerUnion.h.

References llvm::PointerUnion< PTs >::getOpaqueValue().

◆ operator<() [19/20]

bool llvm::operator< ( SlotIndex  V,
const LiveRange::Segment S 
)
inline

Definition at line 925 of file LiveInterval.h.

References llvm::LiveRange::Segment::start.

◆ operator<() [20/20]

bool llvm::operator< ( StringRef  LHS,
StringRef  RHS 
)
inline

Definition at line 883 of file StringRef.h.

References LHS, and RHS.

◆ operator<<() [1/146]

template<class DigitsT >
ScaledNumber< DigitsT > llvm::operator<< ( const ScaledNumber< DigitsT > &  L,
int16_t  Shift 
)

Definition at line 407 of file ScaledNumber.h.

◆ operator<<() [2/146]

llvm::raw_ostream & llvm::operator<< ( llvm::raw_ostream O,
const llvm::Annotations::Range R 
)

Definition at line 175 of file Annotations.cpp.

References formatv().

◆ operator<<() [3/146]

llvm::raw_ostream & llvm::operator<< ( llvm::raw_ostream OS,
const GUID &  G 
)

Definition at line 192 of file DIARawSymbol.cpp.

References A, G, and OS.

◆ operator<<() [4/146]

MCStreamer & llvm::operator<< ( MCStreamer OS,
MipsABIFlagsSection ABIFlagsSection 
)

◆ operator<<() [5/146]

template<typename OStream , typename T >
std::enable_if_t<!std::is_reference_v< OStream > && std::is_base_of_v< raw_ostream, OStream >, OStream && > llvm::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.

Definition at line 1 of file raw_ostream.h.

◆ operator<<() [6/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const AAPointerInfo::Access Acc 
)

◆ operator<<() [7/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const LoopNest LN 
)

◆ operator<<() [8/146]

raw_ostream & llvm::operator<< ( raw_ostream O,
const ARMConstantPoolValue V 
)
inline

Definition at line 134 of file ARMConstantPoolValue.h.

◆ operator<<() [9/146]

template<class NodeT >
raw_ostream & llvm::operator<< ( raw_ostream O,
const DomTreeNodeBase< NodeT > *  Node 
)

Definition at line 174 of file GenericDomTree.h.

References Node::printAsOperand().

◆ operator<<() [10/146]

raw_ostream & llvm::operator<< ( raw_ostream O,
const Module M 
)
inline

An raw_ostream inserter for modules.

Definition at line 1075 of file Module.h.

◆ operator<<() [11/146]

raw_ostream & llvm::operator<< ( raw_ostream O,
FastMathFlags  FMF 
)
inline

Definition at line 123 of file FMF.h.

References llvm::FastMathFlags::print().

◆ operator<<() [12/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
AliasResult  AR 
)

◆ operator<<() [13/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
BranchProbability  Prob 
)
inline

Definition at line 200 of file BranchProbability.h.

References OS, and llvm::BranchProbability::print().

◆ operator<<() [14/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
ChangeStatus  S 
)

Helpers to ease debugging through output streams and print calls.

{

Definition at line 3675 of file Attributor.cpp.

References CHANGED, and OS.

◆ operator<<() [15/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
CmpInst::Predicate  Pred 
)

Definition at line 4666 of file Instructions.cpp.

References llvm::CmpInst::getPredicateName(), and OS.

◆ operator<<() [16/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const AbstractAttribute AA 
)

Forward declarations of output streams for debug purposes.

{

Definition at line 3725 of file Attributor.cpp.

References OS, and llvm::AbstractAttribute::print().

◆ operator<<() [17/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const AbstractState State 
)

◆ operator<<() [18/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const AddressRange R 
)

Definition at line 65 of file ExtractRanges.cpp.

References HEX64, and OS.

◆ operator<<() [19/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const AddressRanges AR 
)

Definition at line 69 of file ExtractRanges.cpp.

References I, OS, llvm::AddressRangesBase< T >::size(), and Size.

◆ operator<<() [20/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const AliasSet AS 
)
inline

Definition at line 155 of file AliasSetTracker.h.

References OS, and llvm::AliasSet::print().

◆ operator<<() [21/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const AliasSetTracker AST 
)
inline

Definition at line 263 of file AliasSetTracker.h.

References OS, and llvm::AliasSetTracker::print().

◆ operator<<() [22/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const AllocInfo AE 
)
inline

Definition at line 412 of file ModuleSummaryIndex.h.

References First, llvm::AllocInfo::MIBs, OS, and llvm::AllocInfo::Versions.

◆ operator<<() [23/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const AMDGPU::IsaInfo::TargetIDSetting  S 
)

◆ operator<<() [24/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const APFixedPoint FX 
)
inline

Definition at line 293 of file APFixedPoint.h.

References OS, and llvm::APFixedPoint::toString().

◆ operator<<() [25/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const APInt I 
)
inline

Definition at line 2113 of file APInt.h.

References I, and OS.

◆ operator<<() [26/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const APSInt I 
)
inline

Definition at line 364 of file APSInt.h.

References I, and OS.

◆ operator<<() [27/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const ArgDescriptor Arg 
)
inline

Definition at line 90 of file AMDGPUArgumentUsageInfo.h.

References OS, and llvm::ArgDescriptor::print().

◆ operator<<() [28/146]

static raw_ostream & llvm::operator<< ( raw_ostream OS,
const BitVector V 
)
inlinestatic

Definition at line 169 of file StackLifetime.h.

References Idx, and OS.

◆ operator<<() [29/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const BT::BitValue BV 
)

Definition at line 97 of file BitTracker.cpp.

◆ operator<<() [30/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const BT::RegisterCell RC 
)

Definition at line 115 of file BitTracker.cpp.

◆ operator<<() [31/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const CacheCost CC 
)

Definition at line 549 of file LoopCacheAnalysis.cpp.

References CC, and OS.

◆ operator<<() [32/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const CallsiteInfo SNI 
)
inline

◆ operator<<() [33/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const Comdat C 
)
inline

Definition at line 71 of file Comdat.h.

References llvm::CallingConv::C, and OS.

◆ operator<<() [34/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const ConstantRange CR 
)
inline

Definition at line 578 of file ConstantRange.h.

References OS, and llvm::ConstantRange::print().

◆ operator<<() [35/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const DataDependenceGraph G 
)

Definition at line 251 of file DDG.cpp.

References G, and OS.

◆ operator<<() [36/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const DbgMarker Marker 
)
inline

Definition at line 644 of file DebugProgramInstruction.h.

References OS, and llvm::DbgMarker::print().

◆ operator<<() [37/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const DbgRecord R 
)
inline

Definition at line 216 of file DebugProgramInstruction.h.

References OS.

◆ operator<<() [38/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const DDGEdge E 
)

◆ operator<<() [39/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const DDGEdge::EdgeKind  K 
)

◆ operator<<() [40/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const DDGNode N 
)

Definition at line 81 of file DDG.cpp.

References I, llvm::raw_ostream::indent(), llvm_unreachable, N, and OS.

◆ operator<<() [41/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const DDGNode::NodeKind  K 
)

◆ operator<<() [42/146]

template<typename LeafTy , typename ScalarTy >
raw_ostream & llvm::operator<< ( raw_ostream OS,
const details::FixedOrScalableQuantity< LeafTy, ScalarTy > &  PS 
)
inline

Stream operator function for FixedOrScalableQuantity.

Definition at line 406 of file TypeSize.h.

References OS, and llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::print().

◆ operator<<() [43/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const DWARFAddressRange R 
)

Definition at line 30 of file DWARFAddressRange.cpp.

References OS.

◆ operator<<() [44/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const DWARFLocationExpression Loc 
)

◆ operator<<() [45/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const EVT V 
)
inline

Definition at line 545 of file ValueTypes.h.

References OS.

◆ operator<<() [46/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const FaultMapParser FMP 
)

◆ operator<<() [47/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const FaultMapParser::FunctionFaultInfoAccessor FFI 
)

◆ operator<<() [48/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const FaultMapParser::FunctionInfoAccessor FI 
)

◆ operator<<() [49/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const GCNSchedStageID StageID 
)

◆ operator<<() [50/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const HexagonBlockRanges::IndexRange IR 
)

Definition at line 502 of file HexagonBlockRanges.cpp.

References IR, and OS.

◆ operator<<() [51/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const HexagonBlockRanges::InstrIndexMap M 
)

Definition at line 517 of file HexagonBlockRanges.cpp.

References Idx, and OS.

◆ operator<<() [52/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const HexagonBlockRanges::PrintRangeMap P 
)

Definition at line 526 of file HexagonBlockRanges.cpp.

References I, OS, P, and printReg().

◆ operator<<() [53/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const HexagonBlockRanges::RangeList RL 
)

Definition at line 510 of file HexagonBlockRanges.cpp.

References OS.

◆ operator<<() [54/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const HexNumber Value 
)

Definition at line 9 of file ScopedPrinter.cpp.

References OS, and llvm::Value::Value().

◆ operator<<() [55/146]

LLVM_ATTRIBUTE_UNUSED raw_ostream & llvm::operator<< ( raw_ostream OS,
const ILPValue Val 
)

Definition at line 1540 of file ScheduleDAGInstrs.cpp.

References OS, and llvm::ILPValue::print().

◆ operator<<() [56/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const IndexedReference R 
)

Definition at line 129 of file LoopCacheAnalysis.cpp.

References OS, and Size.

◆ operator<<() [57/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const Init I 
)
inline

Definition at line 407 of file Record.h.

References I, and OS.

◆ operator<<() [58/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const InstructionCost V 
)
inline

Definition at line 280 of file InstructionCost.h.

References OS.

◆ operator<<() [59/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const IntegerRangeState State 
)

◆ operator<<() [60/146]

template<typename base_ty , base_ty BestState, base_ty WorstState>
raw_ostream & llvm::operator<< ( raw_ostream OS,
const IntegerStateBase< base_ty, BestState, WorstState > &  S 
)

◆ operator<<() [61/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const IRPosition Pos 
)

◆ operator<<() [62/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const KnownBits Known 
)
inline

Definition at line 518 of file KnownBits.h.

References OS, and llvm::KnownBits::print().

◆ operator<<() [63/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const LiveInterval LI 
)
inline

Definition at line 918 of file LiveInterval.h.

References OS, and llvm::LiveInterval::print().

◆ operator<<() [64/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const LiveInterval::SubRange SR 
)
inline

Definition at line 912 of file LiveInterval.h.

References OS, and llvm::LiveInterval::SubRange::print().

◆ operator<<() [65/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const LivePhysRegs LR 
)
inline

Definition at line 177 of file LivePhysRegs.h.

References OS, and llvm::LivePhysRegs::print().

◆ operator<<() [66/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const LiveRange LR 
)
inline

Definition at line 680 of file LiveInterval.h.

References OS, and llvm::LiveRange::print().

◆ operator<<() [67/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const LiveRange::Segment S 
)

◆ operator<<() [68/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const LiveRangeUpdater X 
)
inline

Definition at line 987 of file LiveInterval.h.

References OS, and X.

◆ operator<<() [69/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const LLT Ty 
)
inline

Definition at line 456 of file LowLevelType.h.

References OS, and llvm::LLT::print().

◆ operator<<() [70/146]

template<class BlockT , class LoopT >
raw_ostream & llvm::operator<< ( raw_ostream OS,
const LoopBase< BlockT, LoopT > &  Loop 
)

Definition at line 512 of file GenericLoopInfo.h.

References OS, and llvm::LoopBase< BlockT, LoopT >::print().

◆ operator<<() [71/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MachineBasicBlock MBB 
)

Definition at line 115 of file MachineBasicBlock.cpp.

References MBB, OS, and llvm::MachineBasicBlock::print().

◆ operator<<() [72/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MachineConstantPoolValue V 
)
inline

Definition at line 57 of file MachineConstantPool.h.

References OS.

◆ operator<<() [73/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MachineInstr MI 
)
inline

Definition at line 2047 of file MachineInstr.h.

References MI, OS, and llvm::Pass::print().

◆ operator<<() [74/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MachineOperand MO 
)
inline

Definition at line 1041 of file MachineOperand.h.

References OS, and llvm::MachineOperand::print().

◆ operator<<() [75/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MachineTraceMetrics::Ensemble En 
)
inline

Definition at line 429 of file MachineTraceMetrics.h.

References OS, and llvm::MachineTraceMetrics::Ensemble::print().

◆ operator<<() [76/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MachineTraceMetrics::Trace Tr 
)
inline

Definition at line 423 of file MachineTraceMetrics.h.

References OS, and llvm::MachineTraceMetrics::Trace::print().

◆ operator<<() [77/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MCExpr E 
)
inline

Definition at line 138 of file MCExpr.h.

References E, and OS.

◆ operator<<() [78/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MCFixup AF 
)

◆ operator<<() [79/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MCInst MI 
)
inline

Definition at line 246 of file MCInst.h.

References MI, OS, and llvm::Pass::print().

◆ operator<<() [80/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MCLabel Label 
)
inline

Definition at line 49 of file MCLabel.h.

References OS.

◆ operator<<() [81/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MCOperand MO 
)
inline

Definition at line 241 of file MCInst.h.

References OS, and llvm::MCOperand::print().

◆ operator<<() [82/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MCParsedAsmOperand MO 
)
inline

Definition at line 100 of file MCParsedAsmOperand.h.

References OS, and llvm::MCParsedAsmOperand::print().

◆ operator<<() [83/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MCSymbol Sym 
)
inline

Definition at line 437 of file MCSymbol.h.

References OS, and Sym.

◆ operator<<() [84/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MemoryAccess MA 
)
inline

Definition at line 240 of file MemorySSA.h.

References OS, and llvm::MemoryAccess::print().

◆ operator<<() [85/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const Metadata MD 
)
inline

Definition at line 164 of file Metadata.h.

References OS, and llvm::Metadata::print().

◆ operator<<() [86/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MIBInfo MIB 
)
inline

◆ operator<<() [87/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const MVT VT 
)
inline

Definition at line 547 of file MachineValueType.h.

References OS, and llvm::MVT::print().

◆ operator<<() [88/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const object::WasmSymbol Sym 
)
inline

Definition at line 369 of file Wasm.h.

References OS, and Sym.

◆ operator<<() [89/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const PotentialConstantIntValuesState R 
)

◆ operator<<() [90/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const PotentialLLVMValuesState R 
)

◆ operator<<() [91/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const Printable P 
)
inline

Definition at line 45 of file Printable.h.

References OS, and P.

◆ operator<<() [92/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const PseudoSourceValue PSV 
)

Definition at line 1035 of file ScheduleDAGInstrs.cpp.

References OS.

◆ operator<<() [93/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const Record R 
)

Definition at line 2894 of file Record.cpp.

References assert(), llvm::ArrayRef< T >::empty(), OS, and llvm::RecordVal::print().

◆ operator<<() [94/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const RecordKeeper RK 
)

◆ operator<<() [95/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const RecordVal RV 
)
inline

Definition at line 1626 of file Record.h.

References OS, and llvm::RecordVal::print().

◆ operator<<() [96/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const RecTy Ty 
)
inline

Definition at line 104 of file Record.h.

References OS, and llvm::RecTy::print().

◆ operator<<() [97/146]

template<class Tr >
raw_ostream & llvm::operator<< ( raw_ostream OS,
const RegionNodeBase< Tr > &  Node 
)
inline

Print a RegionNode.

Definition at line 1014 of file RegionInfo.h.

References OS.

◆ operator<<() [98/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const RegisterBank RegBank 
)
inline

Definition at line 83 of file RegisterBank.h.

References OS, and llvm::RegisterBank::print().

◆ operator<<() [99/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const RegisterBankInfo::InstructionMapping InstrMapping 
)
inline

Definition at line 777 of file RegisterBankInfo.h.

References OS, and llvm::RegisterBankInfo::InstructionMapping::print().

◆ operator<<() [100/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const RegisterBankInfo::OperandsMapper OpdMapper 
)
inline

Definition at line 784 of file RegisterBankInfo.h.

References OS, and llvm::RegisterBankInfo::OperandsMapper::print().

◆ operator<<() [101/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const RegisterBankInfo::PartialMapping PartMapping 
)
inline

Definition at line 764 of file RegisterBankInfo.h.

References OS, and llvm::RegisterBankInfo::PartialMapping::print().

◆ operator<<() [102/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const RegisterBankInfo::ValueMapping ValMapping 
)
inline

Definition at line 771 of file RegisterBankInfo.h.

References OS, and llvm::RegisterBankInfo::ValueMapping::print().

◆ operator<<() [103/146]

template<class DigitsT >
raw_ostream & llvm::operator<< ( raw_ostream OS,
const ScaledNumber< DigitsT > &  X 
)

Definition at line 743 of file ScaledNumber.h.

References OS, and X.

◆ operator<<() [104/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const SCEV S 
)
inline

Definition at line 200 of file ScalarEvolution.h.

References OS, and llvm::SCEV::print().

◆ operator<<() [105/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const SCEVPredicate P 
)
inline

Definition at line 255 of file ScalarEvolution.h.

References OS, and P.

◆ operator<<() [106/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const ScheduleMetrics Sm 
)
inline

◆ operator<<() [107/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const StackLifetime::LiveRange R 
)
inline

Definition at line 178 of file StackLifetime.h.

◆ operator<<() [108/146]

template<typename T , typename = decltype(std::declval<raw_ostream &>() << std::declval<const T &>())>
raw_ostream & llvm::operator<< ( raw_ostream OS,
const std::optional< T > &  O 
)

Definition at line 779 of file raw_ostream.h.

References OS.

◆ operator<<() [109/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const Twine RHS 
)
inline

Definition at line 572 of file Twine.h.

References OS, llvm::Value::print(), and RHS.

◆ operator<<() [110/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const Type T 
)
inline

Definition at line 501 of file Type.h.

References OS.

◆ operator<<() [111/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const Value V 
)
inline

Definition at line 877 of file Value.h.

References OS.

◆ operator<<() [112/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const ValueInfo VI 
)
inline

Definition at line 252 of file ModuleSummaryIndex.h.

References OS.

◆ operator<<() [113/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const ValueLatticeElement Val 
)

◆ operator<<() [114/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const VirtRegMap VRM 
)
inline

Definition at line 204 of file VirtRegMap.h.

References OS, and llvm::VirtRegMap::print().

◆ operator<<() [115/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const VPlan Plan 
)
inline

Definition at line 3273 of file VPlan.h.

References OS, and llvm::VPlan::print().

◆ operator<<() [116/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const VPlanIngredient I 
)
inline

Definition at line 3268 of file VPlan.h.

References I, and OS.

◆ operator<<() [117/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const VPValue V 
)

Definition at line 59 of file VPlan.cpp.

References OS.

◆ operator<<() [118/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
const WebAssemblyException WE 
)

◆ operator<<() [119/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
DenormalMode  Mode 
)
inline

Definition at line 183 of file FloatingPointMode.h.

References Mode, and OS.

◆ operator<<() [120/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
FPClassTest  Mask 
)

Write a human readable form of Mask to OS.

Definition at line 86 of file FloatingPointMode.cpp.

References assert(), fcNone, Name, NoFPClassName, and OS.

◆ operator<<() [121/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
HexagonBlockRanges::IndexType  Idx 
)

◆ operator<<() [122/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
IRPosition::Kind  AP 
)

◆ operator<<() [123/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
LegacyLegalizeActions::LegacyLegalizeAction  Action 
)

◆ operator<<() [124/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
LegalizeActions::LegalizeAction  Action 
)

◆ operator<<() [125/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
LocationSize  Size 
)
inline

Definition at line 214 of file MemoryLocation.h.

References OS, and Size.

◆ operator<<() [126/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
MemoryEffects  RMRB 
)

◆ operator<<() [127/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
ModRefInfo  MR 
)

Debug print ModRefInfo.

Definition at line 426 of file AliasAnalysis.cpp.

References Mod, ModRef, NoModRef, OS, and Ref.

◆ operator<<() [128/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
RoundingMode  RM 
)
inline

Definition at line 63 of file FloatingPointMode.h.

References OS, and spell().

◆ operator<<() [129/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
ScalarEvolution::BlockDisposition  BD 
)

◆ operator<<() [130/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
ScalarEvolution::LoopDisposition  LD 
)

◆ operator<<() [131/146]

raw_ostream & llvm::operator<< ( raw_ostream os,
SlotIndex  li 
)
inline

Definition at line 290 of file SlotIndexes.h.

References llvm::SlotIndex::print().

◆ operator<<() [132/146]

llvm::raw_ostream & llvm::operator<< ( raw_ostream OS,
std::nullopt_t   
)

Definition at line 11 of file Optional.cpp.

References OS.

◆ operator<<() [133/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
sys::TimePoint<>  TP 
)

Definition at line 61 of file Chrono.cpp.

References format(), getStructTM(), and OS.

◆ operator<<() [134/146]

raw_ostream & llvm::operator<< ( raw_ostream OS,
sys::UtcTime<>  TP 
)

◆ operator<<() [135/146]

raw_ostream & llvm::operator<< ( raw_ostream Out,
const VersionTuple V 
)

Print a version number.

Definition at line 30 of file VersionTuple.cpp.

◆ operator<<() [136/146]

static raw_ostream & llvm::operator<< ( raw_ostream R,
const ore::NV Arg 
)
static

◆ operator<<() [137/146]

template<class RemarkT >
RemarkT & llvm::operator<< ( RemarkT &&  R,
const InlineCost IC 
)

◆ operator<<() [138/146]

template<class RemarkT >
RemarkT & llvm::operator<< ( RemarkT &&  R,
std::enable_if_t< std::is_base_of< DiagnosticInfoOptimizationBase, RemarkT >::value, DiagnosticInfoOptimizationBase::Argument A 
)

Definition at line 577 of file DiagnosticInfo.h.

References A.

◆ operator<<() [139/146]

template<class RemarkT >
RemarkT & llvm::operator<< ( RemarkT &&  R,
std::enable_if_t< std::is_base_of< DiagnosticInfoOptimizationBase, RemarkT >::value, DiagnosticInfoOptimizationBase::setIsVerbose V 
)

Definition at line 599 of file DiagnosticInfo.h.

◆ operator<<() [140/146]

template<class RemarkT >
RemarkT & llvm::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.

Definition at line 555 of file DiagnosticInfo.h.

◆ operator<<() [141/146]

template<class RemarkT >
RemarkT & llvm::operator<< ( RemarkT &  R,
std::enable_if_t< std::is_base_of< DiagnosticInfoOptimizationBase, RemarkT >::value, DiagnosticInfoOptimizationBase::Argument A 
)

Definition at line 566 of file DiagnosticInfo.h.

References A.

◆ operator<<() [142/146]

template<class RemarkT >
RemarkT & llvm::operator<< ( RemarkT &  R,
std::enable_if_t< std::is_base_of< DiagnosticInfoOptimizationBase, RemarkT >::value, DiagnosticInfoOptimizationBase::setExtraArgs EA 
)

Definition at line 610 of file DiagnosticInfo.h.

◆ operator<<() [143/146]

template<class RemarkT >
RemarkT & llvm::operator<< ( RemarkT &  R,
std::enable_if_t< std::is_base_of< DiagnosticInfoOptimizationBase, RemarkT >::value, DiagnosticInfoOptimizationBase::setIsVerbose V 
)

Definition at line 588 of file DiagnosticInfo.h.

◆ operator<<() [144/146]

template<class RemarkT >
RemarkT & llvm::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.

This allows returning the result of the insertion directly by value, e.g. return OptimizationRemarkAnalysis(...) << "blah".

Definition at line 542 of file DiagnosticInfo.h.

◆ operator<<() [145/146]

template<typename T >
std::ostream & llvm::operator<< ( std::ostream &  OS,
const StringMap< T > &  M 
)

Support for printing to std::ostream, for use with e.g.

producing more useful error messages with Google Test.

Definition at line 24 of file StringMap.h.

References E, formatv(), make_range(), OS, and sort().

◆ operator<<() [146/146]

template<typename T >
std::ostream & llvm::operator<< ( std::ostream &  OS,
const StringMapEntry< T > &  E 
)

Support for printing to std::ostream, for use with e.g.

producing more useful error messages with Google Test.

Definition at line 33 of file StringMapEntry.h.

◆ operator<=() [1/9]

bool llvm::operator<= ( Align  Lhs,
Align  Rhs 
)
inline

Definition at line 265 of file Alignment.h.

◆ operator<=() [2/9]

bool llvm::operator<= ( Align  Lhs,
MaybeAlign  Rhs 
)
delete

◆ operator<=() [3/9]

bool llvm::operator<= ( Align  Lhs,
uint64_t  Rhs 
)
inline

Definition at line 241 of file Alignment.h.

References ALIGN_CHECK_ISPOSITIVE, and llvm::Align::value().

◆ operator<=() [4/9]

bool llvm::operator<= ( AtomicOrdering  ,
AtomicOrdering   
)
delete

◆ operator<=() [5/9]

bool llvm::operator<= ( AtomicOrderingCABI  ,
AtomicOrderingCABI   
)
delete

◆ operator<=() [6/9]

bool llvm::operator<= ( int64_t  V1,
const APSInt V2 
)
inline

Definition at line 359 of file APSInt.h.

◆ operator<=() [7/9]

bool llvm::operator<= ( MaybeAlign  Lhs,
Align  Rhs 
)
delete

◆ operator<=() [8/9]

bool llvm::operator<= ( MaybeAlign  Lhs,
MaybeAlign  Rhs 
)
delete

◆ operator<=() [9/9]

bool llvm::operator<= ( StringRef  LHS,
StringRef  RHS 
)
inline

Definition at line 887 of file StringRef.h.

References LHS, and RHS.

◆ operator==() [1/37]

bool llvm::operator== ( Align  Lhs,
Align  Rhs 
)
inline

Comparisons operators between Align.

Definition at line 259 of file Alignment.h.

◆ operator==() [2/37]

bool llvm::operator== ( Align  Lhs,
MaybeAlign  Rhs 
)
inline

Definition at line 297 of file Alignment.h.

◆ operator==() [3/37]

bool llvm::operator== ( Align  Lhs,
uint64_t  Rhs 
)
inline

Comparisons between Align and scalars. Rhs must be positive.

Definition at line 233 of file Alignment.h.

References ALIGN_CHECK_ISPOSITIVE, and llvm::Align::value().

◆ operator==() [4/37]

template<typename T >
bool llvm::operator== ( ArrayRef< T LHS,
ArrayRef< T RHS 
)
inline

Definition at line 540 of file ArrayRef.h.

References LHS, and RHS.

◆ operator==() [5/37]

bool llvm::operator== ( const AddressRangeValuePair LHS,
const AddressRangeValuePair RHS 
)
inline

◆ operator==() [6/37]

bool llvm::operator== ( const DbgValueLoc A,
const DbgValueLoc B 
)
inline

Compare two DbgValueLocs for equality.

Definition at line 276 of file DebugLocEntry.h.

◆ operator==() [7/37]

bool llvm::operator== ( const DbgValueLocEntry A,
const DbgValueLocEntry B 
)
inline

Compare two DbgValueLocEntries for equality.

Definition at line 256 of file DebugLocEntry.h.

◆ operator==() [8/37]

template<typename DerivedT , typename KeyT , typename ValueT , typename KeyInfoT , typename BucketT >
bool llvm::operator== ( const DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT > &  LHS,
const DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT > &  RHS 
)

Equality comparison for DenseMap.

Iterates over elements of LHS confirming that each (key, value) pair in LHS is also in RHS, and that no additional pairs are in RHS. Equivalent to N calls to RHS.find and N value comparisons. Amortized complexity is linear, worst case is O(N^2) (if every hash collides).

Definition at line 712 of file DenseMap.h.

References I, LHS, and RHS.

◆ operator==() [9/37]

template<typename DerivedT , typename KeyInfoT , typename BucketT >
bool llvm::operator== ( const DenseMapBase< DerivedT, SymbolsMapKey, MachO::Symbol *, KeyInfoT, BucketT > &  LHS,
const DenseMapBase< DerivedT, SymbolsMapKey, MachO::Symbol *, KeyInfoT, BucketT > &  RHS 
)

Definition at line 52 of file SymbolSet.h.

References I, LHS, and RHS.

◆ operator==() [10/37]

bool llvm::operator== ( const DIExpression::FragmentInfo A,
const DIExpression::FragmentInfo B 
)
inline

Definition at line 3121 of file DebugInfoMetadata.h.

References A, and B.

◆ operator==() [11/37]

bool llvm::operator== ( const DWARFAddressRange LHS,
const DWARFAddressRange RHS 
)
inline

Definition at line 80 of file DWARFAddressRange.h.

References LHS, and RHS.

◆ operator==() [12/37]

bool llvm::operator== ( const DWARFDie LHS,
const DWARFDie RHS 
)
inline

Definition at line 340 of file DWARFDie.h.

References LHS, and RHS.

◆ operator==() [13/37]

bool llvm::operator== ( const DWARFDie::attribute_iterator LHS,
const DWARFDie::attribute_iterator RHS 
)
inline

Definition at line 330 of file DWARFDie.h.

◆ operator==() [14/37]

bool llvm::operator== ( const DWARFDie::iterator LHS,
const DWARFDie::iterator RHS 
)
inline

Definition at line 380 of file DWARFDie.h.

◆ operator==() [15/37]

bool llvm::operator== ( const DWARFExpression::iterator LHS,
const DWARFExpression::iterator RHS 
)
inline

Definition at line 182 of file DWARFExpression.h.

◆ operator==() [16/37]

bool llvm::operator== ( const DWARFLocationExpression L,
const DWARFLocationExpression R 
)
inline

Definition at line 31 of file DWARFLocationExpression.h.

◆ operator==() [17/37]

template<class T , class E >
std::enable_if_t< std::is_error_code_enum< E >::value|| std::is_error_condition_enum< E >::value, bool > llvm::operator== ( const ErrorOr< T > &  Err,
E  Code 
)

Definition at line 265 of file ErrorOr.h.

◆ operator==() [18/37]

bool llvm::operator== ( const HTTPRequest A,
const HTTPRequest B 
)

◆ operator==() [19/37]

template<class T , class U >
bool llvm::operator== ( const IntrusiveRefCntPtr< T > &  A,
const IntrusiveRefCntPtr< U > &  B 
)
inline

Definition at line 240 of file IntrusiveRefCntPtr.h.

References A, and B.

◆ operator==() [20/37]

template<class T >
bool llvm::operator== ( const IntrusiveRefCntPtr< T > &  A,
std::nullptr_t  B 
)

Definition at line 277 of file IntrusiveRefCntPtr.h.

References A, and B.

◆ operator==() [21/37]

template<class T , class U >
bool llvm::operator== ( const IntrusiveRefCntPtr< T > &  A,
U *  B 
)
inline

Definition at line 252 of file IntrusiveRefCntPtr.h.

References A, and B.

◆ operator==() [22/37]

template<typename PtrType >
bool llvm::operator== ( const SmallPtrSetImpl< PtrType > &  LHS,
const SmallPtrSetImpl< PtrType > &  RHS 
)

Equality comparison for SmallPtrSet.

Iterates over elements of LHS confirming that each value from LHS is also in RHS, and that no additional values are in RHS.

Definition at line 401 of file SmallPtrSet.h.

References LHS, and RHS.

◆ operator==() [23/37]

template<typename T , unsigned LN, unsigned RN, typename C >
bool llvm::operator== ( const SmallSet< T, LN, C > &  LHS,
const SmallSet< T, RN, C > &  RHS 
)

Equality comparison for SmallSet.

Iterates over elements of LHS confirming that each element is also a member of RHS, and that RHS contains no additional values. Equivalent to N calls to RHS.count. For small-set mode amortized complexity is O(N^2) For large-set mode amortized complexity is linear, worst case is O(N^2) (if every hash collides).

Definition at line 267 of file SmallSet.h.

References all_of(), E, LHS, and RHS.

◆ operator==() [24/37]

bool llvm::operator== ( const std::reverse_iterator< DWARFDie::iterator > &  LHS,
const std::reverse_iterator< DWARFDie::iterator > &  RHS 
)
inline

Definition at line 461 of file DWARFDie.h.

References LHS, and RHS.

◆ operator==() [25/37]

bool llvm::operator== ( const ValueInfo A,
const ValueInfo B 
)
inline

Definition at line 259 of file ModuleSummaryIndex.h.

References A, assert(), and B.

◆ operator==() [26/37]

bool llvm::operator== ( DIDerivedType::PtrAuthData  Lhs,
DIDerivedType::PtrAuthData  Rhs 
)
inline

Definition at line 1132 of file DebugInfoMetadata.h.

References llvm::DIDerivedType::PtrAuthData::RawData.

◆ operator==() [27/37]

bool llvm::operator== ( int64_t  V1,
const APSInt V2 
)
inline

Definition at line 357 of file APSInt.h.

◆ operator==() [28/37]

bool llvm::operator== ( MaybeAlign  Lhs,
Align  Rhs 
)
inline

Definition at line 295 of file Alignment.h.

◆ operator==() [29/37]

bool llvm::operator== ( MaybeAlign  Lhs,
MaybeAlign  Rhs 
)
inline

Definition at line 300 of file Alignment.h.

◆ operator==() [30/37]

bool llvm::operator== ( MaybeAlign  Lhs,
std::nullopt_t   
)
inline

Definition at line 305 of file Alignment.h.

◆ operator==() [31/37]

template<typename ... PTs>
bool llvm::operator== ( PointerUnion< PTs... >  lhs,
PointerUnion< PTs... >  rhs 
)

Definition at line 202 of file PointerUnion.h.

References llvm::PointerUnion< PTs >::getOpaqueValue().

◆ operator==() [32/37]

template<typename T >
bool llvm::operator== ( SmallVectorImpl< T > &  LHS,
ArrayRef< T RHS 
)
inline

Definition at line 545 of file ArrayRef.h.

References llvm::ArrayRef< T >::equals(), LHS, and RHS.

◆ operator==() [33/37]

bool llvm::operator== ( std::nullopt_t  ,
MaybeAlign  Rhs 
)
inline

Definition at line 307 of file Alignment.h.

◆ operator==() [34/37]

template<class T >
bool llvm::operator== ( std::nullptr_t  ,
const IntrusiveRefCntPtr< T > &  B 
)

Definition at line 272 of file IntrusiveRefCntPtr.h.

References B.

◆ operator==() [35/37]

bool llvm::operator== ( StringRef  LHS,
StringRef  RHS 
)
inline

Definition at line 877 of file StringRef.h.

References LHS, and RHS.

◆ operator==() [36/37]

template<class T , class U >
bool llvm::operator== ( T A,
const IntrusiveRefCntPtr< U > &  B 
)
inline

Definition at line 262 of file IntrusiveRefCntPtr.h.

References A, and B.

◆ operator==() [37/37]

bool llvm::operator== ( uint64_t  V1,
const APInt V2 
)
inline

Definition at line 2041 of file APInt.h.

◆ operator>() [1/9]

bool llvm::operator> ( Align  Lhs,
Align  Rhs 
)
inline

Definition at line 274 of file Alignment.h.

◆ operator>() [2/9]

bool llvm::operator> ( Align  Lhs,
MaybeAlign  Rhs 
)
delete

◆ operator>() [3/9]

bool llvm::operator> ( Align  Lhs,
uint64_t  Rhs 
)
inline

Definition at line 253 of file Alignment.h.

References ALIGN_CHECK_ISPOSITIVE, and llvm::Align::value().

◆ operator>() [4/9]

bool llvm::operator> ( AtomicOrdering  ,
AtomicOrdering   
)
delete

◆ operator>() [5/9]

bool llvm::operator> ( AtomicOrderingCABI  ,
AtomicOrderingCABI   
)
delete

◆ operator>() [6/9]

bool llvm::operator> ( int64_t  V1,
const APSInt V2 
)
inline

Definition at line 362 of file APSInt.h.

◆ operator>() [7/9]

bool llvm::operator> ( MaybeAlign  Lhs,
Align  Rhs 
)
delete

◆ operator>() [8/9]

bool llvm::operator> ( MaybeAlign  Lhs,
MaybeAlign  Rhs 
)
delete

◆ operator>() [9/9]

bool llvm::operator> ( StringRef  LHS,
StringRef  RHS 
)
inline

Definition at line 891 of file StringRef.h.

References LHS, and RHS.

◆ operator>=() [1/9]

bool llvm::operator>= ( Align  Lhs,
Align  Rhs 
)
inline

Definition at line 268 of file Alignment.h.

◆ operator>=() [2/9]

bool llvm::operator>= ( Align  Lhs,
MaybeAlign  Rhs 
)
delete

◆ operator>=() [3/9]

bool llvm::operator>= ( Align  Lhs,
uint64_t  Rhs 
)
inline

Definition at line 245 of file Alignment.h.

References ALIGN_CHECK_ISPOSITIVE, and llvm::Align::value().

◆ operator>=() [4/9]

bool llvm::operator>= ( AtomicOrdering  ,
AtomicOrdering   
)
delete

◆ operator>=() [5/9]

bool llvm::operator>= ( AtomicOrderingCABI  ,
AtomicOrderingCABI   
)
delete

◆ operator>=() [6/9]

bool llvm::operator>= ( int64_t  V1,
const APSInt V2 
)
inline

Definition at line 360 of file APSInt.h.

◆ operator>=() [7/9]

bool llvm::operator>= ( MaybeAlign  Lhs,
Align  Rhs 
)
delete

◆ operator>=() [8/9]

bool llvm::operator>= ( MaybeAlign  Lhs,
MaybeAlign  Rhs 
)
delete

◆ operator>=() [9/9]

bool llvm::operator>= ( StringRef  LHS,
StringRef  RHS 
)
inline

Definition at line 895 of file StringRef.h.

References LHS, and RHS.

◆ operator>>()

template<class DigitsT >
ScaledNumber< DigitsT > llvm::operator>> ( const ScaledNumber< DigitsT > &  L,
int16_t  Shift 
)

Definition at line 737 of file ScaledNumber.h.

◆ operator^() [1/7]

APInt llvm::operator^ ( APInt  a,
const APInt b 
)
inline

Definition at line 2093 of file APInt.h.

References operator^().

Referenced by operator^().

◆ operator^() [2/7]

APInt llvm::operator^ ( APInt  a,
uint64_t  RHS 
)
inline

Definition at line 2103 of file APInt.h.

References operator^(), and RHS.

◆ operator^() [3/7]

APInt llvm::operator^ ( const APInt a,
APInt &&  b 
)
inline

Definition at line 2098 of file APInt.h.

References operator^().

◆ operator^() [4/7]

KnownBits llvm::operator^ ( const KnownBits LHS,
KnownBits &&  RHS 
)
inline

Definition at line 513 of file KnownBits.h.

References LHS, and RHS.

◆ operator^() [5/7]

SmallBitVector llvm::operator^ ( const SmallBitVector LHS,
const SmallBitVector RHS 
)
inline

Definition at line 724 of file SmallBitVector.h.

References LHS, and RHS.

◆ operator^() [6/7]

KnownBits llvm::operator^ ( KnownBits  LHS,
const KnownBits RHS 
)
inline

Definition at line 508 of file KnownBits.h.

References LHS, and RHS.

◆ operator^() [7/7]

APInt llvm::operator^ ( uint64_t  LHS,
APInt  b 
)
inline

Definition at line 2108 of file APInt.h.

References LHS, and operator^().

◆ operator|() [1/14]

APInt llvm::operator| ( APInt  a,
const APInt b 
)
inline

Definition at line 2073 of file APInt.h.

References operator|().

Referenced by operator|().

◆ operator|() [2/14]

APInt llvm::operator| ( APInt  a,
uint64_t  RHS 
)
inline

Definition at line 2083 of file APInt.h.

References operator|(), and RHS.

◆ operator|() [3/14]

ChangeStatus llvm::operator| ( ChangeStatus  L,
ChangeStatus  R 
)

Logic operators for the change status enum class.

{

Definition at line 185 of file Attributor.cpp.

◆ operator|() [4/14]

APInt llvm::operator| ( const APInt a,
APInt &&  b 
)
inline

Definition at line 2078 of file APInt.h.

References operator|().

◆ operator|() [5/14]

JITSymbolFlags llvm::operator| ( const JITSymbolFlags LHS,
const JITSymbolFlags::FlagNames RHS 
)
inline

Definition at line 202 of file JITSymbol.h.

References LHS, and RHS.

◆ operator|() [6/14]

KnownBits llvm::operator| ( const KnownBits LHS,
KnownBits &&  RHS 
)
inline

Definition at line 503 of file KnownBits.h.

References LHS, and RHS.

◆ operator|() [7/14]

KnownFPClass llvm::operator| ( const KnownFPClass LHS,
KnownFPClass &&  RHS 
)
inline

Definition at line 473 of file ValueTracking.h.

References LHS, and RHS.

◆ operator|() [8/14]

SmallBitVector llvm::operator| ( const SmallBitVector LHS,
const SmallBitVector RHS 
)
inline

Definition at line 717 of file SmallBitVector.h.

References LHS, and RHS.

◆ operator|() [9/14]

template<unsigned ElementSize>
SparseBitVector< ElementSize > llvm::operator| ( const SparseBitVector< ElementSize > &  LHS,
const SparseBitVector< ElementSize > &  RHS 
)
inline

Definition at line 850 of file SparseBitVector.h.

References LHS, and RHS.

◆ operator|() [10/14]

FastMathFlags llvm::operator| ( FastMathFlags  LHS,
FastMathFlags  RHS 
)
inline

Definition at line 113 of file FMF.h.

References LHS, and RHS.

◆ operator|() [11/14]

KnownBits llvm::operator| ( KnownBits  LHS,
const KnownBits RHS 
)
inline

Definition at line 498 of file KnownBits.h.

References LHS, and RHS.

◆ operator|() [12/14]

KnownFPClass llvm::operator| ( KnownFPClass  LHS,
const KnownFPClass RHS 
)
inline

Definition at line 468 of file ValueTracking.h.

References LHS, and RHS.

◆ operator|() [13/14]

RemapFlags llvm::operator| ( RemapFlags  LHS,
RemapFlags  RHS 
)
inline

Definition at line 107 of file ValueMapper.h.

References LHS, and RHS.

◆ operator|() [14/14]

APInt llvm::operator| ( uint64_t  LHS,
APInt  b 
)
inline

Definition at line 2088 of file APInt.h.

References LHS, and operator|().

◆ operator|=() [1/3]

ChangeStatus & llvm::operator|= ( ChangeStatus l,
ChangeStatus  r 
)

Definition at line 188 of file Attributor.cpp.

◆ operator|=() [2/3]

template<unsigned ElementSize>
bool llvm::operator|= ( SparseBitVector< ElementSize > &  LHS,
const SparseBitVector< ElementSize > *  RHS 
)
inline

Definition at line 823 of file SparseBitVector.h.

References LHS, and RHS.

◆ operator|=() [3/3]

template<unsigned ElementSize>
bool llvm::operator|= ( SparseBitVector< ElementSize > *  LHS,
const SparseBitVector< ElementSize > &  RHS 
)
inline

Definition at line 829 of file SparseBitVector.h.

References LHS, and RHS.

◆ operator~()

APInt llvm::operator~ ( APInt  v)
inline

Unary bitwise complement operator.

Returns
an APInt that is the bitwise complement of v.

Definition at line 2048 of file APInt.h.

References operator~().

Referenced by operator~().

◆ optimal_concurrency()

ThreadPoolStrategy llvm::optimal_concurrency ( unsigned  TaskCount = 0)
inline

Returns an optimal thread strategy to execute specified amount of tasks.

This strategy should prevent us from creating too many threads if we occasionaly have an unexpectedly small amount of tasks.

Definition at line 194 of file Threading.h.

References llvm::ThreadPoolStrategy::Limit, and llvm::ThreadPoolStrategy::ThreadsRequested.

Referenced by llvm::dwarf_linker::parallel::DWARFLinkerImpl::link().

◆ optimized_def_chain()

template<class T >
iterator_range< def_chain_iterator< T, true > > llvm::optimized_def_chain ( T  MA)
inline

Definition at line 1359 of file MemorySSA.h.

References make_range().

◆ optimizeGlobalCtorsList()

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

Return true if anything changed.

Definition at line 110 of file CtorUtils.cpp.

References dbgs(), F, findGlobalCtors(), LHS, LLVM_DEBUG, parseGlobalCtors(), removeGlobalCtors(), RHS, llvm::BitVector::set(), and stable_sort().

Referenced by optimizeGlobalsInModule(), and llvm::GlobalDCEPass::run().

◆ or32le()

static void llvm::or32le ( void *  P,
int32_t  V 
)
static

◆ outs()

raw_fd_ostream & llvm::outs ( )

This returns a reference to a raw_fd_ostream for standard output.

Use it like: outs() << "foo" << "bar";

Definition at line 896 of file raw_ostream.cpp.

References assert(), and llvm::sys::fs::OF_None.

Referenced by llvm::logicalview::LVBinaryReader::createInstructions(), llvm::AMDGPUDisassembler::decodeKernelDescriptor(), dlltoolDriverMain(), doList(), llvm::pdb::PDBSymbol::dumpChildStats(), llvm::AADepGraph::dumpGraph(), llvm::pdb::PDBSymbol::dumpProperties(), fouts(), llvm::logicalview::LVCompare::getInstance(), llvm::logicalview::LVReader::getInstance(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::isClangModuleRef(), llvm::dwarf_linker::parallel::DependencyTracker::isLiveSubprogramEntry(), llvm::dwarf_linker::parallel::DependencyTracker::isLiveVariableEntry(), libDriverMain(), llvm::dwarf_linker::classic::DWARFLinker::link(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::link(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::link(), lle_X_printf(), llvm::AADepGraph::print(), llvm::AttributorCallGraph::print(), llvm::cl::Option::printEnumValHelpStr(), PrintExtension(), llvm::cl::generic_parser_base::printGenericOptionDiff(), llvm::cl::Option::printHelpStr(), llvm::cl::generic_parser_base::printOptionInfo(), llvm::cl::basic_parser_impl::printOptionInfo(), llvm::cl::basic_parser_impl::printOptionName(), llvm::cl::basic_parser_impl::printOptionNoValue(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::printStatistic(), llvm::AArch64::PrintSupportedExtensions(), llvm::ARM::PrintSupportedExtensions(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::registerModuleReference(), riscvExtensionsHelp(), llvm::ToolOutputFile::ToolOutputFile(), and writeToOutput().

◆ parallelFor()

void llvm::parallelFor ( size_t  Begin,
size_t  End,
llvm::function_ref< void(size_t)>  Fn 
)

◆ parallelForEach() [1/2]

template<class IterTy , class FuncTy >
void llvm::parallelForEach ( IterTy  Begin,
IterTy  End,
FuncTy  Fn 
)

◆ parallelForEach() [2/2]

template<class RangeTy , class FuncTy >
void llvm::parallelForEach ( RangeTy &&  R,
FuncTy  Fn 
)

Definition at line 261 of file Parallel.h.

References parallelForEach().

◆ parallelForEachError()

template<class RangeTy , class FuncTy >
Error llvm::parallelForEachError ( RangeTy &&  R,
FuncTy  Fn 
)

◆ parallelSort() [1/2]

template<class RandomAccessIterator , class Comparator = std::less< typename std::iterator_traits<RandomAccessIterator>::value_type>>
void llvm::parallelSort ( RandomAccessIterator  Start,
RandomAccessIterator  End,
const Comparator &  Comp = Comparator() 
)

◆ parallelSort() [2/2]

template<class RangeTy , class Comparator = std::less<decltype(*std::begin(RangeTy()))>>
void llvm::parallelSort ( RangeTy &&  R,
const Comparator &  Comp = Comparator() 
)

Definition at line 256 of file Parallel.h.

References parallelSort().

◆ parallelTransformReduce() [1/2]

template<class IterTy , class ResultTy , class ReduceFuncTy , class TransformFuncTy >
ResultTy llvm::parallelTransformReduce ( IterTy  Begin,
IterTy  End,
ResultTy  Init,
ReduceFuncTy  Reduce,
TransformFuncTy  Transform 
)

Definition at line 239 of file Parallel.h.

References End, I, and llvm::parallel::strategy.

Referenced by parallelForEachError(), and parallelTransformReduce().

◆ parallelTransformReduce() [2/2]

template<class RangeTy , class ResultTy , class ReduceFuncTy , class TransformFuncTy >
ResultTy llvm::parallelTransformReduce ( RangeTy &&  R,
ResultTy  Init,
ReduceFuncTy  Reduce,
TransformFuncTy  Transform 
)

Definition at line 267 of file Parallel.h.

References parallelTransformReduce().

◆ parseAmdKernelCodeField()

bool llvm::parseAmdKernelCodeField ( StringRef  ID,
MCAsmParser Parser,
amd_kernel_code_t C,
raw_ostream Err 
)

◆ parseAnalysisUtilityPasses()

template<typename AnalysisT , typename IRUnitT , typename AnalysisManagerT , typename... ExtraArgTs>
bool llvm::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.

It is intended to be used during parsing of a pass pipeline when parsing a single PipelineName. When registering a new function analysis FancyAnalysis with the pass pipeline name "fancy-analysis", a matching ParsePipelineCallback could look like this:

static bool parseFunctionPipeline(StringRef Name, FunctionPassManager &FPM, ArrayRef<PipelineElement> P) { if (parseAnalysisUtilityPasses<FancyAnalysis>("fancy-analysis", Name, FPM)) return true; return false; }

Definition at line 812 of file PassBuilder.h.

References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::addPass(), llvm::StringRef::ends_with(), llvm::StringRef::size(), llvm::StringRef::starts_with(), and llvm::StringRef::substr().

◆ parseAndVerify()

std::unique_ptr< Module > llvm::parseAndVerify ( const uint8_t *  Data,
size_t  Size,
LLVMContext Context 
)

Try to parse module and verify it.

May output verification errors to the errs().

Returns
New module or nullptr in case of error.

Definition at line 696 of file IRMutator.cpp.

References Context, Data, errs(), parseModule(), Size, and verifyModule().

◆ parseAssembly()

std::unique_ptr< Module > llvm::parseAssembly ( MemoryBufferRef  F,
SMDiagnostic Err,
LLVMContext Context,
SlotMapping Slots = nullptr,
DataLayoutCallbackTy  DataLayoutCallback = [](StringRefStringRef) { return std::nullopt; } 
)

parseAssemblyFile and parseAssemblyString are wrappers around this function.

Parse LLVM Assembly from a MemoryBuffer.

Parameters
FThe MemoryBuffer containing assembly
ErrError result info.
SlotsThe optional slot mapping that will be initialized during parsing.
DataLayoutCallbackOverride datalayout in the llvm assembly.

Definition at line 46 of file Parser.cpp.

References Context, F, and parseAssemblyInto().

Referenced by getLazyIRModule(), parseAssemblyFile(), parseAssemblyString(), parseIR(), and llvm::MIRParserImpl::parseIRModule().

◆ parseAssemblyFile()

std::unique_ptr< Module > llvm::parseAssemblyFile ( StringRef  Filename,
SMDiagnostic Err,
LLVMContext Context,
SlotMapping Slots = nullptr 
)

This function is a main interface to the LLVM Assembly Parser.

It parses an ASCII file that (presumably) contains LLVM Assembly code. It returns a Module (intermediate representation) with the corresponding features. Note that this does not verify that the generated Module is valid, so you should run the verifier after parsing the file to check that it is okay. Parse LLVM Assembly from a file

Parameters
FilenameThe name of the file to parse
ErrError result info.
ContextContext in which to allocate globals info.
SlotsThe optional slot mapping that will be initialized during parsing.

Definition at line 58 of file Parser.cpp.

References Context, llvm::SourceMgr::DK_Error, llvm::ErrorOr< T >::get(), llvm::ErrorOr< T >::getError(), llvm::MemoryBuffer::getFileOrSTDIN(), and parseAssembly().

◆ parseAssemblyFileWithIndex()

ParsedModuleAndIndex llvm::parseAssemblyFileWithIndex ( StringRef  Filename,
SMDiagnostic Err,
LLVMContext Context,
SlotMapping Slots = nullptr,
DataLayoutCallbackTy  DataLayoutCallback = [](StringRefStringRef) { return std::nullopt; } 
)

This function is a main interface to the LLVM Assembly Parser.

It parses an ASCII file that (presumably) contains LLVM Assembly code, including a module summary. It returns a Module (intermediate representation) and a ModuleSummaryIndex with the corresponding features. Note that this does not verify that the generated Module or Index are valid, so you should run the verifier after parsing the file to check that they are okay. Parse LLVM Assembly from a file

Parameters
FilenameThe name of the file to parse
ErrError result info.
ContextContext in which to allocate globals info.
SlotsThe optional slot mapping that will be initialized during parsing.
DataLayoutCallbackOverride datalayout in the llvm assembly.

Definition at line 119 of file Parser.cpp.

References Context.

◆ parseAssemblyFileWithIndexNoUpgradeDebugInfo()

ParsedModuleAndIndex llvm::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.

Definition at line 127 of file Parser.cpp.

References Context.

◆ parseAssemblyInto()

bool llvm::parseAssemblyInto ( MemoryBufferRef  F,
Module M,
ModuleSummaryIndex Index,
SMDiagnostic Err,
SlotMapping Slots = nullptr,
DataLayoutCallbackTy  DataLayoutCallback = [](StringRefStringRef) { return std::nullopt; } 
)

This function is the low-level interface to the LLVM Assembly Parser.

This is kept as an independent function instead of being inlined into parseAssembly for the convenience of interactive users that want to add recently parsed bits to an existing module.

Parameters
FThe MemoryBuffer containing assembly
MThe module to add data to.
IndexThe index to add data to.
ErrError result info.
SlotsThe optional slot mapping that will be initialized during parsing.
Returns
true on error.
Parameters
DataLayoutCallbackOverride datalayout in the llvm assembly.

Definition at line 37 of file Parser.cpp.

References F.

◆ parseAssemblyString()

std::unique_ptr< Module > llvm::parseAssemblyString ( StringRef  AsmString,
SMDiagnostic Err,
LLVMContext Context,
SlotMapping Slots = nullptr 
)

The function is a secondary interface to the LLVM Assembly Parser.

It parses an ASCII string that (presumably) contains LLVM Assembly code. It returns a Module (intermediate representation) with the corresponding features. Note that this does not verify that the generated Module is valid, so you should run the verifier after parsing the file to check that it is okay. Parse LLVM Assembly from a string

Parameters
AsmStringThe string containing assembly
ErrError result info.
ContextContext in which to allocate globals info.
SlotsThe optional slot mapping that will be initialized during parsing.

Definition at line 135 of file Parser.cpp.

References Context, F, and parseAssembly().

◆ parseAssemblyWithIndex()

ParsedModuleAndIndex llvm::parseAssemblyWithIndex ( MemoryBufferRef  F,
SMDiagnostic Err,
LLVMContext Context,
SlotMapping Slots = nullptr 
)

Parse LLVM Assembly including the summary index from a MemoryBuffer.

Parameters
FThe MemoryBuffer containing assembly with summary
ErrError result info.
SlotsThe optional slot mapping that will be initialized during parsing.

parseAssemblyFileWithIndex is a wrapper around this function.

Definition at line 90 of file Parser.cpp.

References Context, and F.

◆ parseBasicTypeName()

Type * llvm::parseBasicTypeName ( StringRef  TypeName,
LLVMContext Ctx 
)

◆ parseBitcodeFile()

Expected< std::unique_ptr< Module > > llvm::parseBitcodeFile ( MemoryBufferRef  Buffer,
LLVMContext Context,
ParserCallbacks  Callbacks = {} 
)

◆ parseCachePruningPolicy()

Expected< CachePruningPolicy > llvm::parseCachePruningPolicy ( StringRef  PolicyStr)

Parse the given string as a cache pruning policy.

Defaults are taken from a default constructed CachePruningPolicy object. For example: "prune_interval=30s:prune_after=24h:cache_size=50%" which means a pruning interval of 30 seconds, expiration time of 24 hours and maximum cache size of 50% of available disk space.

Definition at line 78 of file CachePruning.cpp.

References llvm::CachePruningPolicy::Expiration, llvm::StringRef::getAsInteger(), inconvertibleErrorCode(), llvm::CachePruningPolicy::Interval, llvm::CachePruningPolicy::MaxSizeBytes, llvm::CachePruningPolicy::MaxSizeFiles, llvm::CachePruningPolicy::MaxSizePercentageOfAvailableSpace, P, parseDuration(), and Size.

Referenced by getCachedOrDownloadArtifact().

◆ parseCommandLineOptions()

void llvm::parseCommandLineOptions ( std::vector< std::string > &  Options)

A convenience function that calls cl::ParseCommandLineOptions on the given set of options.

Definition at line 684 of file LTOCodeGenerator.cpp.

References Options, and llvm::cl::ParseCommandLineOptions().

Referenced by llvm::LTOCodeGenerator::parseCodeGenDebugOptions().

◆ parseConstantValue()

Constant * llvm::parseConstantValue ( StringRef  Asm,
SMDiagnostic Err,
const Module M,
const SlotMapping Slots = nullptr 
)

Parse a type and a constant value in the given string.

The constant value can be any LLVM constant, including a constant expression.

Parameters
SlotsThe optional slot mapping that will restore the parsing state of the module.
Returns
null on error.

Definition at line 187 of file Parser.cpp.

References llvm::SourceMgr::AddNewSourceBuffer(), llvm::CallingConv::C, llvm::MemoryBuffer::getMemBuffer(), and llvm::LLParser::parseStandaloneConstantValue().

Referenced by llvm::MIRParserImpl::initializeConstantPool(), and parseIRConstant().

◆ parseDenormalFPAttribute()

DenormalMode llvm::parseDenormalFPAttribute ( StringRef  Str)
inline

◆ parseDenormalFPAttributeComponent()

DenormalMode::DenormalModeKind llvm::parseDenormalFPAttributeComponent ( StringRef  Str)
inline

◆ parseFuzzerCLOpts()

void llvm::parseFuzzerCLOpts ( int  ArgC,
char ArgV[] 
)

Parse cl::opts from a fuzz target commandline.

This handles all arguments after -ignore_remaining_args=1 as cl::opts.

Definition at line 18 of file FuzzerCLI.cpp.

References I, and llvm::cl::ParseCommandLineOptions().

◆ parseInfoSectionUnitHeader()

Expected< InfoSectionUnitHeader > llvm::parseInfoSectionUnitHeader ( StringRef  Info)

◆ parseIR()

std::unique_ptr< Module > llvm::parseIR ( MemoryBufferRef  Buffer,
SMDiagnostic Err,
LLVMContext Context,
ParserCallbacks  Callbacks = {} 
)

◆ parseIRFile()

std::unique_ptr< Module > llvm::parseIRFile ( StringRef  Filename,
SMDiagnostic Err,
LLVMContext Context,
ParserCallbacks  Callbacks = {} 
)

If the given file holds a bitcode image, return a Module for it.

Otherwise, attempt to parse it as LLVM Assembly and return a Module for it.

Parameters
DataLayoutCallbackOverride datalayout in the llvm assembly.

Definition at line 94 of file IRReader.cpp.

References Context, llvm::SourceMgr::DK_Error, llvm::ErrorOr< T >::get(), llvm::ErrorOr< T >::getError(), llvm::MemoryBuffer::getFileOrSTDIN(), and parseIR().

◆ parseMachineBasicBlockDefinitions()

bool llvm::parseMachineBasicBlockDefinitions ( PerFunctionMIParsingState PFS,
StringRef  Src,
SMDiagnostic Error 
)

Parse the machine basic block definitions, and skip the machine instructions.

This function runs the first parsing pass on the machine function's body. It parses only the machine basic block definitions and creates the machine basic blocks in the given machine function.

The machine instructions aren't parsed during the first pass because all the machine basic blocks aren't defined yet - this makes it impossible to resolve the machine basic block references.

Return true if an error occurred.

Definition at line 3608 of file MIParser.cpp.

References llvm::PerFunctionMIParsingState::MBBSlots.

Referenced by llvm::MIRParserImpl::initializeMachineFunction().

◆ parseMachineInstructions()

bool llvm::parseMachineInstructions ( PerFunctionMIParsingState PFS,
StringRef  Src,
SMDiagnostic Error 
)

Parse the machine instructions.

This function runs the second parsing pass on the machine function's body. It skips the machine basic block definitions and parses only the machine instructions and basic block attributes like liveins and successors.

The second parsing pass assumes that the first parsing pass already ran on the given source string.

Return true if an error occurred.

Definition at line 3614 of file MIParser.cpp.

Referenced by llvm::MIRParserImpl::initializeMachineFunction().

◆ parseMachineMetadata()

bool llvm::parseMachineMetadata ( PerFunctionMIParsingState PFS,
StringRef  Src,
SMRange  SourceRange,
SMDiagnostic Error 
)

Definition at line 3654 of file MIParser.cpp.

◆ parseMBBReference()

bool llvm::parseMBBReference ( PerFunctionMIParsingState PFS,
MachineBasicBlock *&  MBB,
StringRef  Src,
SMDiagnostic Error 
)

Definition at line 3619 of file MIParser.cpp.

References MBB.

◆ parseMDNode()

bool llvm::parseMDNode ( PerFunctionMIParsingState PFS,
MDNode *&  Node,
StringRef  Src,
SMDiagnostic Error 
)

Definition at line 3649 of file MIParser.cpp.

◆ parseModule()

std::unique_ptr< Module > llvm::parseModule ( const uint8_t *  Data,
size_t  Size,
LLVMContext Context 
)

Fuzzer friendly interface for the llvm bitcode parser.

Parameters
DataBitcode we are going to parse
SizeSize of the 'Data' in bytes
Returns
New module or nullptr in case of error

Definition at line 664 of file IRMutator.cpp.

References Context, Data, errs(), llvm::MemoryBuffer::getMemBuffer(), parseBitcodeFile(), Size, and llvm::dwarf::toString().

Referenced by parseAndVerify().

◆ parseNamedRegisterReference()

bool llvm::parseNamedRegisterReference ( PerFunctionMIParsingState PFS,
Register Reg,
StringRef  Src,
SMDiagnostic Error 
)

◆ parseRegisterReference()

bool llvm::parseRegisterReference ( PerFunctionMIParsingState PFS,
Register Reg,
StringRef  Src,
SMDiagnostic Error 
)

Definition at line 3625 of file MIParser.cpp.

Referenced by llvm::MIRParserImpl::parseRegisterInfo().

◆ parseStackObjectReference()

bool llvm::parseStackObjectReference ( PerFunctionMIParsingState PFS,
int &  FI,
StringRef  Src,
SMDiagnostic Error 
)

Definition at line 3643 of file MIParser.cpp.

Referenced by llvm::MIRParserImpl::initializeFrameInfo().

◆ parseStatepointDirectivesFromAttrs()

StatepointDirectives llvm::parseStatepointDirectivesFromAttrs ( AttributeList  AS)

◆ parseSummaryIndexAssembly()

std::unique_ptr< ModuleSummaryIndex > llvm::parseSummaryIndexAssembly ( MemoryBufferRef  F,
SMDiagnostic Err 
)

Parse LLVM Assembly for summary index from a MemoryBuffer.

Parameters
FThe MemoryBuffer containing assembly with summary
ErrError result info.

parseSummaryIndexAssemblyFile is a wrapper around this function.

Definition at line 158 of file Parser.cpp.

References F, and parseSummaryIndexAssemblyInto().

Referenced by parseSummaryIndexAssemblyFile(), and parseSummaryIndexAssemblyString().

◆ parseSummaryIndexAssemblyFile()

std::unique_ptr< ModuleSummaryIndex > llvm::parseSummaryIndexAssemblyFile ( StringRef  Filename,
SMDiagnostic Err 
)

This function is a main interface to the LLVM Assembly Parser.

It parses an ASCII file that (presumably) contains LLVM Assembly code for a module summary. It returns a ModuleSummaryIndex with the corresponding features. Note that this does not verify that the generated Index is valid, so you should run the verifier after parsing the file to check that it is okay. Parse LLVM Assembly Index from a file

Parameters
FilenameThe name of the file to parse
ErrError result info.

Definition at line 169 of file Parser.cpp.

References llvm::SourceMgr::DK_Error, llvm::ErrorOr< T >::get(), llvm::ErrorOr< T >::getError(), llvm::MemoryBuffer::getFileOrSTDIN(), and parseSummaryIndexAssembly().

◆ parseSummaryIndexAssemblyString()

std::unique_ptr< ModuleSummaryIndex > llvm::parseSummaryIndexAssemblyString ( StringRef  AsmString,
SMDiagnostic Err 
)

The function is a secondary interface to the LLVM Assembly Parser.

It parses an ASCII string that (presumably) contains LLVM Assembly code for a module summary. It returns a a ModuleSummaryIndex with the corresponding features. Note that this does not verify that the generated Index is valid, so you should run the verifier after parsing the file to check that it is okay. Parse LLVM Assembly from a string

Parameters
AsmStringThe string containing assembly
ErrError result info.

Definition at line 182 of file Parser.cpp.

References F, and parseSummaryIndexAssembly().

◆ parseType()

Type * llvm::parseType ( StringRef  Asm,
SMDiagnostic Err,
const Module M,
const SlotMapping Slots = nullptr 
)

Parse a type in the given string.

Parameters
SlotsThe optional slot mapping that will restore the parsing state of the module.
Returns
null on error.

Definition at line 199 of file Parser.cpp.

References llvm::SourceMgr::AddNewSourceBuffer(), llvm::SourceMgr::DK_Error, llvm::SMLoc::getFromPointer(), llvm::MemoryBuffer::getMemBuffer(), llvm::SourceMgr::GetMessage(), and parseTypeAtBeginning().

◆ parseTypeAtBeginning()

Type * llvm::parseTypeAtBeginning ( StringRef  Asm,
unsigned Read,
SMDiagnostic Err,
const Module M,
const SlotMapping Slots = nullptr 
)

Parse a string Asm that starts with a type.

Read[out] gives the number of characters that have been read to parse the type in Asm.

Parameters
SlotsThe optional slot mapping that will restore the parsing state of the module.
Returns
null on error.

Definition at line 215 of file Parser.cpp.

References llvm::SourceMgr::AddNewSourceBuffer(), llvm::MemoryBuffer::getMemBuffer(), and llvm::LLParser::parseTypeAtBeginning().

Referenced by parseType().

◆ parseTypeString()

static Type * llvm::parseTypeString ( const StringRef  Name,
LLVMContext Context 
)
static

◆ parseVirtualRegisterReference()

bool llvm::parseVirtualRegisterReference ( PerFunctionMIParsingState PFS,
VRegInfo *&  Info,
StringRef  Src,
SMDiagnostic Error 
)

Definition at line 3637 of file MIParser.cpp.

References Info.

Referenced by llvm::MIRParserImpl::parseRegisterInfo().

◆ parseWidenableBranch() [1/2]

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

If U does not match this pattern, return false.

Definition at line 53 of file GuardUtils.cpp.

References llvm::CallingConv::C, llvm::BasicBlock::getContext(), llvm::ConstantInt::getTrue(), and parseWidenableBranch().

Referenced by isWidenableBranch(), parseWidenableBranch(), setWidenableBranchCond(), and widenWidenableBranch().

◆ parseWidenableBranch() [2/2]

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

Unlike previous version, Condition is optional and may be null.

Definition at line 69 of file GuardUtils.cpp.

References A, And, B, llvm::CallingConv::C, Cond, llvm::PatternMatch::m_And(), llvm::PatternMatch::m_Value(), and llvm::PatternMatch::match().

◆ parseWidenableGuard()

void llvm::parseWidenableGuard ( const User U,
llvm::SmallVectorImpl< Value * > &  Checks 
)

◆ partAsHex()

static unsigned int llvm::partAsHex ( char dst,
APFloatBase::integerPart  part,
unsigned int  count,
const char hexDigitChars 
)
static

Definition at line 801 of file APFloat.cpp.

References assert(), count(), and llvm::APFloatBase::integerPartWidth.

◆ partCountForBits()

static constexpr unsigned int llvm::partCountForBits ( unsigned int  bits)
inlinestaticconstexpr

◆ partition()

template<typename R , typename UnaryPredicate >
auto llvm::partition ( R &&  Range,
UnaryPredicate  P 
)

Provide wrappers to std::partition which take ranges instead of having to pass begin/end explicitly.

Definition at line 1935 of file STLExtras.h.

References adl_begin(), adl_end(), and P.

Referenced by decodeCondBranch(), llvm::ARMBaseInstrInfo::getOutliningCandidateInfo(), and llvm::GenericConvergenceVerifier< ContextT >::verify().

◆ partition_point()

template<typename R , typename Predicate , typename Val = decltype(*adl_begin(std::declval<R>()))>
auto llvm::partition_point ( R &&  Range,
Predicate  P 
)

◆ patchAddrBase()

static void llvm::patchAddrBase ( DIE Die,
DIEInteger  Offset 
)
static

Definition at line 2020 of file DWARFLinker.cpp.

References llvm_unreachable, Offset, and llvm::DIEValueList::values().

◆ patchReplacementInstruction()

void llvm::patchReplacementInstruction ( Instruction I,
Value Repl 
)

Patch the replacement so that it is not more restrictive than the value being replaced.

It assumes that the replacement does not get moved from its original position.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 3400 of file Local.cpp.

References combineMetadataForCSE(), llvm::Instruction::dropPoisonGeneratingFlags(), I, llvm::PatternMatch::m_WithOverflowInst(), and llvm::PatternMatch::match().

Referenced by patchAndReplaceAllUsesWith().

◆ patchStmtList()

static void llvm::patchStmtList ( DIE Die,
DIEInteger  Offset 
)
static

Definition at line 2082 of file DWARFLinker.cpp.

References llvm_unreachable, Offset, and llvm::DIEValueList::values().

◆ peekThroughBitcasts()

SDValue llvm::peekThroughBitcasts ( SDValue  V)

Return the non-bitcasted source operand of V if it exists.

If V is not a bitcasted value, it is returned as-is.

Definition at line 11636 of file SelectionDAG.cpp.

References llvm::ISD::BITCAST.

Referenced by canonicalizeBitSelect(), canonicalizeLaneShuffleWithRepeatedOps(), canonicalizeShuffleMaskWithHorizOp(), combineAndMaskToShift(), combineCONCAT_VECTORS(), combineConcatVectorOfExtracts(), combineConcatVectorOps(), combineEXTRACT_SUBVECTOR(), combineExtractVectorElt(), combineExtractWithShuffle(), combineHorizOpWithShuffle(), combineLogicBlendIntoPBLENDV(), combinePTESTCC(), combineSetCCMOVMSK(), combineTargetShuffle(), combineTruncationShuffle(), combineVectorSizedSetCCEquality(), combineX86ShuffleChain(), combineX86ShuffleChainWithExtract(), combineX86ShufflesRecursively(), llvm::X86TargetLowering::ComputeNumSignBitsForTargetNode(), computeZeroableShuffleElements(), EltsFromConsecutiveLoads(), llvm::SelectionDAG::FoldConstantArithmetic(), getAVX512Node(), getFauxShuffleMask(), getScalarValueForVectorElement(), getTargetConstantBitsFromNode(), getTargetConstantFromNode(), getTargetShuffleAndZeroables(), hasNon16BitAccesses(), isAllOnesOrAllOnesSplat(), isBitwiseNot(), isFNEG(), isHorizontalBinOp(), IsNOT(), LowerFMINIMUM_FMAXIMUM(), lowerShuffleAsBroadcast(), lowerShuffleWithVPMOV(), lowerV2X128Shuffle(), lowerV8I16Shuffle(), LowerVSETCC(), matchShuffleWithPACK(), MatchVectorAllEqualTest(), narrowExtractedVectorBinOp(), performSubAddMULCombine(), performUzpCombine(), llvm::TargetLowering::SimplifyMultipleUseDemandedBits(), and splitAndLowerShuffle().

◆ peekThroughExtractSubvectors()

SDValue llvm::peekThroughExtractSubvectors ( SDValue  V)

Return the non-extracted vector source operand of V if it exists.

If V is not an extracted subvector, it is returned as-is.

Definition at line 11648 of file SelectionDAG.cpp.

References llvm::ISD::EXTRACT_SUBVECTOR.

Referenced by llvm::SelectionDAG::getSplatSourceVector().

◆ peekThroughOneUseBitcasts()

SDValue llvm::peekThroughOneUseBitcasts ( SDValue  V)

◆ peekThroughTruncates()

SDValue llvm::peekThroughTruncates ( SDValue  V)

Return the non-truncated source operand of V if it exists.

If V is not a truncation, it is returned as-is.

Definition at line 11654 of file SelectionDAG.cpp.

References llvm::ISD::TRUNCATE.

Referenced by isSaturatingMinMax().

◆ peelLoop()

bool llvm::peelLoop ( Loop L,
unsigned  PeelCount,
LoopInfo LI,
ScalarEvolution SE,
DominatorTree DT,
AssumptionCache AC,
bool  PreserveLCSSA,
ValueToValueMapTy LVMap 
)

VMap is the value-map that maps instructions from the original loop to instructions in the last peeled-off iteration.

Peel off the first PeelCount iterations of loop L.

Note that this does not peel them off as a single straight-line block. Rather, each iteration is peeled off separately, and needs to check the exit condition. For loops that dynamically execute PeelCount iterations or less this provides a benefit, since the peeled off iterations, which account for the bulk of dynamic execution, can be further simplified by scalar optimizations.

Definition at line 876 of file LoopPeel.cpp.

References addStringMetadataToLoop(), assert(), canPeel(), llvm::DominatorTreeBase< NodeT, IsPostDom >::changeImmediateDominator(), cloneLoopBlocks(), F, llvm::DominatorTree::findNearestCommonDominator(), llvm::ScalarEvolution::forgetBlockAndLoopDispositions(), llvm::ScalarEvolution::forgetTopmostLoop(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Value::getName(), llvm::DominatorTreeBase< NodeT, IsPostDom >::getNode(), getOptionalIntLoopAttribute(), llvm::BasicBlock::getTerminator(), I, identifyNoAliasScopesToClone(), Info, initBranchWeights(), PeeledCountMetaData, llvm::LoopBlocksDFS::perform(), PHI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), remapInstructionsInBlocks(), setBranchWeights(), llvm::Value::setName(), simplifyLoop(), SplitBlock(), SplitEdge(), updateBranchWeights(), and llvm::DominatorTreeBase< NodeT, IsPostDom >::verify().

Referenced by tryToUnrollLoop().

◆ PeelSingleBlockLoop()

MachineBasicBlock * llvm::PeelSingleBlockLoop ( LoopPeelDirection  Direction,
MachineBasicBlock Loop,
MachineRegisterInfo MRI,
const TargetInstrInfo TII 
)

Peels a single block loop.

Loop must have two successors, one of which must be itself. Similarly it must have two predecessors, one of which must be itself.

The loop block is copied and inserted into the CFG such that two copies of the loop follow on from each other. The copy is inserted either before or after the loop based on Direction.

Phis are updated and an unconditional branch inserted at the end of the clone so as to execute a single iteration.

The trip count of Loop is not updated.

Definition at line 26 of file MachineLoopUtils.cpp.

References llvm::MachineBasicBlock::addSuccessor(), llvm::HexagonInstrInfo::analyzeBranch(), assert(), llvm::MachineBasicBlock::begin(), llvm::MachineFunction::CloneMachineInstr(), Cond, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::count(), llvm::MachineFunction::CreateMachineBasicBlock(), llvm::MachineInstr::defs(), DL, llvm::MachineBasicBlock::end(), llvm::MachineBasicBlock::getFirstNonPHI(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), I, llvm::MachineBasicBlock::insert(), llvm::MachineFunction::insert(), llvm::HexagonInstrInfo::insertBranch(), llvm::MachineInstr::isPHI(), llvm::Register::isPhysical(), LPD_Back, LPD_Front, MI, MRI, llvm::HexagonInstrInfo::removeBranch(), llvm::MachineBasicBlock::ReplaceUsesOfBlockWith(), llvm::MachineOperand::setReg(), std::swap(), TBB, TII, llvm::MachineBasicBlock::updateTerminator(), and Uses.

Referenced by llvm::PeelingModuloScheduleExpander::peelKernel().

◆ performOptimizedStructLayout()

std::pair< uint64_t, Align > llvm::performOptimizedStructLayout ( 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.

Two features are supported which require a more careful solution than the well-known "sort by decreasing alignment" solution:

  • Fields may be assigned a fixed offset in the layout. If there are gaps among the fixed-offset fields, the algorithm may attempt to allocate flexible-offset fields into those gaps. If that's undesirable, the caller should "block out" those gaps by e.g. just creating a single fixed-offset field that represents the entire "header".
  • The size of a field is not required to be a multiple of, or even greater than, the field's required alignment. The only constraint on fields is that they must not be zero-sized.

To simplify the implementation, any fixed-offset fields in the layout must appear at the start of the field array, and they must be ordered by increasing offset.

The algorithm will produce a guaranteed-minimal layout with no interior padding in the following "C-style" case:

  • every field's size is a multiple of its required alignment and
  • either no fields have initially fixed offsets, or the fixed-offset fields have no interior padding and end at an offset that is at least as aligned as all the flexible-offset fields.

Otherwise, while the algorithm will make a best-effort attempt to avoid padding, it cannot guarantee a minimal layout, as there is no known efficient algorithm for doing so.

The layout produced by this algorithm may not be stable across LLVM releases. Do not use this anywhere where ABI stability is required.

Flexible-offset fields with the same size and alignment will be ordered the same way they were in the initial array. Otherwise the current algorithm makes no effort to preserve the initial order of flexible-offset fields.

On return, all fields will have been assigned a fixed offset, and the array will be sorted in order of ascending offsets. Note that this means that the fixed-offset fields may no longer form a strict prefix if there's any padding before they end.

The return value is the total size of the struct and its required alignment. Note that the total size is not rounded up to a multiple of the required alignment; clients which require this can do so easily.

The minimum size of anything currently in this queue.

The head of the queue. A singly-linked list. The order here should be consistent with the earlier sort, i.e. the elements should be monotonically descending in size and otherwise in the original order.

We remove the queue from the array as soon as this is empty.

The alignment requirement of the queue.

Helper function to remove a field from a queue.

Definition at line 43 of file OptimizedStructLayout.cpp.

References llvm::OptimizedStructLayoutField::Alignment, alignTo(), array_pod_sort(), assert(), llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::MutableArrayRef< T >::back(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::MutableArrayRef< T >::begin(), checkValidLayout(), llvm::SmallVectorTemplateCommon< T, typename >::data(), llvm::MutableArrayRef< T >::data(), llvm::ArrayRef< T >::empty(), llvm::SmallVectorBase< Size_T >::empty(), llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::MutableArrayRef< T >::end(), llvm::SmallVectorImpl< T >::erase(), llvm::OptimizedStructLayoutField::getEndOffset(), llvm::OptimizedStructLayoutField::hasFixedOffset(), I, if(), isAligned(), Last, llvm_unreachable, llvm::OptimizedStructLayoutField::Offset, Offset, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorImpl< T >::reserve(), llvm::OptimizedStructLayoutField::Scratch, llvm::ArrayRef< T >::size(), llvm::SmallVectorBase< Size_T >::size(), llvm::OptimizedStructLayoutField::Size, Size, and Success.

◆ PGOWarnMissing()

cl::opt< bool > llvm::PGOWarnMissing ( "pgo-warn-missing-function"  ,
cl::init(false)  ,
cl::Hidden  ,
cl::desc("Use this option to turn on/off " "warnings about missing profile data for " "functions.")   
)

◆ phys_regs_and_masks()

iterator_range< filter_iterator< ConstMIBundleOperands, bool(*)(const MachineOperand &)> > llvm::phys_regs_and_masks ( const MachineInstr MI)
inline

Returns an iterator range over all physical register and mask operands for MI and bundled instructions.

This also skips any debug operands.

Definition at line 166 of file LiveRegUnits.h.

References const_mi_bundle_ops(), make_filter_range(), and MI.

Referenced by llvm::LivePhysRegs::addUses(), llvm::LivePhysRegs::removeDefs(), and updateDefinedRegisters().

◆ po_begin()

template<class T >
po_iterator< T > llvm::po_begin ( const T G)

◆ po_end()

template<class T >
po_iterator< T > llvm::po_end ( const T G)

◆ po_ext_begin()

template<class T , class SetType >
po_ext_iterator< T, SetType > llvm::po_ext_begin ( T  G,
SetType &  S 
)

◆ po_ext_end()

template<class T , class SetType >
po_ext_iterator< T, SetType > llvm::po_ext_end ( T  G,
SetType &  S 
)

◆ PointerMayBeCaptured() [1/2]

bool llvm::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).

This routine can be expensive, so consider caching the results. The boolean ReturnCaptures specifies whether returning the value (or part of it) from the function counts as capturing it or not. The boolean StoreCaptures specified whether storing the value (or part of it) into memory anywhere automatically counts as capturing it or not. MaxUsesToExplore specifies how many uses the analysis should explore for one value before giving up due too "too many uses". If MaxUsesToExplore is zero, a default value is assumed.

This routine can be expensive, so consider caching the results. The boolean ReturnCaptures specifies whether returning the value (or part of it) from the function counts as capturing it or not. The boolean StoreCaptures specified whether storing the value (or part of it) into memory anywhere automatically counts as capturing it or not.

Definition at line 204 of file CaptureTracking.cpp.

References assert(), dbgs(), LLVM_DEBUG, and PointerMayBeCaptured().

Referenced by addArgumentAttrs(), computePointerICmp(), FindEarliestCapture(), llvm::InstCombinerImpl::foldAllocaCmp(), isFunctionMallocLike(), isNonEscapingLocalObject(), isSafeToSpeculateStore(), PointerMayBeCaptured(), and PointerMayBeCapturedBefore().

◆ PointerMayBeCaptured() [2/2]

void llvm::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.

This feeds results into and is controlled by the CaptureTracker object. MaxUsesToExplore specifies how many uses the analysis should explore for one value before giving up due too "too many uses". If MaxUsesToExplore is zero, a default value is assumed.

Definition at line 407 of file CaptureTracking.cpp.

References assert(), llvm::CaptureTracker::captured(), DefaultMaxUsesToExplore, DetermineUseCaptureKind(), DL, llvm::SmallVectorBase< Size_T >::empty(), getDefaultMaxUsesToExploreForCaptureTracking(), llvm::SmallSet< T, N, C >::insert(), llvm::CaptureTracker::isDereferenceableOrNull(), MAY_CAPTURE, NO_CAPTURE, PASSTHROUGH, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorImpl< T >::reserve(), llvm::CaptureTracker::shouldExplore(), llvm::SmallSet< T, N, C >::size(), and llvm::CaptureTracker::tooManyUses().

◆ PointerMayBeCapturedBefore()

bool llvm::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).

If a DominatorTree is provided, only captures which happen before the given instruction are considered. This routine can be expensive, so consider caching the results. The boolean ReturnCaptures specifies whether returning the value (or part of it) from the function counts as capturing it or not. The boolean StoreCaptures specified whether storing the value (or part of it) into memory anywhere automatically counts as capturing it or not. Captures by the provided instruction are considered if the final parameter is true. MaxUsesToExplore specifies how many uses the analysis should explore for one value before giving up due too "too many uses". If MaxUsesToExplore is zero, a default value is assumed.

If a DominatorTree is provided, only captures which happen before the given instruction are considered. This routine can be expensive, so consider caching the results. The boolean ReturnCaptures specifies whether returning the value (or part of it) from the function counts as capturing it or not. The boolean StoreCaptures specified whether storing the value (or part of it) into memory anywhere automatically counts as capturing it or not.

Definition at line 237 of file CaptureTracking.cpp.

References assert(), I, and PointerMayBeCaptured().

Referenced by AddAliasScopeMetadata(), and llvm::AAResults::callCapturesBefore().

◆ pointerToJITTargetAddress()

template<typename T >
JITTargetAddress llvm::pointerToJITTargetAddress ( T Ptr)

Convert a pointer to a JITTargetAddress.

Definition at line 69 of file JITSymbol.h.

References Ptr.

Referenced by llvm::JITEvaluatedSymbol::fromPointer().

◆ popcount()

template<typename T , typename = std::enable_if_t<std::is_unsigned_v<T>>>
int llvm::popcount ( T  Value)
inlinenoexcept

Count the number of set bits in a value.

Ex. popcount(0xF000F000) = 8 Returns 0 if the word is zero.

Definition at line 385 of file bit.h.

References count(), and T.

Referenced by llvm::SITargetLowering::AddMemOpInit(), llvm::mca::ResourceManager::checkAvailability(), llvm::X86InstrInfo::commuteInstructionImpl(), llvm::AMDGPUDisassembler::convertMIMGInst(), llvm::Bitset< NumBits >::count(), llvm::BitVector::count(), llvm::SmallBitVector::count(), llvm::SparseBitVectorElement< ElementSize >::count(), llvm::FeatureBitset::count(), llvm::mca::ResourceManager::cycleEvent(), eliminateDeadSwitchCases(), llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemset(), llvm::RISCVMatInt::generateInstSeq(), llvm::detail::IEEEFloat::getExactLog2Abs(), llvm::SIRegisterInfo::getNumCoveredRegs(), llvm::LaneBitmask::getNumLanes(), llvm::mca::ResourceState::getNumUnits(), llvm::HvxSelector::getPerfectCompletions(), llvm::MCSchedModel::getReciprocalThroughput(), llvm::SITargetLowering::getTgtMemIntrinsic(), llvm::memprof::hasSingleAllocType(), llvm::mca::initializeUsedResources(), llvm::TargetLoweringBase::isBeneficialToExpandPowI(), llvm::APInt::isOneBitSet(), llvm::mca::ResourceState::isReady(), isShiftedMask_32(), isShiftedMask_64(), llvm::mca::ResourceManager::issueInstruction(), llvm::AMDGPULegalizerInfo::legalizeImageIntrinsic(), llvm::HexagonResource::lessUnits(), LowerCONCAT_VECTORSvXi1(), llvm::mca::ExecuteStage::notifyReservedOrReleasedBuffers(), optimizeSection(), llvm::APInt::popcount(), llvm::RegisterBank::print(), llvm::AMDGPUInstPrinter::printSwizzle(), readGSIHashBuckets(), llvm::HexagonResource::setWeight(), simplifyAMDGCNMemoryIntrinsicDemanded(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), tryEorOfLogicalImmediates(), llvm::SIInstrInfo::verifyInstruction(), and llvm::SelectionDAGBuilder::visitBitTestCase().

◆ possiblyDemandedEltsInMask()

APInt llvm::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.

TODO: This is a lot like known bits, but for vectors.

Is there something we can common this with?

Definition at line 1042 of file VectorUtils.cpp.

References assert(), llvm::APInt::clearBit(), and llvm::APInt::getAllOnes().

◆ post_order()

template<class T >
iterator_range< po_iterator< T > > llvm::post_order ( const T G)

◆ post_order_ext()

template<class T , class SetType >
iterator_range< po_ext_iterator< T, SetType > > llvm::post_order_ext ( const T G,
SetType &  S 
)

Definition at line 215 of file PostOrderIterator.h.

References G, make_range(), po_ext_begin(), and po_ext_end().

◆ PowerOf2Ceil()

uint64_t llvm::PowerOf2Ceil ( uint64_t  A)
inline

◆ powerOf5()

static unsigned int llvm::powerOf5 ( APFloatBase::integerPart dst,
unsigned int  power 
)
static

◆ pred_begin() [1/2]

pred_iterator llvm::pred_begin ( BasicBlock BB)
inline

◆ pred_begin() [2/2]

const_pred_iterator llvm::pred_begin ( const BasicBlock BB)
inline

Definition at line 111 of file CFG.h.

◆ pred_empty()

bool llvm::pred_empty ( const BasicBlock BB)
inline

◆ pred_end() [1/2]

pred_iterator llvm::pred_end ( BasicBlock BB)
inline

◆ pred_end() [2/2]

const_pred_iterator llvm::pred_end ( const BasicBlock BB)
inline

Definition at line 115 of file CFG.h.

◆ pred_size() [1/2]

unsigned llvm::pred_size ( const BasicBlock BB)
inline

Get the number of predecessors of BB.

This is a linear time operation. Use BasicBlock::hasNPredecessors() or hasNPredecessorsOrMore if able.

Definition at line 123 of file CFG.h.

References pred_begin(), and pred_end().

◆ pred_size() [2/2]

unsigned llvm::pred_size ( const MachineBasicBlock BB)
inline

◆ predecessors() [1/3]

pred_range llvm::predecessors ( BasicBlock BB)
inline

Definition at line 126 of file CFG.h.

References pred_begin(), and pred_end().

◆ predecessors() [2/3]

const_pred_range llvm::predecessors ( const BasicBlock BB)
inline

Definition at line 129 of file CFG.h.

References pred_begin(), and pred_end().

◆ predecessors() [3/3]

auto llvm::predecessors ( const MachineBasicBlock BB)
inline

Definition at line 1303 of file MachineBasicBlock.h.

References llvm::MachineBasicBlock::predecessors().

Referenced by addBlockAndPredsToSet(), llvm::LoopSafetyInfo::allLoopPathsLeadToBlock(), allPredecessorsComeFromSameSource(), buildClonedLoops(), buildExtractionBlockSet(), calculateCXXStateNumbers(), calculateSEHStateNumbers(), canProveExitOnFirstIteration(), canSplitCallSite(), canSplitPredecessors(), CloneAndPruneIntoFromInst(), collectTransitivePredecessors(), computeEHOnlyBlocks(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), ConnectEpilog(), ConnectProlog(), createAndCollectMergePhiForReduction(), llvm::VPRecipeBuilder::createBlockInMask(), llvm::VPRecipeBuilder::createEdgeMask(), createNaturalLoopInternal(), DeleteDeadBlocks(), llvm::DominatorTree::dominates(), ehAwareSplitEdge(), ensureValueAvailableInSuccessor(), llvm::GVNPass::ValueTable::eraseTranslateCacheEntry(), llvm::CodeExtractor::extractCodeRegion(), findArgParts(), llvm::MustBeExecutedContextExplorer::findBackwardJoinPoint(), findBestNonTrivialUnswitchCandidate(), findIBRPredecessor(), llvm::CodeExtractor::findOrCreateBlockForHoisting(), findOrCreatePHIBlock(), llvm::SSAUpdaterTraits< SSAUpdater >::FindPredecessorBlocks(), llvm::InnerLoopVectorizer::fixFixedOrderRecurrence(), llvm::InstCombinerImpl::foldAggregateConstructionIntoAggregateReuse(), FoldBranchToCommonDest(), FoldCondBranchOnValueKnownInPredecessorImpl(), formDedicatedExitBlocks(), llvm::GenericCycle< ContextT >::getCyclePredecessor(), llvm::VPRecipeBuilder::getEdgeMask(), getGVNForPHINode(), llvm::afdo_detail::IRTraits< BasicBlock >::getPredecessors(), getPredState(), llvm::CanonicalLoopInfo::getPreheader(), llvm::BranchProbabilityInfo::SccInfo::getSccEnterBlocks(), getTwoPredecessors(), llvm::SSAUpdater::GetValueInMiddleOfBlock(), llvm::InstCombinerImpl::handlePotentiallyDeadBlocks(), hasCallsInBlocksBetween(), llvm::MemorySSAUpdater::insertDef(), InsertPreheaderForLoop(), insertTrivialPHIs(), insertUniqueBackedgeBlock(), llvm::PHINode::isComplete(), isCriticalEdge(), isFullPostDominator(), llvm::HardwareLoopInfo::isHardwareLoopCandidate(), isIndirectBrTarget(), isLoopNeverExecuted(), isUniformlyReached(), makeReducible(), llvm::JumpThreadingPass::maybethreadThroughTwoBasicBlocks(), memoryIsNotModifiedBetween(), MergeBasicBlockIntoOnlyPred(), MergeCompatibleInvokes(), moveLCSSAPhis(), llvm::InsertPHIStrategy::mutate(), nonStrictlyPostDominate(), optimizeDivRem(), llvm::InstCombinerImpl::prepareWorklist(), rebuildLoopAfterUnswitch(), recomputeLoopBlockSet(), redirectAllPredecessorsTo(), removeEmptyCleanup(), llvm::BasicBlock::removePredecessor(), removeSwitchAfterSelectFold(), reuseTableCompare(), rewritePHIs(), rewritePHIsForCleanupPad(), llvm::GenericCycleInfoCompute< ContextT >::run(), runMoveAutoInit(), separateNestedLoop(), shouldFoldCondBranchesToCommonDestination(), simplifyOneLoop(), llvm::JumpThreadingPass::simplifyPartiallyRedundantLoad(), SinkCommonCodeFromPredecessors(), llvm::BasicBlock::splitBasicBlockBefore(), splitBlockBefore(), splitCallSite(), SplitKnownCriticalEdge(), TryToMergeLandingPad(), TryToSimplifyUncondBranchFromEmptyBlock(), unswitchNontrivialInvariants(), and llvm::MemorySSA::verifyOrderingDominationAndDefUses().

◆ predicatesFoldable()

bool llvm::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).

Definition at line 58 of file CmpInstAnalysis.cpp.

References llvm::ICmpInst::isEquality(), and llvm::CmpInst::isSigned().

◆ predOps()

static std::array< MachineOperand, 2 > llvm::predOps ( ARMCC::CondCodes  Pred,
unsigned  PredReg = 0 
)
inlinestatic

Get the operands corresponding to the given Pred value.

By default, the predicate register is assumed to be 0 (no register), but you can pass in a PredReg if that is not the case.

Definition at line 562 of file ARMBaseInstrInfo.h.

References llvm::MachineOperand::CreateImm(), and llvm::MachineOperand::CreateReg().

Referenced by llvm::ARMFrameLowering::adjustForSegmentedStacks(), llvm::ARMBaseInstrInfo::breakPartialRegDependency(), llvm::ARMBaseInstrInfo::buildOutlinedFrame(), CMSEPopCalleeSaves(), CMSEPushCalleeSaves(), llvm::ARMBaseInstrInfo::convertToThreeAddress(), llvm::ARMBaseInstrInfo::copyFromCPSR(), llvm::ARMBaseInstrInfo::copyPhysReg(), llvm::Thumb1InstrInfo::copyPhysReg(), llvm::Thumb2InstrInfo::copyPhysReg(), llvm::ARMBaseInstrInfo::copyToCPSR(), llvm::ThumbRegisterInfo::eliminateFrameIndex(), emitAlignedDPRCS2Restores(), emitAlignedDPRCS2Spills(), emitAligningInstructions(), emitARMRegPlusImmediate(), llvm::ARMFrameLowering::emitEpilogue(), llvm::Thumb1FrameLowering::emitEpilogue(), llvm::ARMTargetLowering::EmitInstrWithCustomInserter(), llvm::ARMBaseRegisterInfo::emitLoadConstPool(), emitPostLd(), emitPostSt(), llvm::ARMFrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), emitPrologueEpilogueSPUpdate(), emitT2RegPlusImmediate(), emitThumb2LoadConstPool(), emitThumbRegPlusImmediate(), emitThumbRegPlusImmInReg(), llvm::ARMBaseInstrInfo::expandLoadStackGuardBase(), llvm::ARMBaseInstrInfo::expandPostRAPseudo(), llvm::ARMBaseInstrInfo::foldImmediate(), genTPEntry(), genTPLoopBody(), llvm::ARMBaseInstrInfo::insertBranch(), llvm::ARMBaseInstrInfo::insertOutlinedCall(), llvm::ARMBaseInstrInfo::loadRegFromStackSlot(), llvm::Thumb1InstrInfo::loadRegFromStackSlot(), llvm::Thumb2InstrInfo::loadRegFromStackSlot(), llvm::ARMCallLowering::lowerCall(), llvm::ARMCallLowering::lowerReturn(), llvm::ARMBaseRegisterInfo::materializeFrameBaseRegister(), popRegsFromStack(), pushRegsToStack(), RevertDoLoopStart(), llvm::ThumbRegisterInfo::rewriteFrameIndex(), rewriteT2FrameIndex(), selectMergeValues(), selectUnmergeValues(), llvm::ARMBaseInstrInfo::setExecutionDomain(), llvm::ARMFrameLowering::spillCalleeSavedRegisters(), llvm::ARMBaseInstrInfo::storeRegToStackSlot(), llvm::Thumb1InstrInfo::storeRegToStackSlot(), and llvm::Thumb2InstrInfo::storeRegToStackSlot().

◆ prepareTempFiles()

std::error_code llvm::prepareTempFiles ( SmallVector< int > &  FD,
ArrayRef< StringRef SR,
SmallVector< std::string > &  FileName 
)

◆ PrepareToSplitEntryBlock()

BasicBlock::iterator llvm::PrepareToSplitEntryBlock ( BasicBlock BB,
BasicBlock::iterator  IP 
)

Instrumentation passes often insert conditional checks into entry blocks.

Call this function before splitting the entry block to move instructions that must remain in the entry block up before the split point. Static allocas and llvm.localescape calls, for example, must remain in the entry block.

Definition at line 38 of file Instrumentation.cpp.

References assert(), llvm::BasicBlock::end(), llvm::Function::getEntryBlock(), llvm::BasicBlock::getParent(), I, and moveBeforeInsertPoint().

◆ prettyPrintBaseTypeRef()

static void llvm::prettyPrintBaseTypeRef ( DWARFUnit U,
raw_ostream OS,
DIDumpOptions  DumpOpts,
ArrayRef< uint64_t Operands,
unsigned  Operand 
)
static

◆ prev_nodbg()

template<typename IterT >
IterT llvm::prev_nodbg ( IterT  It,
IterT  Begin,
bool  SkipPseudoOp = true 
)
inline

Decrement It, then continue decrementing it while it points to a debug instruction.

A replacement for std::prev.

Definition at line 1367 of file MachineBasicBlock.h.

References skipDebugInstructionsBackward().

Referenced by findHoistingInsertPosAndDeps(), llvm::MachineBasicBlock::findPrevDebugLoc(), llvm::RegPressureTracker::recedeSkipDebugValues(), and updateKillStatus().

◆ print() [1/2]

Printable llvm::print ( const GCNRegPressure RP,
const GCNSubtarget ST = nullptr 
)

Definition at line 226 of file GCNRegPressure.cpp.

References if(), OS, and llvm::GCNRegPressure::VGPR32.

Referenced by llvm::GCNSchedStage::checkScheduling(), llvm::DominanceFrontierBase< BlockT, IsPostDom >::dump(), llvm::RegionBase< Tr >::dump(), llvm::RegionInfoBase< Tr >::dump(), llvm::RegBankSelect::MappingCost::dump(), llvm::LiveDebugVariables::dump(), llvm::RegisterBankInfo::ValueMapping::dump(), llvm::RegisterBankInfo::InstructionMapping::dump(), llvm::RegisterBankInfo::OperandsMapper::dump(), llvm::BaseIndexOffset::dump(), llvm::SpillPlacement::BlockConstraint::dump(), llvm::SplitAnalysis::BlockInfo::dump(), llvm::VPlan::dump(), llvm::GenericSyncDependenceAnalysis< ContextT >::getJoinBlocks(), llvm::GCNSchedStage::initGCNRegion(), llvm::GCNUpwardRPTracker::isValid(), llvm::MachO::PackedVersion::operator std::string(), llvm::LoopInfoBase< BlockT, LoopT >::print(), llvm::GCNIterativeScheduler::printRegions(), llvm::GCNIterativeScheduler::printSchedRP(), llvm::BlockFrequencyPrinterPass::run(), llvm::CycleInfoPrinterPass::run(), llvm::DemandedBitsPrinterPass::run(), llvm::DominanceFrontierPrinterPass::run(), llvm::FunctionPropertiesPrinterPass::run(), llvm::PostDominatorTreePrinterPass::run(), llvm::RegionInfoPrinterPass::run(), llvm::ScalarEvolutionPrinterPass::run(), llvm::StackSafetyPrinterPass::run(), llvm::UniformityInfoPrinterPass::run(), llvm::DominatorTreePrinterPass::run(), llvm::DebugAssignmentTrackingPrinterPass::run(), llvm::IVUsersPrinterPass::run(), llvm::CallGraphPrinterPass::run(), llvm::StackSafetyGlobalPrinterPass::run(), llvm::GCNRegPressurePrinter::runOnMachineFunction(), llvm::GCNIterativeScheduler::scheduleRegion(), and llvm::BlockFrequencyInfoImpl< BT >::verifyMatch().

◆ print() [2/2]

Printable llvm::print ( const GCNRPTracker::LiveRegSet LiveRegs,
const MachineRegisterInfo MRI 
)

Definition at line 573 of file GCNRegPressure.cpp.

References I, MRI, OS, and TRI.

◆ printAfterPasses()

std::vector< std::string > llvm::printAfterPasses ( )

Definition at line 138 of file PrintPasses.cpp.

References PrintAfter.

◆ printAmdKernelCodeField()

void llvm::printAmdKernelCodeField ( const amd_kernel_code_t C,
int  FldIndex,
raw_ostream OS 
)

◆ printBeforePasses()

std::vector< std::string > llvm::printBeforePasses ( )

Definition at line 134 of file PrintPasses.cpp.

References PrintBefore.

◆ printBlockFreq() [1/4]

Printable llvm::printBlockFreq ( const BlockFrequencyInfo BFI,
BlockFrequency  Freq 
)

Print the block frequency Freq relative to the current functions entry frequency.

Returns a Printable object that can be piped via << to a raw_ostream.

Definition at line 284 of file BlockFrequencyInfo.cpp.

References OS, and printRelativeBlockFreq().

Referenced by llvm::BFIDOTGraphTraitsBase< BlockFrequencyInfoT, BranchProbabilityInfoT >::getNodeLabel(), and printBlockFreq().

◆ printBlockFreq() [2/4]

Printable llvm::printBlockFreq ( const BlockFrequencyInfo BFI,
const BasicBlock BB 
)

Convenience function equivalent to calling printBlockFreq(BFI, BFI.getBlocakFreq(&BB)).

Definition at line 291 of file BlockFrequencyInfo.cpp.

References printBlockFreq().

◆ printBlockFreq() [3/4]

Printable llvm::printBlockFreq ( const MachineBlockFrequencyInfo MBFI,
BlockFrequency  Freq 
)

Print the block frequency Freq relative to the current functions entry frequency.

Returns a Printable object that can be piped via << to a raw_ostream.

Definition at line 280 of file MachineBlockFrequencyInfo.cpp.

References llvm::MachineBlockFrequencyInfo::getEntryFreq(), OS, and printRelativeBlockFreq().

◆ printBlockFreq() [4/4]

Printable llvm::printBlockFreq ( const MachineBlockFrequencyInfo MBFI,
const MachineBasicBlock MBB 
)

Convenience function equivalent to calling printBlockFreq(MBFI, MBFI.getBlockFreq(&MBB)).

Definition at line 287 of file MachineBlockFrequencyInfo.cpp.

References llvm::MachineBlockFrequencyInfo::getBlockFreq(), MBB, and printBlockFreq().

◆ printCompactDWARFExpr()

static bool llvm::printCompactDWARFExpr ( raw_ostream OS,
DWARFExpression::iterator  I,
const DWARFExpression::iterator  E,
std::function< StringRef(uint64_t RegNum, bool IsEH)>  GetNameForDWARFReg = nullptr 
)
static

◆ PrintDAGs()

cl::opt< bool > llvm::PrintDAGs ( "misched-print-dags"  ,
cl::Hidden  ,
cl::desc("Print schedule DAGs")   
)

◆ PrintDomTree()

template<class NodeT >
void llvm::PrintDomTree ( const DomTreeNodeBase< NodeT > *  N,
raw_ostream O,
unsigned  Lev 
)

Definition at line 187 of file GenericDomTree.h.

References E, I, and N.

◆ PrintError() [1/5]

void llvm::PrintError ( ArrayRef< SMLoc ErrorLoc,
const Twine Msg 
)

Definition at line 103 of file Error.cpp.

References llvm::SourceMgr::DK_Error, and PrintMessage().

◆ PrintError() [2/5]

void llvm::PrintError ( const char Loc,
const Twine Msg 
)

◆ PrintError() [3/5]

void llvm::PrintError ( const Record Rec,
const Twine Msg 
)

Definition at line 113 of file Error.cpp.

References llvm::SourceMgr::DK_Error, llvm::Record::getLoc(), and PrintMessage().

◆ PrintError() [4/5]

void llvm::PrintError ( const RecordVal RecVal,
const Twine Msg 
)

Definition at line 119 of file Error.cpp.

References llvm::SourceMgr::DK_Error, llvm::RecordVal::getLoc(), and PrintMessage().

◆ PrintError() [5/5]

void llvm::PrintError ( const Twine Msg)

◆ PrintFatalError() [1/4]

void llvm::PrintFatalError ( ArrayRef< SMLoc ErrorLoc,
const Twine Msg 
)

Definition at line 132 of file Error.cpp.

References PrintError(), and llvm::sys::RunInterruptHandlers().

◆ PrintFatalError() [2/4]

void llvm::PrintFatalError ( const Record Rec,
const Twine Msg 
)

◆ PrintFatalError() [3/4]

void llvm::PrintFatalError ( const RecordVal RecVal,
const Twine Msg 
)

◆ PrintFatalError() [4/4]

void llvm::PrintFatalError ( const Twine Msg)

◆ PrintFatalNote() [1/4]

void llvm::PrintFatalNote ( ArrayRef< SMLoc ErrorLoc,
const Twine Msg 
)

Definition at line 62 of file Error.cpp.

References PrintNote(), and llvm::sys::RunInterruptHandlers().

◆ PrintFatalNote() [2/4]

void llvm::PrintFatalNote ( const Record Rec,
const Twine Msg 
)

Definition at line 71 of file Error.cpp.

References llvm::Record::getLoc(), PrintNote(), and llvm::sys::RunInterruptHandlers().

◆ PrintFatalNote() [3/4]

void llvm::PrintFatalNote ( const RecordVal RecVal,
const Twine Msg 
)

◆ PrintFatalNote() [4/4]

void llvm::PrintFatalNote ( const Twine Msg)

Definition at line 55 of file Error.cpp.

References PrintNote(), and llvm::sys::RunInterruptHandlers().

◆ printGraphForFunction()

template<typename GraphT >
void llvm::printGraphForFunction ( Function F,
GraphT  Graph,
StringRef  Name,
bool  IsSimple 
)

◆ printJumpTableEntryReference()

Printable llvm::printJumpTableEntryReference ( unsigned  Idx)

Prints a jump table entry reference.

The format is: jump-table.5 - a jump table entry with index == 5.

Usage: OS << printJumpTableEntryReference(Idx) << '
';

Definition at line 1365 of file MachineFunction.cpp.

References Idx, and OS.

Referenced by llvm::MachineJumpTableInfo::print(), and llvm::MachineOperand::print().

◆ PrintLaneMask()

Printable llvm::PrintLaneMask ( LaneBitmask  LaneMask)
inline

◆ printLLVMNameWithoutPrefix()

void llvm::printLLVMNameWithoutPrefix ( raw_ostream OS,
StringRef  Name 
)

Print out a name of an LLVM value without any prefixes.

The name is surrounded with ""'s and escaped if it has any special or non-printable characters in it.

Definition at line 380 of file AsmWriter.cpp.

References assert(), llvm::CallingConv::C, Name, and OS.

Referenced by llvm::MachineOperand::print(), llvm::MachineMemOperand::print(), printIRBlockReference(), llvm::MIRFormatter::printIRValue(), and PrintLLVMName().

◆ printLoop()

void llvm::printLoop ( Loop L,
raw_ostream OS,
const std::string &  Banner = "" 
)

Function to print a loop's contents as LLVM's text IR assembly.

Definition at line 977 of file LoopInfo.cpp.

References Block, llvm::SmallVectorBase< Size_T >::empty(), forcePrintModuleIR(), and OS.

Referenced by llvm::PrintLoopPass::run().

◆ printMBBReference()

Printable llvm::printMBBReference ( const MachineBasicBlock MBB)

Prints a machine basic block reference.

The format is: bb.5 - a machine basic block with MBB.getNumber() == 5.

Usage: OS << printMBBReference(MBB) << '
';

Definition at line 120 of file MachineBasicBlock.cpp.

References MBB, OS, and llvm::MachineBasicBlock::printAsOperand().

Referenced by llvm::HexagonInstrInfo::analyzeBranch(), llvm::MachineBasicBlock::canSplitCriticalEdge(), llvm::rdf::Liveness::computeLiveIns(), llvm::MIRPrinter::convert(), llvm::HexagonInstrInfo::copyPhysReg(), llvm::SplitEditor::enterIntvAtEnd(), llvm::SystemZPostRASchedStrategy::enterMBB(), llvm::ScheduleDAGInstrs::fixupKills(), getBlockName(), llvm::DOTGraphTraits< const MachineFunction * >::getNodeLabel(), hoistAndMergeSGPRInits(), llvm::GCNSchedStage::initGCNRegion(), llvm::HexagonInstrInfo::insertBranch(), llvm::MachineTraceMetrics::Ensemble::invalidate(), llvm::MachineTraceMetrics::invalidate(), llvm::HexagonInstrInfo::invertAndChangeJumpTarget(), llvm::ARMBasicBlockUtils::isBBInRange(), llvm::SplitEditor::leaveIntvAtTop(), llvm::SystemZPostRASchedStrategy::leaveMBB(), llvm::rdf::operator<<(), llvm::MIPrinter::print(), llvm::MachineTraceMetrics::TraceBlockInfo::print(), llvm::MachineTraceMetrics::Trace::print(), llvm::ARMConstantPoolMBB::print(), llvm::MachineJumpTableInfo::print(), llvm::SplitAnalysis::BlockInfo::print(), llvm::MachineBasicBlock::print(), llvm::MachineOperand::print(), llvm::MachineBranchProbabilityInfo::printEdgeProbability(), printRegion(), ProfitableToMerge(), llvm::HexagonInstrInfo::removeBranch(), removeExternalCFGEdges(), llvm::ScheduleDAGMI::schedule(), llvm::ScheduleDAGMILive::schedule(), llvm::VLIWMachineScheduler::schedule(), llvm::SIScheduleDAGMI::schedule(), llvm::MachineBasicBlock::SplitCriticalEdge(), llvm::SplitEditor::splitRegInBlock(), llvm::SplitEditor::splitRegOutBlock(), llvm::MachineBasicBlock::updateTerminator(), verifyCTRBranch(), VerifyPHIs(), and WriteGraph().

◆ PrintMessage()

static void llvm::PrintMessage ( ArrayRef< SMLoc Loc,
SourceMgr::DiagKind  Kind,
const Twine Msg 
)
static

◆ printMIR() [1/2]

void llvm::printMIR ( raw_ostream OS,
const MachineFunction MF 
)

Print a machine function using the MIR serialization format to the given output stream.

Definition at line 998 of file MIRPrinter.cpp.

References llvm::MachineFunction::getFunction(), OS, llvm::Metadata::print(), Printer, and WriteNewDbgInfoFormat.

◆ printMIR() [2/2]

void llvm::printMIR ( raw_ostream OS,
const Module M 
)

Print LLVM IR using the MIR serialization format to the given output stream.

Definition at line 990 of file MIRPrinter.cpp.

References OS, and WriteNewDbgInfoFormat.

Referenced by llvm::PrintMIRPass::run(), and llvm::PrintMIRPreparePass::run().

◆ PrintNote() [1/2]

void llvm::PrintNote ( ArrayRef< SMLoc NoteLoc,
const Twine Msg 
)

Definition at line 49 of file Error.cpp.

References llvm::SourceMgr::DK_Note, and PrintMessage().

◆ PrintNote() [2/2]

void llvm::PrintNote ( const Twine Msg)

Definition at line 45 of file Error.cpp.

References llvm::WithColor::note().

Referenced by CheckAssert(), dumpMessage(), and PrintFatalNote().

◆ PrintRecyclerStats()

void llvm::PrintRecyclerStats ( size_t  Size,
size_t  Align,
size_t  FreeListSize 
)

PrintRecyclingAllocatorStats - Helper for RecyclingAllocator for printing statistics.

Definition at line 31 of file Allocator.cpp.

References errs(), and Size.

Referenced by llvm::Recycler< T, Size, Align >::PrintStats().

◆ printReg()

Printable llvm::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.

The format is: noreg - NoRegister %5 - a virtual register. %5:sub_8bit - a virtual register with sub-register index (with TRI). eax - a physical register physreg17 - a physical register when no TRI instance given.

Usage: OS << printReg(Reg, TRI, SubRegIdx) << '
';

Definition at line 108 of file TargetRegisterInfo.cpp.

References llvm::Register::isStackSlot(), llvm_unreachable, MRI, OS, llvm::Register::stackSlot2Index(), and TRI.

Referenced by llvm::AggressiveAntiDepBreaker::AggressiveAntiDepBreaker(), llvm::A57ChainingConstraint::apply(), llvm::RegisterBankInfo::applyDefaultMapping(), llvm::LiveRegMatrix::assign(), llvm::HexagonFrameLowering::assignCalleeSavedSpillSlots(), llvm::AggressiveAntiDepBreaker::BreakAntiDependencies(), llvm::CriticalAntiDepBreaker::BreakAntiDependencies(), llvm::LiveRangeEdit::calculateRegClassAndHint(), llvm::RegAllocEvictionAdvisor::canAllocatePhysReg(), llvm::RegAllocEvictionAdvisor::canReassign(), llvm::TargetRegisterInfo::checkAllSuperRegsMarked(), llvm::MachineRegisterInfo::clearVirtRegs(), llvm::DeadLaneDetector::computeSubRegisterLaneBitInfo(), convertArgumentInfo(), llvm::HexagonInstrInfo::copyPhysReg(), llvm::VEInstrInfo::copyPhysReg(), createCFAOffset(), createDefCFAExpression(), createDefCFAOffset(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::SDep::dump(), dump_registers(), llvm::TargetRegisterInfo::dumpReg(), emitDebugValueComment(), llvm::AsmPrinter::emitImplicitDef(), llvm::AMDGPUAsmPrinter::emitImplicitDef(), emitKill(), llvm::RegAllocBase::enqueue(), llvm::RegScavenger::FindUnusedReg(), getVGPRSpillLaneOrTempRegister(), INITIALIZE_PASS(), llvm::ARCInstrInfo::loadRegFromStackSlot(), llvm::HexagonEvaluator::mask(), llvm::AggressiveAntiDepBreaker::Observe(), operator<<(), llvm::rdf::operator<<(), performCopyPropagation(), llvm::MIPrinter::print(), llvm::LiveInterval::print(), llvm::LivePhysRegs::print(), llvm::RegisterBankInfo::OperandsMapper::print(), llvm::PhysicalRegisterUsageInfo::print(), llvm::VirtRegMap::print(), llvm::MachineFunction::print(), llvm::LiveIntervalUnion::print(), llvm::MachineBasicBlock::print(), llvm::MachineOperand::print(), llvm::rdf::PhysicalRegisterInfo::print(), llvm::BitTracker::print_cells(), llvm::SDNode::print_details(), llvm::SystemZAsmPrinter::PrintAsmMemoryOperand(), printCFIRegister(), printCustomRegMask(), PrintNodeInfo(), printOperand(), printRegMIR(), regToString(), llvm::RegBankSelect::repairReg(), replaceFrameIndex(), llvm::PPCRegisterInfo::requiresFrameIndexScavenging(), llvm::AArch64FrameLowering::restoreCalleeSavedRegisters(), llvm::RegScavenger::scavengeRegisterBackwards(), llvm::AArch64FrameLowering::spillCalleeSavedRegisters(), llvm::ARCInstrInfo::storeRegToStackSlot(), tryToFindRegisterToRename(), llvm::LiveRegMatrix::unassign(), llvm::ScheduleDAGMILive::updatePressureDiffs(), and llvm::MachineRegisterInfo::verifyUseList().

◆ printRegClassOrBank()

Printable llvm::printRegClassOrBank ( Register  Reg,
const MachineRegisterInfo RegInfo,
const TargetRegisterInfo TRI 
)

◆ printRegUnit()

Printable llvm::printRegUnit ( unsigned  Unit,
const TargetRegisterInfo TRI 
)

Create Printable object to print register units on a raw_ostream.

Register units are named after their root registers:

al - Single root. fp0~st7 - Dual roots.

Usage: OS << printRegUnit(Unit, TRI) << '
';

Definition at line 139 of file TargetRegisterInfo.cpp.

References assert(), OS, and TRI.

Referenced by llvm::LiveRegMatrix::assign(), llvm::LiveIntervals::print(), llvm::rdf::PhysicalRegisterInfo::print(), printVRegOrUnit(), and llvm::LiveRegMatrix::unassign().

◆ printRelativeBlockFreq()

void llvm::printRelativeBlockFreq ( raw_ostream OS,
BlockFrequency  EntryFreq,
BlockFrequency  Freq 
)

Definition at line 51 of file BlockFrequency.cpp.

References Block, llvm::BlockFrequency::getFrequency(), and OS.

Referenced by printBlockFreq().

◆ PrintStatistics() [1/2]

void llvm::PrintStatistics ( )

◆ PrintStatistics() [2/2]

void llvm::PrintStatistics ( raw_ostream OS)

Print statistics to the given output stream.

Definition at line 176 of file Statistic.cpp.

References llvm::raw_ostream::flush(), format(), OS, StatInfo, and Stats.

◆ PrintStatisticsJSON()

void llvm::PrintStatisticsJSON ( raw_ostream OS)

Print statistics in JSON format.

This does include all global timers (

See also
Timer, TimerGroup). Note that the timers are cleared after printing and will not be printed in human readable form or in a second call of PrintStatisticsJSON().

Definition at line 203 of file Statistic.cpp.

References assert(), llvm::raw_ostream::flush(), OS, llvm::TimerGroup::printAllJSONValues(), StatInfo, StatLock, and Stats.

Referenced by llvm::LTOCodeGenerator::compileOptimized(), PrintStatistics(), and llvm::lto::LTO::run().

◆ printVRegOrUnit()

Printable llvm::printVRegOrUnit ( unsigned  VRegOrUnit,
const TargetRegisterInfo TRI 
)

◆ PrintWarning() [1/3]

void llvm::PrintWarning ( ArrayRef< SMLoc WarningLoc,
const Twine Msg 
)

Definition at line 91 of file Error.cpp.

References llvm::SourceMgr::DK_Warning, and PrintMessage().

◆ PrintWarning() [2/3]

void llvm::PrintWarning ( const char Loc,
const Twine Msg 
)

◆ PrintWarning() [3/3]

void llvm::PrintWarning ( const Twine Msg)

Definition at line 89 of file Error.cpp.

References llvm::WithColor::warning().

Referenced by llvm::Record::checkUnusedTemplateArgs().

◆ processInstr()

void llvm::processInstr ( MachineInstr MI,
MachineIRBuilder MIB,
MachineRegisterInfo MRI,
SPIRVGlobalRegistry GR 
)

◆ processShuffleMasks()

void llvm::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.

The function does 2 main things: 1) splits the source/destination vectors into real registers; 2) do the mask analysis to identify which real registers are permuted. Then the function processes resulting registers mask using provided action items. If no input register is defined, NoInputAction action is used. If only 1 input register is used, SingleInputAction is used, otherwise ManyInputsAction is used to process > 2 input registers and masks.

Parameters
MaskOriginal shuffle mask.
NumOfSrcRegsNumber of source registers.
NumOfDestRegsNumber of destination registers.
NumOfUsedRegsNumber of actually used destination registers.

Definition at line 433 of file VectorUtils.cpp.

References assert(), llvm::SmallVectorImpl< T >::assign(), llvm::SmallVectorImpl< T >::clear(), count_if(), llvm::SmallVectorBase< Size_T >::empty(), find_if(), I, Idx, PoisonMaskElem, and llvm::ArrayRef< T >::size().

Referenced by llvm::X86TTIImpl::getShuffleCost().

◆ ProfileInlineGrowthLimit()

cl::opt< int > llvm::ProfileInlineGrowthLimit ( "sample-profile-inline-growth-limit"  ,
cl::Hidden  ,
cl::init(12)  ,
cl::desc("The size growth ratio limit for proirity-based sample profile " "loader inlining.")   
)

◆ ProfileInlineLimitMax()

cl::opt< int > llvm::ProfileInlineLimitMax ( "sample-profile-inline-limit-max"  ,
cl::Hidden  ,
cl::init(10000)  ,
cl::desc("The upper bound of size growth limit for " "proirity-based sample profile loader inlining.")   
)

◆ ProfileInlineLimitMin()

cl::opt< int > llvm::ProfileInlineLimitMin ( "sample-profile-inline-limit-min"  ,
cl::Hidden  ,
cl::init(100)  ,
cl::desc("The lower bound of size growth limit for " "proirity-based sample profile loader inlining.")   
)

◆ ProfileLikelyProb()

cl::opt< unsigned > llvm::ProfileLikelyProb ( "profile-likely-prob"  ,
cl::desc("branch probability threshold in percentage to be considered" " very likely when profile is available")  ,
cl::init(51)  ,
cl::Hidden   
)

◆ ProfileSummaryColdCount()

cl::opt< uint64_t > llvm::ProfileSummaryColdCount ( "profile-summary-cold-count"  ,
cl::ReallyHidden  ,
cl::desc("A fixed cold count that overrides the count derived from" " profile-summary-cutoff-cold")   
)

◆ ProfileSummaryCutoffCold()

cl::opt< int > llvm::ProfileSummaryCutoffCold ( "profile-summary-cutoff-cold"  ,
cl::Hidden  ,
cl::init(999999)  ,
cl::desc("A count is cold if it is below the minimum count" " to reach this percentile of total counts.")   
)

◆ ProfileSummaryCutoffHot()

cl::opt< int > llvm::ProfileSummaryCutoffHot ( "profile-summary-cutoff-hot"  ,
cl::Hidden  ,
cl::init(990000)  ,
cl::desc("A count is hot if it exceeds the minimum count to" " reach this percentile of total counts.")   
)

◆ ProfileSummaryHotCount()

cl::opt< uint64_t > llvm::ProfileSummaryHotCount ( "profile-summary-hot-count"  ,
cl::ReallyHidden  ,
cl::desc("A fixed hot count that overrides the count derived from" " profile-summary-cutoff-hot")   
)

◆ ProfileSummaryHugeWorkingSetSizeThreshold()

cl::opt< unsigned > llvm::ProfileSummaryHugeWorkingSetSizeThreshold ( "profile-summary-huge-working-set-size-threshold"  ,
cl::Hidden  ,
cl::init(15000)  ,
cl::desc("The code working set size is considered huge if the number of" " blocks required to reach the -profile-summary-cutoff-hot" " percentile exceeds this count.")   
)

◆ ProfileSummaryLargeWorkingSetSizeThreshold()

cl::opt< unsigned > llvm::ProfileSummaryLargeWorkingSetSizeThreshold ( "profile-summary-large-working-set-size-threshold"  ,
cl::Hidden  ,
cl::init(12500)  ,
cl::desc("The code working set size is considered large if the number of" " blocks required to reach the -profile-summary-cutoff-hot" " percentile exceeds this count.")   
)

◆ programUndefinedIfPoison()

bool llvm::programUndefinedIfPoison ( const Instruction Inst)

◆ programUndefinedIfUndefOrPoison()

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

Note that this currently only considers the basic block that is the parent of Inst.

Definition at line 7722 of file ValueTracking.cpp.

Referenced by isGuaranteedNotToBeUndefOrPoison().

◆ promoteCall()

CallBase & llvm::promoteCall ( CallBase CB,
Function Callee,
CastInst **  RetBitCast = nullptr 
)

◆ promoteCallWithIfThenElse()

CallBase & llvm::promoteCallWithIfThenElse ( CallBase CB,
Function Callee,
MDNode BranchWeights = nullptr 
)

Promote the given indirect call site to conditionally call Callee.

This function creates an if-then-else structure at the location of the call site. The original call site is moved into the "else" block. A clone of the indirect call site is promoted, placed in the "then" block, and returned. If BranchWeights is non-null, it will be used to set !prof metadata on the new conditional branch.

Definition at line 550 of file CallPromotionUtils.cpp.

References promoteCall(), and versionCallSite().

Referenced by llvm::pgo::promoteIndirectCall().

◆ promoteLoopAccessesToScalars()

bool llvm::promoteLoopAccessesToScalars ( const SmallSetVector< Value *, 8 > &  PointerMustAliases,
SmallVectorImpl< BasicBlock * > &  ExitBlocks,
SmallVectorImpl< BasicBlock::iterator > &  InsertPts,
SmallVectorImpl< MemoryAccess * > &  MSSAInsertPts,
PredIteratorCache PIC,
LoopInfo LI,
DominatorTree DT,
AssumptionCache AC,
const TargetLibraryInfo TLI,
TargetTransformInfo TTI,
Loop CurLoop,
MemorySSAUpdater MSSAU,
ICFLoopSafetyInfo SafetyInfo,
OptimizationRemarkEmitter ORE,
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.

We do this by looping over the stores in the loop, looking for stores to Must pointers which are loop invariant. It takes a set of must-alias values, Loop exit blocks vector, loop exit blocks insertion point vector, PredIteratorCache, LoopInfo, DominatorTree, Loop, AliasSet information for all instructions of the loop and loop safety information as arguments. Diagnostics is emitted via ORE. It returns changed status. AllowSpeculation is whether values should be hoisted even if they are not guaranteed to execute in the loop, but are safe to speculatively execute.

We do this by looping over the stores in the loop, looking for stores to Must pointers which are loop invariant.

Definition at line 1961 of file LICM.cpp.

References all_of(), llvm::ICFLoopSafetyInfo::anyBlockMayThrow(), assert(), llvm::SetVector< T, Vector, Set, N >::begin(), llvm::LoopBase< BlockT, LoopT >::contains(), llvm::MemorySSAUpdater::createMemoryAccessInBB(), dbgs(), DEBUG_TYPE, DL, llvm::DominatorTree::dominates(), llvm::OptimizationRemarkEmitter::emit(), llvm::SmallVectorBase< Size_T >::empty(), llvm::MemorySSA::End, eraseInstruction(), llvm::PoisonValue::get(), llvm::Instruction::getAAMetadata(), llvm::Module::getDataLayout(), llvm::ilist_node_impl< OptionsT >::getIterator(), getLoadStoreType(), llvm::LoopBase< BlockT, LoopT >::getLoopPreheader(), llvm::MemorySSAUpdater::getMemorySSA(), llvm::DILocation::getMergedLocations(), llvm::BasicBlock::getModule(), llvm::Value::getName(), llvm::Instruction::getParent(), llvm::StoreInst::getPointerOperandIndex(), llvm::BasicBlock::getTerminator(), llvm::DataLayout::getTypeStoreSize(), getUnderlyingObject(), llvm::MemorySSAUpdater::insertUse(), isDereferenceableAndAlignedPointer(), isDereferenceablePointer(), llvm::ICFLoopSafetyInfo::isGuaranteedToExecute(), isSafeToExecuteUnconditionally(), isWritableObject(), LLVM_DEBUG, llvm::AAMDNodes::merge(), PIC, Ptr, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::Instruction::setAAMetadata(), llvm::LoadInst::setAlignment(), llvm::Instruction::setDebugLoc(), llvm::LoadInst::setOrdering(), SSA, Unordered, llvm::Value::use_empty(), llvm::MemorySSA::verifyMemorySSA(), and VerifyMemorySSA.

◆ PromoteMemToReg()

void llvm::PromoteMemToReg ( ArrayRef< AllocaInst * >  Allocas,
DominatorTree DT,
AssumptionCache AC = nullptr 
)

Promote the specified list of alloca instructions into scalar registers, inserting PHI nodes as appropriate.

This function makes use of DominanceFrontier information. This function does not modify the CFG of the function at all. All allocas must be from the same function.

Definition at line 1212 of file PromoteMemoryToRegister.cpp.

References llvm::ArrayRef< T >::empty().

Referenced by doPromotion(), eliminateSwiftError(), promoteMemoryToRegister(), and relocationViaAlloca().

◆ promoteScalarArgumentSize()

unsigned llvm::promoteScalarArgumentSize ( unsigned  size)
inline

◆ propagateIRFlags()

void llvm::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).

If OpValue is non-null, we only consider operations similar to OpValue when intersecting. Flag set: NSW, NUW (if IncludeWrapFlags is true), exact, and all of fast-math.

Definition at line 1235 of file LoopUtils.cpp.

References I.

◆ propagateMetadata()

Instruction * llvm::propagateMetadata ( Instruction Inst,
ArrayRef< Value * >  VL 
)

Specifically, let Kinds = [MD_tbaa, MD_alias_scope, MD_noalias, MD_fpmath, MD_nontemporal, MD_access_group].

For K in Kinds, we get the MDNode for K from each of the elements of VL, compute their "intersection" (i.e., the most generic metadata value that covers all of the individual values), and set I's metadata for M equal to the intersection value.

This function always sets a (possibly null) value for each K in Kinds.

Returns
I after propagating metadata from VL.

Definition at line 786 of file VectorUtils.cpp.

References llvm::ArrayRef< T >::empty(), llvm::Instruction::getAllMetadataOtherThanDebugLoc(), llvm::Instruction::getMetadata(), llvm::MDNode::getMostGenericAliasScope(), llvm::MDNode::getMostGenericFPMath(), llvm::MDNode::getMostGenericTBAA(), llvm::MDNode::intersect(), intersectAccessGroups(), llvm_unreachable, llvm::Instruction::setMetadata(), and llvm::ArrayRef< T >::size().

Referenced by llvm::InterleaveGroup< InstTy >::addMetadata(), and llvm::VPTransformState::addMetadata().

◆ propagatesPoison()

bool llvm::propagatesPoison ( const Use PoisonOp)

Return true if PoisonOp's user yields poison or raises UB if its operand PoisonOp is poison.

If PoisonOp is a vector or an aggregate and the operation's result is a single value, any poison element in /p PoisonOp should make the result poison or raise UB.

To filter out operands that raise UB on poison, you can use getGuaranteedNonPoisonOp.

Definition at line 7464 of file ValueTracking.cpp.

References llvm::Use::getOperandNo(), llvm::Use::getUser(), and I.

Referenced by programUndefinedIfUndefOrPoison(), and rewrite().

◆ pruneCache()

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

Prune the cache of files that haven't been accessed in a long time.

if Policy.Interval was expired.

Check whether cache pruning happens using the supplied policy, adds a ThinLTO warning if cache_size_bytes or cache_size_files is too small for the current link job. The warning recommends the user to consider adjusting –thinlto-cache-policy.

As a safeguard against data loss if the user specifies the wrong directory as their cache directory, this function will ignore files not matching the pattern "llvmcache-*".

Definition at line 145 of file CachePruning.cpp.

References llvm::sys::path::append(), count(), dbgs(), llvm::sys::fs::disk_space(), llvm::CachePruningPolicy::Expiration, llvm::sys::path::filename(), llvm::sys::fs::space_info::free, llvm::sys::fs::basic_file_status::getLastModificationTime(), llvm::CachePruningPolicy::Interval, llvm::sys::fs::is_directory(), LLVM_DEBUG, llvm::CachePruningPolicy::MaxSizeBytes, llvm::CachePruningPolicy::MaxSizeFiles, llvm::CachePruningPolicy::MaxSizePercentageOfAvailableSpace, llvm::sys::path::native, llvm::sys::fs::remove(), report_fatal_error(), llvm::StringRef::starts_with(), llvm::sys::fs::status(), llvm::WithColor::warning(), and writeTimestampFile().

Referenced by getCachedOrDownloadArtifact(), and llvm::ThinLTOCodeGenerator::run().

◆ PTOGV()

GenericValue llvm::PTOGV ( void *  P)
inline

◆ range_size()

template<typename R >
constexpr size_t llvm::range_size ( R &&  Range)
constexpr

Returns the size of the Range, i.e., the number of elements.

This implementation takes inspiration from std::ranges::size from C++20 and delegates the size check to adl_size or std::distance, in this order of preference. Unlike llvm::size, this function does not guarantee O(1) running time, and is intended to be used in generic code that does not know the exact range type.

Definition at line 1705 of file STLExtras.h.

References adl_begin(), adl_end(), and adl_size().

Referenced by append_values(), enumerate(), llvm::SystemZInstrInfo::foldMemoryOperandImpl(), zip_equal(), and zip_first().

◆ readAndDecodeStrings()

static Error llvm::readAndDecodeStrings ( StringRef  NameStrings,
std::function< Error(StringRef)>  NameCallback 
)
static

NameStrings is a string composed of one of more possibly encoded sub-strings.

The substrings are separated by 0 or more zero bytes. This method decodes the string and calls NameCallback for each substring.

Definition at line 488 of file InstrProf.cpp.

References llvm::StringRef::bytes_begin(), llvm::StringRef::bytes_end(), consumeError(), decodeULEB128(), llvm::compression::zlib::decompress(), getInstrProfNameSeparator(), llvm::compression::zlib::isAvailable(), N, Name, P, llvm::StringRef::split(), llvm::Error::success(), llvm::dwarf::toStringRef(), uncompress_failed, and zlib_unavailable.

Referenced by llvm::InstrProfSymtab::create(), and llvm::InstrProfSymtab::initVTableNamesFromCompressedStrings().

◆ ReadByteArrayFromGlobal()

Constant * llvm::ReadByteArrayFromGlobal ( const GlobalVariable GV,
uint64_t  Offset 
)

◆ readExponent()

static Expected< int > llvm::readExponent ( StringRef::iterator  begin,
StringRef::iterator  end 
)
static

Definition at line 377 of file APFloat.cpp.

References createError(), decDigitValue(), and value.

Referenced by interpretDecimal().

◆ readModuleSummaryIndex()

Error llvm::readModuleSummaryIndex ( MemoryBufferRef  Buffer,
ModuleSummaryIndex CombinedIndex 
)

Parse the specified bitcode buffer and merge the index into CombinedIndex.

Definition at line 8486 of file BitcodeReader.cpp.

References getSingleModule(), and llvm::Expected< T >::takeError().

◆ readWideAPInt()

APInt llvm::readWideAPInt ( ArrayRef< uint64_t Vals,
unsigned  TypeBits 
)

◆ recognizeBSwapOrBitReverseIdiom()

bool llvm::recognizeBSwapOrBitReverseIdiom ( Instruction I,
bool  MatchBSwaps,
bool  MatchBitReversals,
SmallVectorImpl< Instruction * > &  InsertedInsts 
)

Try to match a bswap or bitreverse idiom.

If an idiom is matched, an intrinsic call is inserted before I. Any added instructions are returned in InsertedInsts. They will all have been added to a basic block.

A bitreverse idiom normally requires around 2*BW nodes to be searched (where BW is the bitwidth of the integer type). A bswap idiom requires anywhere up to BW / 4 nodes to be searched, so is significantly faster.

This function returns true on a successful match or false otherwise.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 3938 of file Local.cpp.

References all_of(), assert(), llvm::ArrayRef< T >::back(), bitTransformIsCorrectForBitReverse(), bitTransformIsCorrectForBSwap(), llvm::APInt::clearBit(), collectBitParts(), llvm::BinaryOperator::Create(), llvm::CallInst::Create(), llvm::CastInst::CreateIntegerCast(), llvm::ArrayRef< T >::drop_back(), llvm::ArrayRef< T >::empty(), F, llvm::APInt::getAllOnes(), llvm::Intrinsic::getDeclaration(), llvm::Type::getIntNTy(), llvm::Type::getScalarSizeInBits(), llvm::Value::getType(), I, llvm::APInt::isAllOnes(), llvm::Type::isIntOrIntVectorTy(), llvm::PatternMatch::m_BSwap(), llvm::PatternMatch::m_FShl(), llvm::PatternMatch::m_FShr(), llvm::PatternMatch::m_Or(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::ArrayRef< T >::size().

Referenced by llvm::InstCombinerImpl::matchBSwapOrBitReverse().

◆ recomputeLiveIns()

static bool llvm::recomputeLiveIns ( MachineBasicBlock MBB)
inlinestatic

Convenience function for recomputing live-in's for a MBB.

Returns true if any changes were made.

Definition at line 200 of file LivePhysRegs.h.

References llvm::MachineBasicBlock::clearLiveIns(), computeAndAddLiveIns(), llvm::MachineBasicBlock::getLiveIns(), MBB, and llvm::MachineBasicBlock::sortUniqueLiveIns().

Referenced by fullyRecomputeLiveIns().

◆ recomputeLivenessFlags()

void llvm::recomputeLivenessFlags ( MachineBasicBlock MBB)

◆ recomputeVPTBlockMask()

void llvm::recomputeVPTBlockMask ( MachineInstr Instr)

◆ reconstructFunctionType()

Type * llvm::reconstructFunctionType ( Function F)
inline

◆ RecursivelyDeleteDeadPHINode()

bool llvm::RecursivelyDeleteDeadPHINode ( PHINode PN,
const TargetLibraryInfo TLI = nullptr,
llvm::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.

RecursivelyDeleteDeadPHINode - 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.

If that makes any of its operands trivially dead, delete them too, recursively. Return true if a change was made.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 650 of file Local.cpp.

References areAllUsesEqual(), llvm::PoisonValue::get(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), and RecursivelyDeleteTriviallyDeadInstructions().

Referenced by CanWidenIV(), and DeleteDeadPHIs().

◆ RecursivelyDeleteTriviallyDeadInstructions() [1/2]

void llvm::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.

The initial instructions in the provided vector must all have empty use lists and satisfy isInstructionTriviallyDead.

DeadInsts will be used as scratch storage for this routine and will be empty afterward.

Definition at line 573 of file Local.cpp.

References assert(), llvm::SmallVectorBase< Size_T >::empty(), I, isInstructionTriviallyDead(), llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::MemorySSAUpdater::removeMemoryAccess(), salvageDebugInfo(), and llvm::Value::use_empty().

◆ RecursivelyDeleteTriviallyDeadInstructions() [2/2]

bool llvm::RecursivelyDeleteTriviallyDeadInstructions ( Value V,
const TargetLibraryInfo TLI = nullptr,
MemorySSAUpdater MSSAU = nullptr,
std::function< void(Value *)>  AboutToDeleteCallback = std::function<void(Value *)>() 
)

◆ RecursivelyDeleteTriviallyDeadInstructionsPermissive()

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

These will be ignored. Returns true if any changes were made, i.e. any instructions trivially dead were found and deleted.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 554 of file Local.cpp.

References I, isInstructionTriviallyDead(), RecursivelyDeleteTriviallyDeadInstructions(), and llvm::SmallVectorBase< Size_T >::size().

Referenced by CleanupConstantGlobalUsers(), doPromotion(), and ReduceLoopStrength().

◆ refineInstruction()

static bool llvm::refineInstruction ( SCCPSolver Solver,
const SmallPtrSetImpl< Value * > &  InsertedValues,
Instruction Inst 
)
static

◆ RegionGraphTraits() [1/2]

llvm::RegionGraphTraits ( MachineRegion  ,
MachineRegionNode   
)

◆ RegionGraphTraits() [2/2]

llvm::RegionGraphTraits ( Region  ,
RegionNode   
)

◆ RegionNodeGraphTraits() [1/2]

llvm::RegionNodeGraphTraits ( MachineRegionNode  ,
MachineBasicBlock  ,
MachineRegion   
)

◆ RegionNodeGraphTraits() [2/2]

llvm::RegionNodeGraphTraits ( RegionNode  ,
BasicBlock  ,
Region   
)

◆ registerCodeGenCallback()

void llvm::registerCodeGenCallback ( PassInstrumentationCallbacks PIC,
LLVMTargetMachine LLVMTM 
)

◆ registerDefinedBetween()

bool llvm::registerDefinedBetween ( unsigned  Reg,
MachineBasicBlock::iterator  From,
MachineBasicBlock::iterator  To,
const TargetRegisterInfo TRI 
)

Return true if Reg is defd between From and To.

Definition at line 5588 of file ARMBaseInstrInfo.cpp.

References From, I, and TRI.

Referenced by findCMPToFoldIntoCBZ(), and findVCMPToFoldIntoVPST().

◆ RemapDbgVariableRecord()

void llvm::RemapDbgVariableRecord ( Module M,
DbgVariableRecord V,
ValueToValueMapTy VM,
RemapFlags  Flags = RF_None,
ValueMapTypeRemapper TypeMapper = nullptr,
ValueMaterializer Materializer = nullptr 
)
inline

Remap the Values used in the DbgVariableRecord V using the value map VM.

Definition at line 273 of file ValueMapper.h.

References llvm::ValueMapper::remapDbgVariableRecord().

Referenced by performBranchToCommonDestFolding().

◆ RemapDbgVariableRecordRange()

void llvm::RemapDbgVariableRecordRange ( Module M,
iterator_range< DbgRecordIterator Range,
ValueToValueMapTy VM,
RemapFlags  Flags = RF_None,
ValueMapTypeRemapper TypeMapper = nullptr,
ValueMaterializer Materializer = nullptr 
)
inline

◆ RemapFunction()

void llvm::RemapFunction ( Function F,
ValueToValueMapTy VM,
RemapFlags  Flags = RF_None,
ValueMapTypeRemapper TypeMapper = nullptr,
ValueMaterializer Materializer = nullptr 
)
inline

Remap the operands, metadata, arguments, and instructions of a function.

Calls MapValue() on prefix data, prologue data, and personality function; calls MapMetadata() on each attached MDNode; remaps the argument types using the provided TypeMapper; and calls RemapInstruction() on every instruction.

Definition at line 299 of file ValueMapper.h.

References F, and llvm::ValueMapper::remapFunction().

◆ RemapInstruction()

void llvm::RemapInstruction ( Instruction I,
ValueToValueMapTy VM,
RemapFlags  Flags = RF_None,
ValueMapTypeRemapper TypeMapper = nullptr,
ValueMaterializer Materializer = nullptr 
)
inline

Convert the instruction operands from referencing the current values into those specified by VM.

If RF_IgnoreMissingLocals is set and an operand can't be found via MapValue(), use the old value. Otherwise assert that this doesn't happen.

Note that MapValue() only returns nullptr for SSA values missing from VM.

Definition at line 264 of file ValueMapper.h.

References I, and llvm::ValueMapper::remapInstruction().

Referenced by buildClonedLoopBlocks(), buildPartialInvariantUnswitchConditionalBranch(), CloneAndPruneIntoFromInst(), CloneFunctionInto(), CloneInstructionsIntoPredecessorBlockAndUpdateSSAUses(), remapInstructionsInBlocks(), and UnrollRuntimeLoopRemainder().

◆ remapInstructionsInBlocks()

void llvm::remapInstructionsInBlocks ( ArrayRef< BasicBlock * >  Blocks,
ValueToValueMapTy VMap 
)

◆ remapPath()

static std::string llvm::remapPath ( StringRef  Path,
const DWARFLinkerBase::ObjectPrefixMapTy ObjectPrefixMap 
)
static

Definition at line 2404 of file DWARFLinker.cpp.

References llvm::sys::path::replace_path_prefix().

Referenced by getPCMFile(), and getPCMFile().

◆ remove_bad_alloc_error_handler()

void llvm::remove_bad_alloc_error_handler ( )

Restores default bad alloc error handling behavior.

Definition at line 139 of file ErrorHandling.cpp.

References BadAllocErrorHandler, and BadAllocErrorHandlerUserData.

◆ remove_fatal_error_handler()

void llvm::remove_fatal_error_handler ( )

Restores default error handling behaviour.

Definition at line 74 of file ErrorHandling.cpp.

References ErrorHandler, and ErrorHandlerUserData.

Referenced by LLVMResetFatalErrorHandler(), and llvm::ScopedFatalErrorHandler::~ScopedFatalErrorHandler().

◆ remove_if()

template<typename R , typename UnaryPredicate >
auto llvm::remove_if ( R &&  Range,
UnaryPredicate  P 
)

Provide wrappers to std::remove_if which take ranges instead of having to pass begin/end explicitly.

Definition at line 1761 of file STLExtras.h.

References adl_begin(), adl_end(), and P.

Referenced by erase_if(), llvm::PriorityWorklist< T, VectorT, MapT >::erase_if(), llvm::SetVector< T, Vector, Set, N >::remove_if(), and llvm::PHINode::removeIncomingValueIf().

◆ removeAllNonTerminatorAndEHPadInstructions()

std::pair< unsigned, unsigned > llvm::removeAllNonTerminatorAndEHPadInstructions ( BasicBlock BB)

Remove all instructions from a basic block other than its terminator and any present EH pad instructions.

Returns a pair where the first element is the number of instructions (excluding debug info intrinsics) that have been removed, and the second element is the number of debug info intrinsics that have been removed.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 2800 of file Local.cpp.

References llvm::Instruction::dropDbgRecords(), llvm::Instruction::eraseFromParent(), llvm::BasicBlock::front(), llvm::PoisonValue::get(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::BasicBlock::getTerminator(), llvm::Value::getType(), handleUnreachableTerminator(), llvm::Instruction::isEHPad(), llvm::Type::isTokenTy(), llvm::Value::replaceAllUsesWith(), llvm::Value::use_empty(), and Uses.

Referenced by llvm::InstCombinerImpl::prepareWorklist().

◆ removeFromUsedLists()

void llvm::removeFromUsedLists ( Module M,
function_ref< bool(Constant *)>  ShouldRemove 
)

Removes global values from the llvm.used and llvm.compiler.used arrays.

ShouldRemove should return true for any initializer field that should not be included in the replacement global.

Definition at line 151 of file ModuleUtils.cpp.

References removeFromUsedList().

Referenced by removeUnreachableFunctions().

◆ RemoveRedundantDbgInstrs()

bool llvm::RemoveRedundantDbgInstrs ( BasicBlock BB)

◆ removeUnreachableBlocks()

bool llvm::removeUnreachableBlocks ( Function F,
DomTreeUpdater DTU = nullptr,
MemorySSAUpdater MSSAU = nullptr 
)

◆ removeUnwindEdge()

Instruction * llvm::removeUnwindEdge ( BasicBlock BB,
DomTreeUpdater DTU = nullptr 
)

Replace 'BB's terminator with one that does not have an unwind successor block.

Rewrites invoke to call, etc. Updates any PHIs in unwind successor. Returns the instruction that replaced the original terminator, which might be a call in case the original terminator was an invoke.

Parameters
BBBlock whose terminator will be replaced. Its terminator must have an unwind successor.
Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 3159 of file Local.cpp.

References llvm::DomTreeUpdater::applyUpdates(), changeToCall(), llvm::CleanupReturnInst::Create(), llvm::CatchSwitchInst::Create(), llvm::Instruction::eraseFromParent(), llvm::Instruction::getDebugLoc(), llvm::BasicBlock::getTerminator(), llvm_unreachable, llvm::BasicBlock::removePredecessor(), llvm::Value::replaceAllUsesWith(), llvm::Instruction::setDebugLoc(), and llvm::Value::takeName().

Referenced by removeEmptyCleanup().

◆ renameModuleForThinLTO()

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

Definition at line 355 of file FunctionImportUtils.cpp.

References llvm::FunctionImportGlobalProcessing::run().

Referenced by doImportingForModuleForTest(), llvm::FunctionImporter::importFunctions(), and llvm::lto::thinBackend().

◆ reorderScalars()

static void llvm::reorderScalars ( SmallVectorImpl< Value * > &  Scalars,
ArrayRef< int >  Mask 
)
static

◆ replace() [1/2]

template<typename Container , typename RandomAccessIterator >
void llvm::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).

Definition at line 2088 of file STLExtras.h.

Referenced by LLVMOrcMaterializationResponsibilityReplace(), and replace().

◆ replace() [2/2]

template<typename Container , typename Range = std::initializer_list< typename Container::value_type>>
void llvm::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.

Definition at line 2107 of file STLExtras.h.

References replace().

◆ replace_copy()

template<typename R , typename OutputIt , typename T >
OutputIt llvm::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.

Definition at line 1840 of file STLExtras.h.

References adl_begin(), and adl_end().

Referenced by TransferTracker::clobberMloc().

◆ replace_copy_if()

template<typename R , typename OutputIt , typename UnaryPredicate , typename T >
OutputIt llvm::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.

Definition at line 1831 of file STLExtras.h.

References adl_begin(), adl_end(), and P.

◆ replaceAllDbgUsesWith()

bool llvm::replaceAllDbgUsesWith ( Instruction From,
Value To,
Instruction DomPoint,
DominatorTree DT 
)

Point debug users of From to To or salvage them.

Use this function only when replacing all uses of From with To, with a guarantee that From is going to be deleted.

Follow these rules to prevent use-before-def of To: . If To is a linked Instruction, set DomPoint to To. . If To is an unlinked Instruction, set DomPoint to the Instruction To will be inserted after. . If To is not an Instruction (e.g a Constant), the choice of DomPoint is arbitrary. Pick From for simplicity.

If a debug user cannot be preserved without reordering variable updates or introducing a use-before-def, it is either salvaged (salvageDebugInfo) or deleted. Returns true if any debug users were updated.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 2710 of file Local.cpp.

References llvm::DIExpression::appendExt(), assert(), DL, From, llvm::DbgVariableIntrinsic::getExpression(), llvm::Type::getPrimitiveSizeInBits(), llvm::DIVariable::getSignedness(), llvm::Value::getType(), llvm::DbgVariableIntrinsic::getVariable(), isBitCastSemanticsPreserving(), llvm::Type::isIntegerTy(), rewriteDebugUsers(), and Signed.

Referenced by llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::foldOpIntoPhi(), simplifyAllocaArraySize(), and llvm::InstCombinerImpl::visitZExt().

◆ replaceAndRecursivelySimplify()

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

This first performs a normal RAUW of I with SimpleV. It then recursively attempts to simplify those users updated by the operation. The 'I' instruction must not be equal to the simplified value 'SimpleV'. If UnsimplifiedUsers is provided, instructions that could not be simplified are added to it.

The function returns true if any simplifications were performed.

Definition at line 7205 of file InstructionSimplify.cpp.

References assert(), I, and replaceAndRecursivelySimplifyImpl().

Referenced by replaceConditionalBranchesOnConstant(), and replaceWithConstant().

◆ replaceCreatedSSACopys()

static void llvm::replaceCreatedSSACopys ( PredicateInfo PredInfo,
Function F 
)
static

◆ replaceDbgDeclare()

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

If Deref is true, an additional DW_OP_deref is prepended to the expression. If Offset is non-zero, a constant displacement is added to the expression (between the optional Deref operations). Offset can be negative.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 2131 of file Local.cpp.

References assert(), llvm::TinyPtrVector< EltTy >::empty(), findDbgDeclares(), findDVRDeclares(), for_each(), Offset, and llvm::DIExpression::prepend().

◆ replaceDbgUsesWithUndef()

bool llvm::replaceDbgUsesWithUndef ( Instruction I)

Replace all the uses of an SSA value in @llvm.dbg intrinsics with undef.

This is useful for signaling that a variable, e.g. has been found dead and hence it's unavailable at a given program point. Returns true if the dbg values have been changed.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 616 of file Local.cpp.

References llvm::SmallVectorBase< Size_T >::empty(), findDbgUsers(), and I.

◆ replaceDbgValueForAlloca()

void llvm::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.

If Offset is non-zero, a constant displacement is added to the expression (after the mandatory Deref). Offset can be negative. New llvm.dbg.value instructions are inserted at the locations of the instructions they replace.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 2180 of file Local.cpp.

References findDbgValues(), Offset, and updateOneDbgValueForAlloca().

◆ replaceDominatedUsesWith() [1/2]

unsigned llvm::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.

Returns the number of replacements made.

Definition at line 3475 of file Local.cpp.

References llvm::DominatorTree::dominates(), and From.

◆ replaceDominatedUsesWith() [2/2]

unsigned llvm::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.

Returns the number of replacements made.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 3466 of file Local.cpp.

References llvm::DominatorTree::dominates(), and From.

Referenced by sinkInstruction().

◆ ReplaceInstWithInst() [1/2]

void llvm::ReplaceInstWithInst ( BasicBlock BB,
BasicBlock::iterator BI,
Instruction I 
)

◆ ReplaceInstWithInst() [2/2]

void llvm::ReplaceInstWithInst ( Instruction From,
Instruction To 
)

Replace the instruction specified by From with the instruction specified by To.

Copies DebugLoc from BI to I, if I doesn't already have a DebugLoc.

Definition at line 756 of file BasicBlockUtils.cpp.

References From, and ReplaceInstWithInst().

◆ ReplaceInstWithValue()

void llvm::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.

Definition at line 709 of file BasicBlockUtils.cpp.

References I.

Referenced by ReplaceInstWithInst().

◆ replaceNonLocalUsesWith()

unsigned llvm::replaceNonLocalUsesWith ( Instruction From,
Value To 
)

◆ replaceRelativePointerUsersWithZero()

void llvm::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.

Definition at line 253 of file TypeMetadataUtils.cpp.

References llvm::CallingConv::C, replaceRelativePointerUsersWithZero(), and replaceRelativePointerUserWithZero().

Referenced by replaceRelativePointerUsersWithZero(), and llvm::GlobalDCEPass::run().

◆ replaceSignedInst()

static bool llvm::replaceSignedInst ( SCCPSolver Solver,
SmallPtrSetImpl< Value * > &  InsertedValues,
Instruction Inst 
)
static

◆ replaceSymbolicStrideSCEV()

const SCEV * llvm::replaceSymbolicStrideSCEV ( 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.

If necessary this method will version the stride of the pointer according to PtrToStride and therefore add further predicates to PSE.

PtrToStride provides the mapping between the pointer value and its stride as collected by LoopVectorizationLegality::collectStridedAccess.

Definition at line 153 of file LoopAccessAnalysis.cpp.

References llvm::PredicatedScalarEvolution::addPredicate(), assert(), dbgs(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::ScalarEvolution::getEqualPredicate(), llvm::ScalarEvolution::getOne(), llvm::PredicatedScalarEvolution::getSCEV(), llvm::PredicatedScalarEvolution::getSE(), llvm::SCEV::getType(), LLVM_DEBUG, and Ptr.

Referenced by findForkedPointer(), and getPtrStride().

◆ report_bad_alloc_error()

void llvm::report_bad_alloc_error ( const char Reason,
bool  GenCrashDiag = true 
)

Reports a bad alloc error, calling any user defined bad alloc error handler.

In contrast to the generic 'report_fatal_error' functions, this function might not terminate, e.g. the user defined error handler throws an exception, but it won't return.

Note: When throwing an exception in the bad alloc handler, make sure that the following unwind succeeds, e.g. do not trigger additional allocations in the unwind chain.

If no error handler is installed (default), throws a bad_alloc exception if LLVM is compiled with exception support. Otherwise prints the error to standard error and calls abort().

Definition at line 147 of file ErrorHandling.cpp.

References BadAllocErrorHandler, BadAllocErrorHandlerUserData, llvm_unreachable, and write().

Referenced by out_of_memory_new_handler(), safe_calloc(), safe_malloc(), and safe_realloc().

◆ report_fatal_error() [1/4]

void llvm::report_fatal_error ( const char reason,
bool  gen_crash_diag = true 
)

Reports a serious error, calling any installed error handler.

These functions are intended to be used for error conditions which are outside the control of the compiler (I/O errors, invalid user input, etc.)

If no error handler is installed the default is to print the message to standard error, followed by a newline. After the error handler is called this function will call abort(), it does not return. NOTE: The std::string variant was removed to avoid a <string> dependency.

Definition at line 82 of file ErrorHandling.cpp.

References report_fatal_error().

◆ report_fatal_error() [2/4]

void llvm::report_fatal_error ( const Twine reason,
bool  gen_crash_diag = true 
)

◆ report_fatal_error() [3/4]

void llvm::report_fatal_error ( Error  Err,
bool  gen_crash_diag = true 
)

Report a serious error, calling any installed error handler.

See ErrorHandling.h.

Definition at line 156 of file Error.cpp.

Referenced by llvm::AArch64FunctionInfo::AArch64FunctionInfo(), llvm::jitlink::absoluteSymbolsLinkGraph(), AddAtomicFloatRequirements(), llvm::MCObjectWriter::addCInfoSymEntry(), addData(), llvm::MCObjectWriter::addExceptionEntry(), addInstrRequirements(), llvm::cl::parser< DataType >::addLiteralOption(), llvm::ThinLTOCodeGenerator::addModule(), addNumImm(), llvm::MCJIT::addObjectFile(), addOperandsForVFMK(), llvm::TargetPassConfig::addPass(), llvm::TargetPassConfig::addRegAssignAndRewriteFast(), llvm::SPIRV::RequirementHandler::addRequirements(), addressSpaceToStorageClass(), llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::ARMFrameLowering::adjustForSegmentedStacks(), llvm::X86FrameLowering::adjustForSegmentedStacks(), llvm::AMDGPUMachineFunction::allocateLDSGlobal(), llvm::RegAllocBase::allocatePhysRegs(), allocateSGPR32InputImpl(), llvm::SITargetLowering::allocateSpecialInputVGPRsFixed(), llvm::RuntimeDyld::MemoryManager::allocateTLSSection(), llvm::AMDGPUDisassembler::AMDGPUDisassembler(), llvm::CCState::AnalyzeFormalArguments(), llvm::CCState::AnalyzeReturn(), llvm::RuntimeDyldImpl::applyExternalSymbolRelocations(), ARM64EmitUnwindInfo(), ARM64EmitUnwindInfoForSegment(), ARMEmitUnwindInfo(), AVRDAGToDAGISel::select< ISD::LOAD >(), basicCheckForEHAndSjLj(), llvm::yaml::Stream::begin(), llvm::MachObjectWriter::bindIndirectSymbols(), llvm::SPIRVGlobalRegistry::buildConstantSampler(), llvm::coro::buildCoroutineFrame(), buildFrameType(), llvm::coro::Shape::buildFrom(), buildModuleSummaryIndex(), buildScratchExecCopy(), llvm::SIRegisterInfo::buildSpillLoadStore(), calculateCXXStateNumbers(), calculateSEHStateNumbers(), llvm::Interpreter::callExternalFunction(), CC_AIX(), CC_LoongArch(), CC_LoongArch_GHC(), llvm::RISCV::CC_RISCV_GHC(), CC_SystemZ_GHC_Error(), CC_X86_Intr(), llvm::AMDGPUCallLowering::CCAssignFnForCall(), llvm::AArch64TargetLowering::CCAssignFnForCall(), llvm::R600TargetLowering::CCAssignFnForCall(), llvm::AMDGPUCallLowering::CCAssignFnForReturn(), llvm::MCELFStreamer::changeSection(), checkAddrSpaceIsValidForLibcall(), CheckBundleSubtargets(), checkMachOComdat(), llvm::SPIRV::RequirementHandler::checkSatisfiable(), llvm::object::XCOFFObjectFile::checkSymbolEntryPointer(), codegen(), combineInstructionsOverFunction(), computeDeadSymbolsAndUpdateIndirectCalls(), llvm::RuntimeDyldImpl::computeSectionStubBufSize(), llvm::DwarfFile::computeSizeAndOffsets(), llvm::object::computeSymbolSizes(), llvm::RISCVABI::computeTargetABI(), computeUnrollCount(), llvm::NVPTXInstrInfo::copyPhysReg(), llvm::X86InstrInfo::copyPhysReg(), llvm::TargetMachineBuilder::create(), llvm::MCAsmBackend::createDwoObjectWriter(), llvm::dxil::DXILOpBuilder::createDXILOpCall(), llvm::SpecialCaseList::createOrDie(), CreateZ3Solver(), llvm::thread::detach(), determineSVEStackObjectOffsets(), doImportingForModuleForTest(), llvm::BasicBlockSectionsProfileReaderWrapperPass::doInitialization(), llvm::AMDGPUAsmPrinter::doInitialization(), llvm::NVPTXAsmPrinter::doInitialization(), llvm::DwarfDebug::DwarfDebug(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::CSKYRegisterInfo::eliminateFrameIndex(), llvm::RISCVRegisterInfo::eliminateFrameIndex(), llvm::XtensaRegisterInfo::eliminateFrameIndex(), llvm::AMDGPUTargetELFStreamer::emitAMDGPULDS(), llvm::MCELFStreamer::emitBundleAlignMode(), llvm::MCELFStreamer::emitBundleLock(), llvm::MCELFStreamer::emitBundleUnlock(), llvm::MCELFStreamer::emitCommonSymbol(), llvm::MCWinCOFFStreamer::emitCommonSymbol(), llvm::RuntimeDyldImpl::emitCommonSymbols(), llvm::MipsTargetStreamer::emitDirectiveModuleOddSPReg(), llvm::MCStreamer::emitDTPRel32Value(), llvm::MCStreamer::emitDTPRel64Value(), llvm::SIFrameLowering::emitEpilogue(), llvm::MachineInstr::emitError(), llvm::EHStreamer::emitExceptionTable(), llvm::AMDGPUAsmPrinter::emitFunctionBodyStart(), llvm::AsmPrinter::emitFunctionEntryLabel(), emitGlobalConstantVector(), llvm::ExecutionEngine::emitGlobals(), llvm::AMDGPUAsmPrinter::emitGlobalVariable(), llvm::MCStreamer::emitGPRel32Value(), llvm::MCStreamer::emitGPRel64Value(), llvm::ThinLTOCodeGenerator::emitImports(), EmitInlineAsmStr(), llvm::BPFTargetLowering::EmitInstrWithCustomInserter(), llvm::RISCVTargetLowering::EmitInstrWithCustomInserter(), llvm::X86TargetLowering::EmitKCFICheck(), llvm::TargetLoweringObjectFileELF::emitModuleMetadata(), llvm::TargetLoweringObjectFileMachO::emitModuleMetadata(), llvm::MCJIT::emitObject(), llvm::AArch64FrameLowering::emitPrologue(), llvm::SIFrameLowering::emitPrologue(), llvm::SparcFrameLowering::emitPrologue(), llvm::SystemZELFFrameLowering::emitPrologue(), llvm::VEFrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), emitPrologueEpilogueSPUpdate(), llvm::MCStreamer::emitRawTextImpl(), llvm::RuntimeDyldImpl::emitSection(), llvm::AsmPrinter::emitSpecialLLVMGlobal(), llvm::MCXCOFFStreamer::emitSymbolAttribute(), llvm::RISCVTargetStreamer::emitTargetAttributes(), llvm::MCStreamer::emitTPRel32Value(), llvm::MCStreamer::emitTPRel64Value(), llvm::MCELFStreamer::emitValueImpl(), llvm::MCELFStreamer::emitValueToAlignment(), llvm::MCObjectStreamer::emitWeakReference(), llvm::MCStreamer::emitXCOFFExceptDirective(), llvm::MCXCOFFStreamer::emitXCOFFRefDirective(), llvm::MCXCOFFStreamer::emitXCOFFRenameDirective(), llvm::MCXCOFFStreamer::emitZerofill(), llvm::AArch64AuthMCExpr::evaluateAsRelocatableImpl(), llvm::TargetLowering::expandFMINNUM_FMAXNUM(), llvm::AArch64InstrInfo::expandPostRAPseudo(), expandPseudoVFMK(), llvm::TargetLowering::expandVecReduce(), llvm::TargetLowering::expandVecReduceSeq(), llvm::CodeExtractor::extractCodeRegion(), fail(), llvm::MCJIT::findSymbol(), foldPatchpoint(), llvm::ARMJITSymbolFlags::fromObjectSymbol(), llvm::MCJIT::generateCodeForModule(), generateConvertInst(), generateGroupUniformInst(), generateIntelSubgroupsInst(), generateSampleImageInst(), GetAbsDifference(), llvm::object::ELFObjectFile< ELFT >::getArch(), llvm::object::MachOUniversalBinary::ObjectForArch::getAsArchive(), llvm::object::MachOUniversalBinary::ObjectForArch::getAsIRObject(), llvm::object::MachOUniversalBinary::ObjectForArch::getAsObjectFile(), llvm::SelectionDAG::getAtomicMemcpy(), llvm::SelectionDAG::getAtomicMemmove(), llvm::SelectionDAG::getAtomicMemset(), llvm::BlockFrequencyInfoImplBase::getBlockFreq(), llvm::AArch64RegisterInfo::getCalleeSavedRegs(), llvm::PPCRegisterInfo::getCalleeSavedRegs(), llvm::AArch64RegisterInfo::getCallPreservedMask(), llvm::TargetLoweringObjectFileELF::getCFIPersonalitySymbol(), llvm::MCRegisterInfo::getCodeViewRegNum(), getComdatGVForCOFF(), llvm::object::ObjectFile::getCommonSymbolSize(), llvm::ExecutionEngine::getConstantValue(), getCopyFromParts(), llvm::AArch64RegisterInfo::getDarwinCalleeSavedRegs(), llvm::AArch64RegisterInfo::getDarwinCallPreservedMask(), llvm::GCOVOptions::getDefault(), llvm::TargetLoweringBase::getDefaultSafeStackPointerLocation(), llvm::HexagonInstrInfo::getDotNewOp(), llvm::SIInstrInfo::getDSShaderTypeValue(), getEffectiveAArch64CodeModel(), getEffectiveCodeModel(), getEffectiveLoongArchCodeModel(), getEffectivePPCCodeModel(), getEffectiveRelocModel(), getEffectiveSparcCodeModel(), getEffectiveSystemZCodeModel(), getEffectiveX86CodeModel(), getEffectiveXCoreCodeModel(), llvm::AMDGPU::getELFABIVersion(), getELFComdat(), llvm::MCSymbolMachO::getEncodedFlags(), llvm::ProfileSummaryBuilder::getEntryForPercentile(), getExecutionModel(), llvm::TargetLoweringObjectFileMachO::getExplicitSectionGlobal(), llvm::TargetLoweringObjectFileXCOFF::getExplicitSectionGlobal(), llvm::XCoreTargetObjectFile::getExplicitSectionGlobal(), llvm::object::ELFObjectFile< ELFT >::getFileFormatName(), getFixedObjectSize(), getGCStrategy(), getGlobalVariable(), getHiPELiteral(), getLabelOffset(), getLeastCommonType(), llvm::RISCVSubtarget::getMaxRVVVectorSizeInBits(), llvm::WebAssemblyAsmPrinter::getMCSymbolForFunction(), llvm::RISCVSubtarget::getMinRVVVectorSizeInBits(), getMnemonicFromOpcode(), getNumComponentsForDim(), getOperandAsUnsigned(), getPassInfo(), getPassNameAndInstanceNum(), getPointerOperandIndex(), llvm::RTDyldMemoryManager::getPointerToNamedFunction(), llvm::MCJIT::getPointerToNamedFunction(), GetPromotionOpcode(), GetPromotionOpcodeStrict(), getRegClassForSVT(), llvm::PPCTargetLowering::getRegForInlineAsmConstraint(), llvm::TargetLowering::getRegisterByName(), llvm::SITargetLowering::getRegisterByName(), llvm::AVRTargetLowering::getRegisterByName(), llvm::HexagonTargetLowering::getRegisterByName(), llvm::LanaiTargetLowering::getRegisterByName(), llvm::LoongArchTargetLowering::getRegisterByName(), llvm::MipsTargetLowering::getRegisterByName(), llvm::PPCTargetLowering::getRegisterByName(), llvm::RISCVTargetLowering::getRegisterByName(), llvm::SparcTargetLowering::getRegisterByName(), llvm::SystemZTargetLowering::getRegisterByName(), llvm::VETargetLowering::getRegisterByName(), llvm::X86TargetLowering::getRegisterByName(), llvm::object::ELFObjectFile< ELFT >::getRel(), llvm::object::ELFObjectFile< ELFT >::getRela(), llvm::object::ELFObjectFile< ELFT >::getRelSection(), llvm::M68kRegisterInfo::getReservedRegs(), llvm::RISCVRegisterInfo::getReservedRegs(), llvm::X86RegisterInfo::getReservedRegs(), getSamplerAddressingModeFromBitmask(), GetScratchRegister(), llvm::TargetLoweringObjectFileXCOFF::getSectionForConstant(), getSEHRegistrationNodeSize(), getSPIRVMemSemantics(), getSPIRVScope(), llvm::TargetLoweringObjectFileXCOFF::getStaticCtorSection(), llvm::TargetLoweringObjectFileWasm::getStaticDtorSection(), llvm::TargetLoweringObjectFileXCOFF::getStaticDtorSection(), llvm::TargetLoweringObjectFileXCOFF::getStorageClassForGlobal(), getStruct(), llvm::LoongArchTargetMachine::getSubtargetImpl(), llvm::RISCVTargetMachine::getSubtargetImpl(), llvm::MachObjectWriter::getSymbolAddress(), llvm::MCJIT::getSymbolAddress(), llvm::object::ELFObjectFile< ELFT >::getSymbolAlignment(), llvm::object::COFFObjectFile::getSymbolAuxData(), llvm::object::ELFObjectFile< ELFT >::getSymbolBinding(), llvm::object::MachOObjectFile::getSymbolByIndex(), llvm::object::ELFObjectFile< ELFT >::getSymbolELFType(), llvm::SelectionDAG::getSymbolFunctionGlobalAddress(), llvm::object::MachOObjectFile::getSymbolIndex(), getSymbolOffsetImpl(), llvm::object::ELFObjectFile< ELFT >::getSymbolOther(), llvm::object::ELFObjectFile< ELFT >::getSymbolValueImpl(), llvm::OpenMPIRBuilder::getTargetEntryUniqueInfo(), llvm::TargetLoweringObjectFile::getTTypeReference(), llvm::TargetLoweringBase::getVectorTypeBreakdown(), getVRBValueMapping(), getWasmComdat(), llvm::TargetFrameLowering::getWinEHParentFrameOffset(), llvm::MCContext::getXCOFFSection(), llvm::BitCodeAbbrevOp::hasEncodingData(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), llvm::TargetLowering::IncrementMemoryAddress(), llvm::SPIRV::RequirementHandler::initAvailableCapabilities(), llvm::MipsSubtarget::initializeSubtargetDependencies(), llvm::SPIRVInstrInfo::insertBranch(), insertCall(), llvm::AArch64InstrInfo::insertIndirectBranch(), llvm::LoongArchInstrInfo::insertIndirectBranch(), llvm::RISCVInstrInfo::insertIndirectBranch(), insertSEH(), insertSignalHandler(), insertSpills(), isArchiveSymbol(), llvm::AArch64RegisterInfo::isArgumentRegister(), isGPRShadowAligned(), isThumbFunc(), llvm::SingleThreadExecutor::isWorkerThread(), llvm::MCAsmLayout::layoutFragment(), LLVMGetSectionContents(), LLVMGetSectionName(), LLVMGetSymbolAddress(), LLVMGetSymbolName(), LLVMMoveToContainingSection(), LLVMVerifyFunction(), LLVMVerifyModule(), loadFile(), llvm::RuntimeDyld::loadObject(), llvm::OpenMPIRBuilder::loadOffloadInfoMetadata(), llvm::VEInstrInfo::loadRegFromStackSlot(), llvm::ExecutionEngine::LoadValueFromMemory(), localCache(), llvm::SPIRVMCInstLower::lower(), LowerADDRSPACECAST(), llvm::X86TargetLowering::LowerAsmOutputForConstraint(), llvm::SPIRV::lowerBuiltinType(), llvm::SITargetLowering::LowerCall(), llvm::NVPTXTargetLowering::LowerCall(), llvm::SPIRVCallLowering::lowerCall(), llvm::LoongArchTargetLowering::LowerCall(), llvm::RISCVTargetLowering::LowerCall(), llvm::SITargetLowering::LowerCallResult(), llvm::SelectionDAGBuilder::LowerCallTo(), llvm::AsmPrinter::lowerConstant(), LowerDYNAMIC_STACKALLOC(), llvm::LoongArchTargetLowering::LowerFormalArguments(), llvm::NVPTXTargetLowering::LowerFormalArguments(), llvm::RISCVTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), LowerInterruptReturn(), llvm::IntrinsicLowering::LowerIntrinsicCall(), lowerLoongArchMachineOperandToMCOperand(), LowerOperand(), llvm::XtensaAsmPrinter::lowerOperand(), llvm::BPFTargetLowering::LowerOperation(), llvm::RISCVTargetLowering::LowerOperation(), llvm::XtensaTargetLowering::LowerOperation(), llvm::LoongArchTargetLowering::LowerReturn(), llvm::RISCVTargetLowering::LowerReturn(), llvm::SystemZTargetLowering::LowerReturn(), llvm::TargetLowering::makeLibCall(), mapArchToCVCPUType(), mapToSinitPriority(), MarkEHGuard(), MarkEHRegistrationNode(), llvm::MCContext::MCContext(), llvm::MipsSubtarget::MipsSubtarget(), llvm::LoongArchInstrInfo::movImm(), llvm::RISCVInstrInfo::movImm(), llvm::CSKYInstrInfo::movImm(), llvm::TargetLoweringBase::needsFixedCatchObjects(), llvm::AArch64FunctionInfo::needsShadowCallStackPrologueEpilogue(), llvm::EscapeEnumerator::Next(), llvm::LTOCodeGenerator::optimize(), optimizeCall(), llvm::SymbolRewriter::RewriteMapParser::parse(), llvm::SPIRV::parseBuiltinTypeNameToTargetExtType(), llvm::TargetLowering::ParseConstraints(), parseRefinementStep(), parseTypeString(), llvm::SITargetLowering::passSpecialInputs(), llvm::AMDGPUCallLowering::passSpecialInputs(), patchMatchingInput(), llvm::sys::fs::recursive_directory_iterator::pop(), postSplitCleanup(), llvm::PPCXCOFFMCAsmInfo::PPCXCOFFMCAsmInfo(), prepareDumpIRFileDescriptor(), llvm::AsmPrinter::preprocessXXStructorList(), llvm::MCSymbol::print(), printExpr(), llvm::XtensaInstPrinter::printOperand(), llvm::NVPTXInstPrinter::printRegName(), llvm::AsmPrinter::PrintSpecial(), llvm::MCSectionELF::printSwitchToSection(), llvm::MCSectionXCOFF::printSwitchToSection(), processNewInstrs(), llvm::RuntimeDyldCOFFAArch64::processRelocationRef(), llvm::RuntimeDyldCOFFI386::processRelocationRef(), llvm::RuntimeDyldCOFFThumb::processRelocationRef(), llvm::RuntimeDyldCOFFX86_64::processRelocationRef(), llvm::RuntimeDyldELF::processRelocationRef(), processSwitches(), pruneCache(), raise_relocation_error(), llvm::memprof::RawMemProfReader::RawMemProfReader(), readFloat32(), readFloat64(), readInstruction24(), readLEB128(), readString(), readUint32(), readUint8(), readULEB128(), readVarint32(), readVaruint1(), readVaruint32(), llvm::VerifyInstrumentation::registerCallbacks(), llvm::PreservedCFGCheckerInstrumentation::registerCallbacks(), llvm::ConcurrentHashTableByPtr< KeyTy, KeyDataTy, AllocatorTy, Info >::RehashBucket(), llvm::ARMAsmBackend::relaxInstruction(), llvm::SPIRVInstrInfo::removeBranch(), llvm::RegBankSelect::repairReg(), report_at_maximum_capacity(), report_fatal_error(), llvm::PrintCrashIRInstrumentation::reportCrashIR(), ReportErrnumFatal(), reportFastISelFailure(), reportFatalOnTokenType(), reportGISelDiagnostic(), reportInvalidSizeRequest(), ReportLastErrorFatal(), reportTranslationError(), reservePrivateMemoryRegs(), llvm::DataLayout::reset(), llvm::RuntimeDyldCOFFX86_64::resolveRelocation(), rewriteAccessChain(), llvm::RISCVTargetLowering::RISCVTargetLowering(), llvm::RISCVTargetMachine::RISCVTargetMachine(), llvm::ThinLTOCodeGenerator::run(), llvm::DAGTypeLegalizer::run(), llvm::LintPass::run(), llvm::FunctionToLoopPassAdaptor::run(), llvm::SafeStackPass::run(), llvm::DevirtSCCRepeatedPass::run(), llvm::LICMPass::run(), llvm::LNICMPass::run(), llvm::detail::MachinePassModel< PassT >::run(), llvm::EmbedBitcodePass::run(), llvm::ForceFunctionAttrsPass::run(), llvm::VerifierPass::run(), llvm::MCJIT::runFunction(), llvm::ExecutionEngine::runFunctionAsMain(), runNewPMPasses(), llvm::LiveVariables::runOnMachineFunction(), llvm::TargetLowering::scalarizeVectorLoad(), llvm::TargetLowering::scalarizeVectorStore(), scavengeFrameVirtualRegs(), llvm::object::COFFObjectFile::section_rel_begin(), llvm::object::ELFObjectFile< ELFT >::section_rel_end(), llvm::RISCVDAGToDAGISel::Select(), llvm::Hexagon_MC::selectHexagonCPU(), llvm::RISCVDAGToDAGISel::SelectInlineAsmMemoryOperand(), llvm::SelectionDAGISel::SelectInlineAsmMemoryOperands(), llvm::TargetLoweringObjectFileWasm::SelectSectionForGlobal(), llvm::TargetLoweringObjectFileXCOFF::SelectSectionForGlobal(), llvm::XCoreTargetObjectFile::SelectSectionForGlobal(), llvm::RISCVDAGToDAGISel::selectVLXSEG(), llvm::RISCVDAGToDAGISel::selectVSXSEG(), llvm::MCSection::setBundleLockState(), llvm::AMDGPUMachineFunction::setDynLDSAlign(), setOptionalCodeModel(), llvm::OptPassGateInstrumentation::shouldRun(), llvm::fuzzerop::SourcePred::SourcePred(), splitCodeGen(), storageClassToAddressSpace(), llvm::VEInstrInfo::storeRegToStackSlot(), llvm::TargetPassConfig::TargetPassConfig(), tocDataChecks(), tryARM64PackedUnwind(), UpgradeDebugInfo(), llvm::SystemZELFFrameLowering::usePackedStack(), llvm::PPCSubtarget::useSoftFloat(), llvm::RISCVFeatures::validate(), llvm::PeelingModuloScheduleExpander::validateAgainstModuloScheduleExpander(), validatePtrTypes(), llvm::LegalizerInfo::verify(), llvm::MachineFunction::verify(), llvm::AssumptionCacheTracker::verifyAnalysis(), llvm::dwarf_linker::parallel::DependencyTracker::verifyKeepChain(), verifyKeepChain(), verifyMachineFunction(), VisitGlobalVariableForEmission(), llvm::Interpreter::visitUnreachableInst(), llvm::WebAssembly::wasmSymbolSetType(), WorkloadImportsManager::WorkloadImportsManager(), writeFragment(), llvm::MCAssembler::writeFragmentPadding(), llvm::ThinLTOCodeGenerator::writeGeneratedObject(), llvm::XtensaMCAsmBackend::writeNopData(), llvm::MachObjectWriter::writeObject(), and llvm::raw_fd_ostream::~raw_fd_ostream().

◆ report_fatal_error() [4/4]

void llvm::report_fatal_error ( StringRef  reason,
bool  gen_crash_diag = true 
)

Definition at line 86 of file ErrorHandling.cpp.

References report_fatal_error().

◆ reportAndResetTimings()

void llvm::reportAndResetTimings ( raw_ostream OutStream = nullptr)

If -time-passes has been specified, report the timings immediately and then reset the timers to zero.

If timing is enabled, report the times collected up to now and then reset them.

By default it uses the stream created by CreateInfoOutputFile().

Definition at line 161 of file PassTimingInfo.cpp.

Referenced by llvm::LTOCodeGenerator::compileOptimized(), and llvm::ThinLTOCodeGenerator::run().

◆ reportGISelFailure() [1/2]

void llvm::reportGISelFailure ( MachineFunction MF,
const TargetPassConfig TPC,
MachineOptimizationRemarkEmitter MORE,
const char PassName,
StringRef  Msg,
const MachineInstr MI 
)

◆ reportGISelFailure() [2/2]

void llvm::reportGISelFailure ( MachineFunction MF,
const TargetPassConfig TPC,
MachineOptimizationRemarkEmitter MORE,
MachineOptimizationRemarkMissed R 
)

◆ reportGISelWarning()

void llvm::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.

Definition at line 267 of file Utils.cpp.

References DS_Warning, MORE, and reportGISelDiagnostic().

Referenced by llvm::Legalizer::runOnMachineFunction().

◆ reportInvalidSizeRequest()

void llvm::reportInvalidSizeRequest ( const char Msg)

Reports a diagnostic message to indicate an invalid size request has been done on a scalable vector.

This function may not return.

Definition at line 38 of file TypeSize.cpp.

References report_fatal_error(), ScalableErrorAsWarning, and llvm::WithColor::warning().

Referenced by llvm::LLT::getNumElements(), llvm::EVT::getVectorNumElements(), llvm::MVT::getVectorNumElements(), and llvm::TypeSize::operator ScalarTy().

◆ ReportLastErrorFatal()

void llvm::ReportLastErrorFatal ( const char Msg)
inline

Definition at line 74 of file WindowsSupport.h.

References MakeErrMsg(), and report_fatal_error().

◆ reportMismatch()

Printable llvm::reportMismatch ( const GCNRPTracker::LiveRegSet LISLR,
const GCNRPTracker::LiveRegSet TrackedL,
const TargetRegisterInfo TRI,
StringRef  Pfx = "  " 
)

◆ reportVectorization()

static void llvm::reportVectorization ( OptimizationRemarkEmitter ORE,
Loop TheLoop,
VectorizationFactor  VF,
unsigned  IC 
)
static

◆ reportVectorizationFailure()

void llvm::reportVectorizationFailure ( const StringRef  DebugMsg,
const StringRef  OREMsg,
const StringRef  ORETag,
OptimizationRemarkEmitter ORE,
Loop TheLoop,
Instruction I = nullptr 
)

Reports a vectorization failure: print DebugMsg for debugging purposes along with the corresponding optimization remark RemarkName.

If I is passed, it is an instruction that prevents vectorization. Otherwise, the loop TheLoop is used for the location of the remark.

Definition at line 990 of file LoopVectorize.cpp.

References createLVAnalysis(), debugVectorizationMessage(), llvm::OptimizationRemarkEmitter::emit(), I, LLVM_DEBUG, and llvm::LoopVectorizeHints::vectorizeAnalysisPassName().

Referenced by llvm::LoopVectorizationLegality::canVectorize(), llvm::LoopVectorizationCostModel::computeMaxVF(), llvm::LoopVectorizationPlanner::planInVPlanNativePath(), llvm::LoopVectorizePass::processLoop(), and llvm::LoopVectorizationCostModel::runtimeChecksRequired().

◆ reportVectorizationInfo()

void llvm::reportVectorizationInfo ( const StringRef  OREMsg,
const StringRef  ORETag,
OptimizationRemarkEmitter ORE,
Loop TheLoop,
Instruction I = nullptr 
)

Reports an informative message: print Msg for debugging purposes as well as an optimization remark.

Uses either I as location of the remark, or otherwise TheLoop.

Definition at line 1001 of file LoopVectorize.cpp.

References createLVAnalysis(), debugVectorizationMessage(), llvm::OptimizationRemarkEmitter::emit(), I, LLVM_DEBUG, and llvm::LoopVectorizeHints::vectorizeAnalysisPassName().

Referenced by emitInvalidCostRemarks(), and llvm::LoopVectorizationPlanner::plan().

◆ ResetStatistics()

void llvm::ResetStatistics ( )

Reset the statistics.

This can be used to zero and de-register the statistics in order to measure a compilation.

When this function begins to call destructors prior to returning, all statistics will be zero and unregistered. However, that might not remain the case by the time this function finishes returning. Whether update from other threads are lost or merely deferred until during the function return is timing sensitive.

Callers who intend to use this to measure statistics for a single compilation should ensure that no compilations are in progress at the point this function is called and that only one compilation executes until calling GetStatistics().

Definition at line 266 of file Statistic.cpp.

References StatInfo.

◆ resolveReferencedType() [1/2]

static DWARFDie llvm::resolveReferencedType ( DWARFDie  D,
dwarf::Attribute  Attr = DW_AT_type 
)
static

◆ resolveReferencedType() [2/2]

static DWARFDie llvm::resolveReferencedType ( DWARFDie  D,
DWARFFormValue  F 
)
static

Definition at line 69 of file DWARFTypePrinter.cpp.

References D, and F.

◆ resolveRelativeObjectPath()

static void llvm::resolveRelativeObjectPath ( SmallVectorImpl< char > &  Buf,
DWARFDie  CU 
)
static

Resolve the relative path to a build artifact referenced by DWARF by applying DW_AT_comp_dir.

Definition at line 176 of file DWARFLinker.cpp.

References llvm::sys::path::append(), and llvm::dwarf::toString().

Referenced by analyzeImportedModule(), and llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::loadClangModule().

◆ resolveTypes()

RecTy * llvm::resolveTypes ( RecTy T1,
RecTy T2 
)

Find a common type that T1 and T2 convert to.

Return 0 if no such type exists.

Definition at line 311 of file Record.cpp.

References assert(), llvm::RecTy::getListTy(), resolveRecordTypes(), resolveTypes(), T1, and llvm::RecTy::typeIsConvertibleTo().

Referenced by resolveTypes().

◆ RestorePrettyStackState()

void llvm::RestorePrettyStackState ( const void *  State)

Restores the topmost element of the "pretty" stack state to State, which should come from a previous call to SavePrettyStackState().

This is useful when using a CrashRecoveryContext in code that also uses PrettyStackTraceEntries, to make sure the stack that's printed if a crash happens after a crash that's been recovered by CrashRecoveryContext doesn't have frames on it that were added in code unwound by the CrashRecoveryContext.

Definition at line 317 of file PrettyStackTrace.cpp.

◆ restoreStatusRegister()

static void llvm::restoreStatusRegister ( MachineFunction MF,
MachineBasicBlock MBB 
)
static

◆ Ret_CSKY_ABIV2_SOFT_64()

static bool llvm::Ret_CSKY_ABIV2_SOFT_64 ( unsigned ValNo,
MVT ValVT,
MVT LocVT,
CCValAssign::LocInfo LocInfo,
ISD::ArgFlagsTy ArgFlags,
CCState State 
)
static

◆ RetCC_AArch64_AAPCS()

bool llvm::RetCC_AArch64_AAPCS ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ RetCC_AArch64_Arm64EC_CFGuard_Check()

bool llvm::RetCC_AArch64_Arm64EC_CFGuard_Check ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ RetCC_AArch64_Arm64EC_Thunk()

bool llvm::RetCC_AArch64_Arm64EC_Thunk ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ RetCC_ARM_AAPCS()

bool llvm::RetCC_ARM_AAPCS ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ RetCC_ARM_AAPCS_VFP()

bool llvm::RetCC_ARM_AAPCS_VFP ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ RetCC_ARM_APCS()

bool llvm::RetCC_ARM_APCS ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ RetCC_PPC()

bool llvm::RetCC_PPC ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ RetCC_PPC64_ELF_FIS()

bool llvm::RetCC_PPC64_ELF_FIS ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ RetCC_PPC_Cold()

bool llvm::RetCC_PPC_Cold ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ RetCC_SystemZ_Error()

bool llvm::RetCC_SystemZ_Error ( unsigned ,
MVT ,
MVT ,
CCValAssign::LocInfo ,
ISD::ArgFlagsTy ,
CCState  
)
inline

Definition at line 205 of file SystemZCallingConv.h.

References llvm_unreachable.

◆ RetCC_X86()

bool llvm::RetCC_X86 ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ RetFastCC_ARM_APCS()

bool llvm::RetFastCC_ARM_APCS ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)

◆ returnTypeIsEligibleForTailCall()

bool llvm::returnTypeIsEligibleForTailCall ( const Function F,
const Instruction I,
const ReturnInst Ret,
const TargetLoweringBase TLI 
)

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.

Definition at line 656 of file Analysis.cpp.

References attributesPermitTailCall(), llvm::SmallVectorTemplateCommon< T, typename >::back(), F, firstRealType(), llvm::UndefValue::get(), llvm::ExtractValueInst::getIndexedType(), llvm::TargetLoweringBase::getLibcallName(), llvm::Value::getType(), I, isPointerBitcastEqualTo(), nextRealType(), reverse(), and slotOnlyDiscardsData().

Referenced by isInTailCallPosition().

◆ reverse()

template<typename ContainerTy >
auto llvm::reverse ( ContainerTy &&  C)

Definition at line 419 of file STLExtras.h.

References adl_begin(), adl_end(), adl_rbegin(), adl_rend(), llvm::CallingConv::C, and make_range().

Referenced by addLoopIntoQueue(), llvm::dwarf_linker::parallel::SyntheticTypeNameBuilder::addParentName(), AlignBlocks(), llvm::X86InstrInfo::analyzeBranchPredicate(), analyzeContextInfo(), llvm::AArch64InstrInfo::analyzeLoopForPipelining(), llvm::DebugLoc::appendInlinedAt(), appendLoopsToWorklist(), llvm::ScalarEvolution::applyLoopGuards(), llvm::AMDGPURegisterBankInfo::applyMappingImpl(), ARM64EmitUnwindInfoForSegment(), llvm::X86FrameLowering::assignCalleeSavedSpillSlots(), llvm::RegBankSelect::assignRegisterBanks(), bitTrackingDCE(), BlockIsSimpleEnoughToThreadThrough(), buildPartialInvariantUnswitchConditionalBranch(), calculateClrEHStateNumbers(), checkForMustTailInVarArgFn(), llvm::SCEVExpanderCleaner::cleanup(), cloneLoopNest(), llvm::DILocalScope::cloneScopeForSubprogram(), cloneSESE(), llvm::Combiner::combineMachineInstrs(), computeLiveIns(), computeScheduledInsts(), computeUnlikelySuccessors(), containsEpilogue(), containsNewBackedge(), convertToParamAS(), llvm::vfs::RedirectingFileSystem::create(), llvm::DwarfCompileUnit::createBaseTypeDIEs(), DbgVariableRecordsRemoveRedundantDbgInstrsUsingBackwardScan(), deduceFunctionAttributeInRPO(), llvm::orc::InProcessMemoryMapper::deinitialize(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::deinitialize(), deleteDeadLoop(), llvm::AsmPrinter::doFinalization(), doList(), llvm::PseudoProbeHandler::emitPseudoProbe(), llvm::VETargetLowering::emitSjLjDispatchBlock(), llvm::EHStreamer::emitTypeInfos(), llvm::TimeTraceProfiler::end(), llvm::codeview::ContinuationRecordBuilder::end(), llvm::WebAssemblyAsmTypeCheck::endOfFunction(), llvm::SMSchedule::finalizeSchedule(), findBestInsertionSet(), llvm::HexagonInstrInfo::findLoopInstr(), findMemType(), findPotentialBlockers(), findPrologueEnd(), llvm::SIRegisterInfo::findUnusedRegister(), llvm::ScheduleDAGInstrs::fixupKills(), foldUnusualPatterns(), formatNestedName(), llvm::rdf::Liveness::getAllReachingDefs(), getBitcodeFileContents(), llvm::ScalarEvolution::getBlockDisposition(), llvm::TargetInstrInfo::getCallFrameSizeAt(), llvm::json::Path::Root::getError(), getExprBase(), getLastNonPseudo(), getLivePhysRegsUpTo(), llvm::ScalarEvolution::getLoopDisposition(), getMaxBitmapSize(), llvm::DwarfUnit::getParentContextString(), llvm::ScalarEvolution::getSCEVAtScope(), llvm::ScheduleDAGTopologicalSort::GetSubGraph(), llvm::FastISel::handleDbgInfo(), handlePhiDef(), llvm::SCEVExpander::hoistIVInc(), hoistRegion(), incorporateNewSCCRange(), llvm::HexagonSubtarget::initializeSubtargetDependencies(), insertCSRRestores(), llvm::xray::Profile::internPath(), llvm::MemorySSAAnalysis::Result::invalidate(), isEFLAGSLive(), llvm::ARMBaseInstrInfo::isMBBSafeToOutlineFrom(), llvm::ShuffleVectorInst::isReplicationMask(), isSafeToSpeculateStore(), llvm::LoopVectorizationLegality::isUniform(), llvm::sys::DynamicLibrary::HandleSet::LibLookup(), lowerExpectIntrinsic(), makeReducible(), mergeEltWithShuffle(), mergeReplicateRegionsIntoSuccessors(), moveInstructionsToTheBeginning(), orderModule(), llvm::vfs::OverlayFileSystem::overlays_range(), parseBraceExpansions(), llvm::PeelingModuloScheduleExpander::peelPrologAndEpilogs(), predictUseListOrder(), llvm::InstCombinerImpl::prepareWorklist(), llvm::xray::profileFromTrace(), llvm::SyntheticCountsUtils< CallGraphType >::propagate(), pushRegsToStack(), llvm::LiveVariables::recomputeForSingleDefVirtReg(), recomputeLivenessFlags(), reduceDbgValsBackwardScan(), llvm::orc::EPCGenericRTDyldMemoryManager::registerEHFrames(), llvm::MCContext::remapDebugPath(), removeDeadRecipes(), llvm::LazyCallGraph::RefSCC::removeInternalRefEdge(), llvm::SIInstrInfo::removeModOperands(), removeRedundantDbgInstrsUsingBackwardScan(), removeRedundantDbgLocsUsingBackwardScan(), removeRedundantInductionCasts(), replaceFoldableUses(), llvm::DebugLoc::replaceInlinedAtSubprogram(), llvm::rdf::Liveness::resetKills(), llvm::CSKYFrameLowering::restoreCalleeSavedRegisters(), llvm::MSP430FrameLowering::restoreCalleeSavedRegisters(), returnTypeIsEligibleForTailCall(), llvm::detail::reverse_if_helper(), llvm::GenericCycleInfoCompute< ContextT >::run(), llvm::ModuleToPostOrderCGSCCPassAdaptor::run(), runImpl(), runMoveAutoInit(), llvm::LPPassManager::runOnFunction(), llvm::GCNRegPressurePrinter::runOnMachineFunction(), llvm::MachineFunction::salvageCopySSAImpl(), llvm::PPCInstrInfo::shouldReduceRegisterPressure(), shouldSplitOnPredicatedArgument(), sinkLoopInvariantInstructions(), sinkRegion(), sortLocalVars(), llvm::AbstractDependenceGraphBuilder< GraphType >::sortNodesTopologically(), llvm::AArch64FrameLowering::spillCalleeSavedRegisters(), llvm::AVRFrameLowering::spillCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), llvm::LazyCallGraph::RefSCC::switchInternalEdgeToRef(), llvm::JumpThreadingPass::threadGuard(), LiveDebugValues::MLocTracker::trackRegister(), llvm::DbgValueHistoryMap::trimLocationRanges(), tryFoldSPUpdateIntoPushPop(), llvm::InstCombinerImpl::tryToSinkInstructionDbgValues(), llvm::InstCombinerImpl::tryToSinkInstructionDbgVariableRecords(), llvm::MCJIT::UnregisterJITEventListener(), unswitchTrivialSwitch(), updateCGAndAnalysisManagerForPass(), llvm::slpvectorizer::BoUpSLP::vectorizeTree(), llvm::dwarf_linker::parallel::DependencyTracker::verifyKeepChain(), verifyKeepChain(), and llvm::MachObjectWriter::writeObject().

◆ reverseBits()

template<typename T >
T llvm::reverseBits ( T  Val)

Reverse the bits in Val.

Definition at line 104 of file MathExtras.h.

References BitReverseTable256.

◆ RevertDoLoopStart()

void llvm::RevertDoLoopStart ( MachineInstr MI,
const TargetInstrInfo TII 
)
inline

◆ RevertLoopDec()

void llvm::RevertLoopDec ( MachineInstr MI,
const TargetInstrInfo TII,
bool  SetFlags = false 
)
inline

◆ RevertLoopEnd()

void llvm::RevertLoopEnd ( MachineInstr MI,
const TargetInstrInfo TII,
unsigned  BrOpc = ARM::t2Bcc,
bool  SkipCmp = false 
)
inline

◆ RevertWhileLoopStartLR()

void llvm::RevertWhileLoopStartLR ( MachineInstr MI,
const TargetInstrInfo TII,
unsigned  BrOpc = ARM::t2Bcc,
bool  UseCmp = false 
)
inline

◆ rewriteAArch64FrameIndex()

bool llvm::rewriteAArch64FrameIndex ( MachineInstr MI,
unsigned  FrameRegIdx,
unsigned  FrameReg,
StackOffset Offset,
const AArch64InstrInfo TII 
)

rewriteAArch64FrameIndex - Rewrite MI to access 'Offset' bytes from the FP.

Return false if the offset could not be handled directly in MI, and return the left-over portion by reference.

Definition at line 5734 of file AArch64InstrInfo.cpp.

References AArch64FrameOffsetCanUpdate, AArch64FrameOffsetIsLegal, emitFrameOffset(), llvm::StackOffset::getFixed(), isAArch64FrameOffsetLegal(), MI, llvm::MachineInstr::NoFlags, Offset, and TII.

Referenced by llvm::AArch64RegisterInfo::eliminateFrameIndex(), and llvm::AArch64RegisterInfo::resolveFrameIndex().

◆ rewriteARMFrameIndex()

bool llvm::rewriteARMFrameIndex ( MachineInstr MI,
unsigned  FrameRegIdx,
Register  FrameReg,
int &  Offset,
const ARMBaseInstrInfo TII 
)

◆ rewriteLoopExitValues()

int llvm::rewriteLoopExitValues ( Loop L,
LoopInfo LI,
TargetLibraryInfo TLI,
ScalarEvolution SE,
const TargetTransformInfo TTI,
SCEVExpander Rewriter,
DominatorTree DT,
ReplaceExitVal  ReplaceExitValue,
SmallVector< WeakTrackingVH, 16 > &  DeadInsts 
)

◆ rewriteT2FrameIndex()

bool llvm::rewriteT2FrameIndex ( MachineInstr MI,
unsigned  FrameRegIdx,
Register  FrameReg,
int &  Offset,
const ARMBaseInstrInfo TII,
const TargetRegisterInfo TRI 
)

◆ right_justify()

FormattedString llvm::right_justify ( StringRef  Str,
unsigned  Width 
)
inline

◆ riscvExtensionsHelp()

void llvm::riscvExtensionsHelp ( StringMap< StringRef DescMap)

◆ rotl()

template<typename T , typename = std::enable_if_t<std::is_unsigned_v<T>>>
constexpr T llvm::rotl ( T  V,
int  R 
)
constexpr

Definition at line 394 of file bit.h.

References N, and rotr().

Referenced by decomposeIntoOrrOfLogicalImmediates(), and rotr().

◆ rotr()

template<typename T , typename = std::enable_if_t<std::is_unsigned_v<T>>>
constexpr T llvm::rotr ( T  V,
int  R 
)
constexpr

Definition at line 407 of file bit.h.

References N, and rotl().

Referenced by rotl().

◆ runFuzzerOnInputs()

int llvm::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.

Useful for testing fuzz targets without linking to libFuzzer. Finds inputs in the argument list in a libFuzzer compatible way.

Definition at line 142 of file FuzzerCLI.cpp.

References llvm::StringRef::equals(), errs(), llvm::MemoryBuffer::getFile(), I, and llvm::StringRef::starts_with().

◆ RunningWindows11OrGreater()

bool llvm::RunningWindows11OrGreater ( )

Determines if the program is running on Windows 11 or Windows Server 2022.

◆ RunningWindows8OrGreater()

bool llvm::RunningWindows8OrGreater ( )

Determines if the program is running on Windows 8 or newer.

This reimplements one of the helpers in the Windows 8.1 SDK, which are intended to supercede raw calls to GetVersionEx. Old SDKs, Cygwin, and MinGW don't yet have VersionHelpers.h, so we have our own helper.

◆ runWholeProgramDevirtOnIndex()

void llvm::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.

Any devirtualized targets used by a type test in another module are added to the ExportedGUIDs set. For any local devirtualized targets only used within the defining module, the information necessary for locating the corresponding WPD resolution is recorded for the ValueInfo in case it is exported by cross module importing (in which case the devirtualized target name will need adjustment).

Definition at line 921 of file WholeProgramDevirt.cpp.

Referenced by llvm::ThinLTOCodeGenerator::run().

◆ rustDemangle()

char * llvm::rustDemangle ( std::string_view  MangledName)

Definition at line 151 of file RustDemangle.cpp.

References D, and starts_with().

Referenced by nonMicrosoftDemangle().

◆ safe_calloc()

LLVM_ATTRIBUTE_RETURNS_NONNULL void * llvm::safe_calloc ( size_t  Count,
size_t  Sz 
)
inline

◆ safe_malloc()

LLVM_ATTRIBUTE_RETURNS_NONNULL void * llvm::safe_malloc ( size_t  Sz)
inline

◆ safe_realloc()

LLVM_ATTRIBUTE_RETURNS_NONNULL void * llvm::safe_realloc ( void *  Ptr,
size_t  Sz 
)
inline

◆ salvageDebugInfo() [1/2]

void llvm::salvageDebugInfo ( const MachineRegisterInfo MRI,
MachineInstr MI 
)

◆ salvageDebugInfo() [2/2]

void llvm::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.

Where possible to salvage debug information for I do so.

If it cannot be salvaged changes its debug uses to undef.

If not possible mark undef.

Definition at line 2201 of file Local.cpp.

References findDbgUsers(), I, and salvageDebugInfoForDbgValues().

◆ salvageDebugInfoForDbgValue()

void llvm::salvageDebugInfoForDbgValue ( const MachineRegisterInfo MRI,
MachineInstr MI,
ArrayRef< MachineOperand * >  DbgUsers 
)

◆ salvageDebugInfoForDbgValues()

void llvm::salvageDebugInfoForDbgValues ( Instruction I,
ArrayRef< DbgVariableIntrinsic * >  Insns,
ArrayRef< DbgVariableRecord * >  DPInsns 
)

◆ salvageDebugInfoImpl()

Value * llvm::salvageDebugInfoImpl ( Instruction I,
uint64_t  CurrentLocOps,
SmallVectorImpl< uint64_t > &  Ops,
SmallVectorImpl< Value * > &  AdditionalValues 
)

◆ salvageKnowledge()

bool llvm::salvageKnowledge ( Instruction I,
AssumptionCache AC = nullptr,
DominatorTree DT = nullptr 
)

Calls BuildAssumeFromInst and if the resulting llvm.assume is valid insert if before I.

This is usually what need to be done to salvage the knowledge contained in the instruction I. The AssumptionCache must be provided if it is available or the cache may become silently be invalid. The DominatorTree can optionally be provided to enable cross-block reasoning. This returns if a change was made.

Definition at line 292 of file AssumeBundleBuilder.cpp.

References EnableKnowledgeRetention, I, Intr, and llvm::AssumptionCache::registerAssumption().

Referenced by DCEInstruction(), InlineFunction(), llvm::AssumeBuilderPass::run(), and sinkRegion().

◆ SampleColdCallSiteThreshold()

cl::opt< int > llvm::SampleColdCallSiteThreshold ( "sample-profile-cold-inline-threshold"  ,
cl::Hidden  ,
cl::init(45)  ,
cl::desc("Threshold for inlining cold callsites")   
)

◆ SampleHotCallSiteThreshold()

cl::opt< int > llvm::SampleHotCallSiteThreshold ( "sample-profile-hot-inline-threshold"  ,
cl::Hidden  ,
cl::init(3000)  ,
cl::desc("Hot callsite threshold for proirity-based sample profile loader " "inlining.")   
)

◆ sampleprof_category()

const std::error_category & llvm::sampleprof_category ( )

Definition at line 100 of file SampleProf.cpp.

Referenced by make_error_code().

◆ SampleProfileMaxPropagateIterations()

cl::opt< unsigned > llvm::SampleProfileMaxPropagateIterations ( "sample-profile-max-propagate-iterations"  ,
cl::init(100)  ,
cl::desc("Maximum number of iterations to go through when propagating " "sample block/edge weights through the CFG.")   
)

◆ SampleProfileRecordCoverage()

cl::opt< unsigned > llvm::SampleProfileRecordCoverage ( "sample-profile-check-record-coverage"  ,
cl::init(0)  ,
cl::value_desc("N")  ,
cl::desc("Emit a warning if less than N% of records in the input profile " "are matched to the IR.")   
)

◆ SampleProfileSampleCoverage()

cl::opt< unsigned > llvm::SampleProfileSampleCoverage ( "sample-profile-check-sample-coverage"  ,
cl::init(0)  ,
cl::value_desc("N")  ,
cl::desc("Emit a warning if less than N% of samples in the input profile " "are matched to the IR.")   
)

◆ SampleProfileUseProfi()

cl::opt< bool > llvm::SampleProfileUseProfi ( "sample-profile-use-profi"  ,
cl::Hidden  ,
cl::desc("Use profi to infer block and edge counts.")   
)

◆ SaturatingAdd() [1/2]

template<typename T >
std::enable_if_t< std::is_unsigned_v< T >, T > llvm::SaturatingAdd ( T  X,
T  Y,
bool ResultOverflowed = nullptr 
)

Add two unsigned integers, X and Y, of type T.

Clamp the result to the maximum representable value of T on overflow. ResultOverflowed indicates if the result is larger than the maximum representable value of type T.

Definition at line 478 of file MathExtras.h.

References X, and Y.

Referenced by computeSyntheticCounts(), llvm::InstrProfRecord::getValueForSite(), runCGProfilePass(), SaturatingAdd(), SaturatingMultiply(), and SaturatingMultiplyAdd().

◆ SaturatingAdd() [2/2]

template<class T , class... Ts>
std::enable_if_t< std::is_unsigned_v< T >, T > llvm::SaturatingAdd ( T  X,
T  Y,
T  Z,
Ts...  Args 
)

Add multiple unsigned integers of type T.

Clamp the result to the maximum representable value of T on overflow.

Definition at line 493 of file MathExtras.h.

References SaturatingAdd(), T, X, and Y.

◆ SaturatingMultiply()

template<typename T >
std::enable_if_t< std::is_unsigned_v< T >, T > llvm::SaturatingMultiply ( T  X,
T  Y,
bool ResultOverflowed = nullptr 
)

Multiply two unsigned integers, X and Y, of type T.

Clamp the result to the maximum representable value of T on overflow. ResultOverflowed indicates if the result is larger than the maximum representable value of type T.

Definition at line 507 of file MathExtras.h.

References Log2_64(), SaturatingAdd(), X, and Y.

Referenced by llvm::BlockFrequency::mul(), SaturatingMultiplyAdd(), llvm::InstrProfValueSiteRecord::scale(), and llvm::InstrProfRecord::scale().

◆ SaturatingMultiplyAdd()

template<typename T >
std::enable_if_t< std::is_unsigned_v< T >, T > llvm::SaturatingMultiplyAdd ( 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.

Clamp the result to the maximum representable value of T on overflow. ResultOverflowed indicates if the result is larger than the maximum representable value of type T.

Definition at line 553 of file MathExtras.h.

References A, SaturatingAdd(), SaturatingMultiply(), X, and Y.

Referenced by llvm::sampleprof::SampleRecord::addCalledTarget(), llvm::sampleprof::FunctionSamples::addHeadSamples(), llvm::sampleprof::SampleRecord::addSamples(), llvm::sampleprof::FunctionSamples::addTotalSamples(), convertStrToInt(), llvm::InstrProfRecord::merge(), and llvm::InstrProfValueSiteRecord::merge().

◆ SaveAndRestore() [1/3]

template<typename T >
llvm::SaveAndRestore ( T ) -> SaveAndRestore< T >

◆ SaveAndRestore() [2/3]

template<typename T >
llvm::SaveAndRestore ( T ,
const T  
) -> SaveAndRestore< T >

◆ SaveAndRestore() [3/3]

template<typename T >
llvm::SaveAndRestore ( T ,
T &&   
) -> SaveAndRestore< T >

◆ SavePrettyStackState()

const void * llvm::SavePrettyStackState ( )

Returns the topmost element of the "pretty" stack state.

Definition at line 309 of file PrettyStackTrace.cpp.

◆ saveUsesAndErase()

void llvm::saveUsesAndErase ( MachineInstr MI,
MachineRegisterInfo MRI,
LostDebugLocObserver LocObserver,
SmallInstListTy DeadInstChain 
)

◆ scalbn()

APFloat llvm::scalbn ( APFloat  X,
int  Exp,
APFloat::roundingMode  RM 
)
inline

Definition at line 1361 of file APFloat.h.

References llvm_unreachable, scalbn(), and X.

Referenced by llvm::detail::frexp(), and scalbn().

◆ scaleBranchCount()

static uint32_t llvm::scaleBranchCount ( uint64_t  Count,
uint64_t  Scale 
)
inlinestatic

Scale an individual branch count.

Scale a 64-bit weight down to 32-bits using Scale.

Definition at line 172 of file Instrumentation.h.

References assert(), and Scaled.

Referenced by llvm::pgo::promoteIndirectCall(), and setProfMetadata().

◆ scaleProfData()

void llvm::scaleProfData ( Instruction I,
uint64_t  S,
uint64_t  T 
)

◆ scavengeFrameVirtualRegs()

void llvm::scavengeFrameVirtualRegs ( MachineFunction MF,
RegScavenger RS 
)

◆ scc_begin()

template<class T >
scc_iterator< T > llvm::scc_begin ( const T G)

◆ scc_end()

template<class T >
scc_iterator< T > llvm::scc_end ( const T G)

Construct the end iterator for a deduced graph type T.

Definition at line 238 of file SCCIterator.h.

References llvm::scc_iterator< GraphT, GT >::end(), and G.

Referenced by llvm::DataDependenceGraph::DataDependenceGraph().

◆ SCEVExprContains()

template<typename PredTy >
bool llvm::SCEVExprContains ( const SCEV Root,
PredTy  Pred 
)

◆ ScopedDbgInfoFormatSetter()

template<typename T >
llvm::ScopedDbgInfoFormatSetter ( T Obj,
bool  NewState 
) -> ScopedDbgInfoFormatSetter< T >

◆ ScopedPrinter::printHex< support::ulittle16_t >()

template<>
void llvm::ScopedPrinter::printHex< support::ulittle16_t > ( StringRef  Label,
support::ulittle16_t  Value 
)
inline

Definition at line 536 of file ScopedPrinter.h.

◆ scopedTAGs()

static bool llvm::scopedTAGs ( dwarf::Tag  Tag)
static

Returns True if the DIE TAG is one of the ones that is scopped.

Definition at line 300 of file DWARFTypePrinter.cpp.

Referenced by llvm::DWARFTypePrinter::appendQualifiedName(), and llvm::DWARFTypePrinter::appendQualifiedNameBefore().

◆ SearchForAddressOfSpecialSymbol()

void * llvm::SearchForAddressOfSpecialSymbol ( const char SymbolName)

◆ seq() [1/2]

template<typename T , typename = std::enable_if_t<std::is_integral<T>::value && !std::is_enum<T>::value>>
auto llvm::seq ( T  Begin,
T  End 
)

Iterate over an integral type from Begin up to - but not including - End.

Note: Begin and End values have to be within [INTMAX_MIN, INTMAX_MAX] for forward iteration (resp. [INTMAX_MIN + 1, INTMAX_MAX] for reverse iteration).

Definition at line 305 of file Sequence.h.

References End.

Referenced by CompareValueComplexity(), llvm::yaml::SequenceTraits< ArrayRef< T > >::element(), isReplicationMaskWithParams(), legalizeCallAttributes(), and llvm::yaml::SequenceTraits< ArrayRef< T > >::size().

◆ seq() [2/2]

template<typename T , typename = std::enable_if_t<std::is_integral<T>::value && !std::is_enum<T>::value>>
auto llvm::seq ( T  Size)

Iterate over an integral type from 0 up to - but not including - Size.

Note: Size value has to be within [INTMAX_MIN, INTMAX_MAX - 1] for forward iteration (resp. [INTMAX_MIN + 1, INTMAX_MAX - 1] for reverse iteration).

Definition at line 315 of file Sequence.h.

References Size.

◆ seq_inclusive()

template<typename T , typename = std::enable_if_t<std::is_integral<T>::value && !std::is_enum<T>::value>>
auto llvm::seq_inclusive ( T  Begin,
T  End 
)

Iterate over an integral type from Begin to End inclusive.

Note: Begin and End values have to be within [INTMAX_MIN, INTMAX_MAX - 1] for forward iteration (resp. [INTMAX_MIN + 1, INTMAX_MAX - 1] for reverse iteration).

Definition at line 325 of file Sequence.h.

References End.

◆ serializeSectionKind()

uint32_t llvm::serializeSectionKind ( DWARFSectionKind  Kind,
unsigned  IndexVersion 
)

Convert the internal value for a section kind to an on-disk value.

The conversion depends on the version of the index section. IndexVersion is expected to be either 2 for pre-standard GNU proposal or 5 for DWARFv5 package file.

Definition at line 42 of file DWARFUnitIndex.cpp.

References assert(), CASE, isKnownV5SectionID(), llvm_unreachable, and TYPES.

Referenced by getContributionIndex().

◆ set_difference()

template<class S1Ty , class S2Ty >
S1Ty llvm::set_difference ( const S1Ty &  S1,
const S2Ty &  S2 
)

set_difference(A, B) - Return A - B

Definition at line 70 of file SetOperations.h.

References S1.

◆ set_fixed_execution_hash_seed()

void llvm::set_fixed_execution_hash_seed ( uint64_t  fixed_value)

Override the execution seed with a fixed value.

This hashing library uses a per-execution seed designed to change on each run with high probability in order to ensure that the hash codes are not attackable and to ensure that output which is intended to be stable does not rely on the particulars of the hash codes produced.

That said, there are use cases where it is important to be able to reproduce exactly a specific behavior. To that end, we provide a function which will forcibly set the seed to a fixed value. This must be done at the start of the program, before any hashes are computed. Also, it cannot be undone. This makes it thread-hostile and very hard to use outside of immediately on start of a simple program designed for reproducible behavior.

Definition at line 26 of file Hashing.cpp.

References llvm::hashing::detail::fixed_seed_override.

◆ set_intersect()

template<class S1Ty , class S2Ty >
void llvm::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.

Functionally, this iterates through S1, removing elements that are not contained in S2.

Definition at line 40 of file SetOperations.h.

References E, I, and S1.

Referenced by CheckLargerCands(), llvm::SetState< BaseTy >::SetContents::getIntersection(), and mergeConditionalStores().

◆ set_intersection()

template<class S1Ty , class S2Ty >
S1Ty llvm::set_intersection ( const S1Ty &  S1,
const S2Ty &  S2 
)

set_intersection(A, B) - Return A ^ B

Definition at line 60 of file SetOperations.h.

References S1, and set_intersection_impl().

◆ set_intersection_impl()

template<class S1Ty , class S2Ty >
S1Ty llvm::set_intersection_impl ( const S1Ty &  S1,
const S2Ty &  S2 
)

Definition at line 49 of file SetOperations.h.

References S1.

Referenced by set_intersection().

◆ set_is_subset()

template<class S1Ty , class S2Ty >
bool llvm::set_is_subset ( const S1Ty &  S1,
const S2Ty &  S2 
)

◆ set_subtract() [1/2]

template<class S1Ty , class S2Ty >
void llvm::set_subtract ( S1Ty &  S1,
const S2Ty &  S2 
)

set_subtract(A, B) - Compute A := A - B

Definition at line 82 of file SetOperations.h.

References S1.

◆ set_subtract() [2/2]

template<class S1Ty , class S2Ty >
void llvm::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).

Definition at line 92 of file SetOperations.h.

References S1.

◆ set_thread_name()

void llvm::set_thread_name ( const Twine Name)

Set the name of the current thread.

Setting a thread's name can be helpful for enabling useful diagnostics under a debugger or when logging. The level of support for setting a thread's name varies wildly across operating systems, and we only make a best effort to perform the operation on supported platforms. No indication of success or failure is returned.

Definition at line 37 of file Threading.cpp.

◆ set_thread_priority()

SetThreadPriorityResult llvm::set_thread_priority ( ThreadPriority  Priority)

◆ set_union()

template<class S1Ty , class S2Ty >
bool llvm::set_union ( S1Ty &  S1,
const S2Ty &  S2 
)

set_union(A, B) - Compute A := A u B, return whether A changed.

Definition at line 23 of file SetOperations.h.

References S1.

Referenced by checkNode(), and llvm::SetState< BaseTy >::SetContents::getUnion().

◆ setBranchWeights()

void llvm::setBranchWeights ( Instruction I,
ArrayRef< uint32_t Weights 
)

◆ setBugReportMsg()

void llvm::setBugReportMsg ( const char Msg)

Replaces the generic bug report message that is output upon a crash.

Definition at line 208 of file PrettyStackTrace.cpp.

References BugReportMsg.

◆ setCurrentDebugType()

void llvm::setCurrentDebugType ( const char Type)

setCurrentDebugType - Set the current debug type, as if the -debug-only=X option were specified.

Note that DebugFlag also needs to be set to true for debug output to be produced.

Definition at line 70 of file Debug.cpp.

References setCurrentDebugTypes().

◆ setCurrentDebugTypes()

void llvm::setCurrentDebugTypes ( const char **  Types,
unsigned  Count 
)

setCurrentDebugTypes - Set the current debug type, as if the -debug-only=X,Y,Z option were specified.

Set the current debug type, as if the -debug-only=X option were specified.

Note that DebugFlag also needs to be set to true for debug output to be produced.

Definition at line 74 of file Debug.cpp.

References CurrentDebugType.

Referenced by setCurrentDebugType().

◆ setDefaultDebuginfodUrls()

void llvm::setDefaultDebuginfodUrls ( const SmallVector< StringRef > &  URLs)

Sets the list of debuginfod server URLs to query.

This overrides the environment variable DEBUGINFOD_URLS.

Definition at line 90 of file Debuginfod.cpp.

◆ setDirectAddressInInstr()

static void llvm::setDirectAddressInInstr ( MachineInstr MI,
unsigned  Operand,
unsigned  Reg 
)
inlinestatic

Replace the address used in the instruction with the direct memory reference.

Definition at line 132 of file X86InstrBuilder.h.

References MI, and Reg.

Referenced by llvm::X86TargetLowering::EmitInstrWithCustomInserter().

◆ setGlobalVariableLargeSection()

void llvm::setGlobalVariableLargeSection ( const Triple TargetTriple,
GlobalVariable GV 
)

◆ setInlineRemark()

void llvm::setInlineRemark ( CallBase CB,
StringRef  Message 
)

◆ setIrrLoopHeaderMetadata()

void llvm::setIrrLoopHeaderMetadata ( Module M,
Instruction TI,
uint64_t  Count 
)

◆ setKCFIType()

void llvm::setKCFIType ( Module M,
Function F,
StringRef  MangledType 
)

Sets the KCFI type for the function.

Used for compiler-generated functions that are indirectly called in instrumented code.

Definition at line 157 of file ModuleUtils.cpp.

References llvm::MDBuilder::createConstant(), F, llvm::MDNode::get(), llvm::Type::getInt32Ty(), Offset, and xxHash64().

Referenced by createSanitizerCtor().

◆ setLoopEstimatedTripCount()

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

Returns true if metadata is successfully updated, false otherwise. Note that loop must have a latch block which controls loop exit in order to succeed.

Definition at line 867 of file LoopUtils.cpp.

References llvm::MDBuilder::createBranchWeights(), llvm::Value::getContext(), getExpectedExitLoopLatchBranch(), llvm::BranchInst::getSuccessor(), llvm::Instruction::setMetadata(), and std::swap().

Referenced by setProfileInfoAfterUnrolling(), and UnrollLoop().

◆ setProbeDistributionFactor()

void llvm::setProbeDistributionFactor ( Instruction Inst,
float  Factor 
)

◆ setProfileInfoAfterUnrolling()

void llvm::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.

Set weights for UnrolledLoop and RemainderLoop based on weights for OrigLoop.

UnrolledLoop receives weights that reflect TC/UF iterations, and RemainderLoop receives weights that reflect the remaining TCUF iterations.

Note that OrigLoop may be equal to either UnrolledLoop or RemainderLoop in which case weights for OrigLoop are updated accordingly. Note also behavior is undefined if UnrolledLoop and RemainderLoop are equal. UF must be greater than zero. If OrigLoop has no profile info associated nothing happens.

This utility may be useful for such optimizations as unroller and vectorizer as it's typical transformation for them.

Definition at line 1628 of file LoopUtils.cpp.

References assert(), getLoopEstimatedTripCount(), and setLoopEstimatedTripCount().

Referenced by llvm::InnerLoopVectorizer::fixVectorizedLoop().

◆ setProfMetadata()

void llvm::setProfMetadata ( Module M,
Instruction TI,
ArrayRef< uint64_t EdgeCounts,
uint64_t  MaxCount 
)

◆ setUnwindEdgeTo()

void llvm::setUnwindEdgeTo ( Instruction TI,
BasicBlock Succ 
)

Sets the unwind edge of an instruction to a particular successor.

Definition at line 799 of file BasicBlockUtils.cpp.

References llvm_unreachable.

Referenced by ehAwareSplitEdge(), and rewritePHIsForCleanupPad().

◆ setupLLVMOptimizationRemarks() [1/2]

Error llvm::setupLLVMOptimizationRemarks ( LLVMContext Context,
raw_ostream OS,
StringRef  RemarksPasses,
StringRef  RemarksFormat,
bool  RemarksWithHotness,
std::optional< uint64_t RemarksHotnessThreshold = 0 
)

◆ setupLLVMOptimizationRemarks() [2/2]

Expected< std::unique_ptr< ToolOutputFile > > llvm::setupLLVMOptimizationRemarks ( LLVMContext Context,
StringRef  RemarksFilename,
StringRef  RemarksPasses,
StringRef  RemarksFormat,
bool  RemarksWithHotness,
std::optional< uint64_t RemarksHotnessThreshold = 0 
)

◆ setWidenableBranchCond()

void llvm::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.

Definition at line 108 of file GuardUtils.cpp.

References assert(), B, llvm::CallingConv::C, llvm::BranchInst::getCondition(), isWidenableBranch(), llvm::Instruction::moveBefore(), parseWidenableBranch(), and llvm::BranchInst::setCondition().

◆ shiftRight()

static lostFraction llvm::shiftRight ( APFloatBase::integerPart dst,
unsigned int  parts,
unsigned int  bits 
)
static

◆ shortenFileName()

static void llvm::shortenFileName ( std::string &  FN,
unsigned char  len = 250 
)
inlinestatic

◆ shouldEmitPTXNoReturn()

bool llvm::shouldEmitPTXNoReturn ( const Value V,
const TargetMachine TM 
)

Definition at line 336 of file NVPTXUtilities.cpp.

References assert(), F, isKernelFunction(), and TM.

Referenced by llvm::NVPTXTargetLowering::getPrototype().

◆ shouldFuncOptimizeForSizeImpl()

template<typename FuncT , typename BFIT >
bool llvm::shouldFuncOptimizeForSizeImpl ( const FuncT *  F,
ProfileSummaryInfo PSI,
BFIT *  BFI,
PGSOQueryType  QueryType 
)

◆ shouldIgnorePass()

static bool llvm::shouldIgnorePass ( StringRef  PassID)
static

Definition at line 246 of file PassTimingInfo.cpp.

References isSpecialPass().

◆ shouldInline()

std::optional< InlineCost > llvm::shouldInline ( CallBase CB,
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.

If we return the cost, we will emit an optimisation remark later using that cost, so we won't do so from this function. Return std::nullopt if inlining should not be attempted.

Definition at line 376 of file InlineAdvisor.cpp.

References dbgs(), DEBUG_TYPE, llvm::OptimizationRemarkEmitter::emit(), llvm::CallBase::getCalledFunction(), llvm::CallBase::getCaller(), llvm::InlineCost::getCost(), inlineCostStr(), llvm::InlineCost::isAlways(), llvm::InlineCost::isNever(), LLVM_DEBUG, setInlineRemark(), and shouldBeDeferred().

Referenced by getDefaultInlineAdvice().

◆ shouldOptForSize()

bool llvm::shouldOptForSize ( const MachineBasicBlock MBB,
ProfileSummaryInfo PSI,
BlockFrequencyInfo BFI 
)

Returns true if the given block should be optimized for size.

Definition at line 1609 of file Utils.cpp.

References F, llvm::MachineBasicBlock::getBasicBlock(), llvm::MachineFunction::getFunction(), llvm::MachineBasicBlock::getParent(), MBB, and shouldOptimizeForSize().

Referenced by llvm::GIMatchTableExecutor::shouldOptForSize().

◆ shouldOptimizeForSize() [1/5]

bool llvm::shouldOptimizeForSize ( const BasicBlock BB,
ProfileSummaryInfo PSI,
BlockFrequencyInfo BFI,
PGSOQueryType  QueryType = PGSOQueryType::Other 
)

Returns true if basic block BB is suggested to be size-optimized based on the profile.

Definition at line 104 of file SizeOpts.cpp.

References assert(), and shouldOptimizeForSizeImpl().

◆ shouldOptimizeForSize() [2/5]

bool llvm::shouldOptimizeForSize ( const Function F,
ProfileSummaryInfo PSI,
BlockFrequencyInfo BFI,
PGSOQueryType  QueryType = PGSOQueryType::Other 
)

Returns true if function F is suggested to be size-optimized based on the profile.

Definition at line 98 of file SizeOpts.cpp.

References F, and shouldFuncOptimizeForSizeImpl().

◆ shouldOptimizeForSize() [3/5]

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

Definition at line 34 of file MachineSizeOpts.cpp.

References assert(), MBB, and shouldOptimizeForSizeImpl().

◆ shouldOptimizeForSize() [4/5]

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

Definition at line 42 of file MachineSizeOpts.cpp.

References assert(), llvm::MBFIWrapper::getBlockFreq(), llvm::MBFIWrapper::getMBFI(), MBB, and shouldOptimizeForSizeImpl().

◆ shouldOptimizeForSize() [5/5]

bool llvm::shouldOptimizeForSize ( const MachineFunction MF,
ProfileSummaryInfo PSI,
const MachineBlockFrequencyInfo BFI,
PGSOQueryType  QueryType = PGSOQueryType::Other 
)

◆ shouldOptimizeForSizeImpl()

template<typename BlockTOrBlockFreq , typename BFIT >
bool llvm::shouldOptimizeForSizeImpl ( BlockTOrBlockFreq  BBOrBlockFreq,
ProfileSummaryInfo PSI,
BFIT *  BFI,
PGSOQueryType  QueryType 
)

◆ shouldPrintAfterAll()

bool llvm::shouldPrintAfterAll ( )

Definition at line 124 of file PrintPasses.cpp.

References PrintAfterAll.

◆ shouldPrintAfterPass()

bool llvm::shouldPrintAfterPass ( StringRef  PassID)

◆ shouldPrintAfterSomePass()

bool llvm::shouldPrintAfterSomePass ( )

Definition at line 113 of file PrintPasses.cpp.

References PrintAfter, and PrintAfterAll.

Referenced by llvm::PrintIRInstrumentation::registerCallbacks().

◆ shouldPrintBeforeAll()

bool llvm::shouldPrintBeforeAll ( )

Definition at line 122 of file PrintPasses.cpp.

References PrintBeforeAll.

◆ shouldPrintBeforePass()

bool llvm::shouldPrintBeforePass ( StringRef  PassID)

◆ shouldPrintBeforeSomePass()

bool llvm::shouldPrintBeforeSomePass ( )

This is a helper to determine whether to print IR before or after a pass.

Definition at line 109 of file PrintPasses.cpp.

References PrintBefore, and PrintBeforeAll.

Referenced by llvm::PrintIRInstrumentation::registerCallbacks().

◆ shouldRename()

bool llvm::shouldRename ( Value V)

Definition at line 357 of file PredicateInfo.cpp.

◆ shouldReverseIterate()

template<class T = void *>
bool llvm::shouldReverseIterate ( )

◆ shouldScheduleAdjacent()

static bool llvm::shouldScheduleAdjacent ( const TargetInstrInfo TII,
const TargetSubtargetInfo TSI,
const MachineInstr FirstMI,
const MachineInstr SecondMI 
)
static

Check if the instr pair, FirstMI and SecondMI, should be fused together.

Given SecondMI, when FirstMI is unspecified, then check if SecondMI may be part of a fused pair at all.

Definition at line 51 of file ARMMacroFusion.cpp.

References isAESPair(), and isLiteralsPair().

Referenced by createAMDGPUMacroFusionDAGMutation(), createARMMacroFusionDAGMutation(), createPowerPCMacroFusionDAGMutation(), and createX86MacroFusionDAGMutation().

◆ shouldSkipAttribute()

static bool llvm::shouldSkipAttribute ( bool  Update,
DWARFAbbreviationDeclaration::AttributeSpec  AttrSpec,
bool  SkipPC 
)
static

◆ shuffle()

template<class Iterator , class RNG >
void llvm::shuffle ( Iterator  first,
Iterator  last,
RNG &&  g 
)

Definition at line 1541 of file STLExtras.h.

References g(), and size().

Referenced by llvm::InstrProfWriter::addTemporalProfileTraces(), and llvm::HexagonEvaluator::evaluate().

◆ signatureFromMVTs()

wasm::WasmSignature * llvm::signatureFromMVTs ( MCContext Ctx,
const SmallVectorImpl< MVT > &  Results,
const SmallVectorImpl< MVT > &  Params 
)

◆ SignExtend32() [1/2]

template<unsigned B>
constexpr int32_t llvm::SignExtend32 ( uint32_t  X)
inlineconstexpr

Sign-extend the number in the bottom B bits of X to a 32-bit integer.

Requires 0 < B <= 32.

Definition at line 436 of file MathExtras.h.

References B, and X.

Referenced by llvm::PPC::get_VSPLTI_elt().

◆ SignExtend32() [2/2]

int32_t llvm::SignExtend32 ( uint32_t  X,
unsigned  B 
)
inline

Sign-extend the number in the bottom B bits of X to a 32-bit integer.

Requires 0 < B <= 32.

Definition at line 444 of file MathExtras.h.

References assert(), B, and X.

◆ SignExtend64() [1/2]

template<unsigned B>
constexpr int64_t llvm::SignExtend64 ( uint64_t  x)
inlineconstexpr

◆ SignExtend64() [2/2]

int64_t llvm::SignExtend64 ( uint64_t  X,
unsigned  B 
)
inline

Sign-extend the number in the bottom B bits of X to a 64-bit integer.

Requires 0 < B <= 64.

Definition at line 460 of file MathExtras.h.

References assert(), B, and X.

◆ SimpleNodeLabelString()

template<typename BasicBlockT >
std::string llvm::SimpleNodeLabelString ( const BasicBlockT *  Node)

◆ simplifyAddInst()

Value * llvm::simplifyAddInst ( Value LHS,
Value RHS,
bool  IsNSW,
bool  IsNUW,
const SimplifyQuery Q 
)

◆ simplifyAndInst()

Value * llvm::simplifyAndInst ( Value LHS,
Value RHS,
const SimplifyQuery Q 
)

Given operands for an And, fold the result or return null.

Definition at line 2237 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitAnd().

◆ simplifyAShrInst()

Value * llvm::simplifyAShrInst ( Value Op0,
Value Op1,
bool  IsExact,
const SimplifyQuery Q 
)

Given operands for a AShr, fold the result or return nulll.

Definition at line 1534 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitAShr().

◆ simplifyBinaryIntrinsic()

Value * llvm::simplifyBinaryIntrinsic ( 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.

Definition at line 6378 of file InstructionSimplify.cpp.

References assert(), BitWidth, llvm::CallingConv::C, llvm::ICmpInst::compare(), computeKnownBits(), ConstantFoldBinaryOpOperands(), llvm::SimplifyQuery::DL, fcAllFlags, foldMinimumMaximumSharedOp(), foldMinMaxSharedOp(), llvm::ConstantStruct::get(), llvm::UndefValue::get(), llvm::PoisonValue::get(), llvm::Constant::getAllOnesValue(), llvm::DataLayout::getIndexTypeSizeInBits(), getInverseMinMaxIntrinsic(), llvm::Constant::getNullValue(), llvm::MinMaxIntrinsic::getPredicate(), llvm::MinMaxIntrinsic::getSaturationPoint(), llvm::Type::getScalarSizeInBits(), llvm::Value::getType(), llvm::SimplifyQuery::getWithoutUndef(), isICmpTrue(), llvm::SimplifyQuery::isUndefValue(), llvm::PatternMatch::m_AllOnes(), llvm::PatternMatch::m_APFloat(), llvm::PatternMatch::m_APInt(), llvm::PatternMatch::m_APIntAllowUndef(), llvm::PatternMatch::m_AShr(), llvm::PatternMatch::m_FNeg(), llvm::PatternMatch::m_ImmConstant(), llvm::PatternMatch::m_LShr(), llvm::PatternMatch::m_NaN(), llvm::PatternMatch::m_Negative(), llvm::PatternMatch::m_One(), llvm::PatternMatch::m_PtrToInt(), llvm::PatternMatch::m_Shl(), llvm::PatternMatch::m_Specific(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::m_Zero(), llvm::PatternMatch::match(), propagateNaN(), RecursionLimit, simplifyLdexp(), simplifyRelativeLoad(), std::swap(), X, llvm::KnownBits::Zero, and llvm::APInt::zextOrTrunc().

Referenced by llvm::InstSimplifyFolder::FoldBinaryIntrinsic(), and simplifyIntrinsic().

◆ simplifyBinOp() [1/2]

Value * llvm::simplifyBinOp ( unsigned  Opcode,
Value LHS,
Value RHS,
const SimplifyQuery Q 
)

◆ simplifyBinOp() [2/2]

Value * llvm::simplifyBinOp ( unsigned  Opcode,
Value LHS,
Value RHS,
FastMathFlags  FMF,
const SimplifyQuery Q 
)

Given operands for a BinaryOperator, fold the result or return null.

Try to use FastMathFlags when folding the result.

Definition at line 6034 of file InstructionSimplify.cpp.

References LHS, RecursionLimit, and RHS.

◆ simplifyCall()

Value * llvm::simplifyCall ( CallBase Call,
Value Callee,
ArrayRef< Value * >  Args,
const SimplifyQuery Q 
)

Given a callsite, callee, and arguments, fold the result or return null.

Definition at line 6899 of file InstructionSimplify.cpp.

References assert(), F, llvm::PoisonValue::get(), simplifyIntrinsic(), and tryConstantFoldCall().

Referenced by simplifyInstructionWithOperands(), and llvm::InstCombinerImpl::visitCallInst().

◆ simplifyCastInst()

Value * llvm::simplifyCastInst ( unsigned  CastOpc,
Value Op,
Type Ty,
const SimplifyQuery Q 
)

Given operands for a CastInst, fold the result or return null.

Definition at line 5309 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by constantFoldUser(), and llvm::InstSimplifyFolder::FoldCast().

◆ simplifyCFG()

bool llvm::simplifyCFG ( BasicBlock BB,
const TargetTransformInfo TTI,
DomTreeUpdater DTU = nullptr,
const SimplifyCFGOptions Options = {},
ArrayRef< WeakVH LoopHeaders = {} 
)

◆ simplifyCmpInst()

Value * llvm::simplifyCmpInst ( unsigned  Predicate,
Value LHS,
Value RHS,
const SimplifyQuery Q 
)

Given operands for a CmpInst, fold the result or return null.

Definition at line 6047 of file InstructionSimplify.cpp.

References LHS, RecursionLimit, and RHS.

Referenced by CanProveNotTakenFirstIteration(), and llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl().

◆ simplifyConstrainedFPCall()

Value * llvm::simplifyConstrainedFPCall ( CallBase Call,
const SimplifyQuery Q 
)

Given a constrained FP intrinsic call, tries to compute its simplified version.

Returns a simplified result or null.

This function provides an additional contract: it guarantees that if simplification succeeds that the intrinsic is side effect free. As a result, successful simplification can be used to delete the intrinsic not just replace its result.

Definition at line 6925 of file InstructionSimplify.cpp.

References assert(), simplifyIntrinsic(), and tryConstantFoldCall().

Referenced by llvm::InstCombinerImpl::visitCallInst().

◆ simplifyExtractElementInst()

Value * llvm::simplifyExtractElementInst ( Value Vec,
Value Idx,
const SimplifyQuery Q 
)

Given operands for an ExtractElementInst, fold the result or return null.

Definition at line 5230 of file InstructionSimplify.cpp.

References Idx, and RecursionLimit.

Referenced by llvm::InstSimplifyFolder::FoldExtractElement(), and llvm::InstCombinerImpl::visitExtractElementInst().

◆ simplifyExtractValueInst()

Value * llvm::simplifyExtractValueInst ( Value Agg,
ArrayRef< unsigned Idxs,
const SimplifyQuery Q 
)

Given operands for an ExtractValueInst, fold the result or return null.

Definition at line 5178 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstSimplifyFolder::FoldExtractValue(), and llvm::InstCombinerImpl::visitExtractValueInst().

◆ simplifyFAddInst()

Value * llvm::simplifyFAddInst ( 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.

Definition at line 5793 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitFAdd().

◆ simplifyFCmpInst()

Value * llvm::simplifyFCmpInst ( unsigned  Predicate,
Value LHS,
Value RHS,
FastMathFlags  FMF,
const SimplifyQuery Q 
)

Given operands for an FCmpInst, fold the result or return null.

Definition at line 4273 of file InstructionSimplify.cpp.

References LHS, RecursionLimit, and RHS.

Referenced by llvm::InstCombinerImpl::visitFCmpInst().

◆ simplifyFDivInst()

Value * llvm::simplifyFDivInst ( 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.

Definition at line 5876 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitFDiv().

◆ simplifyFMAFMul()

Value * llvm::simplifyFMAFMul ( 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.

In contrast to simplifyFMulInst, this function will not perform simplifications whose unrounded results differ when rounded to the argument type.

Definition at line 5817 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitCallInst().

◆ simplifyFMulInst()

Value * llvm::simplifyFMulInst ( 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.

Definition at line 5809 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitFMul().

◆ simplifyFNegInst()

Value * llvm::simplifyFNegInst ( Value Op,
FastMathFlags  FMF,
const SimplifyQuery Q 
)

Given operand for an FNeg, fold the result or return null.

Definition at line 5509 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitFNeg().

◆ simplifyFreezeInst()

Value * llvm::simplifyFreezeInst ( Value Op,
const SimplifyQuery Q 
)

Given an operand for a Freeze, see if we can fold the result.

If not, this returns null.

Definition at line 6944 of file InstructionSimplify.cpp.

Referenced by simplifyInstructionWithOperands(), and llvm::InstCombinerImpl::visitFreeze().

◆ simplifyFRemInst()

Value * llvm::simplifyFRemInst ( 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.

Definition at line 5914 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitFRem().

◆ simplifyFSubInst()

Value * llvm::simplifyFSubInst ( 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.

Definition at line 5801 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitFSub().

◆ simplifyGEPInst()

Value * llvm::simplifyGEPInst ( Type SrcTy,
Value Ptr,
ArrayRef< Value * >  Indices,
bool  InBounds,
const SimplifyQuery Q 
)

Given operands for a GetElementPtrInst, fold the result or return null.

Definition at line 5073 of file InstructionSimplify.cpp.

References Ptr, and RecursionLimit.

Referenced by llvm::InstSimplifyFolder::FoldGEP(), and llvm::InstCombinerImpl::visitGetElementPtrInst().

◆ simplifyICmpInst()

Value * llvm::simplifyICmpInst ( unsigned  Predicate,
Value LHS,
Value RHS,
const SimplifyQuery Q 
)

◆ simplifyInsertElementInst()

Value * llvm::simplifyInsertElementInst ( Value Vec,
Value Elt,
Value Idx,
const SimplifyQuery Q 
)

◆ simplifyInsertValueInst()

Value * llvm::simplifyInsertValueInst ( Value Agg,
Value Val,
ArrayRef< unsigned Idxs,
const SimplifyQuery Q 
)

Given operands for an InsertValueInst, fold the result or return null.

Definition at line 5112 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstSimplifyFolder::FoldInsertValue(), and llvm::InstCombinerImpl::visitInsertValueInst().

◆ simplifyInstruction()

Value * llvm::simplifyInstruction ( Instruction I,
const SimplifyQuery Q 
)

◆ SimplifyInstructionsInBlock()

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

SimplifyInstructionsInBlock - Scan the specified basic block and try to simplify any instructions in it and recursively delete dead instructions.

This returns true if it changed the code, note that it can delete instructions in other blocks as well in this block.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 730 of file Local.cpp.

References assert(), llvm::BasicBlock::back(), llvm::BasicBlock::begin(), llvm::SetVector< T, Vector, Set, N >::count(), DL, llvm::SetVector< T, Vector, Set, N >::empty(), llvm::BasicBlock::end(), llvm::Module::getDataLayout(), llvm::BasicBlock::getModule(), I, llvm::SetVector< T, Vector, Set, N >::pop_back_val(), and simplifyAndDCEInstruction().

Referenced by foldUnusualPatterns(), llvm::JumpThreadingPass::threadEdge(), and llvm::JumpThreadingPass::threadThroughTwoBasicBlocks().

◆ simplifyInstructionWithOperands()

Value * llvm::simplifyInstructionWithOperands ( Instruction I,
ArrayRef< Value * >  NewOps,
const SimplifyQuery Q 
)

Like simplifyInstruction but the operands of I are replaced with NewOps.

Returns a simplified value, or null if none was found.

Definition at line 7121 of file InstructionSimplify.cpp.

References assert(), I, RecursionLimit, and llvm::ArrayRef< T >::size().

Referenced by simplifyInstructionWithPHI().

◆ simplifyLoadInst()

Value * llvm::simplifyLoadInst ( LoadInst LI,
Value PtrOp,
const SimplifyQuery Q 
)

◆ simplifyLoop()

bool llvm::simplifyLoop ( Loop L,
DominatorTree DT,
LoopInfo LI,
ScalarEvolution SE,
AssumptionCache AC,
MemorySSAUpdater MSSAU,
bool  PreserveLCSSA 
)

◆ simplifyLoopAfterUnroll()

void llvm::simplifyLoopAfterUnroll ( Loop L,
bool  SimplifyIVs,
LoopInfo LI,
ScalarEvolution SE,
DominatorTree DT,
AssumptionCache AC,
const TargetTransformInfo TTI 
)

◆ simplifyLoopIVs()

bool llvm::simplifyLoopIVs ( Loop L,
ScalarEvolution SE,
DominatorTree DT,
LoopInfo LI,
const TargetTransformInfo TTI,
SmallVectorImpl< WeakTrackingVH > &  Dead 
)

SimplifyLoopIVs - Simplify users of induction variables within this loop.

Simplify users of induction variables within this loop.

This does not actually change or add IVs.

Definition at line 1015 of file SimplifyIndVar.cpp.

References _, llvm::CallingConv::C, DEBUG_TYPE, llvm::ScalarEvolution::getDataLayout(), I, Rewriter, and simplifyUsersOfIV().

Referenced by simplifyLoopAfterUnroll().

◆ simplifyLShrInst()

Value * llvm::simplifyLShrInst ( Value Op0,
Value Op1,
bool  IsExact,
const SimplifyQuery Q 
)

Given operands for a LShr, fold the result or return null.

Definition at line 1501 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitLShr().

◆ simplifyMulInst()

Value * llvm::simplifyMulInst ( Value LHS,
Value RHS,
bool  IsNSW,
bool  IsNUW,
const SimplifyQuery Q 
)

Given operands for a Mul, fold the result or return null.

Definition at line 995 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitMul().

◆ simplifyOrInst()

Value * llvm::simplifyOrInst ( Value LHS,
Value RHS,
const SimplifyQuery Q 
)

Given operands for an Or, fold the result or return null.

Definition at line 2511 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitOr().

◆ simplifyRetainedKnowledge()

RetainedKnowledge llvm::simplifyRetainedKnowledge ( AssumeInst Assume,
RetainedKnowledge  RK,
AssumptionCache AC,
DominatorTree DT 
)

canonicalize the RetainedKnowledge RK.

it is assumed that RK is part of Assume. This will return an empty RetainedKnowledge if the knowledge is useless.

Definition at line 318 of file AssumeBundleBuilder.cpp.

References llvm::Module::getDataLayout(), llvm::Instruction::getModule(), and llvm::RetainedKnowledge::none().

Referenced by llvm::InstCombinerImpl::visitCallInst().

◆ simplifySDivInst()

Value * llvm::simplifySDivInst ( Value LHS,
Value RHS,
bool  IsExact,
const SimplifyQuery Q 
)

Given operands for an SDiv, fold the result or return null.

Definition at line 1250 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitSDiv().

◆ simplifySelectInst()

Value * llvm::simplifySelectInst ( Value Cond,
Value TrueVal,
Value FalseVal,
const SimplifyQuery Q 
)

Given operands for a SelectInst, fold the result or return null.

Definition at line 4932 of file InstructionSimplify.cpp.

References Cond, and RecursionLimit.

Referenced by llvm::InstSimplifyFolder::FoldSelect().

◆ simplifyShlInst()

Value * llvm::simplifyShlInst ( Value Op0,
Value Op1,
bool  IsNSW,
bool  IsNUW,
const SimplifyQuery Q 
)

Given operands for a Shl, fold the result or return null.

Definition at line 1464 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitShl().

◆ simplifyShuffleVectorInst()

Value * llvm::simplifyShuffleVectorInst ( Value Op0,
Value Op1,
ArrayRef< int >  Mask,
Type RetTy,
const SimplifyQuery Q 
)

Given operands for a ShuffleVectorInst, fold the result or return null.

See class ShuffleVectorInst for a description of the mask representation.

Definition at line 5481 of file InstructionSimplify.cpp.

References RecursionLimit, and RetTy.

Referenced by llvm::InstSimplifyFolder::FoldShuffleVector(), and llvm::InstCombinerImpl::visitShuffleVectorInst().

◆ simplifySRemInst()

Value * llvm::simplifySRemInst ( Value LHS,
Value RHS,
const SimplifyQuery Q 
)

Given operands for an SRem, fold the result or return null.

Definition at line 1284 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitSRem().

◆ simplifySubInst()

Value * llvm::simplifySubInst ( Value LHS,
Value RHS,
bool  IsNSW,
bool  IsNUW,
const SimplifyQuery Q 
)

Given operands for a Sub, fold the result or return null.

Definition at line 923 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by dropRedundantMaskingOfLeftShiftInput(), and llvm::InstCombinerImpl::visitSub().

◆ simplifyUDivInst()

Value * llvm::simplifyUDivInst ( Value LHS,
Value RHS,
bool  IsExact,
const SimplifyQuery Q 
)

Given operands for a UDiv, fold the result or return null.

Definition at line 1262 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitUDiv().

◆ simplifyUnOp() [1/2]

Value * llvm::simplifyUnOp ( unsigned  Opcode,
Value Op,
const SimplifyQuery Q 
)

Given operand for a UnaryOperator, fold the result or return null.

Definition at line 5950 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstSimplifyFolder::FoldUnOpFMF().

◆ simplifyUnOp() [2/2]

Value * llvm::simplifyUnOp ( unsigned  Opcode,
Value Op,
FastMathFlags  FMF,
const SimplifyQuery Q 
)

Given operand for a UnaryOperator, fold the result or return null.

Try to use FastMathFlags when folding the result.

Definition at line 5954 of file InstructionSimplify.cpp.

References RecursionLimit.

◆ simplifyURemInst()

Value * llvm::simplifyURemInst ( Value LHS,
Value RHS,
const SimplifyQuery Q 
)

Given operands for a URem, fold the result or return null.

Definition at line 1295 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitURem().

◆ simplifyUsersOfIV()

std::pair< bool, bool > llvm::simplifyUsersOfIV ( PHINode CurrIV,
ScalarEvolution SE,
DominatorTree DT,
LoopInfo LI,
const TargetTransformInfo TTI,
SmallVectorImpl< WeakTrackingVH > &  Dead,
SCEVExpander Rewriter,
IVVisitor V = nullptr 
)

simplifyUsersOfIV - Simplify instructions that use this induction variable by using ScalarEvolution to analyze the IV's recurrence.

Simplify instructions that use this induction variable by using ScalarEvolution to analyze the IV's recurrence.

Returns a pair where the first entry indicates that the function makes changes and the second entry indicates that it introduced new opportunities for loop unswitching.

Definition at line 1002 of file SimplifyIndVar.cpp.

References llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), llvm::Instruction::getParent(), and Rewriter.

Referenced by simplifyLoopIVs().

◆ simplifyWithOpReplaced()

Value * llvm::simplifyWithOpReplaced ( 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.

If not, return null. AllowRefinement specifies whether the simplification can be a refinement (e.g. 0 instead of poison), or whether it needs to be strictly identical. Op and RepOp can be assumed to not be poison when determining refinement.

If DropFlags is passed, then the replacement result is only valid if poison-generating flags/metadata on those instructions are dropped. This is only useful in conjunction with AllowRefinement=false.

Definition at line 4442 of file InstructionSimplify.cpp.

References RecursionLimit.

◆ simplifyXorInst()

Value * llvm::simplifyXorInst ( Value LHS,
Value RHS,
const SimplifyQuery Q 
)

Given operands for an Xor, fold the result or return null.

Definition at line 2588 of file InstructionSimplify.cpp.

References RecursionLimit.

Referenced by llvm::InstCombinerImpl::visitXor().

◆ sinkRegion()

bool llvm::sinkRegion ( DomTreeNode N,
AAResults AA,
LoopInfo LI,
DominatorTree DT,
TargetLibraryInfo TLI,
TargetTransformInfo TTI,
Loop CurLoop,
MemorySSAUpdater MSSAU,
ICFLoopSafetyInfo SafetyInfo,
SinkAndHoistLICMFlags Flags,
OptimizationRemarkEmitter ORE,
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.

This allows us to visit uses before definitions, allowing us to sink a loop body in one pass without iteration. Takes DomTreeNode, AAResults, LoopInfo, DominatorTree, TargetLibraryInfo, Loop, AliasSet information for all instructions of the loop and loop safety information as arguments. Diagnostics is emitted via ORE. It returns changed status. CurLoop is a loop to do sinking on. OutermostLoop is used only when this function is called by sinkRegionForLoopNest.

This allows us to visit uses before definitions, allowing us to sink a loop body in one pass without iteration.

Definition at line 553 of file LICM.cpp.

References assert(), llvm::BasicBlock::begin(), canSinkOrHoistInst(), collectChildrenInLoop(), dbgs(), llvm::BasicBlock::end(), eraseInstruction(), llvm::MemorySSAUpdater::getMemorySSA(), I, inSubLoop(), isInstructionTriviallyDead(), isNotUsedOrFoldableInLoop(), LLVM_DEBUG, N, reverse(), salvageDebugInfo(), salvageKnowledge(), sink(), llvm::MemorySSA::verifyMemorySSA(), and VerifyMemorySSA.

Referenced by sinkRegionForLoopNest().

◆ sinkRegionForLoopNest()

bool llvm::sinkRegionForLoopNest ( DomTreeNode N,
AAResults AA,
LoopInfo LI,
DominatorTree DT,
TargetLibraryInfo TLI,
TargetTransformInfo TTI,
Loop CurLoop,
MemorySSAUpdater MSSAU,
ICFLoopSafetyInfo SafetyInfo,
SinkAndHoistLICMFlags Flags,
OptimizationRemarkEmitter ORE 
)

◆ size()

template<typename R >
auto llvm::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.

This is a wrapper function around std::distance which is only enabled when the operation is O(1).

Definition at line 1680 of file STLExtras.h.

References size().

Referenced by llvm::pdb::NativeSession::addressForRVA(), llvm::AllocationOrder::AllocationOrder(), llvm::User::allocHungoffUses(), Analyze_CC_Sparc64_Full(), llvm::dwarf_linker::parallel::SectionDescriptor::applyIntVal(), llvm::dwarf_linker::parallel::SectionDescriptor::applySLEB128(), llvm::dwarf_linker::parallel::SectionDescriptor::applyULEB128(), llvm::ArrayRef< T >::ArrayRef(), llvm::CanonicalLoopInfo::assertOK(), llvm::AttributeListImpl::AttributeListImpl(), llvm::MutableArrayRef< T >::back(), llvm::BinaryStreamRef::BinaryStreamRef(), llvm::mca::CodeEmitter::CodeEmitter(), llvm::objcopy::elf::CompressedSection::CompressedSection(), llvm::ValueEnumerator::computeBitsRequiredForTypeIndicies(), llvm::LegacyLegalizerInfo::computeTables(), llvm::ConstantAggregate::ConstantAggregate(), llvm::StringRef::consume_back(), llvm::StringRef::consume_back_insensitive(), llvm::gsym::ObjectFileTransformer::convert(), convertUTF8Sequence(), llvm::LTOModule::createFromOpenFile(), llvm::mca::InstrBuilder::createInstruction(), llvm::orc::createJITLoaderGDBRegistrar(), llvm::object::DataRegion< T >::DataRegion(), LiveDebugValues::DbgValue::DbgValue(), llvm::AArch64_AM::decodeLogicalImmediate(), DecodeVLD1DupInstruction(), DecodeVLD1LN(), DecodeVLD2DupInstruction(), DecodeVLD2LN(), DecodeVLD3LN(), DecodeVLD4DupInstruction(), DecodeVLD4LN(), DecodeVLDST2Instruction(), DecodeVLDST3Instruction(), DecodeVLDST4Instruction(), DecodeVSHLMaxInstruction(), DecodeVST1LN(), DecodeVST2LN(), DecodeVST3LN(), DecodeVST4LN(), llvm::CSKYFrameLowering::determineCalleeSaves(), llvm::ArrayRef< T >::drop_back(), llvm::MutableArrayRef< T >::drop_back(), llvm::StringRef::drop_back(), llvm::ArrayRef< T >::drop_front(), llvm::MutableArrayRef< T >::drop_front(), llvm::StringRef::drop_front(), llvm::PBQP::Graph< SolverT >::EdgeItr::EdgeItr(), llvm::MipsSEFrameLowering::emitEpilogue(), emitFDESymbol(), EmitPersonality(), llvm::RISCVFrameLowering::emitPrologue(), llvm::EnumeratedArray< ValueType, Enumeration, LargestEnum, IndexType, Size >::empty(), llvm::EnumeratedArray< ValueType, Enumeration, LargestEnum, IndexType, Size >::end(), llvm::MutableArrayRef< T >::end(), llvm::LegalizerHelper::fewerElementsVectorMultiEltType(), llvm::StringRef::find_if(), FindInsertedValue(), llvm::sampleprof::FunctionId::FunctionId(), llvm::lto::generateModulesOrdering(), llvm::AAPotentialConstantValues::getAssumedConstant(), getDataAlignmentFactor(), llvm::LTOModule::getDependentLibrary(), llvm::RuntimeDyldCOFF::getDLLImportOffset(), llvm::MCLOHDirective::getEmitSize(), llvm::dwarf_linker::parallel::SectionDescriptor::getIntVal(), llvm::LoopBase< BlockT, LoopT >::getLoopPreheader(), llvm::cl::generic_parser_base::getOptionWidth(), llvm::cl::list< DataType, StorageClass, ParserClass >::getPosition(), llvm::cl::bits< DataType, Storage, ParserClass >::getPosition(), llvm::NVPTXTargetLowering::getPrototype(), llvm::X86TargetLowering::getSingleConstraintMatchWeight(), llvm::SIRegisterInfo::getSubRegFromChannel(), llvm::slpvectorizer::BoUpSLP::VLOperands::getVL(), llvm::SmallVectorBase< Size_T >::grow_pod(), llvm::InteractiveModelRunner::InteractiveModelRunner(), llvm::ShuffleVectorInst::isReplicationMask(), isSafeToUnrollAndJam(), llvm::AArch64_AM::isValidDecodeLogicalImmediate(), LowerCMP_SWAP(), llvm::HexagonTargetLowering::LowerCONCAT_VECTORS(), llvm::SPIRVCallLowering::lowerFormalArguments(), llvm::AMDGPUCallLowering::lowerFormalArgumentsKernel(), llvm::RuntimeDyldChecker::MemoryRegionInfo::MemoryRegionInfo(), llvm::PBQP::Graph< SolverT >::NodeItr::NodeItr(), llvm::NoInferenceModelRunner::NoInferenceModelRunner(), llvm::MachO::ArchitectureSet::operator std::string(), llvm::StringRef::operator std::string_view(), operator+=(), llvm::StringMap< ValueTy, AllocatorTy >::operator==(), llvm::MutableArrayRef< T >::operator[](), llvm::ELFAttributeParser::parseSubsection(), llvm::SSAUpdaterTraits< LDVSSAUpdater >::PHI_iterator::PHI_iterator(), llvm::R600SchedStrategy::pickNode(), llvm::AArch64InstPrinter::printGPRSeqPairsClassOperand(), promoteScalarArgumentSize(), readImmediate(), readOpcodeRegister(), ReadSignature(), llvm::RegsForValue::RegsForValue(), llvm::ReleaseModeModelRunner< TGen >::ReleaseModeModelRunner(), llvm::LazyCallGraph::RefSCC::removeInternalRefEdge(), llvm::slpvectorizer::BoUpSLP::VLOperands::reorder(), llvm::RegBankSelect::repairReg(), llvm::LoopBase< BlockT, LoopT >::reserveBlocks(), llvm::AArch64_AM::ror(), llvm::AMDGPUAsmPrinter::runOnMachineFunction(), llvm::SchedDFSImpl::SchedDFSImpl(), llvm::SDDbgValue::SDDbgValue(), llvm::SectionEntry::SectionEntry(), llvm::SplitEditor::selectIntv(), separateNestedLoop(), llvm::LegacyLegalizerInfo::setAction(), llvm::ARMFunctionInfo::setArgumentStackSize(), llvm::M68kMachineFunctionInfo::setArgumentStackSize(), llvm::X86MachineFunctionInfo::setArgumentStackSize(), llvm::LegacyLegalizerInfo::setLegalizeScalarToDifferentSizeStrategy(), llvm::LegacyLegalizerInfo::setLegalizeVectorElementToDifferentSizeStrategy(), llvm::PPCFunctionInfo::setMinReservedArea(), llvm::DIELoc::setSize(), llvm::DIEBlock::setSize(), llvm::PPCFunctionInfo::setTailCallSPDelta(), llvm::InlineAsmIdentifierInfo::setVar(), llvm::AAMDNodes::shiftTBAAStruct(), llvm::SmallDenseMap< KeyT, ValueT, InlineBuckets, KeyInfoT, BucketT >::shrink_and_clear(), shuffle(), llvm::ShuffleVectorConstantExpr::ShuffleVectorConstantExpr(), llvm::ShuffleVectorInst::ShuffleVectorInst(), llvm::SIRegisterInfo::SIRegisterInfo(), llvm::orc::shared::SPSSerializationTraits< SPSTuple< SPSTagTs... >, std::tuple< Ts... > >::size(), size(), llvm::adl_detail::size_impl(), llvm::DWARFFormValue::skipValue(), llvm::ArrayRef< T >::slice(), llvm::MutableArrayRef< T >::slice(), llvm::StackLifetime::StackLifetime(), llvm::StringAttributeImpl::StringAttributeImpl(), llvm::StringMap< ValueTy, AllocatorTy >::StringMap(), llvm::StringRef::StringRef(), llvm::ArrayRef< T >::take_back(), llvm::MutableArrayRef< T >::take_back(), llvm::StringRef::take_back(), llvm::ArrayRef< T >::take_front(), llvm::MutableArrayRef< T >::take_front(), llvm::StringRef::take_front(), llvm::orc::DLLImportDefinitionGenerator::tryToGenerate(), llvm::coverage::mcdc::TVIdxBuilder::TVIdxBuilder(), upgradeArmOrAarch64IntrinsicFunction(), llvm::WritableBinaryStreamRef::WritableBinaryStreamRef(), llvm::objcopy::wasm::Writer::write(), and write32AArch64Ldr().

◆ SkipBitcodeWrapperHeader()

bool llvm::SkipBitcodeWrapperHeader ( const unsigned char *&  BufPtr,
const unsigned char *&  BufEnd,
bool  VerifyBufferSize 
)
inline

SkipBitcodeWrapperHeader - Some systems wrap bc files with a special header for padding or other reasons.

The format of this header is:

struct bc_header { uint32_t Magic; // 0x0B17C0DE uint32_t Version; // Version, currently always 0. uint32_t BitcodeOffset; // Offset to traditional bitcode file. uint32_t BitcodeSize; // Size of traditional bitcode file. ... potentially other gunk ... };

This function is called when we find a file with a matching magic number. In this case, skip down to the subsection of the file that is actually a BC file. If 'VerifyBufferSize' is true, check that the buffer is large enough to contain the whole bitcode file.

Definition at line 287 of file BitcodeReader.h.

References BWH_OffsetField, BWH_SizeField, Offset, llvm::support::endian::read32le(), and Size.

Referenced by analyzeHeader(), and initStream().

◆ skipDebugInstructionsBackward()

template<class IterT >
IterT llvm::skipDebugInstructionsBackward ( IterT  It,
IterT  Begin,
bool  SkipPseudoOp = true 
)
inline

Decrement It until it points to a non-debug instruction or to Begin and return the resulting iterator.

This function should only be used MachineBasicBlock::{iterator, const_iterator, instr_iterator, const_instr_iterator} and the respective reverse iterators.

Definition at line 1349 of file MachineBasicBlock.h.

Referenced by llvm::ScheduleDAGInstrs::addSchedBarrierDeps(), llvm::X86FrameLowering::mergeSPUpdates(), prev_nodbg(), and llvm::MachineBasicBlock::rfindDebugLoc().

◆ skipDebugInstructionsForward()

template<typename IterT >
IterT llvm::skipDebugInstructionsForward ( IterT  It,
IterT  End,
bool  SkipPseudoOp = true 
)
inline

Increment It until it points to a non-debug instruction or to End and return the resulting iterator.

This function should only be used MachineBasicBlock::{iterator, const_iterator, instr_iterator, const_instr_iterator} and the respective reverse iterators.

Definition at line 1336 of file MachineBasicBlock.h.

References End.

Referenced by llvm::GCNDownwardRPTracker::advanceToNext(), llvm::X86FrameLowering::eliminateCallFramePseudoInstr(), llvm::MachineBasicBlock::findDebugLoc(), llvm::RegPressureTracker::getCurrSlot(), llvm::MachineBasicBlock::getFirstNonDebugInstr(), llvm::SlotIndexes::getInstructionIndex(), llvm::X86FrameLowering::mergeSPUpdates(), next_nodbg(), ProfitableToMerge(), llvm::GCNDownwardRPTracker::reset(), and verifySameBranchInstructions().

◆ skipDebugIntrinsics()

BasicBlock::iterator llvm::skipDebugIntrinsics ( BasicBlock::iterator  It)

Advance It while it points to a debug instruction and return the result.

This assumes that It is not at the end of a block.

Definition at line 693 of file BasicBlock.cpp.

Referenced by llvm::objcarc::BottomUpPtrState::HandlePotentialUse().

◆ skipLeadingZeroesAndAnyDot()

static Expected< StringRef::iterator > llvm::skipLeadingZeroesAndAnyDot ( StringRef::iterator  begin,
StringRef::iterator  end,
StringRef::iterator dot 
)
static

Definition at line 474 of file APFloat.cpp.

References createError().

Referenced by interpretDecimal().

◆ skipProfileForFunction()

static bool llvm::skipProfileForFunction ( const Function F)
inlinestatic

Definition at line 154 of file SampleProfileLoaderBaseImpl.h.

References F.

Referenced by llvm::SampleProfileMatcher::runOnModule().

◆ sort() [1/4]

template<typename Container >
void llvm::sort ( Container &&  C)
inline

Definition at line 1660 of file STLExtras.h.

References adl_begin(), adl_end(), llvm::CallingConv::C, and sort().

◆ sort() [2/4]

template<typename Container , typename Compare >
void llvm::sort ( Container &&  C,
Compare  Comp 
)
inline

Definition at line 1673 of file STLExtras.h.

References adl_begin(), adl_end(), llvm::CallingConv::C, and sort().

◆ sort() [3/4]

template<typename IteratorTy >
void llvm::sort ( IteratorTy  Start,
IteratorTy  End 
)
inline

Definition at line 1647 of file STLExtras.h.

References array_pod_sort(), and End.

Referenced by llvm::TargetLibraryInfoImpl::addVectorizableFunctions(), adjustCostForPairing(), llvm::orc::AllocGroupSmallMap< T >::AllocGroupSmallMap(), llvm::GenericUniformityAnalysisImpl< ContextT >::analyzeControlDivergence(), llvm::jitlink::BasicLayout::BasicLayout(), llvm::SwitchCG::SwitchLowering::buildBitTests(), buildClonedLoops(), buildVRegToDbgValueMap(), checkVectorTypesForPromotion(), collectContributionData(), llvm::mca::RegisterFile::collectWrites(), combineWeightsBySorting(), llvm::codeview::DebugCrossModuleImportsSubsection::commit(), llvm::codeview::DebugFrameDataSubsection::commit(), compareVectors(), llvm::AccelTableBase::computeBucketCount(), llvm::ProfileSummaryBuilder::computeDetailedSummary(), llvm::rdf::Liveness::computeLiveIns(), computeLTOCacheKey(), llvm::MachObjectWriter::computeSymbolTable(), llvm::LegacyLegalizerInfo::computeTables(), llvm::MIRPrinter::convertCallSiteObjects(), llvm::TemporalProfTraceTy::createBPFunctionNodes(), llvm::MDBuilder::createFunctionEntryCount(), determineGPRegsToClear(), llvm::jitlink::LinkGraph::dump(), llvm::sampleprof::ProfileSymbolList::dump(), llvm::InstrProfSymtab::dumpNames(), llvm::DwarfStringPool::emit(), llvm::MCPseudoProbeSections::emit(), llvm::EHStreamer::emitExceptionTable(), llvm::AsmPrinter::emitFunctionBody(), emitInvalidCostRemarks(), llvm::rdf::DeadCodeElimination::erase(), llvm::ModuleSummaryIndex::exportToDot(), llvm::objcopy::elf::ASCIIHexWriter::finalize(), llvm::gsym::GsymCreator::finalize(), llvm::pdb::GSIHashStreamBuilder::finalizeBuckets(), findArgParts(), findArrayDimensions(), findIrreducibleHeaders(), findPartitions(), llvm::jitlink::EHFrameCFIBlockInspector::FromEdgeScan(), llvm::lto::generateModulesOrdering(), generateReproducer(), llvm::AttributeSetNode::get(), llvm::RecordRecTy::get(), llvm::ReplaceableMetadataImpl::getAllArgListUsers(), llvm::ReplaceableMetadataImpl::getAllDbgVariableRecordUsers(), llvm::RecordKeeper::getAllDerivedDefinitions(), llvm::rdf::Liveness::getAllReachingDefs(), GetEHSpillList(), llvm::NonRelocatableStringpool::getEntriesForEmission(), llvm::DWARFUnitIndex::getFromOffset(), llvm::HexagonSubtarget::getIntrinsicId(), getLiveRegMap(), llvm::MemoryDependenceResults::getNonLocalCallDependency(), llvm::StackSafetyInfo::getParamAccesses(), llvm::HvxSelector::getPerfectCompletions(), llvm::slpvectorizer::BoUpSLP::getSpillCost(), GetSpillList(), llvm::coverage::CoverageMapping::getUniqueSourceFiles(), llvm::mca::initializeUsedResources(), llvm::jitlink::initRelaxAux(), llvm::SlotIndexes::insertMBBInMaps(), llvm::cfg::LegalizeUpdates(), llvm::dwarf_linker::classic::DWARFLinker::link(), llvm::coverage::CoverageMapping::load(), llvm::object::ResourceSectionRef::load(), llvm::PhiLoweringHelper::lowerPhis(), llvm::yaml::MappingTraits< const InterfaceFile * >::NormalizedTBD::NormalizedTBD(), llvm::yaml::MappingTraits< const InterfaceFile * >::NormalizedTBD_V4::NormalizedTBD_V4(), llvm::orc::BlockFreqQuery::operator()(), llvm::jitlink::DWARFRecordSectionSplitter::operator()(), llvm::jitlink::EHFrameEdgeFixer::operator()(), operator<<(), llvm::slpvectorizer::BoUpSLP::optimizeGatherSequence(), parallelSort(), llvm::DWARFDebugLine::LineTable::parse(), predictValueUseListOrder(), predictValueUseListOrderImpl(), PrefixMatcher::PrefixMatcher(), llvm::CallGraph::print(), llvm::DebugCounter::print(), llvm::PhysicalRegisterUsageInfo::print(), llvm::MCPseudoProbeDecoder::printProbesForAllAddresses(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::printStatistic(), llvm::Pattern::printVariableDefs(), promoteSingleBlockAlloca(), llvm::ScheduleDAGInstrs::reduceHugeMemNodeMaps(), ReduceSwitchRange(), relocationViaAlloca(), llvm::MemoryDependenceResults::removeInstruction(), llvm::slpvectorizer::BoUpSLP::reorderBottomToTop(), llvm::SelectionDAG::ReplaceAllUsesOfValuesWith(), llvm::ReplaceableMetadataImpl::replaceAllUsesWith(), replaceConstantExprOp(), llvm::objcopy::elf::Object::replaceSections(), rescheduleLexographically(), llvm::ReplaceableMetadataImpl::resolveAllUses(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::runDFS(), llvm::PlaceSafepointsPass::runImpl(), llvm::SlotIndexes::runOnMachineFunction(), simplifySwitchOfPowersOfTwo(), sinkInstruction(), sinkRecurrenceUsersAfterPrevious(), sinkSpillUsesAfterCoroBegin(), llvm::SMDiagnostic::SMDiagnostic(), llvm::simple_ilist< T, Options >::sort(), sort(), llvm::SwitchCG::sortAndRangeify(), llvm::orc::SymbolLookupSet::sortByAddress(), llvm::orc::SymbolLookupSet::sortByName(), llvm::codeview::DebugStringTableSubsection::sortedIds(), sortGlobalExprs(), SortNonLocalDepInfoCache(), llvm::GCNIterativeScheduler::sortRegionsByPressure(), llvm::MachineBasicBlock::sortUniqueLiveIns(), llvm::DebugLocEntry::sortUniqueValues(), llvm::jitlink::LinkGraph::splitBlock(), SRAGlobal(), llvm::DbgValueHistoryMap::trimLocationRanges(), llvm::InstCombinerImpl::tryToSinkInstructionDbgValues(), llvm::coverage::mcdc::TVIdxBuilder::TVIdxBuilder(), llvm::HexagonBlockRanges::RangeList::unionize(), updateIDTMetaData(), llvm::slpvectorizer::BoUpSLP::vectorizeTree(), llvm::DomTreeBuilder::SemiNCAInfo< DomTreeT >::VerifyDFSNumbers(), llvm::vfs::YAMLVFSWriter::write(), llvm::sampleprof::ProfileSymbolList::write(), llvm::TimeTraceProfiler::write(), and llvm::InstrProfWriter::writeText().

◆ sort() [4/4]

template<typename IteratorTy , typename Compare >
void llvm::sort ( IteratorTy  Start,
IteratorTy  End,
Compare  Comp 
)
inline

Definition at line 1665 of file STLExtras.h.

References End.

◆ sortBasicBlocksAndUpdateBranches()

void llvm::sortBasicBlocksAndUpdateBranches ( MachineFunction MF,
MachineBasicBlockComparator  MBBCmp 
)

◆ SortProfiledSCC()

cl::opt< bool > llvm::SortProfiledSCC ( "sort-profiled-scc-member"  ,
cl::init(true ,
cl::Hidden  ,
cl::desc("Sort profiled recursion by edge weights.")   
)

◆ sortPtrAccesses()

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

Returns 'true' if sorting is legal, otherwise returns 'false'.

For example, for a given VL of memory accesses in program order, a[i+4], a[i+0], a[i+1] and a[i+7], this function will sort the VL and save the sorted indices in SortedIndices as a[i+0], a[i+1], a[i+4], a[i+7] and saves the mask for actual memory accesses in program order in SortedIndices as <1,2,0,3>

Definition at line 1624 of file LoopAccessAnalysis.cpp.

References all_of(), assert(), llvm::SmallVectorImpl< T >::clear(), DL, llvm::ArrayRef< T >::drop_front(), getPointersDiff(), isPointerTy(), Offset, Ptr, llvm::SmallVectorImpl< T >::resize(), and llvm::ArrayRef< T >::size().

Referenced by llvm::slpvectorizer::BoUpSLP::canVectorizeLoads().

◆ SPARCCondCodeToString()

static const char * llvm::SPARCCondCodeToString ( SPCC::CondCodes  CC)
inlinestatic

◆ spell()

StringRef llvm::spell ( RoundingMode  RM)
inline

Returns text representation of the given rounding mode.

Definition at line 51 of file FloatingPointMode.h.

References Dynamic, NearestTiesToAway, NearestTiesToEven, TowardNegative, TowardPositive, and TowardZero.

Referenced by operator<<().

◆ spliceBB() [1/2]

void llvm::spliceBB ( IRBuilder<> &  Builder,
BasicBlock New,
bool  CreateBranch 
)

Splice a BasicBlock at an IRBuilder's current insertion point.

Its new insert location will stick to after the instruction before the insertion point (instead of moving with the instruction the InsertPoint stores internally).

Definition at line 297 of file OMPIRBuilder.cpp.

References llvm::IRBuilderBase::getCurrentDebugLocation(), llvm::IRBuilderBase::GetInsertBlock(), llvm::BasicBlock::getTerminator(), llvm::IRBuilderBase::saveIP(), llvm::IRBuilderBase::SetCurrentDebugLocation(), llvm::IRBuilderBase::SetInsertPoint(), and spliceBB().

◆ spliceBB() [2/2]

void llvm::spliceBB ( IRBuilderBase::InsertPoint  IP,
BasicBlock New,
bool  CreateBranch 
)

Move the instruction after an InsertPoint to the beginning of another BasicBlock.

The instructions after IP are moved to the beginning of New which must not have any PHINodes. If CreateBranch is true, a branch instruction to New will be added such that there is no semantic change. Otherwise, the IP insert block remains degenerate and it is up to the caller to insert a terminator.

Definition at line 284 of file OMPIRBuilder.cpp.

References assert(), llvm::BranchInst::Create(), llvm::BasicBlock::end(), llvm::IRBuilderBase::InsertPoint::getBlock(), and llvm::IRBuilderBase::InsertPoint::getPoint().

Referenced by llvm::OpenMPIRBuilder::createCanonicalLoop(), spliceBB(), and splitBB().

◆ SplitAllCriticalEdges()

unsigned llvm::SplitAllCriticalEdges ( Function F,
const CriticalEdgeSplittingOptions Options = CriticalEdgeSplittingOptions() 
)

Loop over all of the edges in the CFG, breaking critical edges as they are found.

Returns the number of broken edges.

Definition at line 1014 of file BasicBlockUtils.cpp.

References F, llvm::Instruction::getNumSuccessors(), Options, and SplitCriticalEdge().

◆ splitBB() [1/3]

BasicBlock * llvm::splitBB ( IRBuilder<> &  Builder,
bool  CreateBranch,
llvm::Twine  Name 
)

Split a BasicBlock at Builder's insertion point, even if the block is degenerate (missing the terminator).

Its new insert location will stick to after the instruction before the insertion point (instead of moving with the instruction the InsertPoint stores internally).

Definition at line 337 of file OMPIRBuilder.cpp.

References llvm::IRBuilderBase::getCurrentDebugLocation(), llvm::IRBuilderBase::GetInsertBlock(), llvm::BasicBlock::getTerminator(), Name, llvm::IRBuilderBase::saveIP(), llvm::IRBuilderBase::SetCurrentDebugLocation(), llvm::IRBuilderBase::SetInsertPoint(), and splitBB().

◆ splitBB() [2/3]

BasicBlock * llvm::splitBB ( IRBuilderBase Builder,
bool  CreateBranch,
llvm::Twine  Name = {} 
)

Split a BasicBlock at Builder's insertion point, even if the block is degenerate (missing the terminator).

Its new insert location will stick to after the instruction before the insertion point (instead of moving with the instruction the InsertPoint stores internally).

Definition at line 323 of file OMPIRBuilder.cpp.

References llvm::IRBuilderBase::getCurrentDebugLocation(), llvm::IRBuilderBase::GetInsertBlock(), llvm::BasicBlock::getTerminator(), Name, llvm::IRBuilderBase::saveIP(), llvm::IRBuilderBase::SetCurrentDebugLocation(), llvm::IRBuilderBase::SetInsertPoint(), and splitBB().

◆ splitBB() [3/3]

BasicBlock * llvm::splitBB ( IRBuilderBase::InsertPoint  IP,
bool  CreateBranch,
llvm::Twine  Name = {} 
)

Split a BasicBlock at an InsertPoint, even if the block is degenerate (missing the terminator).

llvm::SplitBasicBlock and BasicBlock::splitBasicBlock require a well-formed BasicBlock. Name is used for the new successor block. If CreateBranch is true, a branch to the new successor will new created such that semantically there is no change; otherwise the block of the insertion point remains degenerate and it is the caller's responsibility to insert a terminator. Returns the new successor block.

Definition at line 312 of file OMPIRBuilder.cpp.

References llvm::BasicBlock::Create(), llvm::IRBuilderBase::InsertPoint::getBlock(), llvm::BasicBlock::getContext(), llvm::Value::getName(), llvm::ilist_node_with_parent< NodeTy, ParentTy, Options >::getNextNode(), llvm::BasicBlock::getParent(), Name, and spliceBB().

Referenced by llvm::OpenMPIRBuilder::createTask(), llvm::OpenMPIRBuilder::createTaskgroup(), llvm::OpenMPIRBuilder::createTeams(), splitBB(), and splitBBWithSuffix().

◆ splitBBWithSuffix()

BasicBlock * llvm::splitBBWithSuffix ( IRBuilderBase Builder,
bool  CreateBranch,
llvm::Twine  Suffix = ".split" 
)

Like splitBB, but reuses the current block's name for the new name.

Definition at line 351 of file OMPIRBuilder.cpp.

References llvm::IRBuilderBase::GetInsertBlock(), llvm::Value::getName(), and splitBB().

Referenced by llvm::OpenMPIRBuilder::createSections().

◆ SplitBlock() [1/4]

BasicBlock * llvm::SplitBlock ( 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.

If Before is true, splitBlockBefore handles the block splitting. Otherwise, execution proceeds as described below.

Everything before SplitPt stays in Old and everything starting with SplitPt moves to a new block. The two blocks are joined by an unconditional branch. The new block with name BBName is returned.

FIXME: deprecated, switch to the DomTreeUpdater-based one.

Definition at line 1083 of file BasicBlockUtils.cpp.

References Before, and SplitBlockImpl().

Referenced by addReplicateRegions(), buildClonedLoopBlocks(), changeToInvokeAndSplitBasicBlock(), llvm::EpilogueVectorizerEpilogueLoop::createEpilogueVectorizedLoopSkeleton(), llvm::OpenMPIRBuilder::createParallel(), llvm::InnerLoopVectorizer::createVectorLoopSkeleton(), llvm::OpenMPIRBuilder::emitCancelationCheckImpl(), llvm::InnerLoopVectorizer::emitIterationCountCheck(), llvm::EpilogueVectorizerMainLoop::emitIterationCountCheck(), expandToSwitch(), peelLoop(), llvm::VPBasicBlock::splitAt(), SplitBlock(), SplitBlockAndInsertSimpleForLoop(), splitCallSite(), SplitEdge(), UnrollRuntimeLoopRemainder(), unswitchTrivialBranch(), unswitchTrivialSwitch(), and llvm::LoopVersioning::versionLoop().

◆ SplitBlock() [2/4]

BasicBlock * llvm::SplitBlock ( 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.

If Before is true, splitBlockBefore handles the block splitting. Otherwise, execution proceeds as described below.

Everything before SplitPt stays in Old and everything starting with SplitPt moves to a new block. The two blocks are joined by an unconditional branch. The new block with name BBName is returned.

Definition at line 1090 of file BasicBlockUtils.cpp.

References Before, and SplitBlockImpl().

◆ SplitBlock() [3/4]

BasicBlock * llvm::SplitBlock ( BasicBlock Old,
Instruction SplitPt,
DominatorTree DT,
LoopInfo LI = nullptr,
MemorySSAUpdater MSSAU = nullptr,
const Twine BBName = "",
bool  Before = false 
)
inline

◆ SplitBlock() [4/4]

BasicBlock * llvm::SplitBlock ( BasicBlock Old,
Instruction SplitPt,
DomTreeUpdater DTU = nullptr,
LoopInfo LI = nullptr,
MemorySSAUpdater MSSAU = nullptr,
const Twine BBName = "",
bool  Before = false 
)
inline

◆ SplitBlockAndInsertForEachLane() [1/2]

void llvm::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.

To simplify porting legacy code, this defaults to unrolling the implied loop for non-scalable element counts, but this is not considered to be part of the contract of this routine, and is expected to change in the future. The callback takes as arguments an IRBuilder whose insert point is correctly set for instantiating the given index, and a value which is (at runtime) the index to access. This index may be a constant.

Definition at line 1756 of file BasicBlockUtils.cpp.

References llvm::IRBuilderBase::CreateElementCount(), Idx, llvm::IRBuilderBase::SetInsertPoint(), and SplitBlockAndInsertSimpleForLoop().

◆ SplitBlockAndInsertForEachLane() [2/2]

void llvm::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.

EVL is assumed > 0. To simplify porting legacy code, this defaults to unrolling the implied loop for non-scalable element counts, but this is not considered to be part of the contract of this routine, and is expected to change in the future. The callback takes as arguments an IRBuilder whose insert point is correctly set for instantiating the given index, and a value which is (at runtime) the index to access. This index may be a constant.

Definition at line 1780 of file BasicBlockUtils.cpp.

References llvm::Value::getType(), Idx, llvm::IRBuilderBase::SetInsertPoint(), and SplitBlockAndInsertSimpleForLoop().

◆ SplitBlockAndInsertIfElse() [1/2]

Instruction * llvm::SplitBlockAndInsertIfElse ( 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.

Definition at line 1620 of file BasicBlockUtils.cpp.

References Cond, llvm::BasicBlock::getTerminator(), and SplitBlockAndInsertIfThenElse().

Referenced by SplitBlockAndInsertIfElse().

◆ SplitBlockAndInsertIfElse() [2/2]

Instruction * llvm::SplitBlockAndInsertIfElse ( Value Cond,
Instruction SplitBefore,
bool  Unreachable,
MDNode BranchWeights = nullptr,
DomTreeUpdater DTU = nullptr,
LoopInfo LI = nullptr,
BasicBlock ElseBlock = nullptr 
)
inline

◆ SplitBlockAndInsertIfThen() [1/2]

Instruction * llvm::SplitBlockAndInsertIfThen ( 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.

The two blocks are connected by a conditional branch (with value of Cmp being the condition). Before: Head SplitBefore Tail After: Head if (Cond) ThenBlock SplitBefore Tail

If ThenBlock is not specified, a new block will be created for it. If Unreachable is true, the newly created block will end with UnreachableInst, otherwise it branches to Tail. Returns the NewBasicBlock's terminator.

Updates DTU and LI if given.

Definition at line 1607 of file BasicBlockUtils.cpp.

References Cond, llvm::BasicBlock::getTerminator(), and SplitBlockAndInsertIfThenElse().

Referenced by InsertStackProtectors(), makeGuardControlFlowExplicit(), mergeConditionalStoreToAddress(), optimizeSQRT(), rewriteMemOpOfSelect(), llvm::KCFIPass::run(), scalarizeMaskedCompressStore(), scalarizeMaskedExpandLoad(), scalarizeMaskedGather(), scalarizeMaskedLoad(), scalarizeMaskedScatter(), scalarizeMaskedStore(), SplitBlockAndInsertIfThen(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), turnGuardIntoBranch(), turnSelectIntoBranch(), and versionCallSite().

◆ SplitBlockAndInsertIfThen() [2/2]

Instruction * llvm::SplitBlockAndInsertIfThen ( Value Cond,
Instruction SplitBefore,
bool  Unreachable,
MDNode BranchWeights = nullptr,
DomTreeUpdater DTU = nullptr,
LoopInfo LI = nullptr,
BasicBlock ThenBlock = nullptr 
)
inline

◆ SplitBlockAndInsertIfThenElse() [1/4]

void llvm::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.

The two blocks are connected by a conditional branch (with value of Cmp being the condition). Before: Head SplitBefore Tail After: Head if (Cond) TrueBlock else FalseBlock SplitBefore Tail

If ThenBlock is null, the resulting CFG won't contain the TrueBlock. If ThenBlock is non-null and points to non-null BasicBlock pointer, that block will be inserted as the TrueBlock. Otherwise a new block will be created. Likewise for the ElseBlock parameter. If UnreachableThen or UnreachableElse is true, the corresponding newly created blocks will end with UnreachableInst, otherwise with branches to Tail. The function will not modify existing basic blocks passed to it. The caller must ensure that Tail is reachable from Head. Returns the newly created blocks in ThenBlock and ElseBlock. Updates DTU and LI if given.

Definition at line 1648 of file BasicBlockUtils.cpp.

References llvm::DomTreeUpdater::applyUpdates(), assert(), llvm::CallingConv::C, Cond, llvm::BranchInst::Create(), llvm::BasicBlock::Create(), llvm::SmallVectorImpl< T >::emplace_back(), llvm::BasicBlock::getContext(), llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), llvm::BasicBlock::getParent(), llvm::BasicBlock::getTerminator(), llvm::SmallPtrSetImpl< PtrType >::insert(), ReplaceInstWithInst(), llvm::SmallVectorImpl< T >::reserve(), llvm::Instruction::setDebugLoc(), llvm::Instruction::setMetadata(), llvm::SmallPtrSetImplBase::size(), llvm::BasicBlock::splitBasicBlock(), succ_begin(), succ_end(), and llvm::CallingConv::Tail.

◆ SplitBlockAndInsertIfThenElse() [2/4]

void llvm::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.

Before: Head SplitBefore Tail After: Head if (Cond) ThenBlock else ElseBlock SplitBefore Tail

Updates DT if given.

Definition at line 1633 of file BasicBlockUtils.cpp.

References Cond, llvm::BasicBlock::getTerminator(), and SplitBlockAndInsertIfThenElse().

Referenced by llvm::OpenMPIRBuilder::createCancel(), createMemMoveLoop(), llvm::OpenMPIRBuilder::createTask(), rewriteMemOpOfSelect(), SplitBlockAndInsertIfElse(), SplitBlockAndInsertIfThen(), SplitBlockAndInsertIfThenElse(), and versionCallSite().

◆ SplitBlockAndInsertIfThenElse() [3/4]

void llvm::SplitBlockAndInsertIfThenElse ( Value Cond,
Instruction SplitBefore,
BasicBlock **  ThenBlock,
BasicBlock **  ElseBlock,
bool  UnreachableThen = false,
bool  UnreachableElse = false,
MDNode BranchWeights = nullptr,
DomTreeUpdater DTU = nullptr,
LoopInfo LI = nullptr 
)
inline

◆ SplitBlockAndInsertIfThenElse() [4/4]

void llvm::SplitBlockAndInsertIfThenElse ( Value Cond,
Instruction SplitBefore,
Instruction **  ThenTerm,
Instruction **  ElseTerm,
MDNode BranchWeights = nullptr,
DomTreeUpdater DTU = nullptr,
LoopInfo LI = nullptr 
)
inline

◆ SplitBlockAndInsertSimpleForLoop()

std::pair< Instruction *, Value * > llvm::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.

Returns the first insert point in the loop body, and the PHINode for the induction variable (i.e. "i" above).

Definition at line 1730 of file BasicBlockUtils.cpp.

References llvm::IRBuilderBase::CreateAdd(), llvm::IRBuilderBase::CreateCondBr(), llvm::IRBuilderBase::CreateICmpEQ(), llvm::IRBuilderBase::CreatePHI(), DL, End, llvm::Instruction::eraseFromParent(), llvm::Module::getDataLayout(), llvm::BasicBlock::getFirstNonPHI(), llvm::Instruction::getModule(), llvm::Instruction::getParent(), llvm::BasicBlock::getTerminator(), IV, and SplitBlock().

Referenced by SplitBlockAndInsertForEachLane().

◆ splitBlockBefore() [1/2]

BasicBlock * llvm::splitBlockBefore ( BasicBlock Old,
BasicBlock::iterator  SplitPt,
DomTreeUpdater DTU,
LoopInfo LI,
MemorySSAUpdater MSSAU,
const Twine BBName = "" 
)

Split the specified block at the specified instruction SplitPt.

All instructions before SplitPt are moved to a new block and all instructions after SplitPt stay in the old block. The new block and the old block are joined by inserting an unconditional branch to the end of the new block. The new block with name BBName is returned.

Definition at line 1098 of file BasicBlockUtils.cpp.

References llvm::MemorySSAUpdater::applyUpdates(), llvm::DomTreeUpdater::applyUpdates(), llvm::DomTreeUpdater::getDomTree(), llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), llvm::MemorySSAUpdater::getMemorySSA(), llvm::Value::getName(), llvm::SmallPtrSetImpl< PtrType >::insert(), Name, pred_size(), predecessors(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorImpl< T >::reserve(), llvm::SmallVectorBase< Size_T >::size(), llvm::BasicBlock::splitBasicBlock(), llvm::Twine::str(), llvm::MemorySSA::verifyMemorySSA(), and VerifyMemorySSA.

Referenced by splitBlockBefore(), and SplitBlockImpl().

◆ splitBlockBefore() [2/2]

BasicBlock * llvm::splitBlockBefore ( BasicBlock Old,
Instruction SplitPt,
DomTreeUpdater DTU,
LoopInfo LI,
MemorySSAUpdater MSSAU,
const Twine BBName = "" 
)
inline

◆ SplitBlockPredecessors() [1/2]

BasicBlock * llvm::SplitBlockPredecessors ( 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.

The new predecessors are indicated by the Preds array. The new block is given a suffix of 'Suffix'. Returns new basic block to which predecessors from Preds are now pointing.

If BB is a landingpad block then additional basicblock might be introduced. It will have Suffix+".split_lp". See SplitLandingPadPredecessors for more details on this case.

This currently updates the LLVM IR, DominatorTree, LoopInfo, and LCCSA but no other analyses. In particular, it does not preserve LoopSimplify (because it's complicated to handle the case where one of the edges being split is an exit of a loop with other exits).

FIXME: deprecated, switch to the DomTreeUpdater-based one.

Definition at line 1417 of file BasicBlockUtils.cpp.

References SplitBlockPredecessorsImpl().

Referenced by ConnectEpilog(), ConnectProlog(), ehAwareSplitEdge(), FoldCondBranchOnValueKnownInPredecessorImpl(), formDedicatedExitBlocks(), InsertPreheaderForLoop(), mergeConditionalStoreToAddress(), normalizeForInvokeSafepoint(), separateNestedLoop(), SinkCommonCodeFromPredecessors(), SplitKnownCriticalEdge(), splitPredecessorsOfLoopExit(), and UnrollRuntimeLoopRemainder().

◆ SplitBlockPredecessors() [2/2]

BasicBlock * llvm::SplitBlockPredecessors ( 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.

The new predecessors are indicated by the Preds array. The new block is given a suffix of 'Suffix'. Returns new basic block to which predecessors from Preds are now pointing.

If BB is a landingpad block then additional basicblock might be introduced. It will have Suffix+".split_lp". See SplitLandingPadPredecessors for more details on this case.

This currently updates the LLVM IR, DominatorTree, LoopInfo, and LCCSA but no other analyses. In particular, it does not preserve LoopSimplify (because it's complicated to handle the case where one of the edges being split is an exit of a loop with other exits).

Definition at line 1425 of file BasicBlockUtils.cpp.

References SplitBlockPredecessorsImpl().

◆ splitCodeGen()

void llvm::splitCodeGen ( Module M,
ArrayRef< raw_pwrite_stream * >  OSs,
ArrayRef< llvm::raw_pwrite_stream * >  BCOSs,
const std::function< std::unique_ptr< TargetMachine >()> &  TMFactory,
CodeGenFileType  FileType = CodeGenFileType::ObjectFile,
bool  PreserveLocals = false 
)

Split M into OSs.size() partitions, and generate code for each.

Takes a factory function for the TargetMachine TMFactory. Writes OSs.size() output files to the output streams in OSs. The resulting output files if linked together are intended to be equivalent to the single output file that would have been code generated from M.

Writes bitcode for individual partitions into output streams in BCOSs, if BCOSs is not empty.

Definition at line 38 of file ParallelCG.cpp.

References assert(), llvm::ThreadPoolInterface::async(), codegen(), llvm::ArrayRef< T >::empty(), hardware_concurrency(), llvm::ArrayRef< T >::size(), SplitModule(), and WriteBitcodeToFile().

Referenced by llvm::lto::backend().

◆ SplitCriticalEdge() [1/2]

BasicBlock * llvm::SplitCriticalEdge ( BasicBlock Src,
BasicBlock Dst,
const CriticalEdgeSplittingOptions Options = CriticalEdgeSplittingOptions() 
)
inline

If an edge from Src to Dst is critical, split the edge and return true, otherwise return false.

This method requires that there be an edge between the two blocks. It updates the analyses passed in the options struct

Definition at line 230 of file BasicBlockUtils.h.

References assert(), llvm::Instruction::getNumSuccessors(), llvm::Instruction::getSuccessor(), Options, and SplitCriticalEdge().

◆ SplitCriticalEdge() [2/2]

BasicBlock * llvm::SplitCriticalEdge ( 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.

This will update the analyses passed in through the option struct. This returns the new block if the edge was split, null otherwise.

If MergeIdenticalEdges in the options struct is true (not the default), all edges from TI to the specified successor will be merged into the same critical edge block. This is most commonly interesting with switch instructions, which may have many edges to any one destination. This ensures that all edges to that dest go to one block instead of each going to a different block, but isn't the standard definition of a "critical edge".

It is invalid to call this function on a critical edge that starts at an IndirectBrInst. Splitting these edges will almost always create an invalid program because the address of the new block won't be the one that is jumped to.

Definition at line 101 of file BreakCriticalEdges.cpp.

References isCriticalEdge(), Options, and SplitKnownCriticalEdge().

Referenced by DemoteRegToStack(), getInstrBB(), llvm::objcarc::BundledRetainClaimRVs::insertAfterInvokes(), SplitAllCriticalEdges(), and SplitCriticalEdge().

◆ SplitEdge()

BasicBlock * llvm::SplitEdge ( BasicBlock From,
BasicBlock To,
DominatorTree DT = nullptr,
LoopInfo LI = nullptr,
MemorySSAUpdater MSSAU = nullptr,
const Twine BBName = "" 
)

◆ SplitIndirectBrCriticalEdges()

bool llvm::SplitIndirectBrCriticalEdges ( Function F,
bool  IgnoreBlocksWithoutPHI,
BranchProbabilityInfo BPI = nullptr,
BlockFrequencyInfo BFI = nullptr 
)

◆ SplitKnownCriticalEdge()

BasicBlock * llvm::SplitKnownCriticalEdge ( Instruction TI,
unsigned  SuccNum,
const CriticalEdgeSplittingOptions Options = CriticalEdgeSplittingOptions(),
const Twine BBName = "" 
)

◆ SplitLandingPadPredecessors()

void llvm::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.

One of those new basic blocks gets the predecessors listed in Preds. The other basic block gets the remaining predecessors of OrigBB. The landingpad instruction OrigBB is clone into both of the new basic blocks. The new blocks are given the suffixes 'Suffix1' and 'Suffix2', and are returned in the NewBBs vector.

This currently updates the LLVM IR, DominatorTree, LoopInfo, and LCCSA but no other analyses. In particular, it does not preserve LoopSimplify (because it's complicated to handle the case where one of the edges being split is an exit of a loop with other exits).

Definition at line 1537 of file BasicBlockUtils.cpp.

References SplitLandingPadPredecessorsImpl().

◆ splitLoopBound()

static bool llvm::splitLoopBound ( Loop L,
DominatorTree DT,
LoopInfo LI,
ScalarEvolution SE,
LPMUpdater U 
)
static

◆ SplitModule()

void llvm::SplitModule ( Module M,
unsigned  N,
function_ref< void(std::unique_ptr< Module > MPart)>  ModuleCallback,
bool  PreserveLocals = false 
)

Splits the module M into N linkable partitions.

The function ModuleCallback is called N times passing each individual partition as the MPart argument.

FIXME: This function does not deal with the somewhat subtle symbol visibility issues around module splitting, including (but not limited to):

  • Internal symbols should not collide with symbols defined outside the module.
  • Internal symbols defined in module-level inline asm should be visible to each partition.

Definition at line 251 of file SplitModule.cpp.

References CloneModule(), externalize(), F, findPartitions(), I, isInPartition(), and N.

Referenced by splitCodeGen(), and splitCodeGen().

◆ splitVectorType()

MVT llvm::splitVectorType ( MVT  VT)

◆ stable_hash_combine() [1/3]

stable_hash llvm::stable_hash_combine ( stable_hash  A,
stable_hash  B 
)
inline

◆ stable_hash_combine() [2/3]

stable_hash llvm::stable_hash_combine ( stable_hash  A,
stable_hash  B,
stable_hash  C 
)
inline

◆ stable_hash_combine() [3/3]

stable_hash llvm::stable_hash_combine ( stable_hash  A,
stable_hash  B,
stable_hash  C,
stable_hash  D 
)
inline

◆ stable_hash_combine_array()

stable_hash llvm::stable_hash_combine_array ( const stable_hash P,
size_t  C 
)
inline

◆ stable_hash_combine_range()

template<typename InputIteratorT >
stable_hash llvm::stable_hash_combine_range ( InputIteratorT  First,
InputIteratorT  Last 
)

Compute a stable_hash for a sequence of values.

This hashes a sequence of values. It produces the same stable_hash as 'stable_hash_combine(a, b, c, ...)', but can run over arbitrary sized sequences and is significantly faster given pointers and types which can be hashed as a sequence of bytes.

Definition at line 84 of file StableHashing.h.

References First, llvm::hashing::detail::FNV_OFFSET_64, I, Last, and llvm::hashing::detail::stable_hash_append().

Referenced by stable_hash_combine_string(), and stableHashValue().

◆ stable_hash_combine_string() [1/2]

stable_hash llvm::stable_hash_combine_string ( const char C)
inline

◆ stable_hash_combine_string() [2/2]

stable_hash llvm::stable_hash_combine_string ( const StringRef S)
inline

◆ stable_sort() [1/2]

template<typename R >
void llvm::stable_sort ( R &&  Range)

Definition at line 1995 of file STLExtras.h.

References adl_begin(), and adl_end().

Referenced by clusterSortPtrAccesses(), collectMultiplyFactors(), ComputeASanStackFrameLayout(), llvm::safestack::StackLayout::computeLayout(), llvm::symbolize::SymbolizableObjectFile::create(), llvm::ScheduleDAGMI::dumpScheduleTraceBottomUp(), llvm::ScheduleDAGMI::dumpScheduleTraceTopDown(), eliminateConstraints(), llvm::MCDwarfFrameEmitter::Emit(), llvm::ScheduleDAGSDNodes::EmitSchedule(), llvm::AccelTableBase::finalize(), findExtractedOutputToOverallOutputMapping(), llvm::MDAttachments::getAll(), getCodeExtractorArguments(), llvm::slpvectorizer::BoUpSLP::getReorderingData(), getSortedConstantKeys(), GroupByComplexity(), layoutSections(), layoutSectionsForOnlyKeepDebug(), llvm::xray::loadTrace(), optimizeGlobalCtorsList(), llvm::AArch64FrameLowering::orderFrameObjects(), llvm::HexagonFrameLowering::orderFrameObjects(), llvm::X86FrameLowering::orderFrameObjects(), orderSegments(), llvm::AsmPrinter::preprocessXXStructorList(), llvm::BitcodeAnalyzer::printStats(), rebuildLoopAfterUnswitch(), llvm::SCEVExpander::replaceCongruentIVs(), llvm::BalancedPartitioning::run(), llvm::sampleprof::SampleSorter< LocationT, SampleT >::SampleSorter(), llvm::SwingSchedulerDAG::schedule(), sinkLoopInvariantInstructions(), llvm::sampleprof::sortFuncProfiles(), llvm::object::ELFFile< ELFT >::toMappedAddr(), llvm::HexagonShuffler::tryAuction(), llvm::InstCombinerImpl::tryToSinkInstructionDbgVariableRecords(), tryToVectorizeSequence(), llvm::HexagonShuffler::ValidResourceUsage(), llvm::objcopy::elf::BinaryWriter::write(), llvm::mcdxbc::Signature::write(), and llvm::coverage::CoverageMappingWriter::write().

◆ stable_sort() [2/2]

template<typename R , typename Compare >
void llvm::stable_sort ( R &&  Range,
Compare  C 
)

Definition at line 2000 of file STLExtras.h.

References adl_begin(), adl_end(), and llvm::CallingConv::C.

◆ stableHashValue() [1/4]

stable_hash llvm::stableHashValue ( const MachineBasicBlock MBB)

◆ stableHashValue() [2/4]

stable_hash llvm::stableHashValue ( const MachineFunction MF)

◆ stableHashValue() [3/4]

stable_hash llvm::stableHashValue ( const MachineInstr MI,
bool  HashVRegs = false,
bool  HashConstantPoolIndices = false,
bool  HashMemOperands = false 
)

A stable hash value for machine instructions.

Returns 0 if no stable hash could be computed. The hashing and equality testing functions ignore definitions so this is useful for CSE, etc.

Definition at line 176 of file MachineStableHash.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorTemplateCommon< T, typename >::end(), MI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorImpl< T >::reserve(), stable_hash_combine(), stable_hash_combine_range(), and stableHashValue().

◆ stableHashValue() [4/4]

stable_hash llvm::stableHashValue ( const MachineOperand MO)

Definition at line 60 of file MachineStableHash.cpp.

References assert(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::APFloat::bitcastToAPInt(), llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::MachineOperand::getCFIIndex(), llvm::MachineOperand::getCImm(), llvm::MachineOperand::getFPImm(), llvm::MachineOperand::getImm(), llvm::MachineOperand::getIndex(), llvm::MachineOperand::getInstrRefInstrIndex(), llvm::MachineOperand::getInstrRefOpIndex(), llvm::MachineOperand::getIntrinsicID(), llvm::MachineOperand::getMCSymbol(), llvm::MachineInstr::getMF(), llvm::MCSymbol::getName(), llvm::MachineOperand::getOffset(), llvm::MachineOperand::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getPredicate(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineOperand::getRegMask(), llvm::MachineOperand::getRegMaskSize(), llvm::MachineOperand::getShuffleMask(), llvm::MachineOperand::getSubReg(), llvm::MachineOperand::getSymbolName(), llvm::MachineOperand::getTargetFlags(), llvm::MachineOperand::getTargetIndexName(), llvm::MachineOperand::getType(), llvm::ConstantInt::getValue(), llvm::ConstantFP::getValueAPF(), hash_combine(), hash_combine_range(), llvm::MachineOperand::isCImm(), llvm::MachineOperand::isDef(), llvm::Register::isVirtual(), llvm_unreachable, MBB, MI, llvm::MachineOperand::MO_BlockAddress, llvm::MachineOperand::MO_CFIIndex, llvm::MachineOperand::MO_CImmediate, llvm::MachineOperand::MO_ConstantPoolIndex, llvm::MachineOperand::MO_DbgInstrRef, llvm::MachineOperand::MO_ExternalSymbol, llvm::MachineOperand::MO_FPImmediate, llvm::MachineOperand::MO_FrameIndex, llvm::MachineOperand::MO_GlobalAddress, llvm::MachineOperand::MO_Immediate, llvm::MachineOperand::MO_IntrinsicID, llvm::MachineOperand::MO_JumpTableIndex, llvm::MachineOperand::MO_MachineBasicBlock, llvm::MachineOperand::MO_MCSymbol, llvm::MachineOperand::MO_Metadata, llvm::MachineOperand::MO_Predicate, llvm::MachineOperand::MO_Register, llvm::MachineOperand::MO_RegisterLiveOut, llvm::MachineOperand::MO_RegisterMask, llvm::MachineOperand::MO_ShuffleMask, llvm::MachineOperand::MO_TargetIndex, MRI, Name, llvm::SmallVectorTemplateBase< T, bool >::push_back(), stable_hash_combine(), stable_hash_combine_array(), stable_hash_combine_string(), transform(), and TRI.

Referenced by stableHashValue().

◆ StaticLikelyProb()

cl::opt< unsigned > llvm::StaticLikelyProb ( "static-likely-prob"  ,
cl::desc("branch probability threshold in percentage" "to be considered very likely")  ,
cl::init(80)  ,
cl::Hidden   
)

◆ STATISTIC() [1/8]

llvm::STATISTIC ( NumAllocas  ,
"Total number of allocas"   
)

◆ STATISTIC() [2/8]

llvm::STATISTIC ( NumFunctions  ,
"Total number of functions"   
)

◆ STATISTIC() [3/8]

llvm::STATISTIC ( NumUnsafeByValArguments  ,
"Number of unsafe byval arguments"   
)

◆ STATISTIC() [4/8]

llvm::STATISTIC ( NumUnsafeDynamicAllocas  ,
"Number of unsafe dynamic allocas"   
)

◆ STATISTIC() [5/8]

llvm::STATISTIC ( NumUnsafeStackFunctions  ,
"Number of functions with unsafe stack"   
)

◆ STATISTIC() [6/8]

llvm::STATISTIC ( NumUnsafeStackRestorePoints  ,
"Number of setjmps and landingpads"   
)

◆ STATISTIC() [7/8]

llvm::STATISTIC ( NumUnsafeStackRestorePointsFunctions  ,
"Number of functions that use setjmp or exceptions"   
)

◆ STATISTIC() [8/8]

llvm::STATISTIC ( NumUnsafeStaticAllocas  ,
"Number of unsafe static allocas"   
)

◆ storageClassToAddressSpace()

unsigned llvm::storageClassToAddressSpace ( SPIRV::StorageClass::StorageClass  SC)

◆ StoreIntToMemory()

void llvm::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.

Definition at line 3020 of file APInt.cpp.

References assert(), and llvm::sys::IsLittleEndianHost.

Referenced by llvm::MCStreamer::emitIntValue(), and llvm::ExecutionEngine::StoreValueToMemory().

◆ storeToSameAddress()

static bool llvm::storeToSameAddress ( ScalarEvolution SE,
StoreInst A,
StoreInst B 
)
static

Returns true if A and B have same pointer operands or same SCEVs addresses.

Definition at line 434 of file LoopVectorizationLegality.cpp.

References A, B, and llvm::ScalarEvolution::getSCEV().

◆ streamFile()

bool llvm::streamFile ( HTTPServerRequest Request,
StringRef  FilePath 
)

◆ stringToVEFCondCode()

static VECC::CondCode llvm::stringToVEFCondCode ( StringRef  S)
inlinestatic

◆ stringToVEICondCode()

static VECC::CondCode llvm::stringToVEICondCode ( StringRef  S)
inlinestatic

◆ stringToVERD()

static VERD::RoundingMode llvm::stringToVERD ( StringRef  S)
inlinestatic

◆ stripDebugifyMetadata()

bool llvm::stripDebugifyMetadata ( Module M)

Strip out all of the metadata and debug info inserted by debugify.

If no llvm.debugify module-level named metadata is present, this is a no-op. Returns true if any change was made.

Definition at line 245 of file Debugify.cpp.

References llvm::NamedMDNode::addOperand(), assert(), llvm::NamedMDNode::clearOperands(), llvm::Function::eraseFromParent(), llvm::NamedMDNode::eraseFromParent(), llvm::NamedMDNode::getNumOperands(), llvm::GlobalValue::isDeclaration(), llvm::NamedMDNode::operands(), StripDebugInfo(), and llvm::Value::use_empty().

◆ stripDebugInfo()

bool llvm::stripDebugInfo ( Function F)

◆ StripDebugInfo()

bool llvm::StripDebugInfo ( Module M)

Strip debug info in the module if it exists.

To do this, we remove all calls to the debugger intrinsics and any named metadata for debugging. We also remove debug locations for instructions. Return true if module is modified.

Definition at line 594 of file DebugInfo.cpp.

References F, make_early_inc_range(), and stripDebugInfo().

Referenced by LLVMStripModuleDebugInfo(), llvm::StripSymbolsPass::run(), stripDebugifyMetadata(), and UpgradeDebugInfo().

◆ stripDirPrefix()

static StringRef llvm::stripDirPrefix ( StringRef  PathNameStr,
uint32_t  NumPrefix 
)
static

Definition at line 282 of file InstrProf.cpp.

References llvm::sys::path::is_separator(), and llvm::StringRef::substr().

Referenced by getStrippedSourceFileName().

◆ stripNonLineTableDebugInfo()

bool llvm::stripNonLineTableDebugInfo ( Module M)

Downgrade the debug info in a module to contain only line table information.

In order to convert debug info to what -gline-tables-only would have created, this does the following: 1) Delete all debug intrinsics. 2) Delete all non-CU named metadata debug info nodes. 3) Create new DebugLocs for each instruction. 4) Create a new CU debug info, and similarly for every metadata node that's reachable from the CU debug info. All debug type metadata nodes are unreachable and garbage collected.

Definition at line 829 of file DebugInfo.cpp.

References DL, F, get(), llvm::MDNode::get(), llvm::NamedMDNode::getName(), I, Name, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and updateLoopMetadataDebugLocations().

Referenced by llvm::StripNonLineTableDebugInfoPass::run().

◆ StripTemplateParameters()

std::optional< StringRef > llvm::StripTemplateParameters ( StringRef  Name)

If Name is the name of a templated function that includes template parameters, returns a substring of Name containing no template parameters.

E.g.: StripTemplateParameters("foo<int>") = "foo".

Definition at line 1084 of file DWARFAcceleratorTable.cpp.

References Name.

Referenced by getNames(), and llvm::dwarf_linker::parallel::AcceleratorRecordsSaver::save().

◆ StructuralHash() [1/2]

IRHash llvm::StructuralHash ( const Function F,
bool  DetailedHash = false 
)

Returns a hash of the function F.

Parameters
FThe function to hash.
DetailedHashWhether or not to encode additional information in the hash. The additional information added into the hash when this flag is set to true includes instruction and operand type information.

Definition at line 156 of file StructuralHash.cpp.

References F, and H.

Referenced by llvm::PreservedCFGCheckerInstrumentation::registerCallbacks(), PreservedFunctionHashAnalysis::run(), PreservedModuleHashAnalysis::run(), and llvm::StructuralHashPrinterPass::run().

◆ StructuralHash() [2/2]

IRHash llvm::StructuralHash ( const Module M,
bool  DetailedHash = false 
)

Returns a hash of the module M by hashing all functions and global variables contained within.

Parameters
MThe module to hash.
DetailedHashWhether or not to encode additional information in the function hashes that composed the module hash.

Definition at line 162 of file StructuralHash.cpp.

References H.

◆ SubOverflow()

template<typename T >
std::enable_if_t< std::is_signed_v< T >, T > llvm::SubOverflow ( T  X,
T  Y,
T Result 
)

Subtract two signed integers, computing the two's complement truncated result, returning true if an overflow ocurred.

Definition at line 597 of file MathExtras.h.

References X, and Y.

Referenced by llvm::detail::CheckedInt::operator-(), llvm::InstructionCost::operator-=(), and llvm::ConstraintSystem::toStrictLessThan().

◆ succ_begin() [1/5]

succ_iterator llvm::succ_begin ( BasicBlock BB)
inline

Definition at line 268 of file CFG.h.

References llvm::BasicBlock::getTerminator().

◆ succ_begin() [2/5]

const_succ_iterator llvm::succ_begin ( const BasicBlock BB)
inline

Definition at line 271 of file CFG.h.

References llvm::BasicBlock::getTerminator().

◆ succ_begin() [3/5]

const_succ_iterator llvm::succ_begin ( const Instruction I)
inline

Definition at line 248 of file CFG.h.

References I.

◆ succ_begin() [4/5]

succ_iterator llvm::succ_begin ( Instruction I)
inline

Definition at line 247 of file CFG.h.

References I.

◆ succ_begin() [5/5]

template<class NodeRef , class BlockT , class RegionT >
RNSuccIterator< NodeRef, BlockT, RegionT > llvm::succ_begin ( NodeRef  Node)
inline

◆ succ_empty() [1/2]

bool llvm::succ_empty ( const BasicBlock BB)
inline

Definition at line 280 of file CFG.h.

References succ_begin(), and succ_end().

◆ succ_empty() [2/2]

bool llvm::succ_empty ( const Instruction I)
inline

◆ succ_end() [1/5]

succ_iterator llvm::succ_end ( BasicBlock BB)
inline

Definition at line 274 of file CFG.h.

References llvm::BasicBlock::getTerminator().

◆ succ_end() [2/5]

const_succ_iterator llvm::succ_end ( const BasicBlock BB)
inline

Definition at line 277 of file CFG.h.

References llvm::BasicBlock::getTerminator().

◆ succ_end() [3/5]

const_succ_iterator llvm::succ_end ( const Instruction I)
inline

Definition at line 252 of file CFG.h.

References I.

◆ succ_end() [4/5]

succ_iterator llvm::succ_end ( Instruction I)
inline

Definition at line 251 of file CFG.h.

References I.

◆ succ_end() [5/5]

template<class NodeRef , class BlockT , class RegionT >
RNSuccIterator< NodeRef, BlockT, RegionT > llvm::succ_end ( NodeRef  Node)
inline

◆ succ_size() [1/3]

unsigned llvm::succ_size ( const BasicBlock BB)
inline

Definition at line 283 of file CFG.h.

References succ_begin(), and succ_end().

◆ succ_size() [2/3]

unsigned llvm::succ_size ( const Instruction I)
inline

Definition at line 258 of file CFG.h.

References I, succ_begin(), and succ_end().

◆ succ_size() [3/3]

unsigned llvm::succ_size ( const MachineBasicBlock BB)
inline

◆ successors() [1/5]

succ_range llvm::successors ( BasicBlock BB)
inline

Definition at line 286 of file CFG.h.

References succ_begin(), and succ_end().

◆ successors() [2/5]

const_succ_range llvm::successors ( const BasicBlock BB)
inline

Definition at line 289 of file CFG.h.

References succ_begin(), and succ_end().

◆ successors() [3/5]

const_succ_range llvm::successors ( const Instruction I)
inline

Definition at line 264 of file CFG.h.

References I, succ_begin(), and succ_end().

◆ successors() [4/5]

auto llvm::successors ( const MachineBasicBlock BB)
inline

Definition at line 1302 of file MachineBasicBlock.h.

References llvm::MachineBasicBlock::successors().

Referenced by llvm::LoopSafetyInfo::allLoopPathsLeadToBlock(), analyzeLoopUnrollCost(), llvm::CanonicalLoopInfo::assertOK(), buildClonedLoopBlocks(), calculateCXXStateForAsynchEH(), calculateSEHStateForAsynchEH(), CalculateUnswitchCostMultiplier(), canProveExitOnFirstIteration(), canReturn(), llvm::PreservedCFGCheckerInstrumentation::CFG::CFG(), llvm::MemorySSAUpdater::changeToUnreachable(), changeToUnreachable(), CloneAndPruneIntoFromInst(), llvm::OpenMPIRBuilder::OutlineInfo::collectBlocks(), collectInstructionsInBetween(), colorEHFunclets(), computeEHOnlyBlocks(), llvm::DivergencePropagator< ContextT >::computeJoinPoints(), computeLiveInValues(), computeLiveOutSeed(), computeUnlikelySuccessors(), ConnectEpilog(), ConnectProlog(), ConstantFoldTerminator(), createUnreachableSwitchDefault(), llvm::DCData::DCData(), deleteDeadBlocksFromLoop(), deleteDeadClonedBlocks(), DemoteRegToStack(), detachDeadBlocks(), DuplicateInstructionsInSplitBetween(), llvm::CodeExtractor::extractCodeRegion(), findBestNonTrivialUnswitchCandidate(), findDependencies(), findExtractedOutputToOverallOutputMapping(), llvm::MustBeExecutedContextExplorer::findForwardJoinPoint(), findMostPopularDest(), llvm::FunctionPropertiesUpdater::finish(), FoldBranchToCommonDest(), FoldTwoEntryPHINode(), formDedicatedExitBlocks(), getCommonExitBlock(), llvm::BranchProbabilityInfo::getEdgeProbability(), llvm::GenericCycle< ContextT >::getExitBlocks(), llvm::MachineLoop::getLoopID(), getOutliningPenalty(), llvm::BranchProbabilityInfo::SccInfo::getSccExitBlocks(), llvm::afdo_detail::IRTraits< BasicBlock >::getSuccessors(), getSuccState(), llvm::InstCombinerImpl::handlePotentiallyDeadSuccessors(), llvm::InstCombinerImpl::handleUnreachableFrom(), hasPartialIVCondition(), initBranchWeights(), isFullDominator(), isNotInCycle(), isSafeToHoistInvoke(), llvm::BasicBlockEdge::isSingleEdge(), isSuspendReachableFrom(), markAliveBlocks(), markTails(), llvm::JumpThreadingPass::maybethreadThroughTwoBasicBlocks(), MergeBlockIntoPredecessor(), MergeCompatibleInvokesImpl(), llvm::MemorySSAUpdater::moveAllAfterMergeBlocks(), llvm::MemorySSAUpdater::moveAllAfterSpliceBlocks(), optimizeDivRem(), partitionLoopBlocks(), llvm::InstCombinerImpl::prepareWorklist(), llvm::BranchProbabilityInfo::print(), processSwitch(), llvm::JumpThreadingPass::processThreadableEdges(), llvm::MemorySSAUpdater::removeBlocks(), llvm::SCCPSolver::removeNonFeasibleEdges(), llvm::BasicBlock::replaceSuccessorsPhiUsesWith(), rewriteMemOpOfSelect(), runMoveAutoInit(), SafeToMergeTerminators(), scanOneBB(), simplifyOneLoop(), llvm::VPBasicBlock::splitAt(), SplitBlockImpl(), SplitIndirectBrCriticalEdges(), SplitKnownCriticalEdge(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), unifyLoopExits(), UnrollLoop(), UnrollRuntimeLoopRemainder(), updateSuccessor(), llvm::GenericConvergenceVerifier< ContextT >::verify(), and willLeaveFunctionImmediatelyAfter().

◆ successors() [5/5]

succ_range llvm::successors ( Instruction I)
inline

Definition at line 261 of file CFG.h.

References I, succ_begin(), and succ_end().

◆ SupportsHotColdNew()

cl::opt< bool > llvm::SupportsHotColdNew ( "supports-hot-cold-new"  ,
cl::init(false)  ,
cl::Hidden  ,
cl::desc("Linking with hot/cold operator new interfaces")   
)

◆ supportsPackedMode()

bool llvm::supportsPackedMode ( unsigned  Opcode,
EVT  IdiomVT 
)

◆ swapToHostOrder()

template<class T >
static T llvm::swapToHostOrder ( const unsigned char *&  D,
llvm::endianness  Orig 
)
static

Definition at line 1134 of file InstrProf.cpp.

References D, and little.

◆ SwpEnableCopyToPhi()

cl::opt< bool > llvm::SwpEnableCopyToPhi ( "pipeliner-enable-copytophi"  ,
cl::ReallyHidden  ,
cl::init(true ,
cl::desc("Enable CopyToPhi DAG Mutation")   
)

◆ SwpForceIssueWidth()

cl::opt< int > llvm::SwpForceIssueWidth ( "pipeliner-force-issue-width"  ,
cl::desc("Force pipeliner to use specified issue width.")  ,
cl::Hidden  ,
cl::init(-1)   
)

A command line argument to force pipeliner to use specified issue width.

◆ t1CondCodeOp()

static MachineOperand llvm::t1CondCodeOp ( bool  isDead = false)
inlinestatic

Get the operand corresponding to the conditional code result for Thumb1.

This operand will always refer to CPSR and it will have the Define flag set. You can optionally set the Dead flag by means of isDead.

Definition at line 577 of file ARMBaseInstrInfo.h.

References llvm::MachineOperand::CreateReg().

Referenced by emitPostLd(), emitPostSt(), emitThumbRegPlusImmediate(), emitThumbRegPlusImmInReg(), and insertSEH().

◆ TableGenMain()

int llvm::TableGenMain ( const char argv0,
std::function< TableGenMainFn MainFn = nullptr 
)

◆ TableGenParseFile()

bool llvm::TableGenParseFile ( SourceMgr InputSrcMgr,
RecordKeeper Records 
)

Parse the TableGen file defined within the main buffer of the given SourceMgr.

On success, populates the provided RecordKeeper with the parsed records and returns false. On failure, returns true.

NOTE: TableGen currently relies on global state within a given parser invocation, so this function is not thread-safe.

Definition at line 16 of file Parser.cpp.

References llvm::SourceMgr::getDiagContext(), llvm::SourceMgr::getDiagHandler(), llvm::SourceMgr::getIncludeDirs(), llvm::SourceMgr::getMainFileID(), llvm::SourceMgr::getMemoryBuffer(), llvm::TGParser::ParseFile(), llvm::SourceMgr::setDiagHandler(), llvm::SourceMgr::setIncludeDirs(), SrcMgr, and llvm::SourceMgr::takeSourceBuffersFrom().

◆ tensorValueToString()

std::string llvm::tensorValueToString ( const char Buffer,
const TensorSpec Spec 
)

For debugging.

Definition at line 107 of file TensorSpec.cpp.

References _IMR_DBG_PRINTER, Invalid, llvm_unreachable, SUPPORTED_TENSOR_TYPES, and Total.

◆ thinLTOFinalizeInModule()

void llvm::thinLTOFinalizeInModule ( Module TheModule,
const GVSummaryMapTy DefinedGlobals,
bool  PropagateAttrs 
)

Based on the information recorded in the summaries during global summary-based analysis:

  1. Resolve prevailing symbol linkages and constrain visibility (CanAutoHide and consider visibility from other definitions for ELF) in TheModule
  2. (optional) Apply propagated function attributes to TheModule if PropagateAttrs is true

Definition at line 1405 of file FunctionImport.cpp.

References llvm::Module::aliases(), assert(), llvm::GlobalValue::AvailableExternallyLinkage, llvm::CallingConv::C, llvm::GlobalValue::canBeOmittedFromSymbolTable(), convertToDeclaration(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::count(), dbgs(), llvm::GlobalValue::DefaultVisibility, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::empty(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), F, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::GlobalValue::getAliaseeObject(), llvm::GlobalValue::getGUID(), llvm::GlobalValue::getLinkage(), llvm::Value::getName(), llvm::Module::global_objects(), llvm::Module::globals(), llvm::GlobalValue::hasAvailableExternallyLinkage(), llvm::GlobalValue::HiddenVisibility, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), llvm::GlobalValue::isAvailableExternallyLinkage(), llvm::GlobalValue::isDeclaration(), llvm::GlobalValue::isInterposableLinkage(), llvm::GlobalValue::isLocalLinkage(), LLVM_DEBUG, llvm_unreachable, PropagateAttrs, llvm::GlobalValue::setLinkage(), llvm::GlobalValue::setVisibility(), and llvm::GlobalValue::WeakODRLinkage.

Referenced by llvm::ThinLTOCodeGenerator::internalize(), llvm::ThinLTOCodeGenerator::promote(), and llvm::lto::thinBackend().

◆ thinLTOInternalizeAndPromoteInIndex()

void llvm::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.

The ThinLTO backends must apply the changes to the Module via thinLTOInternalizeModule.

Definition at line 527 of file LTO.cpp.

References I, and thinLTOInternalizeAndPromoteGUID().

Referenced by llvm::ThinLTOCodeGenerator::internalize(), llvm::ThinLTOCodeGenerator::promote(), and llvm::ThinLTOCodeGenerator::run().

◆ thinLTOInternalizeModule()

void llvm::thinLTOInternalizeModule ( Module TheModule,
const GVSummaryMapTy DefinedGlobals 
)

◆ thinLTOPropagateFunctionAttrs()

bool llvm::thinLTOPropagateFunctionAttrs ( ModuleSummaryIndex Index,
function_ref< bool(GlobalValue::GUID, const GlobalValueSummary *)>  isPrevailing 
)

◆ thinLTOResolvePrevailingInIndex()

void llvm::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.

Linkage changes recorded in the index and the ThinLTO backends must apply the changes to the module via thinLTOFinalizeInModule.

This is done for correctness (if value exported, ensure we always emit a copy), and compile-time optimization (allow drop of duplicates).

Definition at line 426 of file LTO.cpp.

References llvm::CallingConv::C, I, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), and thinLTOResolvePrevailingGUID().

◆ timeTraceAsyncProfilerBegin()

TimeTraceProfilerEntry * llvm::timeTraceAsyncProfilerBegin ( StringRef  Name,
StringRef  Detail 
)

Manually begin a time section, with the given Name and Detail.

This starts Async Events having Name as a category which is shown separately from other traces. See https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview#heading=h.jh64i9l3vwa1 for more details.

Definition at line 384 of file TimeProfiler.cpp.

References llvm::TimeTraceProfiler::begin(), Name, and TimeTraceProfilerInstance.

◆ timeTraceProfilerBegin() [1/2]

TimeTraceProfilerEntry * llvm::timeTraceProfilerBegin ( StringRef  Name,
llvm::function_ref< std::string()>  Detail 
)

◆ timeTraceProfilerBegin() [2/2]

TimeTraceProfilerEntry * llvm::timeTraceProfilerBegin ( StringRef  Name,
StringRef  Detail 
)

Manually begin a time section, with the given Name and Detail.

Profiler copies the string data, so the pointers can be given into temporaries. Time sections can be hierarchical; every Begin must have a matching End pair but they can nest.

Definition at line 368 of file TimeProfiler.cpp.

References llvm::TimeTraceProfiler::begin(), Name, and TimeTraceProfilerInstance.

Referenced by llvm::ThinLTOCodeGenerator::run(), and llvm::TimeTraceScope::TimeTraceScope().

◆ timeTraceProfilerCleanup()

void llvm::timeTraceProfilerCleanup ( )

Cleanup the time trace profiler, if it was initialized.

Definition at line 322 of file TimeProfiler.cpp.

References TimeTraceProfilerInstance.

◆ timeTraceProfilerEnabled()

bool llvm::timeTraceProfilerEnabled ( )
inline

Is the time trace profiler enabled, i.e. initialized?

Definition at line 104 of file TimeProfiler.h.

References getTimeTraceProfilerInstance().

Referenced by llvm::ThinLTOCodeGenerator::run().

◆ timeTraceProfilerEnd() [1/2]

void llvm::timeTraceProfilerEnd ( )

Manually end the last time section.

Definition at line 392 of file TimeProfiler.cpp.

References llvm::TimeTraceProfiler::end(), and TimeTraceProfilerInstance.

Referenced by llvm::ThinLTOCodeGenerator::run(), and llvm::TimeTraceScope::~TimeTraceScope().

◆ timeTraceProfilerEnd() [2/2]

void llvm::timeTraceProfilerEnd ( TimeTraceProfilerEntry E)

Definition at line 397 of file TimeProfiler.cpp.

References llvm::TimeTraceProfiler::end(), and TimeTraceProfilerInstance.

◆ timeTraceProfilerFinishThread()

void llvm::timeTraceProfilerFinishThread ( )

Finish a time trace profiler running on a worker thread.

Definition at line 335 of file TimeProfiler.cpp.

References TimeTraceProfilerInstance.

◆ timeTraceProfilerInitialize()

void llvm::timeTraceProfilerInitialize ( unsigned  TimeTraceGranularity,
StringRef  ProcName 
)

Initialize the time trace profiler.

This sets up the global TimeTraceProfilerInstance variable to be the profiler instance.

Definition at line 312 of file TimeProfiler.cpp.

References assert(), llvm::sys::path::filename(), and TimeTraceProfilerInstance.

◆ timeTraceProfilerWrite() [1/2]

void llvm::timeTraceProfilerWrite ( raw_pwrite_stream OS)

Write profiling data to output stream.

Data produced is JSON, in Chrome "Trace Event" format, see https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview

Definition at line 342 of file TimeProfiler.cpp.

References assert(), OS, TimeTraceProfilerInstance, and llvm::TimeTraceProfiler::write().

Referenced by timeTraceProfilerWrite().

◆ timeTraceProfilerWrite() [2/2]

Error llvm::timeTraceProfilerWrite ( StringRef  PreferredFileName,
StringRef  FallbackFileName 
)

Write profiling data to a file.

The function will write to PreferredFileName if provided, if not then will write to FallbackFileName appending .time-trace. Returns a StringError indicating a failure if the function is unable to open the file for writing.

Definition at line 348 of file TimeProfiler.cpp.

References assert(), createStringError(), llvm::sys::fs::OF_TextWithCRLF, OS, llvm::StringRef::str(), llvm::Error::success(), TimeTraceProfilerInstance, and timeTraceProfilerWrite().

◆ to_address() [1/2]

template<class Ptr >
auto llvm::to_address ( const Ptr P)

Returns a raw pointer that represents the same address as the argument.

This implementation can be removed once we move to C++20 where it's defined as std::to_address().

The std::pointer_traits<>::to_address(p) variations of these overloads has not been implemented.

Definition at line 2544 of file STLExtras.h.

References P.

◆ to_address() [2/2]

template<class T >
constexpr T * llvm::to_address ( T P)
constexpr

Definition at line 2545 of file STLExtras.h.

References P.

◆ to_string()

template<class T >
std::string llvm::to_string ( const T Value)

◆ to_underlying()

template<typename Enum >
constexpr std::underlying_type_t< Enum > llvm::to_underlying ( Enum  E)
constexpr

Returns underlying integer value of an enum.

Backport of C++23 std::to_underlying.

Definition at line 66 of file STLForwardCompat.h.

References E.

Referenced by llvm::pdb::formatTypeLeafKind(), llvm::pdb::formatUnknownEnum(), llvm::sys::getSwappedBytes(), llvm::FoldingSetTrait< T, std::enable_if_t< std::is_enum< T >::value > >::Profile(), and llvm::BitmaskEnumDetail::Underlying().

◆ to_vector() [1/2]

template<unsigned Size, typename R >
SmallVector< ValueTypeFromRangeType< R >, Size > llvm::to_vector ( R &&  Range)

Given a range of type R, iterate the entire range and return a SmallVector with elements of the vector.

This is useful, for example, when you want to iterate a range and then sort the results.

Definition at line 1312 of file SmallVector.h.

References to_vector().

Referenced by llvm::ARMTargetLowering::createComplexDeinterleavingIR(), llvm::VPBlockBase::deleteCFG(), map_to_vector(), MergeBlockIntoPredecessor(), mergeBlocksIntoPredecessors(), to_vector(), and UnrollLoop().

◆ to_vector() [2/2]

template<typename R >
SmallVector< ValueTypeFromRangeType< R > > llvm::to_vector ( R &&  Range)

Definition at line 1316 of file SmallVector.h.

References to_vector().

◆ to_vector_of() [1/2]

template<typename Out , unsigned Size, typename R >
SmallVector< Out, Size > llvm::to_vector_of ( R &&  Range)

Definition at line 1321 of file SmallVector.h.

References to_vector_of().

Referenced by to_vector_of().

◆ to_vector_of() [2/2]

template<typename Out , typename R >
SmallVector< Out > llvm::to_vector_of ( R &&  Range)

Definition at line 1325 of file SmallVector.h.

References to_vector_of().

◆ toCABI()

AtomicOrderingCABI llvm::toCABI ( AtomicOrdering  AO)
inline

Definition at line 147 of file AtomicOrdering.h.

References acq_rel, acquire, consume, lookup(), relaxed, release, and seq_cst.

◆ toIRString()

const char * llvm::toIRString ( AtomicOrdering  ao)
inline

String used by LLVM IR to represent atomic ordering.

Definition at line 82 of file AtomicOrdering.h.

Referenced by llvm::MachineMemOperand::print().

◆ toString() [1/3]

const char * llvm::toString ( DWARFSectionKind  Kind)
inline

◆ toString() [2/3]

std::string llvm::toString ( Error  E)

Write all error messages (if any) in E to a string.

The newline character is used to separate error messages.

Definition at line 77 of file Error.cpp.

◆ toString() [3/3]

StringRef llvm::toString ( TensorType  TT)

Definition at line 46 of file TensorSpec.cpp.

References TensorTypeNames.

◆ totalExponent()

static Expected< int > llvm::totalExponent ( StringRef::iterator  p,
StringRef::iterator  end,
int  exponentAdjustment 
)
static

Definition at line 422 of file APFloat.cpp.

References createError(), decDigitValue(), and value.

◆ toTypedPointer()

Type * llvm::toTypedPointer ( Type Ty,
LLVMContext Ctx 
)
inline

◆ ToVectorTy() [1/2]

Type * llvm::ToVectorTy ( Type Scalar,
ElementCount  EC 
)
inline

A helper function for converting Scalar types to vector types.

If the incoming type is void, we return void. If the EC represents a scalar, we return the scalar type.

Definition at line 133 of file VectorUtils.h.

References llvm::VectorType::get().

Referenced by llvm::LoopVectorizationCostModel::getDivRemSpeculationCost(), llvm::LoopVectorizationCostModel::isOptimizableIVTruncate(), llvm::LoopVectorizationCostModel::setVectorizedCallDecision(), and ToVectorTy().

◆ ToVectorTy() [2/2]

Type * llvm::ToVectorTy ( Type Scalar,
unsigned  VF 
)
inline

Definition at line 139 of file VectorUtils.h.

References llvm::ElementCount::getFixed(), and ToVectorTy().

◆ trailingHexadecimalFraction()

static Expected< lostFraction > llvm::trailingHexadecimalFraction ( StringRef::iterator  p,
StringRef::iterator  end,
unsigned int  digitValue 
)
static

Definition at line 584 of file APFloat.cpp.

References createError(), lfExactlyHalf, lfExactlyZero, lfLessThanHalf, and lfMoreThanHalf.

◆ transform()

template<typename R , typename OutputIt , typename UnaryFunction >
OutputIt llvm::transform ( R &&  Range,
OutputIt  d_first,
UnaryFunction  F 
)

◆ transformOptional() [1/2]

template<typename T , typename Function >
auto llvm::transformOptional ( const std::optional< T > &  O,
const Function F 
) -> std::optional<decltype(F(*O))>

Definition at line 46 of file STLForwardCompat.h.

References F.

◆ transformOptional() [2/2]

template<typename T , typename Function >
auto llvm::transformOptional ( std::optional< T > &&  O,
const Function F 
) -> std::optional<decltype(F(*std::move(O)))>

Definition at line 56 of file STLForwardCompat.h.

References F.

◆ trimBlockToPageSize()

static sys::MemoryBlock llvm::trimBlockToPageSize ( sys::MemoryBlock  M)
static

◆ tryDelinearizeFixedSizeImpl()

bool llvm::tryDelinearizeFixedSizeImpl ( ScalarEvolution SE,
Instruction Inst,
const SCEV AccessFn,
SmallVectorImpl< const SCEV * > &  Subscripts,
SmallVectorImpl< int > &  Sizes 
)

Implementation of fixed size array delinearization.

Try to delinearize access function for a fixed size multi-dimensional array, by deriving subscripts from GEP instructions. Returns true upon success and false otherwise. Inst is the load/store instruction whose pointer operand is the one we want to delinearize. AccessFn is its corresponding SCEV expression w.r.t. the surrounding loop.

Definition at line 522 of file Delinearization.cpp.

References assert(), llvm::SmallVectorImpl< T >::clear(), getIndexExpressionsFromGEP(), getLoadStorePointerOperand(), llvm::ScalarEvolution::getPointerBase(), llvm::SCEVUnknown::getValue(), llvm::SmallVectorBase< Size_T >::size(), and llvm::Value::stripPointerCasts().

◆ tryEnforceAlignment()

Align llvm::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.

Returns a minimum known alignment of the value after the operation, which may be lower than PrefAlign.

Increating value alignment isn't often possible though. If alignment is important, a more reliable approach is to simply align all global variables and allocation instructions to their preferred alignment from the beginning.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 1494 of file Local.cpp.

References DL.

Referenced by getOrEnforceKnownAlignment(), and inferAlignment().

◆ tryFoldSPUpdateIntoPushPop()

bool llvm::tryFoldSPUpdateIntoPushPop ( const ARMSubtarget Subtarget,
MachineFunction MF,
MachineInstr MI,
unsigned  NumBytes 
)

◆ tryGreater()

bool llvm::tryGreater ( int  TryVal,
int  CandVal,
GenericSchedulerBase::SchedCandidate TryCand,
GenericSchedulerBase::SchedCandidate Cand,
GenericSchedulerBase::CandReason  Reason 
)

◆ tryLatency()

bool llvm::tryLatency ( GenericSchedulerBase::SchedCandidate TryCand,
GenericSchedulerBase::SchedCandidate Cand,
SchedBoundary Zone 
)

◆ tryLess()

bool llvm::tryLess ( int  TryVal,
int  CandVal,
GenericSchedulerBase::SchedCandidate TryCand,
GenericSchedulerBase::SchedCandidate Cand,
GenericSchedulerBase::CandReason  Reason 
)

Return true if this heuristic determines order.

TODO: Consider refactor return type of these functions as integer or enum, as we may need to differentiate whether TryCand is better than Cand.

Definition at line 3171 of file MachineScheduler.cpp.

References llvm::GenericSchedulerBase::SchedCandidate::Reason.

Referenced by llvm::PostGenericScheduler::tryCandidate(), llvm::PPCPostRASchedStrategy::tryCandidate(), llvm::GenericScheduler::tryCandidate(), llvm::GCNMaxILPSchedStrategy::tryCandidate(), llvm::PPCPreRASchedStrategy::tryCandidate(), tryLatency(), and tryPressure().

◆ tryPressure()

◆ tryPromoteCall()

bool llvm::tryPromoteCall ( CallBase CB)

Try to promote (devirtualize) a virtual call on an Alloca.

Return true on success.

Look for a pattern like:

o = alloca class.Impl %1 = getelementptr class.Impl, class.Impl* o, i64 0, i32 0, i32 0 store i32 (...)** bitcast (i8** getelementptr inbounds ({ [3 x i8*] }, { [3 x i8*] }* @_ZTV4Impl, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %1 %2 = getelementptr inbounds class.Impl, class.Impl* o, i64 0, i32 0 %3 = bitcast class.Interface* %2 to void (class.Interface*)*** vtable.i = load void (class.Interface*)**, void (class.Interface*)*** %3 %4 = load void (class.Interface*)*, void (class.Interface*)** vtable.i call void %4(class.Interface* nonnull %2)

@_ZTV4Impl = linkonce_odr dso_local unnamed_addr constant { [3 x i8*] } { [3 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTI4Impl to i8*), i8* bitcast (void (class.Impl*)* @_ZN4Impl3RunEv to i8*)] }

Definition at line 562 of file CallPromotionUtils.cpp.

References assert(), DL, FindAvailableLoadedValue(), llvm::APInt::getActiveBits(), llvm::CallBase::getCalledFunction(), llvm::CallBase::getCalledOperand(), llvm::CallBase::getCaller(), getFunctionAtVTableOffset(), llvm::GlobalValue::getParent(), llvm::Instruction::getParent(), llvm::LoadInst::getPointerOperand(), llvm::Value::getType(), llvm::APInt::getZExtValue(), llvm::GlobalVariable::hasDefinitiveInitializer(), llvm::GlobalVariable::isConstant(), isLegalToPromote(), promoteCall(), and llvm::Value::stripAndAccumulateConstantOffsets().

◆ TryToSimplifyUncondBranchFromEmptyBlock()

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

If possible, eliminate BB by rewriting all the predecessors to branch to the successor block and return true. If we can't transform, return false.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 1119 of file Local.cpp.

References llvm::DomTreeUpdater::applyUpdates(), assert(), llvm::BasicBlock::back(), llvm::BasicBlock::begin(), CanPropagatePredecessorsForPHIs(), CanRedirectPredsOfEmptyBBToSucc(), llvm::SmallPtrSetImplBase::clear(), llvm::SmallPtrSetImpl< PtrType >::contains(), dbgs(), DeleteDeadBlock(), llvm::Instruction::eraseFromParent(), llvm::BasicBlock::front(), llvm::BasicBlock::getContext(), llvm::Function::getEntryBlock(), llvm::BasicBlock::getFirstNonPHIIt(), llvm::Value::getName(), llvm::BasicBlock::getParent(), llvm::BasicBlock::getSinglePredecessor(), llvm::BasicBlock::getTerminator(), llvm::Value::hasName(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), LLVM_DEBUG, pred_begin(), pred_end(), pred_size(), predecessors(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), redirectValuesFromPredecessorsToPhi(), llvm::Value::replaceAllUsesWith(), llvm::Value::replaceUsesWithIf(), llvm::SmallVectorImpl< T >::reserve(), llvm::SmallVectorBase< Size_T >::size(), llvm::BasicBlock::splice(), succ_empty(), and llvm::Value::takeName().

Referenced by llvm::JumpThreadingPass::runImpl().

◆ ulpsFromBoundary()

static APFloatBase::integerPart llvm::ulpsFromBoundary ( const APFloatBase::integerPart parts,
unsigned int  bits,
bool  isNearest 
)
static

Definition at line 685 of file APFloat.cpp.

References assert(), count(), and llvm::APFloatBase::integerPartWidth.

◆ uniform() [1/2]

template<typename T , typename GenT >
T llvm::uniform ( GenT &  Gen)

Return a uniformly distributed random value of type T.

Definition at line 26 of file Random.h.

◆ uniform() [2/2]

template<typename T , typename GenT >
T llvm::uniform ( GenT &  Gen,
T  Min,
T  Max 
)

Return a uniformly distributed random value between Min and Max.

Definition at line 21 of file Random.h.

Referenced by llvm::RandomIRBuilder::newSink().

◆ unique() [1/2]

template<typename Range >
auto llvm::unique ( Range &&  R)

Wrapper function around std::unique to allow calling unique on a container without having to specify the begin/end iterators.

Definition at line 2019 of file STLExtras.h.

References adl_begin(), and adl_end().

◆ unique() [2/2]

template<typename Range , typename Predicate >
auto llvm::unique ( Range &&  R,
Predicate  P 
)

Definition at line 2013 of file STLExtras.h.

References adl_begin(), adl_end(), and P.

Referenced by llvm::AccelTableBase::computeBucketCount().

◆ unique_dyn_cast() [1/2]

template<class X , class Y >
auto llvm::unique_dyn_cast ( std::unique_ptr< Y > &&  Val)
inline

Definition at line 785 of file Casting.h.

◆ unique_dyn_cast() [2/2]

template<class X , class Y >
CastInfo< X, std::unique_ptr< Y > >::CastResultType llvm::unique_dyn_cast ( std::unique_ptr< Y > &  Val)
inline

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.

If the cast is successful, From refers to nullptr on exit and the casted value is returned. If the cast is unsuccessful, the function returns nullptr and From is unchanged.

Definition at line 778 of file Casting.h.

◆ unique_dyn_cast_or_null() [1/2]

template<class X , class Y >
auto llvm::unique_dyn_cast_or_null ( std::unique_ptr< Y > &&  Val)
inline

Definition at line 800 of file Casting.h.

◆ unique_dyn_cast_or_null() [2/2]

template<class X , class Y >
CastInfo< X, std::unique_ptr< Y > >::CastResultType llvm::unique_dyn_cast_or_null ( std::unique_ptr< Y > &  Val)
inline

Definition at line 793 of file Casting.h.

◆ uniteAccessGroups()

MDNode * llvm::uniteAccessGroups ( MDNode AccGroups1,
MDNode AccGroups2 
)

Compute the union of two access-group lists.

If the list contains just one access group, it is returned directly. If the list is empty, returns nullptr.

Definition at line 718 of file VectorUtils.cpp.

References addToAccessGroupList(), llvm::MDNode::get(), and llvm::MDNode::getContext().

Referenced by PropagateCallSiteMetadata().

◆ unknown_sign()

FPClassTest llvm::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.

Definition at line 48 of file FloatingPointMode.cpp.

References fcInf, fcNan, fcNormal, fcSubnormal, and fcZero.

Referenced by llvm::InstCombinerImpl::SimplifyDemandedUseFPClass().

◆ UnknownPadding()

unsigned llvm::UnknownPadding ( Align  Alignment,
unsigned  KnownBits 
)
inline

UnknownPadding - Return the worst case padding that could result from unknown offset bits.

This does not include alignment padding caused by known offset bits.

Parameters
Alignmentalignment
KnownBitsNumber of known low offset bits.

Definition at line 33 of file ARMBasicBlockInfo.h.

References Log2(), and llvm::Align::value().

Referenced by llvm::BasicBlockInfo::postOffset().

◆ UnrollAndJamLoop()

LoopUnrollResult llvm::UnrollAndJamLoop ( Loop L,
unsigned  Count,
unsigned  TripCount,
unsigned  TripMultiple,
bool  UnrollRemainder,
LoopInfo LI,
ScalarEvolution SE,
DominatorTree DT,
AssumptionCache AC,
const TargetTransformInfo TTI,
OptimizationRemarkEmitter ORE,
Loop **  EpilogueLoop = nullptr 
)

Definition at line 216 of file LoopUnrollAndJam.cpp.

References addClonedBlockToLoopInfo(), llvm::DominatorTreeBase< NodeT, IsPostDom >::addNewBlock(), llvm::DomTreeUpdater::applyUpdatesPermissive(), assert(), llvm::BasicBlock::back(), llvm::ValueMap< KeyT, ValueT, Config >::begin(), llvm::LoopBlocksDFS::beginRPO(), CloneBasicBlock(), llvm::LoopBase< BlockT, LoopT >::contains(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::BranchInst::Create(), dbgs(), DEBUG_TYPE, llvm::OptimizationRemarkEmitter::emit(), llvm::SmallVectorImpl< T >::emplace_back(), EnableFSDiscriminator, llvm::ValueMap< KeyT, ValueT, Config >::end(), llvm::LoopBlocksDFS::endRPO(), llvm::LoopInfo::erase(), llvm::Instruction::eraseFromParent(), llvm::ScalarEvolution::forgetBlockAndLoopDispositions(), llvm::ScalarEvolution::forgetLoop(), llvm::DomTreeUpdater::getDomTree(), llvm::LoopBase< BlockT, LoopT >::getExitBlock(), llvm::LoopBase< BlockT, LoopT >::getExitingBlock(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::DomTreeNodeBase< NodeT >::getIDom(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::LoopBase< BlockT, LoopT >::getLoopLatch(), llvm::LoopBase< BlockT, LoopT >::getLoopPreheader(), llvm::DominatorTreeBase< NodeT, IsPostDom >::getNode(), llvm::BranchInst::getNumSuccessors(), llvm::LoopBase< BlockT, LoopT >::getParentLoop(), llvm::BranchInst::getSuccessor(), llvm::Instruction::getSuccessor(), llvm::BasicBlock::getTerminator(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::Loop::isLoopSimplifyForm(), llvm::Loop::isRecursivelyLCSSAForm(), llvm::BranchInst::isUnconditional(), LLVM_DEBUG, llvm_unreachable, MergeBlockSuccessorsIntoGivenBlocks(), moveHeaderPhiOperandsToForeBlocks(), partitionOuterLoopBlocks(), llvm::LoopBlocksDFS::perform(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::AssumptionCache::registerAssumption(), remapInstructionsInBlocks(), llvm::BranchInst::setSuccessor(), simplifyLoopAfterUnroll(), UnrollRuntimeLoopRemainder(), llvm::ScalarEvolution::verify(), llvm::LoopInfoBase< BlockT, LoopT >::verify(), and llvm::DominatorTreeBase< NodeT, IsPostDom >::verify().

Referenced by tryToUnrollAndJamLoop().

◆ UnrollLoop()

LoopUnrollResult llvm::UnrollLoop ( Loop L,
UnrollLoopOptions  ULO,
LoopInfo LI,
ScalarEvolution SE,
DominatorTree DT,
AssumptionCache AC,
const llvm::TargetTransformInfo TTI,
OptimizationRemarkEmitter ORE,
bool  PreserveLCSSA,
Loop **  RemainderLoop = nullptr 
)

Unroll the given loop by Count.

The loop must be in LCSSA form. Unrolling can only fail when the loop's latch block is not terminated by a conditional branch instruction. However, if the trip count (and multiple) are not known, loop unrolling will mostly produce more code that is no faster.

If Runtime is true then UnrollLoop will try to insert a prologue or epilogue that ensures the latch has a trip multiple of Count. UnrollLoop will not runtime-unroll the loop if computing the run-time trip count will be expensive and AllowExpensiveTripCount is false.

The LoopInfo Analysis that is passed will be kept consistent.

This utility preserves LoopInfo. It will also preserve ScalarEvolution and DominatorTree if they are non-null.

If RemainderLoop is non-null, it will receive the remainder loop (if required and not fully unrolled).

Definition at line 295 of file LoopUnroll.cpp.

References addClonedBlockToLoopInfo(), llvm::DominatorTreeBase< NodeT, IsPostDom >::addNewBlock(), llvm::UnrollLoopOptions::AllowExpensiveTripCount, any_of(), llvm::DomTreeUpdater::applyUpdates(), assert(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::begin(), llvm::BasicBlock::begin(), llvm::ValueMap< KeyT, ValueT, Config >::begin(), llvm::LoopBlocksDFS::beginRPO(), llvm::CallingConv::C, llvm::DominatorTreeBase< NodeT, IsPostDom >::changeImmediateDominator(), changeToUnreachable(), llvm::DomTreeNodeBase< NodeT >::children(), cloneAndAdaptNoAliasScopes(), CloneBasicBlock(), llvm::LoopBase< BlockT, LoopT >::contains(), llvm::UnrollLoopOptions::Count, llvm::BranchInst::Create(), dbgs(), DEBUG_TYPE, llvm::OptimizationRemarkEmitter::emit(), llvm::SmallVectorImpl< T >::emplace_back(), EnableFSDiscriminator, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::ValueMap< KeyT, ValueT, Config >::end(), llvm::LoopBlocksDFS::endRPO(), erase(), llvm::LoopInfo::erase(), llvm::Instruction::eraseFromParent(), llvm::ValueMap< KeyT, ValueT, Config >::find(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::DominatorTree::findNearestCommonDominator(), for(), llvm::UnrollLoopOptions::Force, llvm::ScalarEvolution::forgetAllLoops(), llvm::UnrollLoopOptions::ForgetAllSCEV, llvm::ScalarEvolution::forgetBlockAndLoopDispositions(), llvm::ScalarEvolution::forgetTopmostLoop(), llvm::ScalarEvolution::forgetValue(), formLCSSARecursively(), llvm::DomTreeUpdater::getDomTree(), llvm::DomTreeNodeBase< NodeT >::getIDom(), llvm::PHINode::getIncomingValueForBlock(), llvm::ilist_node_impl< OptionsT >::getIterator(), getLoopEstimatedTripCount(), llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), llvm::DominatorTreeBase< NodeT, IsPostDom >::getNode(), llvm::LoopBase< BlockT, LoopT >::getParentLoop(), llvm::BasicBlock::getSingleSuccessor(), llvm::ScalarEvolution::getSmallConstantMaxTripCount(), llvm::ScalarEvolution::getSmallConstantTripCount(), llvm::ScalarEvolution::getSmallConstantTripMultiple(), llvm::BasicBlock::getTerminator(), llvm::BasicBlock::getUniquePredecessor(), I, identifyNoAliasScopesToClone(), Idx, Info, llvm::SetVector< T, Vector, Set, N >::insert(), llvm::ScalarEvolution::isBackedgeTakenCountMaxOrZero(), isEpilogProfitable(), llvm::Loop::isLCSSAForm(), LLVM_DEBUG, MergeBlockIntoPredecessor(), needToInsertPhisForLCSSA(), llvm::LoopBlocksDFS::perform(), PHI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::AssumptionCache::registerAssumption(), remapInstructionsInBlocks(), llvm::BasicBlock::removePredecessor(), llvm::UnrollLoopOptions::Runtime, llvm::ValueMapIterator< DenseMapT, KeyT >::ValueTypeProxy::second, setLoopEstimatedTripCount(), simplifyLoop(), simplifyLoopAfterUnroll(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::size(), llvm::SmallVectorBase< Size_T >::size(), successors(), to_vector(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::try_emplace(), Unmodified, llvm::UnrollLoopOptions::UnrollRemainder, UnrollRuntimeEpilog, UnrollRuntimeLoopRemainder(), UnrollVerifyDomtree, UnrollVerifyLoopInfo, llvm::LoopInfoBase< BlockT, LoopT >::verify(), and llvm::DominatorTreeBase< NodeT, IsPostDom >::verify().

Referenced by tryToUnrollLoop(), and UnrollRuntimeLoopRemainder().

◆ UnrollRuntimeLoopRemainder()

bool llvm::UnrollRuntimeLoopRemainder ( Loop L,
unsigned  Count,
bool  AllowExpensiveTripCount,
bool  UseEpilogRemainder,
bool  UnrollRemainder,
bool  ForgetAllSCEV,
LoopInfo LI,
ScalarEvolution SE,
DominatorTree DT,
AssumptionCache AC,
const TargetTransformInfo TTI,
bool  PreserveLCSSA,
Loop **  ResultLoop = nullptr 
)

Insert code in the prolog/epilog code when unrolling a loop with a run-time trip-count.

This method assumes that the loop unroll factor is total number of loop bodies in the loop after unrolling. (Some folks refer to the unroll factor as the number of extra copies added). We assume also that the loop unroll factor is a power-of-two. So, after unrolling the loop, the number of loop bodies executed is 2, 4, 8, etc. Note - LLVM converts the if-then-sequence to a switch instruction in SimplifyCFG.cpp. Then, the backend decides how code for the switch instruction is generated.

Prolog case extraiters = tripcount % loopfactor if (extraiters == 0) jump Loop: else jump Prol: Prol: LoopBody; extraiters -= 1 // Omitted if unroll factor is 2. if (extraiters != 0) jump Prol: // Omitted if unroll factor is 2. if (tripcount < loopfactor) jump End: Loop: ... End:

Epilog case extraiters = tripcount % loopfactor if (tripcount < loopfactor) jump LoopExit: unroll_iters = tripcount - extraiters Loop: LoopBody; (executes unroll_iter times); unroll_iter -= 1 if (unroll_iter != 0) jump Loop: LoopExit: if (extraiters == 0) jump EpilExit: Epil: LoopBody; (executes extraiters times) extraiters -= 1 // Omitted if unroll factor is 2. if (extraiters != 0) jump Epil: // Omitted if unroll factor is 2. EpilExit:

Definition at line 582 of file LoopUnrollRuntime.cpp.

References llvm::PHINode::addIncoming(), assert(), B, breakLoopBackedge(), canProfitablyUnrollMultiExitLoop(), llvm::DominatorTreeBase< NodeT, IsPostDom >::changeImmediateDominator(), CloneLoopBlocks(), ConnectEpilog(), ConnectProlog(), llvm::PHINode::Create(), llvm::IRBuilderBase::CreateAdd(), llvm::MDBuilder::createBranchWeights(), llvm::IRBuilderBase::CreateICmp(), llvm::IRBuilderBase::CreateSub(), CreateTripRemainder(), dbgs(), DL, llvm::SmallVectorImpl< T >::emplace_back(), llvm::SmallVectorBase< Size_T >::empty(), EpilogHeaderWeights, llvm::Instruction::eraseFromParent(), llvm::SCEVExpander::expandCodeFor(), F, llvm::ScalarEvolution::forgetTopmostLoop(), formDedicatedExitBlocks(), llvm::ScalarEvolution::getAddExpr(), llvm::Constant::getAllOnesValue(), llvm::DomTreeNodeBase< NodeT >::getBlock(), llvm::LoopBase< BlockT, LoopT >::getBlocks(), llvm::ScalarEvolution::getConstant(), llvm::ScalarEvolution::getExitCount(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), llvm::LoopBase< BlockT, LoopT >::getLoopLatch(), llvm::Value::getName(), llvm::DominatorTreeBase< NodeT, IsPostDom >::getNode(), llvm::BasicBlock::getSingleSuccessor(), llvm::BranchInst::getSuccessor(), llvm::BasicBlock::getTerminator(), llvm::SCEV::getType(), llvm::Value::getType(), hasBranchWeightMD(), I, llvm::Instruction::insertBefore(), is_contained(), isGuaranteedNotToBeUndefOrPoison(), llvm::SCEVExpander::isHighCostExpansion(), isInstructionTriviallyDead(), llvm::BranchInst::isUnconditional(), LLVM_DEBUG, Log2_32(), llvm::ValueMap< KeyT, ValueT, Config >::lookup(), llvm::ScalarEvolution::loopHasNoAbnormalExits(), make_early_inc_range(), MergeBlockIntoPredecessor(), llvm::LoopBlocksDFS::perform(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), RecursivelyDeleteTriviallyDeadInstructions(), RemapDbgVariableRecordRange(), RemapInstruction(), llvm::LoopInfo::replacementPreservesLCSSAForm(), RF_IgnoreMissingLocals, RF_NoModuleLevelChanges, SCEVCheapExpansionBudget, llvm::BranchInst::setCondition(), llvm::Instruction::setDebugLoc(), llvm::IRBuilderBase::SetInsertPoint(), llvm::Value::setName(), simplifyInstruction(), llvm::SmallVectorBase< Size_T >::size(), SplitBlock(), SplitBlockPredecessors(), SplitEdge(), successors(), UnrollLoop(), llvm::LoopInfoBase< BlockT, LoopT >::verify(), and llvm::DominatorTreeBase< NodeT, IsPostDom >::verify().

Referenced by UnrollAndJamLoop(), and UnrollLoop().

◆ unwrap() [1/10]

Attribute llvm::unwrap ( LLVMAttributeRef  Attr)
inline

Definition at line 303 of file Attributes.h.

References llvm::Attribute::fromRawPointer().

Referenced by LLVMAddAlias2(), LLVMAddAttributeAtIndex(), LLVMAddCallSiteAttribute(), LLVMAddCase(), LLVMAddDestination(), LLVMAddFunction(), LLVMAddGlobal(), LLVMAddGlobalIFunc(), LLVMAddGlobalInAddressSpace(), LLVMAddGlobalMapping(), LLVMAddHandler(), LLVMAddIncoming(), LLVMAddMetadataToInst(), LLVMAddModule(), LLVMAddModuleFlag(), LLVMAddNamedMetadataOperand(), LLVMAlignOf(), LLVMAppendBasicBlockInContext(), LLVMAppendExistingBasicBlock(), LLVMAppendModuleInlineAsm(), LLVMArrayType(), LLVMArrayType2(), LLVMBasicBlockAsValue(), LLVMBFloatTypeInContext(), LLVMBlockAddress(), LLVMBuildAdd(), LLVMBuildAddrSpaceCast(), LLVMBuildAggregateRet(), LLVMBuildAlloca(), LLVMBuildAnd(), LLVMBuildArrayAlloca(), LLVMBuildArrayMalloc(), LLVMBuildAShr(), LLVMBuildAtomicCmpXchg(), LLVMBuildAtomicRMW(), LLVMBuildBinOp(), LLVMBuildBitCast(), LLVMBuildBr(), LLVMBuildCall2(), LLVMBuildCallWithOperandBundles(), LLVMBuildCast(), LLVMBuildCatchPad(), LLVMBuildCatchRet(), LLVMBuildCatchSwitch(), LLVMBuildCleanupPad(), LLVMBuildCleanupRet(), LLVMBuildCondBr(), LLVMBuilderGetDefaultFPMathTag(), LLVMBuilderSetDefaultFPMathTag(), LLVMBuildExactSDiv(), LLVMBuildExactUDiv(), LLVMBuildExtractElement(), LLVMBuildExtractValue(), LLVMBuildFAdd(), LLVMBuildFCmp(), LLVMBuildFDiv(), LLVMBuildFence(), LLVMBuildFMul(), LLVMBuildFNeg(), LLVMBuildFPCast(), LLVMBuildFPExt(), LLVMBuildFPToSI(), LLVMBuildFPToUI(), LLVMBuildFPTrunc(), LLVMBuildFree(), LLVMBuildFreeze(), LLVMBuildFRem(), LLVMBuildFSub(), LLVMBuildGEP2(), LLVMBuildGlobalString(), LLVMBuildGlobalStringPtr(), LLVMBuildICmp(), LLVMBuildInBoundsGEP2(), LLVMBuildIndirectBr(), LLVMBuildInsertElement(), LLVMBuildInsertValue(), LLVMBuildIntCast(), LLVMBuildIntCast2(), LLVMBuildIntToPtr(), LLVMBuildInvoke2(), LLVMBuildInvokeWithOperandBundles(), LLVMBuildIsNotNull(), LLVMBuildIsNull(), LLVMBuildLandingPad(), LLVMBuildLoad2(), LLVMBuildLShr(), LLVMBuildMalloc(), LLVMBuildMemCpy(), LLVMBuildMemMove(), LLVMBuildMemSet(), LLVMBuildMul(), LLVMBuildNeg(), LLVMBuildNot(), LLVMBuildNSWAdd(), LLVMBuildNSWMul(), LLVMBuildNSWNeg(), LLVMBuildNSWSub(), LLVMBuildNUWAdd(), LLVMBuildNUWMul(), LLVMBuildNUWNeg(), LLVMBuildNUWSub(), LLVMBuildOr(), LLVMBuildPhi(), LLVMBuildPointerCast(), LLVMBuildPtrDiff2(), LLVMBuildPtrToInt(), LLVMBuildResume(), LLVMBuildRet(), LLVMBuildRetVoid(), LLVMBuildSDiv(), LLVMBuildSelect(), LLVMBuildSExt(), LLVMBuildSExtOrBitCast(), LLVMBuildShl(), LLVMBuildShuffleVector(), LLVMBuildSIToFP(), LLVMBuildSRem(), LLVMBuildStore(), LLVMBuildStructGEP2(), LLVMBuildSub(), LLVMBuildSwitch(), LLVMBuildTrunc(), LLVMBuildTruncOrBitCast(), LLVMBuildUDiv(), LLVMBuildUIToFP(), LLVMBuildUnreachable(), LLVMBuildURem(), LLVMBuildVAArg(), LLVMBuildXor(), LLVMBuildZExt(), LLVMBuildZExtOrBitCast(), LLVMClearInsertionPosition(), LLVMCloneModule(), LLVMConstAddrSpaceCast(), LLVMConstAllOnes(), LLVMConstArray(), LLVMConstArray2(), LLVMConstBitCast(), LLVMConstGEP2(), LLVMConstInBoundsGEP2(), LLVMConstInlineAsm(), LLVMConstIntToPtr(), LLVMConstNull(), LLVMConstPointerCast(), LLVMConstPtrToInt(), LLVMConstReal(), LLVMConstRealOfString(), LLVMConstRealOfStringAndSize(), LLVMConstStringInContext(), LLVMConstStringInContext2(), LLVMConstStructInContext(), LLVMConstTrunc(), LLVMConstTruncOrBitCast(), LLVMContextDispose(), LLVMContextGetDiagnosticContext(), LLVMContextGetDiagnosticHandler(), LLVMContextSetDiagnosticHandler(), LLVMContextSetDiscardValueNames(), LLVMContextSetYieldCallback(), LLVMContextShouldDiscardValueNames(), LLVMCopyModuleFlagsMetadata(), LLVMCreateBasicBlockInContext(), LLVMCreateBuilderInContext(), LLVMCreateDIBuilder(), LLVMCreateDIBuilderDisallowUnresolved(), LLVMCreateEnumAttribute(), LLVMCreateExecutionEngineForModule(), LLVMCreateFunctionPassManagerForModule(), LLVMCreateGenericValueOfFloat(), LLVMCreateInterpreterForModule(), LLVMCreateJITCompilerForModule(), LLVMCreateMCJITCompilerForModule(), LLVMCreateOperandBundle(), LLVMCreateStringAttribute(), LLVMCreateTypeAttribute(), LLVMDeleteBasicBlock(), LLVMDIBuilderCreateArrayType(), LLVMDIBuilderCreateArtificialType(), LLVMDIBuilderCreateAutoVariable(), LLVMDIBuilderCreateBasicType(), LLVMDIBuilderCreateBitFieldMemberType(), LLVMDIBuilderCreateClassType(), LLVMDIBuilderCreateCompileUnit(), LLVMDIBuilderCreateConstantValueExpression(), LLVMDIBuilderCreateDebugLocation(), LLVMDIBuilderCreateEnumerationType(), LLVMDIBuilderCreateEnumerator(), LLVMDIBuilderCreateExpression(), LLVMDIBuilderCreateFile(), LLVMDIBuilderCreateForwardDecl(), LLVMDIBuilderCreateFunction(), LLVMDIBuilderCreateGlobalVariableExpression(), LLVMDIBuilderCreateImportedDeclaration(), LLVMDIBuilderCreateImportedModuleFromAlias(), LLVMDIBuilderCreateImportedModuleFromModule(), LLVMDIBuilderCreateImportedModuleFromNamespace(), LLVMDIBuilderCreateInheritance(), LLVMDIBuilderCreateLexicalBlock(), LLVMDIBuilderCreateLexicalBlockFile(), LLVMDIBuilderCreateMacro(), LLVMDIBuilderCreateMemberPointerType(), LLVMDIBuilderCreateMemberType(), LLVMDIBuilderCreateModule(), LLVMDIBuilderCreateNameSpace(), LLVMDIBuilderCreateNullPtrType(), LLVMDIBuilderCreateObjCIVar(), LLVMDIBuilderCreateObjCProperty(), LLVMDIBuilderCreateObjectPointerType(), LLVMDIBuilderCreateParameterVariable(), LLVMDIBuilderCreatePointerType(), LLVMDIBuilderCreateQualifiedType(), LLVMDIBuilderCreateReferenceType(), LLVMDIBuilderCreateReplaceableCompositeType(), LLVMDIBuilderCreateStaticMemberType(), LLVMDIBuilderCreateStructType(), LLVMDIBuilderCreateSubroutineType(), LLVMDIBuilderCreateTempGlobalVariableFwdDecl(), LLVMDIBuilderCreateTempMacroFile(), LLVMDIBuilderCreateTypedef(), LLVMDIBuilderCreateUnionType(), LLVMDIBuilderCreateUnspecifiedType(), LLVMDIBuilderCreateVectorType(), LLVMDIBuilderFinalize(), LLVMDIBuilderFinalizeSubprogram(), LLVMDIBuilderGetOrCreateArray(), LLVMDIBuilderGetOrCreateSubrange(), LLVMDIBuilderGetOrCreateTypeArray(), LLVMDIBuilderInsertDbgValueIntrinsicAtEnd(), LLVMDIBuilderInsertDbgValueIntrinsicBefore(), LLVMDIBuilderInsertDbgValueRecordAtEnd(), LLVMDIBuilderInsertDbgValueRecordBefore(), LLVMDIBuilderInsertDeclareIntrinsicAtEnd(), LLVMDIBuilderInsertDeclareIntrinsicBefore(), LLVMDIBuilderInsertDeclareRecordAtEnd(), LLVMDIBuilderInsertDeclareRecordBefore(), LLVMDisposeBuilder(), LLVMDisposeDIBuilder(), LLVMDisposeExecutionEngine(), LLVMDisposeGenericValue(), LLVMDisposeMCJITMemoryManager(), LLVMDisposeMemoryBuffer(), LLVMDisposeModule(), LLVMDisposeModuleProvider(), LLVMDisposeOperandBundle(), LLVMDisposePassManager(), LLVMDoubleTypeInContext(), LLVMDumpModule(), LLVMDumpType(), LLVMDumpValue(), LLVMExecutionEngineGetErrMsg(), LLVMFindFunction(), LLVMFloatTypeInContext(), LLVMFP128TypeInContext(), LLVMFunctionType(), LLVMGenericValueIntWidth(), LLVMGenericValueToFloat(), LLVMGenericValueToInt(), LLVMGenericValueToPointer(), LLVMGetAlignment(), LLVMGetBasicBlockName(), LLVMGetBasicBlockParent(), LLVMGetBasicBlockTerminator(), LLVMGetBitcodeModuleInContext(), LLVMGetBitcodeModuleInContext2(), LLVMGetBufferSize(), LLVMGetBufferStart(), LLVMGetCastOpcode(), LLVMGetCmpXchgFailureOrdering(), LLVMGetCmpXchgSuccessOrdering(), LLVMGetComdatSelectionKind(), LLVMGetCurrentDebugLocation(), LLVMGetCurrentDebugLocation2(), LLVMGetDataLayoutStr(), LLVMGetDebugLocColumn(), LLVMGetDebugLocDirectory(), LLVMGetDebugLocFilename(), LLVMGetDebugLocLine(), LLVMGetDiagInfoDescription(), LLVMGetDiagInfoSeverity(), LLVMGetElementType(), LLVMGetEnumAttributeKind(), LLVMGetEnumAttributeValue(), LLVMGetExecutionEngineTargetData(), LLVMGetExecutionEngineTargetMachine(), LLVMGetFCmpPredicate(), LLVMGetFirstFunction(), LLVMGetFirstGlobal(), LLVMGetFirstGlobalAlias(), LLVMGetFirstGlobalIFunc(), LLVMGetFirstInstruction(), LLVMGetFirstNamedMetadata(), LLVMGetFirstUse(), LLVMGetFunctionAddress(), LLVMGetGlobalValueAddress(), LLVMGetICmpPredicate(), LLVMGetIndices(), LLVMGetInsertBlock(), LLVMGetInstructionOpcode(), LLVMGetIntrinsicDeclaration(), LLVMGetIntrinsicID(), LLVMGetLastFunction(), LLVMGetLastGlobal(), LLVMGetLastGlobalAlias(), LLVMGetLastGlobalIFunc(), LLVMGetLastInstruction(), LLVMGetLastNamedMetadata(), LLVMGetMaskValue(), LLVMGetMDKindIDInContext(), LLVMGetMDNodeOperands(), LLVMGetMDString(), LLVMGetMetadataKind(), LLVMGetModuleContext(), LLVMGetModuleDebugMetadataVersion(), LLVMGetModuleFlag(), LLVMGetModuleIdentifier(), LLVMGetModuleInlineAsm(), LLVMGetNamedFunction(), LLVMGetNamedGlobal(), LLVMGetNamedGlobalAlias(), LLVMGetNamedGlobalIFunc(), LLVMGetNamedMetadata(), LLVMGetNamedMetadataName(), LLVMGetNamedMetadataNumOperands(), LLVMGetNamedMetadataOperands(), LLVMGetNextBasicBlock(), LLVMGetNextNamedMetadata(), LLVMGetNextUse(), LLVMGetNumArgOperands(), LLVMGetNumContainedTypes(), LLVMGetNumIndices(), LLVMGetNumMaskElements(), LLVMGetNumOperandBundleArgs(), LLVMGetNumOperands(), LLVMGetOperand(), LLVMGetOperandBundleArgAtIndex(), LLVMGetOperandBundleTag(), LLVMGetOperandUse(), LLVMGetOrdering(), LLVMGetOrInsertComdat(), LLVMGetOrInsertNamedMetadata(), LLVMGetPointerToGlobal(), LLVMGetPoison(), LLVMGetPreviousBasicBlock(), LLVMGetPreviousNamedMetadata(), LLVMGetSourceFileName(), LLVMGetStringAttributeKind(), LLVMGetStringAttributeValue(), LLVMGetSubtypes(), LLVMGetTarget(), LLVMGetTypeAttributeValue(), LLVMGetTypeByName(), LLVMGetTypeByName2(), LLVMGetTypeContext(), LLVMGetTypeKind(), LLVMGetUndef(), LLVMGetUnwindDest(), LLVMGetUsedValue(), LLVMGetUser(), LLVMGetValueKind(), LLVMGetValueName(), LLVMGetValueName2(), LLVMGetVolatile(), LLVMGlobalCopyAllMetadata(), LLVMHalfTypeInContext(), LLVMInsertBasicBlockInContext(), LLVMInsertExistingBasicBlockAfterInsertBlock(), LLVMInsertIntoBuilder(), LLVMInsertIntoBuilderWithName(), LLVMInstructionClone(), LLVMInt128TypeInContext(), LLVMInt16TypeInContext(), LLVMInt1TypeInContext(), LLVMInt32TypeInContext(), LLVMInt64TypeInContext(), LLVMInt8TypeInContext(), LLVMIntrinsicCopyOverloadedName(), LLVMIntrinsicCopyOverloadedName2(), LLVMIntrinsicGetType(), LLVMIntTypeInContext(), LLVMIsAMDNode(), LLVMIsAMDString(), LLVMIsATerminatorInst(), LLVMIsAtomicSingleThread(), LLVMIsAValueAsMetadata(), LLVMIsConstant(), LLVMIsEnumAttribute(), LLVMIsNewDbgInfoFormat(), LLVMIsNull(), LLVMIsPoison(), LLVMIsStringAttribute(), LLVMIsTypeAttribute(), LLVMIsUndef(), LLVMLabelTypeInContext(), LLVMLinkModules2(), LLVMMDNodeInContext(), LLVMMDNodeInContext2(), LLVMMDStringInContext(), LLVMMDStringInContext2(), LLVMMetadataAsValue(), LLVMMetadataReplaceAllUsesWith(), LLVMMetadataTypeInContext(), LLVMModuleCreateWithNameInContext(), LLVMMoveBasicBlockAfter(), LLVMMoveBasicBlockBefore(), LLVMOrcLLJITEnableDebugSupport(), LLVMParseBitcodeInContext(), LLVMParseBitcodeInContext2(), LLVMParseIRInContext(), LLVMPointerType(), LLVMPointerTypeInContext(), LLVMPositionBuilder(), LLVMPositionBuilderAtEnd(), LLVMPositionBuilderBefore(), LLVMPPCFP128TypeInContext(), LLVMPrintDbgRecordToString(), LLVMPrintModuleToFile(), LLVMPrintModuleToString(), LLVMPrintTypeToString(), LLVMPrintValueToString(), LLVMRemarkArgGetDebugLoc(), LLVMRemarkArgGetKey(), LLVMRemarkArgGetValue(), LLVMRemarkDebugLocGetSourceColumn(), LLVMRemarkDebugLocGetSourceFilePath(), LLVMRemarkDebugLocGetSourceLine(), LLVMRemarkEntryDispose(), LLVMRemarkEntryGetDebugLoc(), LLVMRemarkEntryGetFirstArg(), LLVMRemarkEntryGetFunctionName(), LLVMRemarkEntryGetHotness(), LLVMRemarkEntryGetNextArg(), LLVMRemarkEntryGetNumArgs(), LLVMRemarkEntryGetPassName(), LLVMRemarkEntryGetRemarkName(), LLVMRemarkEntryGetType(), LLVMRemarkParserDispose(), LLVMRemarkParserGetErrorMessage(), LLVMRemarkParserGetNext(), LLVMRemarkParserHasError(), LLVMRemarkStringGetData(), LLVMRemarkStringGetLen(), LLVMRemoveBasicBlockFromParent(), LLVMRemoveModule(), LLVMReplaceAllUsesWith(), LLVMReplaceMDNodeOperandWith(), LLVMRunFunction(), LLVMRunFunctionAsMain(), LLVMRunPassManager(), LLVMRunStaticConstructors(), LLVMRunStaticDestructors(), LLVMScalableVectorType(), LLVMSetAlignment(), LLVMSetArgOperand(), LLVMSetAtomicSingleThread(), LLVMSetCmpXchgFailureOrdering(), LLVMSetCmpXchgSuccessOrdering(), LLVMSetComdat(), LLVMSetComdatSelectionKind(), LLVMSetCondition(), LLVMSetCurrentDebugLocation(), LLVMSetCurrentDebugLocation2(), LLVMSetDataLayout(), LLVMSetInstDebugLocation(), LLVMSetIsNewDbgInfoFormat(), LLVMSetModuleIdentifier(), LLVMSetModuleInlineAsm(), LLVMSetModuleInlineAsm2(), LLVMSetNormalDest(), LLVMSetOperand(), LLVMSetOrdering(), LLVMSetSourceFileName(), LLVMSetSuccessor(), LLVMSetTarget(), LLVMSetUnwindDest(), LLVMSetValueName(), LLVMSetValueName2(), LLVMSetVolatile(), LLVMSizeOf(), LLVMStripModuleDebugInfo(), LLVMStructCreateNamed(), LLVMStructSetBody(), LLVMStructTypeInContext(), LLVMTargetExtTypeInContext(), LLVMTemporaryMDNode(), LLVMTokenTypeInContext(), LLVMTypeIsSized(), LLVMTypeOf(), LLVMValueAsMetadata(), LLVMValueIsBasicBlock(), LLVMVectorType(), LLVMVerifyModule(), LLVMVoidTypeInContext(), LLVMWriteBitcodeToFD(), LLVMWriteBitcodeToFile(), LLVMWriteBitcodeToMemoryBuffer(), LLVMX86AMXTypeInContext(), LLVMX86FP80TypeInContext(), LLVMX86MMXTypeInContext(), parallelForEachError(), and llvm::orc::CAPIDefinitionGenerator::tryToGenerate().

◆ unwrap() [2/10]

std::optional< CodeModel::Model > llvm::unwrap ( LLVMCodeModel  Model,
bool JIT 
)
inline

◆ unwrap() [3/10]

LLVMContext ** llvm::unwrap ( LLVMContextRef Tys)
inline

Definition at line 343 of file LLVMContext.h.

◆ unwrap() [4/10]

Error llvm::unwrap ( LLVMErrorRef  ErrRef)
inline

Conversion from LLVMErrorRef to Error for C error bindings.

Definition at line 1418 of file Error.h.

◆ unwrap() [5/10]

Metadata ** llvm::unwrap ( LLVMMetadataRef MDs)
inline

Definition at line 147 of file Metadata.h.

◆ unwrap() [6/10]

Module * llvm::unwrap ( LLVMModuleProviderRef  MP)
inline

Definition at line 1086 of file Module.h.

◆ unwrap() [7/10]

DataLayout * llvm::unwrap ( LLVMTargetDataRef  P)
inline

Definition at line 612 of file DataLayout.h.

References P.

◆ unwrap() [8/10]

Type ** llvm::unwrap ( LLVMTypeRef Tys)
inline

Definition at line 518 of file Type.h.

◆ unwrap() [9/10]

Value ** llvm::unwrap ( LLVMValueRef Vals)
inline

Definition at line 1054 of file Value.h.

◆ unwrap() [10/10]

template<typename T >
T ** llvm::unwrap ( LLVMValueRef Vals,
unsigned  Length 
)
inline

Definition at line 1059 of file Value.h.

References E, I, and Length.

◆ updateCGAndAnalysisManagerForCGSCCPass()

LazyCallGraph::SCC & llvm::updateCGAndAnalysisManagerForCGSCCPass ( 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.

CGSCC passes can only mutate the call graph in specific ways. This routine provides a helper that updates the call graph in those ways including returning whether any changes were made and populating a CG update result struct for the overall CGSCC walk.

Definition at line 1208 of file CGSCCPassManager.cpp.

References FAM, G, N, and updateCGAndAnalysisManagerForPass().

Referenced by llvm::CallGraphUpdater::reanalyzeFunction(), and updateCallGraphAfterCoroutineSplit().

◆ updateCGAndAnalysisManagerForFunctionPass()

LazyCallGraph::SCC & llvm::updateCGAndAnalysisManagerForFunctionPass ( 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.

Function passes can only mutate the call graph in specific ways. This routine provides a helper that updates the call graph in those ways including returning whether any changes were made and populating a CG update result struct for the overall CGSCC walk.

Definition at line 1201 of file CGSCCPassManager.cpp.

References FAM, G, N, and updateCGAndAnalysisManagerForPass().

Referenced by llvm::CGSCCToFunctionPassAdaptor::run(), and updateCallGraphAfterCoroutineSplit().

◆ updateChildIncompleteness()

static void llvm::updateChildIncompleteness ( const DWARFDie Die,
CompileUnit CU,
CompileUnit::DIEInfo ChildInfo 
)
static

Helper that updates the completeness of the current DIE based on the completeness of one of its children.

It depends on the incompleteness of the children already being computed.

Definition at line 637 of file DWARFLinker.cpp.

References llvm::DWARFDie::getTag(), llvm::dwarf_linker::classic::CompileUnit::DIEInfo::Incomplete, and llvm::dwarf_linker::classic::CompileUnit::DIEInfo::Prune.

◆ updateChildPruning()

static void llvm::updateChildPruning ( const DWARFDie Die,
CompileUnit CU,
CompileUnit::DIEInfo ChildInfo 
)
static

Definition at line 279 of file DWARFLinker.cpp.

References Info, and llvm::dwarf_linker::classic::CompileUnit::DIEInfo::Prune.

Referenced by analyzeContextInfo().

◆ updateCompilerUsed()

void llvm::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.

Definition at line 122 of file UpdateCompilerUsed.cpp.

References appendToCompilerUsed(), and TM.

◆ updateDbgValueForSpill()

void llvm::updateDbgValueForSpill ( MachineInstr Orig,
int  FrameIndex,
Register  Reg 
)

Update a DBG_VALUE whose value has been spilled to FrameIndex.

Useful when modifying an instruction in place while iterating over a basic block.

Definition at line 2343 of file MachineInstr.cpp.

References llvm::MachineOperand::ChangeToImmediate(), computeExprForSpill(), llvm::MachineInstr::getDebugExpressionOp(), llvm::MachineInstr::getDebugOffset(), llvm::MachineInstr::getDebugOperandsForReg(), llvm::MachineInstr::isNonListDebugValue(), and llvm::MachineOperand::setMetadata().

◆ updateIndexWPDForExports()

void llvm::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.

Definition at line 927 of file WholeProgramDevirt.cpp.

References assert(), and llvm::ModuleSummaryIndex::getGlobalNameForLocal().

Referenced by llvm::ThinLTOCodeGenerator::run().

◆ updateIndirectCalls()

void llvm::updateIndirectCalls ( ModuleSummaryIndex Index)

Update call edges for indirect calls to local functions added from SamplePGO when needed.

Normally this is done during computeDeadSymbolsAndUpdateIndirectCalls, but can be called standalone when that is not called (e.g. during testing).

Definition at line 1193 of file FunctionImport.cpp.

References updateValueInfoForIndirectCalls().

Referenced by computeDeadSymbolsAndUpdateIndirectCalls().

◆ updateLoopMetadataDebugLocations()

void llvm::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.

Updater is applied to Metadata operand in the MD_loop metadata: the returned value is included in the updated loop metadata node if it is non-null.

Definition at line 425 of file DebugInfo.cpp.

References I, and updateLoopMetadataDebugLocationsImpl().

Referenced by fixupDebugInfoPostExtraction(), fixupLineNumbers(), moveFunctionData(), and stripNonLineTableDebugInfo().

◆ updatePhiNodes()

void llvm::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.

Definition at line 810 of file BasicBlockUtils.cpp.

References assert(), and llvm::BasicBlock::phis().

Referenced by ehAwareSplitEdge(), and rewritePHIsForCleanupPad().

◆ updateProfileCallee()

void llvm::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.

VMap is used during inlinng to also update the new clone

Definition at line 1893 of file InlineFunction.cpp.

References llvm::ValueMap< KeyT, ValueT, Config >::count(), and I.

Referenced by updateCallProfile().

◆ updatePruning()

static bool llvm::updatePruning ( const DWARFDie Die,
CompileUnit CU,
uint64_t  ModulesEndOffset 
)
static

◆ updatePublicTypeTestCalls()

void llvm::updatePublicTypeTestCalls ( Module M,
bool  WholeProgramVisibilityEnabledInLTO 
)

◆ updateRefIncompleteness()

static void llvm::updateRefIncompleteness ( const DWARFDie Die,
CompileUnit CU,
CompileUnit::DIEInfo RefInfo 
)
static

Helper that updates the completeness of the current DIE based on the completeness of the DIEs it references.

It depends on the incompleteness of the referenced DIE already being computed.

Definition at line 657 of file DWARFLinker.cpp.

References llvm::DWARFDie::getTag(), and llvm::dwarf_linker::classic::CompileUnit::DIEInfo::Incomplete.

◆ updateVCallVisibilityInIndex()

void llvm::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).

Definition at line 894 of file WholeProgramDevirt.cpp.

References llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::count(), hasWholeProgramVisibility(), P, llvm::GlobalObject::VCallVisibilityLinkageUnit, and llvm::GlobalObject::VCallVisibilityPublic.

Referenced by llvm::ThinLTOCodeGenerator::run().

◆ updateVCallVisibilityInModule()

void llvm::updateVCallVisibilityInModule ( Module M,
bool  WholeProgramVisibilityEnabledInLTO,
const DenseSet< GlobalValue::GUID > &  DynamicExportSymbols,
bool  ValidateAllVtablesHaveTypeInfos,
function_ref< bool(StringRef)>  IsVisibleToRegularObj 
)

◆ UpgradeARCRuntime()

void llvm::UpgradeARCRuntime ( Module M)

◆ UpgradeAttributes()

void llvm::UpgradeAttributes ( AttrBuilder B)

Upgrade attributes that changed format or kind.

Definition at line 5432 of file AutoUpgrade.cpp.

References A, B, and llvm::StringRef::empty().

◆ UpgradeBitCastExpr()

Constant * llvm::UpgradeBitCastExpr ( 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.

Definition at line 4862 of file AutoUpgrade.cpp.

References llvm::CallingConv::C, Context, llvm::Type::getInt64Ty(), llvm::ConstantExpr::getIntToPtr(), llvm::Type::getPointerAddressSpace(), llvm::ConstantExpr::getPtrToInt(), and llvm::Type::isPtrOrPtrVectorTy().

◆ UpgradeBitCastInst()

Instruction * llvm::UpgradeBitCastInst ( 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.

Definition at line 4840 of file AutoUpgrade.cpp.

References Context, llvm::CastInst::Create(), llvm::Type::getInt64Ty(), llvm::Type::getPointerAddressSpace(), and llvm::Type::isPtrOrPtrVectorTy().

◆ UpgradeCallsToIntrinsic()

void llvm::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.

This should only be run in a post-processing fashion so that it can update all calls to the old function.

Definition at line 4796 of file AutoUpgrade.cpp.

References assert(), F, make_early_inc_range(), UpgradeIntrinsicCall(), and UpgradeIntrinsicFunction().

◆ UpgradeDataLayoutString()

std::string llvm::UpgradeDataLayoutString ( StringRef  DL,
StringRef  Triple 
)

Upgrade the datalayout string by adding a section for address space pointers.

Definition at line 5342 of file AutoUpgrade.cpp.

References DL, llvm::MachineBasicBlock::empty(), Groups, I, llvm::StringRef::npos, and Ref.

◆ UpgradeDebugInfo()

bool llvm::UpgradeDebugInfo ( Module M)

◆ UpgradeFunctionAttributes()

void llvm::UpgradeFunctionAttributes ( Function F)

Correct any IR that is relying on old function attribute behavior.

Definition at line 5258 of file AutoUpgrade.cpp.

References A, F, and llvm::AttributeFuncs::typeIncompatible().

◆ UpgradeGlobalVariable()

GlobalVariable * llvm::UpgradeGlobalVariable ( GlobalVariable GV)

◆ UpgradeInlineAsmString()

void llvm::UpgradeInlineAsmString ( std::string *  AsmStr)

Upgrade comment in call to inline asm that represents an objc retain release marker.

Definition at line 2212 of file AutoUpgrade.cpp.

◆ upgradeInstructionLoopAttachment()

MDNode * llvm::upgradeInstructionLoopAttachment ( MDNode N)

◆ UpgradeIntrinsicCall()

void llvm::UpgradeIntrinsicCall ( CallBase CI,
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.

Upgrade a call to an old intrinsic.

All argument and return casting must be provided to seamlessly integrate with existing context.

Definition at line 2406 of file AutoUpgrade.cpp.

References A, Addr, Aligned, llvm::DIExpression::append(), applyX86MaskOn1BitsVec(), llvm::Function::arg_size(), llvm::CallBase::arg_size(), llvm::CallBase::args(), assert(), B, llvm::CallingConv::C, llvm::IRBuilderBase::CreateAdd(), llvm::IRBuilderBase::CreateAlignedLoad(), llvm::IRBuilderBase::CreateAlignedStore(), llvm::IRBuilderBase::CreateAnd(), llvm::IRBuilderBase::CreateAtomicRMW(), llvm::IRBuilderBase::CreateBitCast(), llvm::IRBuilderBase::CreateCall(), llvm::IRBuilderBase::CreateExtractElement(), llvm::IRBuilderBase::CreateExtractValue(), llvm::IRBuilderBase::CreateFAdd(), llvm::IRBuilderBase::CreateFDiv(), llvm::IRBuilderBase::CreateFMul(), llvm::IRBuilderBase::CreateFNeg(), llvm::IRBuilderBase::CreateFPExt(), llvm::IRBuilderBase::CreateFSub(), llvm::IRBuilderBase::CreateICmp(), llvm::IRBuilderBase::CreateICmpEQ(), llvm::IRBuilderBase::CreateICmpSGE(), llvm::IRBuilderBase::CreateICmpSLE(), llvm::IRBuilderBase::CreateICmpUGE(), llvm::IRBuilderBase::CreateICmpULE(), llvm::IRBuilderBase::CreateInsertElement(), llvm::IRBuilderBase::CreateInsertValue(), llvm::IRBuilderBase::CreateInsertVector(), llvm::IRBuilderBase::CreateIntCast(), llvm::IRBuilderBase::CreateLoad(), llvm::IRBuilderBase::CreateMul(), llvm::IRBuilderBase::CreateNeg(), llvm::IRBuilderBase::CreateNot(), llvm::IRBuilderBase::CreateOr(), llvm::IRBuilderBase::CreatePointerCast(), llvm::IRBuilderBase::CreateSelect(), llvm::IRBuilderBase::CreateSExt(), llvm::IRBuilderBase::CreateShuffleVector(), llvm::IRBuilderBase::CreateSIToFP(), llvm::IRBuilderBase::CreateSub(), llvm::IRBuilderBase::CreateTrunc(), llvm::IRBuilderBase::CreateUIToFP(), llvm::IRBuilderBase::CreateVectorSplat(), llvm::IRBuilderBase::CreateXor(), llvm::IRBuilderBase::CreateZExt(), llvm::StringSwitch< T, R >::Default(), Dynamic, emitX86ScalarSelect(), emitX86Select(), llvm::Instruction::eraseFromParent(), F, llvm::AtomicRMWInst::FAdd, llvm::ConstantAsMetadata::get(), llvm::AttributeList::get(), llvm::ConstantTokenNone::get(), llvm::MDNode::get(), llvm::MetadataAsValue::get(), llvm::FixedVectorType::get(), llvm::PoisonValue::get(), llvm::ConstantAggregateZero::get(), llvm::Constant::getAllOnesValue(), llvm::Function::getArg(), llvm::CallBase::getArgOperand(), llvm::CallBase::getAttributes(), llvm::IRBuilderBase::getBFloatTy(), llvm::Type::getBFloatTy(), llvm::CallBase::getCalledFunction(), llvm::CallBase::getCalledOperand(), llvm::Value::getContext(), llvm::Intrinsic::getDeclaration(), llvm::IRBuilderBase::getFalse(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::Type::getFloatTy(), llvm::AttributeList::getFnAttrs(), llvm::Function::getFunctionType(), llvm::CallBase::getFunctionType(), llvm::Type::getHalfTy(), llvm::IRBuilderBase::getInt16Ty(), llvm::IRBuilderBase::getInt32Ty(), llvm::Type::getInt32Ty(), llvm::Type::getInt64Ty(), llvm::IRBuilderBase::getInt8(), llvm::Type::getInt8Ty(), llvm::Function::getIntrinsicID(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::ScalableVectorType::getMinNumElements(), llvm::Instruction::getModule(), llvm::Value::getName(), llvm::Constant::getNullValue(), llvm::User::getNumOperands(), llvm::User::getOperand(), llvm::Instruction::getParent(), llvm::ConstantExpr::getPointerCast(), llvm::Type::getPrimitiveSizeInBits(), llvm::IRBuilderBase::getPtrTy(), llvm::AttributeList::getRetAttrs(), llvm::Function::getReturnType(), llvm::Type::getScalarSizeInBits(), llvm::Type::getScalarType(), llvm::ShuffleVectorInst::getShuffleMask(), llvm::Value::getType(), getType(), llvm::PointerType::getUnqual(), getX86MaskVec(), High, I, Idx, Intr, llvm::Type::isBFloatTy(), llvm::Type::isIntegerTy(), llvm::Module::IsNewDbgInfoFormat, LHS, llvm_unreachable, N, Name, llvm::Intrinsic::not_intrinsic, Offset, Ptr, llvm::SmallVectorTemplateBase< T, bool >::push_back(), rename(), llvm::Value::replaceAllUsesWith(), RetTy, RHS, llvm::CallBase::setAttributes(), llvm::CallBase::setCalledFunction(), llvm::CallBase::setCalledOperand(), llvm::IRBuilderBase::SetInsertPoint(), llvm::Instruction::setMetadata(), shouldUpgradeNVPTXBF16Intrinsic(), Size, llvm::StringSwitch< T, R >::StartsWith(), std::swap(), llvm::Value::takeName(), upgradeAbs(), upgradeAMDGCNIntrinsicCall(), upgradeARMIntrinsicCall(), upgradeAVX512MaskToSelect(), upgradeDbgIntrinsicToDbgRecord(), upgradeIntrinsicFunction1(), upgradeMaskedCompare(), upgradeMaskedLoad(), upgradeMaskedMove(), upgradeMaskedStore(), upgradeMaskToInt(), upgradePMULDQ(), upgradeX86ALIGNIntrinsics(), upgradeX86BinaryIntrinsics(), upgradeX86ConcatShift(), upgradeX86MaskedShift(), upgradeX86PSLLDQIntrinsics(), upgradeX86PSRLDQIntrinsics(), upgradeX86Rotate(), upgradeX86vpcom(), and upgradeX86VPERMT2Intrinsics().

Referenced by UpgradeCallsToIntrinsic().

◆ UpgradeIntrinsicFunction()

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

It may return null in NewFn if the all calls to the original intrinsic function should be transformed to non-function-call instructions.

Definition at line 1418 of file AutoUpgrade.cpp.

References assert(), F, llvm::Intrinsic::getAttributes(), and upgradeIntrinsicFunction1().

Referenced by UpgradeCallsToIntrinsic().

◆ UpgradeModuleFlags()

bool llvm::UpgradeModuleFlags ( Module M)

◆ UpgradeOperandBundles()

void llvm::UpgradeOperandBundles ( std::vector< OperandBundleDef > &  OperandBundles)

Upgrade operand bundles (without knowing about their user instruction).

Definition at line 5459 of file AutoUpgrade.cpp.

References erase_if(), llvm::OperandBundleDefT< InputTy >::getTag(), and llvm::OperandBundleDefT< InputTy >::inputs().

◆ UpgradeSectionAttributes()

void llvm::UpgradeSectionAttributes ( Module M)

Definition at line 5201 of file AutoUpgrade.cpp.

References OS.

◆ UpgradeTBAANode()

MDNode * llvm::UpgradeTBAANode ( 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.

Otherwise return the TBAANode itself.

Definition at line 4814 of file AutoUpgrade.cpp.

References Context, llvm::ConstantAsMetadata::get(), llvm::MDNode::get(), llvm::MDNode::getContext(), llvm::Type::getInt64Ty(), llvm::Constant::getNullValue(), llvm::MDNode::getNumOperands(), and llvm::MDNode::getOperand().

Referenced by llvm::MetadataLoader::MetadataLoaderImpl::parseMetadataAttachment().

◆ upper_bound() [1/2]

template<typename R , typename T >
auto llvm::upper_bound ( R &&  Range,
T &&  Value 
)

Provide wrappers to std::upper_bound which take ranges instead of having to pass begin/end explicitly.

Definition at line 1967 of file STLExtras.h.

References adl_begin(), and adl_end().

Referenced by llvm::pdb::UDTLayoutBase::addChildToLayout(), llvm::DWARFUnitVector::addUnit(), getUnitForOffset(), llvm::AddressRanges::insert(), SortNonLocalDepInfoCache(), and llvm::object::ELFFile< ELFT >::toMappedAddr().

◆ upper_bound() [2/2]

template<typename R , typename T , typename Compare >
auto llvm::upper_bound ( R &&  Range,
T &&  Value,
Compare  C 
)

Definition at line 1973 of file STLExtras.h.

References adl_begin(), adl_end(), and llvm::CallingConv::C.

◆ upward_defs()

iterator_range< upward_defs_iterator > llvm::upward_defs ( const MemoryAccessPair Pair,
DominatorTree DT 
)
inline

Definition at line 1302 of file MemorySSA.h.

References make_range(), upward_defs_begin(), and upward_defs_end().

◆ upward_defs_begin()

upward_defs_iterator llvm::upward_defs_begin ( const MemoryAccessPair Pair,
DominatorTree DT 
)
inline

Definition at line 1295 of file MemorySSA.h.

Referenced by checkClobberSanity(), and upward_defs().

◆ upward_defs_end()

upward_defs_iterator llvm::upward_defs_end ( )
inline

Definition at line 1299 of file MemorySSA.h.

Referenced by checkClobberSanity(), and upward_defs().

◆ UseContextLessSummary()

cl::opt< bool > llvm::UseContextLessSummary ( "profile-summary-contextless"  ,
cl::Hidden  ,
cl::desc("Merge context profiles before calculating thresholds.")   
)

◆ UseIterativeBFIInference()

cl::opt< bool > llvm::UseIterativeBFIInference ( "use-iterative-bfi-inference"  ,
cl::Hidden  ,
cl::desc("Apply an iterative post-processing to infer correct BFI counts")   
)

◆ UseSegmentSetForPhysRegs()

cl::opt< bool > llvm::UseSegmentSetForPhysRegs ( "use-segment-set-for-physregs"  ,
cl::Hidden  ,
cl::init(true ,
cl::desc("Use segment set for the computation of the live ranges of physregs.")   
)

◆ useUniversalCRT()

bool llvm::useUniversalCRT ( ToolsetLayout  VSLayout,
const std::string &  VCToolChainPath,
llvm::Triple::ArchType  TargetArch,
llvm::vfs::FileSystem VFS 
)

◆ val2MImm()

static uint64_t llvm::val2MImm ( uint64_t  Val)
inlinestatic

val2MImm - Convert an integer immediate value to target MImm immediate.

Definition at line 358 of file VE.h.

References countl_one(), and countl_zero().

Referenced by llvm::VEInstrInfo::foldImmediate().

◆ valTypesFromMVTs()

void llvm::valTypesFromMVTs ( ArrayRef< MVT In,
SmallVectorImpl< wasm::ValType > &  Out 
)

◆ valueComesBefore()

static bool llvm::valueComesBefore ( const Value A,
const Value B 
)
static

Definition at line 99 of file PredicateInfo.cpp.

References A, and B.

Referenced by llvm::ValueDFS_Compare::localComesBefore().

◆ ValueIs()

template<class InnerMatcher >
detail::ValueIsMatcher< InnerMatcher > llvm::ValueIs ( const InnerMatcher &  ValueMatcher)

Matches an std::optional<T> with a value that conforms to an inner matcher.

To match std::nullopt you could use Eq(std::nullopt).

Definition at line 104 of file SupportHelpers.h.

◆ VarAndRedzoneSize()

static uint64_t llvm::VarAndRedzoneSize ( uint64_t  Size,
uint64_t  Granularity,
uint64_t  Alignment 
)
static

Definition at line 40 of file ASanStackFrameLayout.cpp.

References alignTo(), and Size.

Referenced by ComputeASanStackFrameLayout().

◆ VCMPOpcodeToVPT()

static unsigned llvm::VCMPOpcodeToVPT ( unsigned  Opcode)
inlinestatic

Definition at line 607 of file ARMBaseInstrInfo.h.

Referenced by findVCMPToFoldIntoVPST(), and IsVCMP().

◆ VCTPOpcodeToLSTP()

static unsigned llvm::VCTPOpcodeToLSTP ( unsigned  Opcode,
bool  IsDoLoop 
)
inlinestatic

Definition at line 25 of file MVETailPredUtils.h.

References llvm_unreachable.

◆ VECondCodeToString()

static const char * llvm::VECondCodeToString ( VECC::CondCode  CC)
inlinestatic

◆ VECondCodeToVal()

static unsigned llvm::VECondCodeToVal ( VECC::CondCode  CC)
inlinestatic

◆ VERDToString()

static const char * llvm::VERDToString ( VERD::RoundingMode  R)
inlinestatic

◆ VERDToVal()

static unsigned llvm::VERDToVal ( VERD::RoundingMode  R)
inlinestatic

◆ verifyFunction()

bool llvm::verifyFunction ( const Function F,
raw_ostream OS = nullptr 
)

Check a function for errors, useful for use when debugging a pass.

If there are no errors, the function returns false. If an error is found, a message describing the error is written to OS (if non-null) and true is returned.

Definition at line 7041 of file Verifier.cpp.

References F, OS, and Verifier.

Referenced by llvm::CodeExtractor::extractCodeRegion(), generateReproducer(), llvm::ScalarEvolution::isBasicBlockEntryGuardedByCond(), llvm::ScalarEvolution::isLoopBackedgeGuardedByCond(), LLVMVerifyFunction(), postSplitCleanup(), llvm::LoopVectorizePass::processLoop(), processLoopInVPlanNativePath(), llvm::VerifyInstrumentation::registerCallbacks(), llvm::VerifierAnalysis::run(), and llvm::slpvectorizer::BoUpSLP::~BoUpSLP().

◆ verifyIntrinsicTables()

static void llvm::verifyIntrinsicTables ( )
static

◆ verifyKeepChain()

static void llvm::verifyKeepChain ( CompileUnit CU)
static

Verify the keep chain by looking for DIEs that are kept but who's parent isn't.

Definition at line 952 of file DWARFLinker.cpp.

References llvm::DWARFDie::children(), llvm::WithColor::error(), errs(), formatv(), report_fatal_error(), and reverse().

Referenced by llvm::dwarf_linker::classic::DWARFLinker::link().

◆ verifyMachineFunction()

void llvm::verifyMachineFunction ( const std::string &  Banner,
const MachineFunction MF 
)

Definition at line 350 of file MachineVerifier.cpp.

References report_fatal_error().

◆ verifyModule()

bool llvm::verifyModule ( const Module M,
raw_ostream OS = nullptr,
bool BrokenDebugInfo = nullptr 
)

Check a module for errors.

If there are no errors, the function returns false. If an error is found, a message describing the error is written to OS (if non-null) and true is returned.

Returns
true if the module is broken. If BrokenDebugInfo is supplied, DebugInfo verification failures won't be considered as error and instead *BrokenDebugInfo will be set to true. Debug info errors can be "recovered" from by stripping the debug info.

Definition at line 7052 of file Verifier.cpp.

References F, OS, and Verifier.

Referenced by LLVMVerifyModule(), parseAndVerify(), llvm::VerifyInstrumentation::registerCallbacks(), llvm::VerifierAnalysis::run(), and UpgradeDebugInfo().

◆ verifySafepointIR()

void llvm::verifySafepointIR ( Function F)

Run the safepoint verifier over a single function. Crashes on failure.

Definition at line 236 of file SafepointIRVerifier.cpp.

References F, and pass.

◆ VerifyScheduling()

cl::opt< bool > llvm::VerifyScheduling ( "verify-misched"  ,
cl::Hidden  ,
cl::desc("Verify machine instrs before and after machine scheduling")   
)

◆ verifyVPlanIsValid()

bool llvm::verifyVPlanIsValid ( const VPlan Plan)

Verify invariants for general VPlans.

Currently it checks the following:

  1. Region/Block verification: Check the Region/Block verification invariants for every region in the H-CFG.
  2. all phi-like recipes must be at the beginning of a block, with no other recipes in between. Note that currently there is still an exception for VPBlendRecipes.

Definition at line 293 of file VPlanVerifier.cpp.

References any_of(), llvm::VPInstruction::BranchOnCond, llvm::VPInstruction::BranchOnCount, llvm::VPBasicBlock::empty(), llvm::VPBasicBlock::end(), errs(), llvm::VPlan::getEntry(), llvm::VPRegionBlock::getEntry(), llvm::VPRegionBlock::getExiting(), llvm::VPlan::getLiveOuts(), llvm::VPBlockBase::getParent(), llvm::VPlan::getVectorLoopRegion(), llvm::DominatorTreeBase< NodeT, IsPostDom >::recalculate(), verifyRegionRec(), and vp_depth_first_shallow().

◆ versionCallSite()

CallBase & llvm::versionCallSite ( CallBase CB,
Value Callee,
MDNode BranchWeights 
)

Predicate and clone the given call site.

This function creates an if-then-else structure at the location of the call site. The "if" condition compares the call site's called value to the given callee. The original call site is moved into the "else" block, and a clone of the call site is placed in the "then" block. The cloned instruction is returned.

This function creates an if-then-else structure at the location of the call site. The "if" condition compares the call site's called value to the given callee. The original call site is moved into the "else" block, and a clone of the call site is placed in the "then" block. The cloned instruction is returned.

For example, the call instruction below:

orig_bb: t0 = call i32 ptr() ...

Is replace by the following:

orig_bb: cond = icmp eq i32 ()* ptr, @func br i1 cond, then_bb, else_bb

then_bb: ; The clone of the original call instruction is placed in the "then" ; block. It is not yet promoted. t1 = call i32 ptr() br merge_bb

else_bb: ; The original call instruction is moved to the "else" block. t0 = call i32 ptr() br merge_bb

merge_bb: ; Uses of the original call instruction are replaced by uses of the phi ; node. t2 = phi i32 [ t0, else_bb ], [ t1, then_bb ] ...

A similar transformation is performed for invoke instructions. However, since invokes are terminating, more work is required. For example, the invoke instruction below:

orig_bb: t0 = invoke ptr() to label normal_dst unwind label unwind_dst

Is replace by the following:

orig_bb: cond = icmp eq i32 ()* ptr, @func br i1 cond, then_bb, else_bb

then_bb: ; The clone of the original invoke instruction is placed in the "then" ; block, and its normal destination is set to the "merge" block. It is ; not yet promoted. t1 = invoke i32 ptr() to label merge_bb unwind label unwind_dst

else_bb: ; The original invoke instruction is moved into the "else" block, and ; its normal destination is set to the "merge" block. t0 = invoke i32 ptr() to label merge_bb unwind label unwind_dst

merge_bb: ; Uses of the original invoke instruction are replaced by uses of the ; phi node, and the merge block branches to the normal destination. t2 = phi i32 [ t0, else_bb ], [ t1, then_bb ] br normal_dst

An indirect musttail call is processed slightly differently in that:

  1. No merge block needed for the orginal and the cloned callsite, since either one ends the flow. No phi node is needed either.
  2. The return statement following the original call site is duplicated too and placed immediately after the cloned call site per the IR convention.

For example, the musttail call instruction below:

orig_bb: t0 = musttail call i32 ptr() ...

Is replaced by the following:

cond_bb: cond = icmp eq i32 ()* ptr, @func br i1 cond, then_bb, orig_bb

then_bb: ; The clone of the original call instruction is placed in the "then" ; block. It is not yet promoted. t1 = musttail call i32 ptr() ret t1

orig_bb: ; The original call instruction stays in its original block. t0 = musttail call i32 ptr() ret t0

Definition at line 283 of file CallPromotionUtils.cpp.

References assert(), llvm::Instruction::clone(), Cond, llvm::IRBuilderBase::CreateBitCast(), llvm::IRBuilderBase::CreateBr(), llvm::IRBuilderBase::CreateICmpEQ(), createRetPHINode(), llvm::Instruction::eraseFromParent(), fixupPHINodeForNormalDest(), fixupPHINodeForUnwindDest(), llvm::CallBase::getCalledOperand(), llvm::ilist_node_with_parent< NodeTy, ParentTy, Options >::getNextNode(), llvm::Instruction::getParent(), llvm::Value::getType(), llvm::Instruction::insertBefore(), llvm::CallBase::isMustTailCall(), llvm::Instruction::moveBefore(), llvm::IRBuilderBase::SetInsertPoint(), llvm::Value::setName(), SplitBlockAndInsertIfThen(), and SplitBlockAndInsertIfThenElse().

Referenced by promoteCallWithIfThenElse().

◆ VEValToCondCode()

static VECC::CondCode llvm::VEValToCondCode ( unsigned  Val,
bool  IsInteger 
)
inlinestatic

◆ VEValToRD()

static VERD::RoundingMode llvm::VEValToRD ( unsigned  Val)
inlinestatic

◆ ViewGraph()

template<typename GraphType >
void llvm::ViewGraph ( const GraphType &  G,
const Twine Name,
bool  ShortNames = false,
const Twine Title = "",
GraphProgram::Name  Program = GraphProgram::DOT 
)

◆ viewGraphForFunction()

template<typename GraphT >
void llvm::viewGraphForFunction ( Function F,
GraphT  Graph,
StringRef  Name,
bool  IsSimple 
)

◆ ViewMISchedDAGs()

cl::opt< bool > llvm::ViewMISchedDAGs ( "view-misched-dags"  ,
cl::Hidden  ,
cl::desc("Pop up a window to show MISched dags after they are processed")   
)

◆ viewRegion() [1/2]

void llvm::viewRegion ( const llvm::Function F)

Analyze the regions of a function and open its GraphViz visualization in a viewer.

Useful to call in the debugger. Includes the instructions in each BasicBlock. The result of a new analysis may differ from the RegionInfo the pass manager currently holds.

Parameters
FFunction to analyze.

Definition at line 246 of file RegionPrinter.cpp.

References createRegionViewerPass(), F, and invokeFunctionPass().

◆ viewRegion() [2/2]

void llvm::viewRegion ( llvm::RegionInfo RI)

Open a viewer to display the GraphViz vizualization of the analysis result.

Practical to call in the debugger. Includes the instructions in each BasicBlock.

Parameters
RIThe analysis to display.

Definition at line 244 of file RegionPrinter.cpp.

References viewRegionInfo().

Referenced by llvm::RegionInfo::view().

◆ viewRegionOnly() [1/2]

void llvm::viewRegionOnly ( const llvm::Function F)

Analyze the regions of a function and open its GraphViz visualization in a viewer.

Useful to call in the debugger. Shows only the BasicBlock names without their instructions. The result of a new analysis may differ from the RegionInfo the pass manager currently holds.

Parameters
FFunction to analyze.

Definition at line 252 of file RegionPrinter.cpp.

References createRegionOnlyViewerPass(), F, and invokeFunctionPass().

◆ viewRegionOnly() [2/2]

void llvm::viewRegionOnly ( llvm::RegionInfo RI)

Open a viewer to display the GraphViz vizualization of the analysis result.

Useful to call in the debugger. Shows only the BasicBlock names without their instructions.

Parameters
RIThe analysis to display.

Definition at line 250 of file RegionPrinter.cpp.

References viewRegionInfo().

Referenced by llvm::RegionInfo::viewOnly().

◆ visitAll()

template<typename SV >
void llvm::visitAll ( const SCEV Root,
SV &  Visitor 
)

◆ vp_depth_first_deep() [1/2]

iterator_range< df_iterator< VPBlockDeepTraversalWrapper< const VPBlockBase * > > > llvm::vp_depth_first_deep ( const VPBlockBase G)
inline

Definition at line 231 of file VPlanCFG.h.

References depth_first(), and G.

◆ vp_depth_first_deep() [2/2]

iterator_range< df_iterator< VPBlockDeepTraversalWrapper< VPBlockBase * > > > llvm::vp_depth_first_deep ( VPBlockBase G)
inline

Returns an iterator range to traverse the graph starting at G in depth-first order while traversing through region blocks.

Definition at line 226 of file VPlanCFG.h.

References depth_first(), and G.

Referenced by addReplicateRegions(), llvm::InnerLoopVectorizer::fixNonInductionPHIs(), mergeBlocksIntoPredecessors(), mergeReplicateRegionsIntoSuccessors(), sinkScalarOperands(), and llvm::VPlanTransforms::truncateToMinimalBitwidths().

◆ vp_depth_first_shallow() [1/2]

iterator_range< df_iterator< VPBlockShallowTraversalWrapper< const VPBlockBase * > > > llvm::vp_depth_first_shallow ( const VPBlockBase G)
inline

Definition at line 219 of file VPlanCFG.h.

References depth_first(), and G.

◆ vp_depth_first_shallow() [2/2]

iterator_range< df_iterator< VPBlockShallowTraversalWrapper< VPBlockBase * > > > llvm::vp_depth_first_shallow ( VPBlockBase G)
inline

Returns an iterator range to traverse the graph starting at G in depth-first order.

The iterator won't traverse through region blocks.

Definition at line 214 of file VPlanCFG.h.

References depth_first(), and G.

Referenced by llvm::VPRegionBlock::clone(), llvm::VPBlockBase::deleteCFG(), llvm::VPRegionBlock::dropAllReferences(), llvm::VPlanPrinter::dump(), llvm::VPlan::execute(), llvm::VPlan::print(), llvm::VPRegionBlock::print(), verifyBlocksInRegion(), verifyRegionRec(), verifyVPlanIsValid(), and llvm::VPlan::~VPlan().

◆ widenShuffleMaskElts()

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

If all mask elements that would map to a wider element of the new mask are the same negative number (sentinel value), that element of the new mask is the same value. If any element in a given slice is negative and some other element in that slice is not the same value, return false (partial matches with sentinel values are not allowed).

Example with Scale = 4: <16 x i8> <12, 13, 14, 15, 8, 9, 10, 11, 0, 1, 2, 3, -1, -1, -1, -1> --> <4 x i32> <3, 2, 0, -1>

This is the reverse process of narrowing shuffle mask elements if it succeeds. This transform is not always possible because indexes may not divide evenly (scale down) to map to wider vector elements.

Definition at line 368 of file VectorUtils.cpp.

References all_equal(), assert(), llvm::SmallVectorImpl< T >::assign(), llvm::SmallVectorImpl< T >::clear(), llvm::ArrayRef< T >::front(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorImpl< T >::reserve(), llvm::ArrayRef< T >::size(), and llvm::SmallVectorBase< Size_T >::size().

Referenced by combineShuffleOfBitcast(), getShuffleMaskWithWidestElts(), and llvm::InstCombinerImpl::visitShuffleVectorInst().

◆ widenWidenableBranch()

void llvm::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.

Branch remains widenable after transform.

Definition at line 82 of file GuardUtils.cpp.

References assert(), B, llvm::CallingConv::C, llvm::BranchInst::getCondition(), isWidenableBranch(), llvm::Instruction::moveBefore(), parseWidenableBranch(), and llvm::BranchInst::setCondition().

◆ wouldInstructionBeTriviallyDead()

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

This is equivalent to checking whether isInstructionTriviallyDead would be true if the use count was 0.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 418 of file Local.cpp.

References all_of(), llvm::CallingConv::C, Cond, llvm::fp::ebStrict, getFreedOperand(), I, isAssumeWithEmptyBundle(), isMathLibCallNoop(), and isRemovableAlloc().

Referenced by bitTrackingDCE(), canRemoveInstruction(), isInstructionTriviallyDead(), simplifyTerminatorLeadingToRet(), wouldInstructionBeTriviallyDeadOnUnusedPaths(), and llvm::slpvectorizer::BoUpSLP::~BoUpSLP().

◆ wouldInstructionBeTriviallyDeadOnUnusedPaths()

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

This is less conservative than wouldInstructionBeTriviallyDead which is based on the assumption that the use count will be 0. An example usage of this API is for identifying instructions that can be sunk down to use(s).

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Definition at line 406 of file Local.cpp.

References I, and wouldInstructionBeTriviallyDead().

◆ wrap() [1/7]

LLVMAttributeRef llvm::wrap ( Attribute  Attr)
inline

Definition at line 298 of file Attributes.h.

References llvm::Attribute::getRawPointer().

Referenced by getMDNodeOperandImpl(), if(), llvm_getMetadata(), LLVMAddAlias2(), LLVMAddFunction(), LLVMAddGlobal(), LLVMAddGlobalIFunc(), LLVMAddGlobalInAddressSpace(), LLVMAliasGetAliasee(), LLVMAlignOf(), LLVMAppendBasicBlockInContext(), LLVMArrayType(), LLVMArrayType2(), LLVMBasicBlockAsValue(), LLVMBlockAddress(), LLVMBuildAdd(), LLVMBuildAddrSpaceCast(), LLVMBuildAggregateRet(), LLVMBuildAlloca(), LLVMBuildAnd(), LLVMBuildArrayAlloca(), LLVMBuildArrayMalloc(), LLVMBuildAShr(), LLVMBuildAtomicCmpXchg(), LLVMBuildAtomicRMW(), LLVMBuildBinOp(), LLVMBuildBitCast(), LLVMBuildBr(), LLVMBuildCall2(), LLVMBuildCallWithOperandBundles(), LLVMBuildCast(), LLVMBuildCatchPad(), LLVMBuildCatchRet(), LLVMBuildCatchSwitch(), LLVMBuildCleanupPad(), LLVMBuildCleanupRet(), LLVMBuildCondBr(), LLVMBuilderGetDefaultFPMathTag(), LLVMBuildExactSDiv(), LLVMBuildExactUDiv(), LLVMBuildExtractElement(), LLVMBuildExtractValue(), LLVMBuildFAdd(), LLVMBuildFCmp(), LLVMBuildFDiv(), LLVMBuildFence(), LLVMBuildFMul(), LLVMBuildFNeg(), LLVMBuildFPCast(), LLVMBuildFPExt(), LLVMBuildFPToSI(), LLVMBuildFPToUI(), LLVMBuildFPTrunc(), LLVMBuildFree(), LLVMBuildFreeze(), LLVMBuildFRem(), LLVMBuildFSub(), LLVMBuildGEP2(), LLVMBuildGlobalString(), LLVMBuildGlobalStringPtr(), LLVMBuildICmp(), LLVMBuildInBoundsGEP2(), LLVMBuildIndirectBr(), LLVMBuildInsertElement(), LLVMBuildInsertValue(), LLVMBuildIntCast(), LLVMBuildIntCast2(), LLVMBuildIntToPtr(), LLVMBuildInvoke2(), LLVMBuildInvokeWithOperandBundles(), LLVMBuildIsNotNull(), LLVMBuildIsNull(), LLVMBuildLandingPad(), LLVMBuildLoad2(), LLVMBuildLShr(), LLVMBuildMalloc(), LLVMBuildMemCpy(), LLVMBuildMemMove(), LLVMBuildMemSet(), LLVMBuildMul(), LLVMBuildNeg(), LLVMBuildNot(), LLVMBuildNSWAdd(), LLVMBuildNSWMul(), LLVMBuildNSWNeg(), LLVMBuildNSWSub(), LLVMBuildNUWAdd(), LLVMBuildNUWMul(), LLVMBuildNUWNeg(), LLVMBuildNUWSub(), LLVMBuildOr(), LLVMBuildPhi(), LLVMBuildPointerCast(), LLVMBuildPtrDiff2(), LLVMBuildPtrToInt(), LLVMBuildResume(), LLVMBuildRet(), LLVMBuildRetVoid(), LLVMBuildSDiv(), LLVMBuildSelect(), LLVMBuildSExt(), LLVMBuildSExtOrBitCast(), LLVMBuildShl(), LLVMBuildShuffleVector(), LLVMBuildSIToFP(), LLVMBuildSRem(), LLVMBuildStore(), LLVMBuildStructGEP2(), LLVMBuildSub(), LLVMBuildSwitch(), LLVMBuildTrunc(), LLVMBuildTruncOrBitCast(), LLVMBuildUDiv(), LLVMBuildUIToFP(), LLVMBuildUnreachable(), LLVMBuildURem(), LLVMBuildVAArg(), LLVMBuildXor(), LLVMBuildZExt(), LLVMBuildZExtOrBitCast(), LLVMCloneModule(), LLVMConstAdd(), LLVMConstAddrSpaceCast(), LLVMConstAllOnes(), LLVMConstArray(), LLVMConstArray2(), LLVMConstBitCast(), LLVMConstExtractElement(), LLVMConstFCmp(), LLVMConstGEP2(), LLVMConstICmp(), LLVMConstInBoundsGEP2(), LLVMConstInlineAsm(), LLVMConstInsertElement(), LLVMConstInt(), LLVMConstIntOfArbitraryPrecision(), LLVMConstIntOfString(), LLVMConstIntOfStringAndSize(), LLVMConstIntToPtr(), LLVMConstMul(), LLVMConstNamedStruct(), LLVMConstNeg(), LLVMConstNot(), LLVMConstNSWAdd(), LLVMConstNSWMul(), LLVMConstNSWNeg(), LLVMConstNSWSub(), LLVMConstNull(), LLVMConstNUWAdd(), LLVMConstNUWMul(), LLVMConstNUWNeg(), LLVMConstNUWSub(), LLVMConstPointerCast(), LLVMConstPointerNull(), LLVMConstPtrToInt(), LLVMConstReal(), LLVMConstRealOfString(), LLVMConstRealOfStringAndSize(), LLVMConstShl(), LLVMConstShuffleVector(), LLVMConstStringInContext(), LLVMConstStringInContext2(), LLVMConstStructInContext(), LLVMConstSub(), LLVMConstTrunc(), LLVMConstTruncOrBitCast(), LLVMConstVector(), LLVMConstXor(), LLVMContextCreate(), LLVMCopyModuleFlagsMetadata(), LLVMCreateBasicBlockInContext(), LLVMCreateBuilderInContext(), LLVMCreateDIBuilder(), LLVMCreateDIBuilderDisallowUnresolved(), LLVMCreateEnumAttribute(), LLVMCreateFunctionPassManagerForModule(), LLVMCreateGDBRegistrationListener(), LLVMCreateIntelJITEventListener(), LLVMCreateMemoryBufferWithContentsOfFile(), LLVMCreateMemoryBufferWithMemoryRange(), LLVMCreateMemoryBufferWithMemoryRangeCopy(), LLVMCreateMemoryBufferWithSTDIN(), LLVMCreateOperandBundle(), LLVMCreateOProfileJITEventListener(), LLVMCreatePassBuilderOptions(), LLVMCreatePassManager(), LLVMCreatePerfJITEventListener(), LLVMCreateStringAttribute(), LLVMCreateTypeAttribute(), LLVMDIBuilderCreateArrayType(), LLVMDIBuilderCreateArtificialType(), LLVMDIBuilderCreateAutoVariable(), LLVMDIBuilderCreateBasicType(), LLVMDIBuilderCreateBitFieldMemberType(), LLVMDIBuilderCreateClassType(), LLVMDIBuilderCreateCompileUnit(), LLVMDIBuilderCreateConstantValueExpression(), LLVMDIBuilderCreateDebugLocation(), LLVMDIBuilderCreateEnumerationType(), LLVMDIBuilderCreateEnumerator(), LLVMDIBuilderCreateExpression(), LLVMDIBuilderCreateFile(), LLVMDIBuilderCreateForwardDecl(), LLVMDIBuilderCreateFunction(), LLVMDIBuilderCreateGlobalVariableExpression(), LLVMDIBuilderCreateImportedDeclaration(), LLVMDIBuilderCreateImportedModuleFromAlias(), LLVMDIBuilderCreateImportedModuleFromModule(), LLVMDIBuilderCreateImportedModuleFromNamespace(), LLVMDIBuilderCreateInheritance(), LLVMDIBuilderCreateLexicalBlock(), LLVMDIBuilderCreateLexicalBlockFile(), LLVMDIBuilderCreateMacro(), LLVMDIBuilderCreateMemberPointerType(), LLVMDIBuilderCreateMemberType(), LLVMDIBuilderCreateModule(), LLVMDIBuilderCreateNameSpace(), LLVMDIBuilderCreateNullPtrType(), LLVMDIBuilderCreateObjCIVar(), LLVMDIBuilderCreateObjCProperty(), LLVMDIBuilderCreateObjectPointerType(), LLVMDIBuilderCreateParameterVariable(), LLVMDIBuilderCreatePointerType(), LLVMDIBuilderCreateQualifiedType(), LLVMDIBuilderCreateReferenceType(), LLVMDIBuilderCreateReplaceableCompositeType(), LLVMDIBuilderCreateStaticMemberType(), LLVMDIBuilderCreateStructType(), LLVMDIBuilderCreateSubroutineType(), LLVMDIBuilderCreateTempGlobalVariableFwdDecl(), LLVMDIBuilderCreateTempMacroFile(), LLVMDIBuilderCreateTypedef(), LLVMDIBuilderCreateUnionType(), LLVMDIBuilderCreateUnspecifiedType(), LLVMDIBuilderCreateVectorType(), LLVMDIBuilderGetOrCreateArray(), LLVMDIBuilderGetOrCreateSubrange(), LLVMDIBuilderGetOrCreateTypeArray(), LLVMDIBuilderInsertDbgValueIntrinsicAtEnd(), LLVMDIBuilderInsertDbgValueIntrinsicBefore(), LLVMDIBuilderInsertDbgValueRecordAtEnd(), LLVMDIBuilderInsertDbgValueRecordBefore(), LLVMDIBuilderInsertDeclareIntrinsicAtEnd(), LLVMDIBuilderInsertDeclareIntrinsicBefore(), LLVMDIBuilderInsertDeclareRecordAtEnd(), LLVMDIBuilderInsertDeclareRecordBefore(), LLVMDIGlobalVariableExpressionGetExpression(), LLVMDIGlobalVariableExpressionGetVariable(), LLVMDILocationGetInlinedAt(), LLVMDILocationGetScope(), LLVMDIScopeGetFile(), LLVMDIVariableGetFile(), LLVMDIVariableGetScope(), LLVMFunctionType(), LLVMGetAggregateElement(), LLVMGetAllocatedType(), LLVMGetArgOperand(), LLVMGetAttributesAtIndex(), LLVMGetBasicBlockParent(), LLVMGetBasicBlocks(), LLVMGetBasicBlockTerminator(), LLVMGetBitcodeModuleInContext(), LLVMGetBitcodeModuleInContext2(), LLVMGetBlockAddressBasicBlock(), LLVMGetBlockAddressFunction(), LLVMGetCalledFunctionType(), LLVMGetCalledValue(), LLVMGetCallSiteAttributes(), LLVMGetCallSiteEnumAttribute(), LLVMGetCallSiteStringAttribute(), LLVMGetClause(), LLVMGetComdat(), LLVMGetCondition(), LLVMGetCurrentDebugLocation(), LLVMGetCurrentDebugLocation2(), LLVMGetElementAsConstant(), LLVMGetElementType(), LLVMGetEntryBasicBlock(), LLVMGetEnumAttributeAtIndex(), LLVMGetFirstBasicBlock(), LLVMGetFirstFunction(), LLVMGetFirstGlobal(), LLVMGetFirstGlobalAlias(), LLVMGetFirstGlobalIFunc(), LLVMGetFirstInstruction(), LLVMGetFirstNamedMetadata(), LLVMGetFirstParam(), LLVMGetFirstUse(), LLVMGetGEPSourceElementType(), LLVMGetGlobalContext(), LLVMGetGlobalIFuncResolver(), LLVMGetGlobalParent(), LLVMGetHandlers(), LLVMGetIncomingBlock(), LLVMGetIncomingValue(), LLVMGetInitializer(), LLVMGetInlineAsm(), LLVMGetInsertBlock(), LLVMGetInstructionParent(), LLVMGetIntrinsicDeclaration(), LLVMGetLastBasicBlock(), LLVMGetLastFunction(), LLVMGetLastGlobal(), LLVMGetLastGlobalAlias(), LLVMGetLastGlobalIFunc(), LLVMGetLastInstruction(), LLVMGetLastNamedMetadata(), LLVMGetLastParam(), LLVMGetMDNodeOperands(), LLVMGetMetadata(), LLVMGetModuleContext(), LLVMGetModuleFlag(), LLVMGetNamedFunction(), LLVMGetNamedGlobal(), LLVMGetNamedGlobalAlias(), LLVMGetNamedGlobalIFunc(), LLVMGetNamedMetadata(), LLVMGetNamedMetadataOperands(), LLVMGetNextBasicBlock(), LLVMGetNextFunction(), LLVMGetNextGlobal(), LLVMGetNextGlobalAlias(), LLVMGetNextGlobalIFunc(), LLVMGetNextInstruction(), LLVMGetNextNamedMetadata(), LLVMGetNextParam(), LLVMGetNextUse(), LLVMGetNormalDest(), LLVMGetOperand(), LLVMGetOperandBundleArgAtIndex(), LLVMGetOperandBundleAtIndex(), LLVMGetOperandUse(), LLVMGetOrInsertComdat(), LLVMGetOrInsertNamedMetadata(), LLVMGetParam(), LLVMGetParamParent(), LLVMGetParams(), LLVMGetParamTypes(), LLVMGetParentCatchSwitch(), LLVMGetPersonalityFn(), LLVMGetPoison(), LLVMGetPrefixData(), LLVMGetPreviousBasicBlock(), LLVMGetPreviousFunction(), LLVMGetPreviousGlobal(), LLVMGetPreviousGlobalAlias(), LLVMGetPreviousGlobalIFunc(), LLVMGetPreviousInstruction(), LLVMGetPreviousNamedMetadata(), LLVMGetPreviousParam(), LLVMGetPrologueData(), LLVMGetReturnType(), LLVMGetStringAttributeAtIndex(), LLVMGetStructElementTypes(), LLVMGetSubprogram(), LLVMGetSubtypes(), LLVMGetSuccessor(), LLVMGetSwitchDefaultDest(), LLVMGetTypeAttributeValue(), LLVMGetTypeByName(), LLVMGetTypeByName2(), LLVMGetTypeContext(), LLVMGetUndef(), LLVMGetUnwindDest(), LLVMGetUsedValue(), LLVMGetUser(), LLVMGlobalGetValueType(), LLVMInsertBasicBlockInContext(), LLVMInstructionClone(), LLVMInstructionGetDebugLoc(), LLVMIntrinsicGetType(), LLVMIntTypeInContext(), LLVMIsATerminatorInst(), LLVMLabelTypeInContext(), LLVMMDNodeInContext(), LLVMMDNodeInContext2(), LLVMMDStringInContext(), LLVMMDStringInContext2(), LLVMMetadataAsValue(), LLVMMetadataTypeInContext(), LLVMModuleCreateWithName(), LLVMModuleCreateWithNameInContext(), LLVMOrcLLJITEnableDebugSupport(), LLVMParseBitcodeInContext(), LLVMParseBitcodeInContext2(), LLVMParseIRInContext(), LLVMPointerType(), LLVMPointerTypeInContext(), LLVMRemarkArgGetDebugLoc(), LLVMRemarkArgGetKey(), LLVMRemarkArgGetValue(), LLVMRemarkDebugLocGetSourceFilePath(), LLVMRemarkEntryGetDebugLoc(), LLVMRemarkEntryGetFunctionName(), LLVMRemarkEntryGetPassName(), LLVMRemarkEntryGetRemarkName(), LLVMRemarkParserCreateBitstream(), LLVMRemarkParserCreateYAML(), LLVMRemarkParserGetNext(), LLVMScalableVectorType(), LLVMSizeOf(), LLVMStructCreateNamed(), LLVMStructGetTypeAtIndex(), LLVMStructTypeInContext(), LLVMTargetExtTypeInContext(), LLVMTemporaryMDNode(), LLVMTokenTypeInContext(), LLVMTypeOf(), LLVMValueAsBasicBlock(), LLVMValueAsMetadata(), LLVMVectorType(), LLVMVoidTypeInContext(), LLVMWriteBitcodeToMemoryBuffer(), LLVMOrcLazyCallThroughManagerRef::OrcCAPIMaterializationUnit::materialize(), parallelForEachError(), and llvm::orc::CAPIDefinitionGenerator::tryToGenerate().

◆ wrap() [2/7]

LLVMCodeModel llvm::wrap ( CodeModel::Model  Model)
inline

◆ wrap() [3/7]

LLVMTargetDataRef llvm::wrap ( const DataLayout P)
inline

Definition at line 616 of file DataLayout.h.

References P.

◆ wrap() [4/7]

LLVMContextRef * llvm::wrap ( const LLVMContext **  Tys)
inline

Definition at line 347 of file LLVMContext.h.

◆ wrap() [5/7]

LLVMValueRef * llvm::wrap ( const Value **  Vals)
inline

Definition at line 1068 of file Value.h.

◆ wrap() [6/7]

LLVMErrorRef llvm::wrap ( Error  Err)
inline

Conversion from Error to LLVMErrorRef for C error bindings.

Definition at line 1413 of file Error.h.

◆ wrap() [7/7]

LLVMTypeRef * llvm::wrap ( Type **  Tys)
inline

Definition at line 522 of file Type.h.

◆ write()

Error llvm::write ( MCStreamer Out,
ArrayRef< std::string >  Inputs,
OnCuIndexOverflow  OverflowOptValue 
)

◆ write32AArch64Addr()

static void llvm::write32AArch64Addr ( void *  T,
uint64_t  s,
uint64_t  p,
int  shift 
)
static

◆ write32AArch64Imm()

static void llvm::write32AArch64Imm ( uint8_t *  T,
uint64_t  imm,
uint32_t  rangeLimit 
)
static

◆ write32AArch64Ldr()

static void llvm::write32AArch64Ldr ( uint8_t *  T,
uint64_t  imm 
)
static

◆ write_double()

void llvm::write_double ( raw_ostream S,
double  D,
FloatStyle  Style,
std::optional< size_t >  Precision = std::nullopt 
)

◆ write_hex()

void llvm::write_hex ( raw_ostream S,
uint64_t  N,
HexPrintStyle  Style,
std::optional< size_t >  Width = std::nullopt 
)

◆ write_integer() [1/6]

void llvm::write_integer ( raw_ostream S,
int  N,
size_t  MinDigits,
IntegerStyle  Style 
)

Definition at line 110 of file NativeFormatting.cpp.

References N, and write_signed().

◆ write_integer() [2/6]

void llvm::write_integer ( raw_ostream S,
long long  N,
size_t  MinDigits,
IntegerStyle  Style 
)

Definition at line 130 of file NativeFormatting.cpp.

References N, and write_signed().

◆ write_integer() [3/6]

void llvm::write_integer ( raw_ostream S,
long  N,
size_t  MinDigits,
IntegerStyle  Style 
)

Definition at line 120 of file NativeFormatting.cpp.

References N, and write_signed().

◆ write_integer() [4/6]

void llvm::write_integer ( raw_ostream S,
unsigned int  N,
size_t  MinDigits,
IntegerStyle  Style 
)

◆ write_integer() [5/6]

void llvm::write_integer ( raw_ostream S,
unsigned long long  N,
size_t  MinDigits,
IntegerStyle  Style 
)

Definition at line 125 of file NativeFormatting.cpp.

References N, and write_unsigned().

◆ write_integer() [6/6]

void llvm::write_integer ( raw_ostream S,
unsigned long  N,
size_t  MinDigits,
IntegerStyle  Style 
)

Definition at line 115 of file NativeFormatting.cpp.

References N, and write_unsigned().

◆ writeArchive()

Error llvm::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 
)

◆ writeArchiveToBuffer()

Expected< std::unique_ptr< MemoryBuffer > > llvm::writeArchiveToBuffer ( ArrayRef< NewArchiveMember NewMembers,
SymtabWritingMode  WriteSymtab,
object::Archive::Kind  Kind,
bool  Deterministic,
bool  Thin 
)

◆ writeArchiveToStream()

static Error llvm::writeArchiveToStream ( raw_ostream Out,
ArrayRef< NewArchiveMember NewMembers,
SymtabWritingMode  WriteSymtab,
object::Archive::Kind  Kind,
bool  Deterministic,
bool  Thin,
std::optional< bool IsEC 
)
static

◆ WriteBitcodeToFile()

void llvm::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.

Write the specified module to the specified output stream.

For streams where it matters, the given stream should be in "binary" mode.

If ShouldPreserveUseListOrder, encode the use-list order for each Value in M. These will be reconstructed exactly when M is deserialized.

If Index is supplied, the bitcode will contain the summary index (currently for use in ThinLTO optimization).

GenerateHash enables hashing the Module and including the hash in the bitcode (currently for use in ThinLTO incremental build).

If ModHash is non-null, when GenerateHash is true, the resulting hash is written into ModHash. When GenerateHash is false, that value is used as the hash instead of computing from the generated bitcode. Can be used to produce the same module hash for a minimized bitcode used just for the thin link as in the regular full bitcode that will be used in the backend.

Definition at line 5046 of file BitcodeWriter.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::begin(), BWH_HeaderSize, emitDarwinBCHeaderAndTrailer(), llvm::SmallVectorBase< Size_T >::empty(), llvm::SmallVectorTemplateCommon< T, typename >::front(), llvm::SmallVectorImpl< T >::insert(), llvm::SmallVectorImpl< T >::reserve(), llvm::SmallVectorBase< Size_T >::size(), llvm::raw_ostream::write(), llvm::BitcodeWriter::writeModule(), llvm::BitcodeWriter::writeStrtab(), and llvm::BitcodeWriter::writeSymtab().

Referenced by llvm::lto::Config::addSaveTemps(), embedBitcodeInModule(), LLVMWriteBitcodeToFD(), LLVMWriteBitcodeToFile(), LLVMWriteBitcodeToMemoryBuffer(), llvm::LTOCodeGenerator::optimize(), llvm::BitcodeWriterPass::run(), splitCodeGen(), splitCodeGen(), llvm::LTOCodeGenerator::writeMergedModules(), and writeModule().

◆ WriteDOTGraphToFile()

template<typename GraphT >
void llvm::WriteDOTGraphToFile ( Function F,
GraphT &&  Graph,
std::string  FileNamePrefix,
bool  IsSimple 
)

◆ WriteGraph() [1/3]

template<typename GraphType >
std::string llvm::WriteGraph ( const GraphType &  G,
const Twine Name,
bool  ShortNames = false,
const Twine Title = "",
std::string  Filename = "" 
)

Writes graph into a provided Filename.

If Filename is empty, generates a random one.

Returns
The resulting filename, or an empty string if writing failed.

Definition at line 378 of file GraphWriter.h.

References llvm::sys::fs::CD_CreateAlways, createGraphFilename(), errs(), G, Name, llvm::sys::fs::OF_Text, llvm::sys::fs::openFileForWrite(), and WriteGraph().

◆ WriteGraph() [2/3]

template<>
raw_ostream & llvm::WriteGraph ( raw_ostream O,
const EdgeBundles G,
bool  ShortNames,
const Twine Title 
)

Specialize WriteGraph, the standard implementation won't work.

Definition at line 75 of file EdgeBundles.cpp.

References G, llvm::MachineBasicBlock::getNumber(), MBB, printMBBReference(), and llvm::MachineBasicBlock::successors().

◆ WriteGraph() [3/3]

template<typename GraphType >
raw_ostream & llvm::WriteGraph ( raw_ostream O,
const GraphType &  G,
bool  ShortNames = false,
const Twine Title = "" 
)

◆ writeIndex()

void llvm::writeIndex ( MCStreamer Out,
MCSection Section,
ArrayRef< unsigned ContributionOffsets,
const MapVector< uint64_t, UnitIndexEntry > &  IndexEntries,
uint32_t  IndexVersion 
)

◆ writeIndexTable()

void llvm::writeIndexTable ( MCStreamer Out,
ArrayRef< unsigned ContributionOffsets,
const MapVector< uint64_t, UnitIndexEntry > &  IndexEntries,
const AccessField Field 
)

Definition at line 457 of file DWP.cpp.

References llvm::MCStreamer::emitIntValue(), I, and Offset.

Referenced by writeIndex().

◆ writeIndexToFile()

void llvm::writeIndexToFile ( const ModuleSummaryIndex Index,
raw_ostream Out,
const std::map< std::string, GVSummaryMapTy > *  ModuleToSummariesForIndex = nullptr 
)

Write the specified module summary index to the given raw output stream, where it will be written in a new bitcode block.

This is used when writing the combined index file for ThinLTO. When writing a subset of the index for a distributed backend, provide the ModuleToSummariesForIndex map.

Definition at line 5091 of file BitcodeWriter.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::front(), llvm::SmallVectorImpl< T >::reserve(), llvm::SmallVectorBase< Size_T >::size(), llvm::raw_ostream::write(), llvm::BitcodeWriter::writeIndex(), and llvm::BitcodeWriter::writeStrtab().

Referenced by llvm::lto::Config::addSaveTemps(), llvm::lto::ThinBackendProc::emitFiles(), and llvm::ThinLTOCodeGenerator::run().

◆ writeModule()

size_t llvm::writeModule ( const Module M,
uint8_t *  Dest,
size_t  MaxSize 
)

Fuzzer friendly interface for the llvm bitcode printer.

Parameters
MModule to print
DestLocation to store serialized module
MaxSizeSize of the destination buffer
Returns
Number of bytes that were written. When module size exceeds MaxSize returns 0 and leaves Dest unchanged.

Definition at line 684 of file IRMutator.cpp.

References OS, and WriteBitcodeToFile().

◆ writeSignedDecimal()

static char * llvm::writeSignedDecimal ( char dst,
int  value 
)
static

Definition at line 837 of file APFloat.cpp.

References value, and writeUnsignedDecimal().

◆ writeStringsAndOffsets()

void llvm::writeStringsAndOffsets ( MCStreamer Out,
DWPStringPool Strings,
MCSection StrOffsetSection,
StringRef  CurStrSection,
StringRef  CurStrOffsetSection,
uint16_t  Version 
)

◆ writeThinLinkBitcodeToFile()

void llvm::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.

The thin link bitcode file is used for thin link, and it only contains the necessary information for thin link.

ModHash is for use in ThinLTO incremental build, generated while the IR bitcode file writing.

Definition at line 5251 of file BitcodeWriter.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::front(), llvm::SmallVectorImpl< T >::reserve(), llvm::SmallVectorBase< Size_T >::size(), llvm::raw_ostream::write(), llvm::BitcodeWriter::writeStrtab(), llvm::BitcodeWriter::writeSymtab(), and llvm::BitcodeWriter::writeThinLinkBitcode().

◆ writeToOutput()

Error llvm::writeToOutput ( StringRef  OutputFileName,
std::function< Error(raw_ostream &)>  Write 
)

This helper creates an output stream and then passes it to Write.

The stream created is based on the specified OutputFileName: llvm::outs for "-", raw_null_ostream for "/dev/null", and raw_fd_ostream for other names. For raw_fd_ostream instances, the stream writes to a temporary file. The final output file is atomically replaced with the temporary file after the Write function is finished.

Definition at line 1009 of file raw_ostream.cpp.

References llvm::sys::fs::all_read, llvm::sys::fs::all_write, llvm::sys::fs::TempFile::create(), createFileError(), E, llvm::raw_ostream::flush(), joinErrors(), Mode, outs(), and llvm::Expected< T >::takeError().

◆ writeUnsignedDecimal()

static char * llvm::writeUnsignedDecimal ( char dst,
unsigned int  n 
)
static

Definition at line 819 of file APFloat.cpp.

Referenced by writeSignedDecimal().

◆ xxh3_64bits() [1/2]

uint64_t llvm::xxh3_64bits ( ArrayRef< uint8_t >  data)

◆ xxh3_64bits() [2/2]

uint64_t llvm::xxh3_64bits ( StringRef  data)
inline

Definition at line 49 of file xxhash.h.

References llvm::StringRef::bytes_begin(), llvm::StringRef::size(), and xxh3_64bits().

◆ xxHash64() [1/2]

uint64_t llvm::xxHash64 ( llvm::ArrayRef< uint8_t >  Data)

Definition at line 147 of file xxhash.cpp.

References xxHash64().

◆ xxHash64() [2/2]

uint64_t llvm::xxHash64 ( llvm::StringRef  Data)

◆ zip()

template<typename T , typename U , typename... Args>
detail::zippy< detail::zip_shortest, T, U, Args... > llvm::zip ( T &&  t,
U &&  u,
Args &&...  args 
)

◆ zip_equal()

template<typename T , typename U , typename... Args>
detail::zippy< detail::zip_first, T, U, Args... > llvm::zip_equal ( T &&  t,
U &&  u,
Args &&...  args 
)

zip iterator that assumes that all iteratees have the same length.

In builds with assertions on, this assumption is checked before the iteration starts.

Definition at line 863 of file STLExtras.h.

References all_equal(), args, assert(), range_size(), and T.

Referenced by llvm::AppleAcceleratorTable::Entry::lookup().

◆ zip_first()

template<typename T , typename U , typename... Args>
detail::zippy< detail::zip_first, T, U, Args... > llvm::zip_first ( T &&  t,
U &&  u,
Args &&...  args 
)

zip iterator that, for the sake of efficiency, assumes the first iteratee to be the shortest.

Iteration continues until the end of the first iteratee is reached. In builds with assertions on, we check that the assumption about the first iteratee being the shortest holds.

Definition at line 876 of file STLExtras.h.

References args, assert(), range_size(), and T.

Referenced by buildClonedLoopBlocks(), llvm::DWARFDebugNames::Entry::dump(), llvm::RegsForValue::getRegsAndSizes(), and llvm::DWARFDebugNames::Entry::lookup().

◆ zip_longest()

template<typename T , typename U , typename... Args>
detail::zip_longest_range< T, U, Args... > llvm::zip_longest ( T &&  t,
U &&  u,
Args &&...  args 
)

Iterate over two or more iterators at the same time.

Iteration continues until all iterators reach the end. The std::optional only contains a value if the iterator has not reached the end.

Definition at line 1004 of file STLExtras.h.

References args, and T.

Variable Documentation

◆ AbortOnMaxDevirtIterationsReached

cl::opt< bool > llvm::AbortOnMaxDevirtIterationsReached("abort-on-max-devirt-iterations-reached", cl::desc("Abort when the max iterations for devirtualization CGSCC repeat " "pass is reached")) ( "abort-on-max-devirt-iterations-reached"  ,
cl::desc("Abort when the max iterations for devirtualization CGSCC repeat " "pass is reached")   
)
static

◆ AIXSystemAssemblerPath

cl::opt< std::string > llvm::AIXSystemAssemblerPath("lto-aix-system-assembler", cl::desc("Path to a system assembler, picked up on AIX only"), cl::value_desc("path")) ( "lto-aix-system-assembler"  ,
cl::desc("Path to a system assembler, picked up on AIX only")  ,
cl::value_desc("path")   
)

◆ AMDGPUAnnotateKernelFeaturesID

char & llvm::AMDGPUAnnotateKernelFeaturesID = AMDGPUAnnotateKernelFeatures::ID
extern

Definition at line 57 of file AMDGPUAnnotateKernelFeatures.cpp.

◆ AMDGPUAnnotateUniformValuesPassID

char& llvm::AMDGPUAnnotateUniformValuesPassID
extern

◆ AMDGPUAtomicOptimizerID

char & llvm::AMDGPUAtomicOptimizerID = AMDGPUAtomicOptimizer::ID
extern

Definition at line 110 of file AMDGPUAtomicOptimizer.cpp.

◆ AMDGPUCodeGenPrepareID

char& llvm::AMDGPUCodeGenPrepareID
extern

◆ AMDGPUCtorDtorLoweringLegacyPassID

char & llvm::AMDGPUCtorDtorLoweringLegacyPassID
extern
Initial value:
=
AMDGPUCtorDtorLoweringLegacy::ID

Definition at line 187 of file AMDGPUCtorDtorLowering.cpp.

◆ AMDGPUFeatureKV

const SubtargetFeatureKV llvm::AMDGPUFeatureKV[AMDGPU::NumSubtargetFeatures - 1]
extern

◆ AMDGPUGlobalISelDivergenceLoweringID

char & llvm::AMDGPUGlobalISelDivergenceLoweringID
extern
Initial value:
=
AMDGPUGlobalISelDivergenceLowering::ID

Definition at line 203 of file AMDGPUGlobalISelDivergenceLowering.cpp.

◆ AMDGPUImageIntrinsicOptimizerID

char& llvm::AMDGPUImageIntrinsicOptimizerID
extern

◆ AMDGPUInsertDelayAluID

char & llvm::AMDGPUInsertDelayAluID = AMDGPUInsertDelayAlu::ID
extern

Definition at line 462 of file AMDGPUInsertDelayAlu.cpp.

◆ AMDGPUInsertSingleUseVDSTID

char & llvm::AMDGPUInsertSingleUseVDSTID = AMDGPUInsertSingleUseVDST::ID
extern

Definition at line 119 of file AMDGPUInsertSingleUseVDST.cpp.

◆ AMDGPULateCodeGenPrepareID

char& llvm::AMDGPULateCodeGenPrepareID
extern

◆ AMDGPULowerBufferFatPointersID

char & llvm::AMDGPULowerBufferFatPointersID = AMDGPULowerBufferFatPointers::ID
extern

Definition at line 1991 of file AMDGPULowerBufferFatPointers.cpp.

◆ AMDGPULowerKernelArgumentsID

char& llvm::AMDGPULowerKernelArgumentsID
extern

◆ AMDGPULowerKernelAttributesID

char& llvm::AMDGPULowerKernelAttributesID
extern

◆ AMDGPULowerModuleLDSLegacyPassID

char & llvm::AMDGPULowerModuleLDSLegacyPassID = AMDGPULowerModuleLDSLegacy::ID
extern

Definition at line 1629 of file AMDGPULowerModuleLDSPass.cpp.

◆ AMDGPUMachineCFGStructurizerID

char& llvm::AMDGPUMachineCFGStructurizerID
extern

◆ AMDGPUMarkLastScratchLoadID

char & llvm::AMDGPUMarkLastScratchLoadID = AMDGPUMarkLastScratchLoad::ID
extern

Definition at line 135 of file AMDGPUMarkLastScratchLoad.cpp.

◆ AMDGPUOpenCLEnqueuedBlockLoweringID

char & llvm::AMDGPUOpenCLEnqueuedBlockLoweringID
extern
Initial value:
=
AMDGPUOpenCLEnqueuedBlockLowering::ID

Definition at line 65 of file AMDGPUOpenCLEnqueuedBlockLowering.cpp.

◆ AMDGPUPerfHintAnalysisID

char & llvm::AMDGPUPerfHintAnalysisID = AMDGPUPerfHintAnalysis::ID
extern

Definition at line 58 of file AMDGPUPerfHintAnalysis.cpp.

◆ AMDGPUPrintfRuntimeBindingID

amdgpu printf runtime AMDGPU Printf false char & llvm::AMDGPUPrintfRuntimeBindingID = AMDGPUPrintfRuntimeBinding::ID
extern

Definition at line 76 of file AMDGPUPrintfRuntimeBinding.cpp.

◆ AMDGPUPromoteAllocaID

AMDGPU promote alloca to vector or false DEBUG_TYPE to AMDGPU promote alloca to false char & llvm::AMDGPUPromoteAllocaID = AMDGPUPromoteAlloca::ID
extern

Definition at line 217 of file AMDGPUPromoteAlloca.cpp.

◆ AMDGPUPromoteAllocaToVectorID

char & llvm::AMDGPUPromoteAllocaToVectorID = AMDGPUPromoteAllocaToVector::ID
extern

Definition at line 218 of file AMDGPUPromoteAlloca.cpp.

◆ AMDGPUPromoteKernelArgumentsID

char& llvm::AMDGPUPromoteKernelArgumentsID
extern

◆ AMDGPURemoveIncompatibleFunctionsID

char& llvm::AMDGPURemoveIncompatibleFunctionsID
extern

◆ AMDGPUResourceUsageAnalysisID

char & llvm::AMDGPUResourceUsageAnalysisID = AMDGPUResourceUsageAnalysis::ID
extern

Definition at line 44 of file AMDGPUResourceUsageAnalysis.cpp.

◆ AMDGPURewriteOutArgumentsID

char& llvm::AMDGPURewriteOutArgumentsID
extern

◆ AMDGPURewriteUndefForPHILegacyPassID

char& llvm::AMDGPURewriteUndefForPHILegacyPassID
extern

◆ AMDGPUUnifyDivergentExitNodesID

char & llvm::AMDGPUUnifyDivergentExitNodesID = AMDGPUUnifyDivergentExitNodes::ID
extern

Definition at line 89 of file AMDGPUUnifyDivergentExitNodes.cpp.

◆ AMDGPUUnifyMetadataID

char & llvm::AMDGPUUnifyMetadataID = AMDGPUUnifyMetadata::ID
extern

Definition at line 127 of file AMDGPUUnifyMetadata.cpp.

◆ ApplyExtTspWithoutProfile

cl::opt< bool > llvm::ApplyExtTspWithoutProfile("ext-tsp-apply-without-profile", cl::desc("Whether to apply ext-tsp placement for instances w/o profile"), cl::init(true), cl::Hidden)

◆ ArcKillAddrMode

cl::opt< unsigned > llvm::ArcKillAddrMode("arc-kill-addr-mode", cl::init(0), cl::ReallyHidden) ( "arc-kill-addr-mode"  ,
cl::init(0)  ,
cl::ReallyHidden   
)
static

◆ AsmMacroMaxNestingDepth

cl::opt< unsigned > llvm::AsmMacroMaxNestingDepth

Definition at line 1084 of file MasmParser.cpp.

◆ AsmRewritePrecedence

const char llvm::AsmRewritePrecedence[]
Initial value:
= {
2,
2,
2,
3,
3,
3,
5,
1,
5,
2,
2
}

Definition at line 49 of file MCTargetAsmParser.h.

Referenced by rewritesSort().

◆ AssumptionAttrKey

constexpr StringRef llvm::AssumptionAttrKey = "llvm.assume"
constexpr

The key we use for assumption attributes.

Definition at line 28 of file Assumptions.h.

Referenced by getAssumptions(), and hasAssumption().

◆ AtomicExpandID

char & llvm::AtomicExpandID = AtomicExpandLegacy::ID
extern

AtomicExpandID – Lowers atomic operations in terms of either cmpxchg load-linked/store-conditional loops.

Definition at line 152 of file AtomicExpandPass.cpp.

◆ AVRDataLayout

const char* llvm::AVRDataLayout
static
Initial value:
=
"e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8"

Definition at line 30 of file AVRTargetMachine.cpp.

◆ BaseDiscriminatorBitWidth

const unsigned llvm::BaseDiscriminatorBitWidth = 8
static

Definition at line 70 of file Discriminator.h.

Referenced by getBaseFSBitEnd(), and getFSPassBitEnd().

◆ BBSectionsColdTextPrefix

cl::opt< std::string > llvm::BBSectionsColdTextPrefix
extern

◆ BigBasicBlockInstructionThreshold

cl::opt< unsigned > llvm::BigBasicBlockInstructionThreshold("big-basic-block-instruction-threshold", cl::Hidden, cl::init(500), cl::desc("The minimum number of instructions a basic block should contain " "before being considered big.")) ( "big-basic-block-instruction-threshold"  ,
cl::Hidden  ,
cl::init(500)  ,
cl::desc("The minimum number of instructions a basic block should contain " "before being considered big.")   
)

◆ BitReverseTable256

const unsigned char llvm::BitReverseTable256[256]
static
Initial value:
= {
#define R2(n)
#define R4(n)
#define R6(n)
R6(0), R6(2), R6(1), R6(3)
}
#define R6(n)

Macro compressed bit reversal table for 256 bits.

http://graphics.stanford.edu/~seander/bithacks.html#BitReverseTable

Definition at line 93 of file MathExtras.h.

Referenced by reverseBits().

◆ BitWidth

template<typename E , typename = std::enable_if_t<is_bitmask_enum<E>::value>>
constexpr unsigned llvm::BitWidth
constexpr
Initial value:
= BitmaskEnumDetail::bitWidth(
uint64_t{llvm::to_underlying(E::LLVM_BITMASK_LARGEST_ENUMERATOR)})
constexpr std::underlying_type_t< Enum > to_underlying(Enum E)
Returns underlying integer value of an enum.

Definition at line 191 of file BitmaskEnum.h.

Referenced by AddAtomicFloatRequirements(), addInstrRequirements(), llvm::SCEVAAResult::alias(), llvm::BasicTTIImplBase< T >::allowsMisalignedMemoryAccesses(), llvm::TargetTransformInfo::allowsMisalignedMemoryAccesses(), llvm::KnownBits::anyext(), llvm::KnownBits::anyextOrTrunc(), llvm::APInt::APInt(), llvm::CombinerHelper::applySDivByPow2(), llvm::APSInt::APSInt(), llvm::KnownBits::ashr(), llvm::APInt::ashrInPlace(), llvm::SPIRVGlobalRegistry::assignFloatTypeToVReg(), llvm::SPIRVGlobalRegistry::assignIntTypeToVReg(), bitTransformIsCorrectForBitReverse(), bitTransformIsCorrectForBSwap(), llvm::KnownBits::blsi(), llvm::KnownBits::blsmsk(), llvm::SwitchCG::SwitchLowering::buildBitTests(), llvm::SPIRVGlobalRegistry::buildConstantInt(), buildConstantIntReg(), buildNDRange(), calculateByteProvider(), calculateUpperBound(), llvm::ARMTargetLowering::canCombineStoreAndExtract(), canEvaluateTruncated(), canNarrowShiftAmt(), cannotBeMaxInLoop(), cannotBeMinInLoop(), llvm::APInt::clearBit(), llvm::APInt::clearLowBits(), llvm::APInt::clearSignBit(), collectBitParts(), llvm::GetElementPtrInst::collectOffset(), llvm::GEPOperator::collectOffset(), collectOffsets(), combineBT(), combineCMP(), combinePredicateReduction(), combineShiftAnd1ToBitTest(), combineSIntToFP(), combineVSelectToBLENDV(), llvm::InstCombinerImpl::commonShiftTransforms(), computeConstantRange(), llvm::KnownBits::computeForAddSub(), computeForSatAddSub(), computeKnownBits(), llvm::SelectionDAG::computeKnownBits(), llvm::ARMTargetLowering::computeKnownBitsForTargetNode(), llvm::RISCVTargetLowering::computeKnownBitsForTargetNode(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode(), llvm::LanaiTargetLowering::computeKnownBitsForTargetNode(), llvm::SystemZTargetLowering::computeKnownBitsForTargetNode(), llvm::X86TargetLowering::computeKnownBitsForTargetNode(), computeKnownBitsFromCmp(), computeKnownBitsFromContext(), computeKnownBitsFromOperator(), computeKnownBitsFromRangeMetadata(), llvm::GISelKnownBits::computeKnownBitsImpl(), computeKnownFPClass(), llvm::SelectionDAG::ComputeNumSignBits(), computeOverflowForSignedMul(), llvm::SelectionDAG::computeOverflowForSignedMul(), llvm::FunctionLoweringInfo::ComputePHILiveOutRegInfo(), ConstantFoldCastInstruction(), ConstantFoldCastOperand(), llvm::StringRef::consumeInteger(), llvm::ifs::convertELFBitWidthToIFS(), llvm::ifs::convertIFSBitWidthToELF(), ConvertShiftToMul(), copyRangeMetadata(), llvm::APInt::countl_one(), llvm::APInt::countl_zero(), llvm::APInt::countr_zero(), createMaskedBitTest(), llvm::ConstantRange::ctpop(), llvm::ConstantRange::cttz(), llvm::TargetLowering::CTTZTableLookup(), despeculateCountZeros(), emitConstantRange(), emitGlobalConstantLargeInt(), llvm::TargetLowering::expandAddSubSat(), llvm::TargetLowering::expandDIVREMByConstant(), expandFPToI(), expandIToFP(), extractBits(), extractConstantWithoutWrapping(), findAlignmentLowerBound(), llvm::SwitchCG::SwitchLowering::findBitTestClusters(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndToUsubsat(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), foldBoxMultiply(), foldCSELofCTTZ(), foldCtpop(), llvm::InstCombinerImpl::foldICmpEqIntrinsicWithConstant(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpIntrinsicWithConstant(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldICmpWithTruncSignExtendedVal(), foldICmpXNegX(), foldSelectOfCTTZOrCTLZ(), foldSetCCWithFunnelShift(), genConstMult(), generateBuiltinVar(), generateSignedDivisionCode(), generateSignedRemainderCode(), generateUnsignedDivisionCode(), llvm::LayoutAlignElem::get(), llvm::DataLayout::getABIIntegerTypeAlignment(), llvm::APInt::getActiveBits(), llvm::ScalarEvolution::getAddExpr(), llvm::SIRegisterInfo::getAGPRClassForBitWidth(), getAlignedAGPRClassForBitWidth(), getAlignedVectorSuperClassForBitWidth(), getAlignedVGPRClassForBitWidth(), getAnyAGPRClassForBitWidth(), getAnyVectorSuperClassForBitWidth(), getAnyVGPRClassForBitWidth(), llvm::APInt::getBitWidth(), getBitWidth(), llvm::BuildVectorSDNode::getConstantFPSplatPow2ToLog2Int(), llvm::ExecutionEngine::getConstantValue(), llvm::DemandedBits::getDemandedBits(), getDemandedBitsLHSMask(), getElementIndex(), llvm::ConstantRange::getEmpty(), getExactInteger(), llvm::EVT::getFloatingPointVT(), llvm::SMTSolver::getFloatSort(), llvm::ConstantRange::getFull(), llvm::SelectionDAG::getGlobalAddress(), getIdentityValueForAtomicOp(), llvm::EVT::getIntegerVT(), getIntToFPVal(), getKnownBitsFromAndXorOr(), getLeftShift(), llvm::FunctionLoweringInfo::GetLiveOutRegInfo(), getMaxShiftAmount(), getMinMaxLimit(), llvm::SCEVAddRecExpr::getNumIterationsInRange(), llvm::TargetLoweringBase::getNumRegisters(), llvm::APInt::getNumWords(), llvm::SPIRVGlobalRegistry::getOrCreateConstFP(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVFloatType(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVIntegerType(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVType(), getPreStartForExtend(), GetQuadraticEquation(), getRangeForAffineARHelper(), getRangeForSelectPattern(), llvm::SITargetLowering::getRegForInlineAsmConstraint(), llvm::EVT::getRoundIntegerType(), getSalvageOpsForGEP(), getScaledOffsetForBitWidth(), llvm::APInt::getSExtValue(), llvm::SIRegisterInfo::getSGPRClassForBitWidth(), getSignedOverflowLimitForStep(), llvm::ScalarEvolution::getSignExtendExprImpl(), llvm::APInt::getSignificantBits(), llvm::APInt::getSignMask(), llvm::AMDGPU::HSAMD::MetadataStreamerMsgPackV4::getTypeName(), getUnsignedCountTrailingZerosRange(), getUnsignedOverflowLimitForStep(), getUnsignedPopCountRange(), llvm::SelectionDAG::getValidMaximumShiftAmountConstant(), llvm::SelectionDAG::getValidMinimumShiftAmountConstant(), llvm::SelectionDAG::getValidShiftAmountConstant(), llvm::SIRegisterInfo::getVectorSuperClassForBitWidth(), llvm::SIRegisterInfo::getVGPRClassForBitWidth(), getVScaleRange(), llvm::ScalarEvolution::getZeroExtendExprImpl(), llvm::X86TTIImpl::instCombineIntrinsic(), llvm::APInt::intersects(), llvm::APInt::isAllOnes(), isAllOnesOrAllOnesSplat(), isBitfieldDstMask(), isBitfieldExtractOpFromSExtInReg(), isBitfieldPositioningOp(), isBytewiseValue(), IsConstantOffsetFromGlobal(), isConstantOrConstantVector(), llvm::AArch64TargetLowering::isDesirableToCommuteXorWithShift(), llvm::ARMTargetLowering::isDesirableToCommuteXorWithShift(), IsIncrementNSW(), IsIncrementNUW(), llvm::Type::isIntOrIntVectorTy(), isKnownNonZeroFromOperator(), isKnownToBeAPowerOfTwo(), isKnownToBeAPowerOfTwo(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), llvm::APInt::isMask(), llvm::APInt::isMaxSignedValue(), llvm::APInt::isMinSignedValue(), llvm::APInt::isNegatedPowerOf2(), llvm::APInt::isNegative(), isNonZeroAdd(), isNonZeroMul(), llvm::APInt::isOne(), llvm::APInt::isPowerOf2(), isSafeDecreasingBound(), isSafeIncreasingBound(), llvm::APInt::isShiftedMask(), llvm::APInt::isSignBitSet(), isSignExtendedW(), llvm::APInt::isSingleWord(), llvm::SelectionDAG::isSplatValue(), llvm::APInt::isSubsetOf(), isTypeLegalForLookupTable(), llvm::APInt::isZero(), LowerADDSAT_SUBSAT(), lowerAddSubToHorizontalOp(), LowerAndToBT(), LowerAndToBTST(), lowerFunnelShifts(), LowerVSETCC(), llvm::KnownBits::lshr(), llvm::APInt::lshrInPlace(), makeExactMulNSWRegion(), makeExactMulNUWRegion(), llvm::ConstantRange::makeGuaranteedNoWrapRegion(), matchBinaryOp(), MatchBinaryOp(), llvm::CombinerHelper::matchOrShiftToFunnelShift(), llvm::SIInstrInfo::moveToVALUImpl(), llvm::KnownBits::mul(), llvm::KnownBits::mulhs(), llvm::KnownBits::mulhu(), nextAPIntBitWidth(), llvm::APInt::operator&=(), llvm::APInt::operator<<=(), llvm::APInt::operator=(), llvm::APInt::operator==(), llvm::APInt::operator^=(), llvm::APInt::operator|=(), llvm::X86InstrInfo::optimizeCompareInstr(), parseJumpTable(), llvm::ARMTargetLowering::PerformDAGCombine(), llvm::ARMTargetLowering::PerformIntrinsicCombine(), performMulCombine(), llvm::KnownBits::print(), llvm::AArch64InstPrinter::printAMIndexedWB(), printBroadcast(), printConstant(), llvm::AArch64InstPrinter::printInst(), rebuildConstant(), rotateModulo(), llvm::MCJIT::runFunction(), llvm::KnownBits::sdiv(), llvm::wholeprogramdevirt::setAfterReturnValues(), llvm::wholeprogramdevirt::setBeforeReturnValues(), llvm::APInt::setBit(), llvm::APInt::setBits(), llvm::APInt::setBitsFrom(), llvm::APInt::setBitsWithWrap(), llvm::APInt::setHighBits(), setLimitForFPToI(), setShiftFlags(), llvm::APInt::setSignBit(), llvm::KnownBits::sext(), llvm::KnownBits::sextInReg(), llvm::KnownBits::sextOrTrunc(), llvm::KnownBits::shl(), shouldTransformMulToShiftsAddsSubs(), llvm::TargetLowering::ShrinkDemandedOp(), llvm::GISelKnownBits::signBitIsZero(), llvm::SelectionDAG::SignBitIsZero(), simplifyBinaryIntrinsic(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyIntrinsic(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), llvm::TargetLowering::SimplifyMultipleUseDemandedBits(), llvm::X86TargetLowering::SimplifyMultipleUseDemandedBitsForTargetNode(), llvm::TargetLowering::SimplifySetCC(), llvm::InstCombinerImpl::simplifyShrShlDemandedBits(), simplifyUnaryIntrinsic(), simplifyX86immShift(), simplifyX86varShift(), solveDIType(), SolveQuadraticAddRecExact(), SolveQuadraticAddRecRange(), llvm::KnownBits::trunc(), TruncIfPossible(), tryBitfieldInsertOpFromOr(), tryBitfieldInsertOpFromOrAndImm(), TryMULWIDECombine(), llvm::KnownBits::udiv(), llvm::APInt::udivrem(), unpackFromRegLoc(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractElementInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitSwitchInst(), llvm::KnownBits::zext(), and llvm::KnownBits::zextOrTrunc().

◆ BranchFolderPassID

char & llvm::BranchFolderPassID = BranchFolderPass::ID
extern

BranchFolding - This pass performs machine code CFG based optimizations to delete branches to branches, eliminate branches to successor blocks (creating fall throughs), and eliminating branches over branches.

Definition at line 118 of file BranchFolding.cpp.

Referenced by llvm::TargetPassConfig::addMachineLateOptimization(), and overridePass().

◆ BranchRelaxationPassID

char & llvm::BranchRelaxationPassID = BranchRelaxation::ID
extern

BranchRelaxation - This pass replaces branches that need to jump further than is supported by a branch instruction.

Definition at line 129 of file BranchRelaxation.cpp.

◆ BreakCriticalEdgesID

char& llvm::BreakCriticalEdgesID
extern

◆ CheckBFIUnknownBlockQueries

cl::opt< bool > llvm::CheckBFIUnknownBlockQueries("check-bfi-unknown-block-queries", cl::init(false), cl::Hidden, cl::desc("Check if block frequency is queried for an unknown block " "for debugging missed BFI updates"))

◆ CodeModelLargeSize

const unsigned llvm::CodeModelLargeSize = 256
static

◆ CurrentDebugType

ManagedStatic<std::vector<std::string> > llvm::CurrentDebugType
static

Definition at line 47 of file Debug.cpp.

Referenced by isCurrentDebugType(), and setCurrentDebugTypes().

◆ DeadMachineInstructionElimID

char & llvm::DeadMachineInstructionElimID = DeadMachineInstructionElim::ID
extern

DeadMachineInstructionElim - This pass removes dead machine instructions.

Definition at line 77 of file DeadMachineInstructionElim.cpp.

Referenced by llvm::TargetPassConfig::addMachineSSAOptimization(), and overridePass().

◆ DebugFlag

bool llvm::DebugFlag = false

This boolean is set to true if the '-debug' command line option is specified.

Exported boolean set by the -debug option.

This should probably not be referenced directly, instead, use the DEBUG macro below.

Definition at line 45 of file Debug.cpp.

Referenced by llvm::CSKYInstPrinter::applyTargetSpecificCLOption(), dbgs(), and isDebug().

◆ DebugInfoCorrelate

cl::opt< bool > llvm::DebugInfoCorrelate("debug-info-correlate", cl::desc("Use debug info to correlate profiles. (Deprecated, use " "-profile-correlate=debug-info)"), cl::init(false))

◆ DecisionName

const char *const llvm::DecisionName = "inlining_decision"
extern

◆ DecisionSpec

const TensorSpec llvm::DecisionSpec
static
Initial value:
=
TensorSpec::createSpec<float>(DecisionName, {1})
#define DecisionName

Definition at line 79 of file MLRegAllocPriorityAdvisor.cpp.

Referenced by INITIALIZE_PASS().

◆ DefaultDecisionName

const char *const llvm::DefaultDecisionName = "inlining_default"
extern

Definition at line 109 of file MLInlineAdvisor.cpp.

◆ DefaultDecisionSpec

const TensorSpec llvm::DefaultDecisionSpec
extern
Initial value:
=
TensorSpec::createSpec<int64_t>(DefaultDecisionName, {1})

Definition at line 110 of file MLInlineAdvisor.cpp.

Referenced by getReleaseModeAdvisor().

◆ DefaultProcResSize

const int llvm::DefaultProcResSize = 16
static

Definition at line 444 of file MachinePipeliner.h.

◆ DefMaxInstsToScan

cl::opt< unsigned > llvm::DefMaxInstsToScan
extern

The default number of maximum instructions to scan in the block, used by FindAvailableLoadedValue().

DefMaxInstsToScan - the default number of maximum instructions to scan in the block, used by FindAvailableLoadedValue().

FindAvailableLoadedValue() was introduced in r60148, to improve jump threading in part by eliminating partially redundant loads. At that point, the value of MaxInstsToScan was already set to '6' without documented explanation.

Referenced by llvm::JumpThreadingPass::simplifyPartiallyRedundantLoad().

◆ DetectDeadLanesID

char & llvm::DetectDeadLanesID = DetectDeadLanes::ID
extern

This pass adds dead/undef flags after analyzing subregister lanes.

Definition at line 413 of file DetectDeadLanes.cpp.

Referenced by llvm::TargetPassConfig::addOptimizedRegAlloc().

◆ DisableABIBreakingChecks

int llvm::DisableABIBreakingChecks

Definition at line 20 of file ABIBreak.cpp.

◆ DisableBasicAA

cl::opt< bool > llvm::DisableBasicAA("disable-basic-aa", cl::Hidden, cl::init(false)) ( "disable-basic-aa"  ,
cl::Hidden  ,
cl::init(false)   
)

Allow disabling BasicAA from the AA results.

This is particularly useful when testing to isolate a single AA implementation.

Referenced by llvm::AAResultsWrapperPass::runOnFunction().

◆ DisableBranches

cl::opt< bool > llvm::DisableBranches ( "no-ir-sim-branch-matching"  ,
cl::init(false)  ,
cl::ReallyHidden  ,
cl::desc("disable similarity matching, and outlining, " "across branches for debugging purposes.")   
)

◆ DisableGISelLegalityCheck

cl::opt< bool > llvm::DisableGISelLegalityCheck
extern

◆ DisableIndirectCalls

cl::opt< bool > llvm::DisableIndirectCalls ( "no-ir-sim-indirect-calls"  ,
cl::init(false)  ,
cl::ReallyHidden  ,
cl::desc("disable outlining indirect calls.")   
)

◆ DisableIntrinsics

cl::opt< bool > llvm::DisableIntrinsics ( "no-ir-sim-intrinsics"  ,
cl::init(false)  ,
cl::ReallyHidden  ,
cl::desc("Don't match or outline intrinsics")   
)

◆ DoInstrProfNameCompression

cl::opt< bool > llvm::DoInstrProfNameCompression("enable-name-compression", cl::desc("Enable name/filename string compression"), cl::init(true))

◆ DumpCriticalPathLength

cl::opt< bool > llvm::DumpCriticalPathLength("misched-dcpl", cl::Hidden, cl::desc("Print critical path length to stdout")) ( "misched-dcpl"  ,
cl::Hidden  ,
cl::desc("Print critical path length to stdout")   
)

◆ DumpHSAMetadata

cl::opt< bool > llvm::DumpHSAMetadata("amdgpu-dump-hsa-metadata", cl::desc("Dump AMDGPU HSA Metadata")) ( "amdgpu-dump-hsa-metadata"  ,
cl::desc("Dump AMDGPU HSA Metadata")   
)
static

◆ EarlyIfConverterID

char & llvm::EarlyIfConverterID = EarlyIfConverter::ID
extern

EarlyIfConverter - This pass performs if-conversion on SSA form by inserting cmov instructions.

Definition at line 788 of file EarlyIfConversion.cpp.

Referenced by overridePass().

◆ EarlyIfPredicatorID

char & llvm::EarlyIfPredicatorID = EarlyIfPredicator::ID
extern

EarlyIfPredicator - This pass performs if-conversion on SSA form by predicating if/else block and insert select at the join point.

Definition at line 1143 of file EarlyIfConversion.cpp.

◆ EarlyMachineLICMID

char & llvm::EarlyMachineLICMID = EarlyMachineLICM::ID
extern

This pass performs loop invariant code motion on machine instructions.

This variant works before register allocation.

See also
MachineLICMID.

Definition at line 322 of file MachineLICM.cpp.

Referenced by llvm::TargetPassConfig::addMachineSSAOptimization(), and overridePass().

◆ EarlyTailDuplicateID

char & llvm::EarlyTailDuplicateID = EarlyTailDuplicate::ID
extern

Duplicate blocks with unconditional branches into tails of their predecessors.

Variant that works before register allocation.

Definition at line 77 of file TailDuplication.cpp.

Referenced by llvm::TargetPassConfig::addMachineSSAOptimization(), and overridePass().

◆ EdgeBundlesID

char& llvm::EdgeBundlesID
extern

EdgeBundles analysis - Bundle machine CFG edges.

◆ EnableDebugBuffering

bool llvm::EnableDebugBuffering = false
extern

EnableDebugBuffering - This defaults to false.

EnableDebugBuffering - Turn on signal handler installation.

If true, the debug stream will install signal handlers to dump any buffered debug output. It allows clients to selectively allow the debug stream to install signal handlers if they are certain there will be no conflict.

Definition at line 196 of file Debug.cpp.

Referenced by dbgs().

◆ EnableDetailedFunctionProperties

cl::opt< bool > llvm::EnableDetailedFunctionProperties("enable-detailed-function-properties", cl::Hidden, cl::init(false), cl::desc("Whether or not to compute detailed function properties.")) ( "enable-detailed-function-properties"  ,
cl::Hidden  ,
cl::init(false)  ,
cl::desc("Whether or not to compute detailed function properties.")   
)

◆ EnableExtTspBlockPlacement

cl::opt< bool > llvm::EnableExtTspBlockPlacement

Definition at line 335 of file SampleProfile.cpp.

◆ EnableFSDiscriminator

cl::opt< bool > llvm::EnableFSDiscriminator

◆ EnableInferAlignmentPass

cl::opt< bool > llvm::EnableInferAlignmentPass("enable-infer-alignment-pass", cl::init(true), cl::Hidden, cl::ZeroOrMore, cl::desc("Enable the InferAlignment pass, disabling alignment inference in " "InstCombine"))

◆ EnableKnowledgeRetention

cl::opt< bool > llvm::EnableKnowledgeRetention("enable-knowledge-retention", cl::init(false), cl::Hidden, cl::desc( "enable preservation of attributes throughout code transformation"))

◆ EnableLoopInterleaving

cl::opt< bool > llvm::EnableLoopInterleaving
extern

◆ EnableLoopVectorization

cl::opt< bool > llvm::EnableLoopVectorization
extern

◆ EnableLTOInternalization

cl::opt< bool > llvm::EnableLTOInternalization("enable-lto-internalization", cl::init(true), cl::Hidden, cl::desc("Enable global value internalization in LTO"))

Enable global value internalization in LTO.

Referenced by thinLTOInternalizeAndPromoteGUID().

◆ EnableMemProfContextDisambiguation

cl::opt< bool > llvm::EnableMemProfContextDisambiguation

Enable MemProf context disambiguation for thin link.

Definition at line 302 of file PassBuilderPipelines.cpp.

Referenced by llvm::PassBuilder::buildLTODefaultPipeline(), llvm::PassBuilder::buildThinLTODefaultPipeline(), and llvm::FunctionImporter::importFunctions().

◆ EnablePGSO

cl::opt< bool > llvm::EnablePGSO
extern

◆ EnableTiming

cl::opt< bool, true > llvm::EnableTiming("time-passes", cl::location(TimePassesIsEnabled), cl::Hidden, cl::desc("Time each pass, printing elapsed time for each on exit")) ( "time-passes"  ,
cl::location(TimePassesIsEnabled ,
cl::Hidden  ,
cl::desc("Time each pass, printing elapsed time for each on exit")   
)
static

◆ EnableTimingPerRun

cl::opt< bool, true > llvm::EnableTimingPerRun("time-passes-per-run", cl::location(TimePassesPerRun), cl::Hidden, cl::desc("Time each pass run, printing elapsed time for each run on exit"), cl::callback([](const bool &) { TimePassesIsEnabled=true;})) ( "time-passes-per-run"  ,
cl::location(TimePassesPerRun ,
cl::Hidden  ,
cl::desc("Time each pass run, printing elapsed time for each run on exit")  ,
cl::callback([](const bool &) { TimePassesIsEnabled=true;})   
)
static

◆ EnableVPlanNativePath

cl::opt< bool > llvm::EnableVPlanNativePath ( "enable-vplan-native-path"  ,
cl::Hidden  ,
cl::desc("Enable VPlan-native vectorization path with " "support for outer loop vectorization.")   
)

◆ EnableVTableValueProfiling

cl::opt< bool > llvm::EnableVTableValueProfiling ( "enable-vtable-value-profiling"  ,
cl::init(false)  ,
cl::desc("If true, the virtual table address will be instrumented to know " "the types of a C++ pointer. The information is used in indirect " "call promotion to do selective vtable-based comparison.")   
)

Definition at line 69 of file InstrProfiling.cpp.

Referenced by InstrumentAllFunctions().

◆ ErrorsPrinted

unsigned llvm::ErrorsPrinted = 0

Definition at line 25 of file Error.cpp.

Referenced by PrintMessage(), and TableGenMain().

◆ EvictInterferenceCutoff

cl::opt< unsigned > llvm::EvictInterferenceCutoff("regalloc-eviction-max-interference-cutoff", cl::Hidden, cl::desc("Number of interferences after which we declare " "an interference unevictable and bail out. This " "is a compilation cost-saving consideration. To " "disable, pass a very large number."), cl::init(10))

◆ ExpandPostRAPseudosID

char & llvm::ExpandPostRAPseudosID = ExpandPostRA::ID
extern

ExpandPostRAPseudos - This pass expands pseudo instructions after register allocation.

Definition at line 54 of file ExpandPostRAPseudos.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ FeatureMap

const std::vector< TensorSpec > llvm::FeatureMap
extern
Initial value:
{
#define POPULATE_NAMES(DTYPE, SHAPE, NAME, __)
}

Definition at line 95 of file MLInlineAdvisor.cpp.

Referenced by llvm::orc::JITTargetMachineBuilder::detectHost(), and getReleaseModeAdvisor().

◆ FEntryInserterID

char & llvm::FEntryInserterID = FEntryInserter::ID
extern

This pass inserts FEntry calls.

Definition at line 48 of file FEntryInserter.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ FinalizeISelID

char & llvm::FinalizeISelID = FinalizeISel::ID
extern

This pass expands pseudo-instructions, reserves registers and adjusts machine frame information.

Definition at line 44 of file FinalizeISel.cpp.

Referenced by llvm::TargetPassConfig::addCoreISelPasses().

◆ FinalizeMachineBundlesID

char & llvm::FinalizeMachineBundlesID = FinalizeMachineBundles::ID
extern

FinalizeMachineBundles - This pass finalize machine instruction bundles (created earlier, e.g.

during pre-RA scheduling).

Definition at line 98 of file MachineInstrBundle.cpp.

◆ firstByteMark

const UTF8 llvm::firstByteMark[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }
static

Definition at line 145 of file ConvertUTF.cpp.

Referenced by ConvertUTF16toUTF8(), and ConvertUTF32toUTF8().

◆ FixupStatepointCallerSavedID

char & llvm::FixupStatepointCallerSavedID = FixupStatepointCallerSaved::ID
extern

The pass fixups statepoint machine instruction to replace usage of caller saved registers with stack slots.

Definition at line 84 of file FixupStatepointCallerSaved.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ force_iteration_on_noniterable_enum

constexpr force_iteration_on_noniterable_enum_t llvm::force_iteration_on_noniterable_enum
inlineconstexpr

◆ ForceBottomUp

cl::opt< bool > llvm::ForceBottomUp("misched-bottomup", cl::Hidden, cl::desc("Force bottom-up list scheduling"))

◆ ForcePGSO

cl::opt< bool > llvm::ForcePGSO
extern

◆ ForceSummaryEdgesCold

FunctionSummary::ForceSummaryHotnessType llvm::ForceSummaryEdgesCold

◆ ForceTopDown

cl::opt< bool > llvm::ForceTopDown("misched-topdown", cl::Hidden, cl::desc("Force top-down list scheduling"))

◆ ForgetSCEVInLoopUnroll

cl::opt< bool > llvm::ForgetSCEVInLoopUnroll
extern

◆ FSDiscriminatorBitWidth

const unsigned llvm::FSDiscriminatorBitWidth = 6
static

Definition at line 73 of file Discriminator.h.

Referenced by getFSPassBitEnd().

◆ FuncletLayoutID

char & llvm::FuncletLayoutID = FuncletLayout::ID
extern

This pass lays out funclets contiguously.

Definition at line 39 of file FuncletLayout.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses(), llvm::TargetPassConfig::addMachinePasses(), and llvm::AMDGPUPassConfig::AMDGPUPassConfig().

◆ GCLoweringID

char & llvm::GCLoweringID = LowerIntrinsics::ID
extern

GCLowering Pass - Used by gc.root to perform its default lowering operations.

Definition at line 108 of file GCRootLowering.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses(), and llvm::AMDGPUPassConfig::AMDGPUPassConfig().

◆ GCMachineCodeAnalysisID

char & llvm::GCMachineCodeAnalysisID = GCMachineCodeAnalysis::ID
extern

GCMachineCodeAnalysis - Target-independent pass to mark safe points in machine code.

Must be added very late during code generation, just prior to output, and importantly after all CFG transformations (such as branch folding).

Definition at line 255 of file GCRootLowering.cpp.

Referenced by llvm::TargetPassConfig::addGCPasses().

◆ GCNCreateVOPDID

char & llvm::GCNCreateVOPDID = GCNCreateVOPD::ID
extern

Definition at line 173 of file GCNCreateVOPD.cpp.

◆ GCNDPPCombineID

char & llvm::GCNDPPCombineID = GCNDPPCombine::ID
extern

Definition at line 111 of file GCNDPPCombine.cpp.

◆ GCNNSAReassignID

char & llvm::GCNNSAReassignID = GCNNSAReassign::ID
extern

Definition at line 106 of file GCNNSAReassign.cpp.

◆ GCNPreRALongBranchRegID

char& llvm::GCNPreRALongBranchRegID
extern

◆ GCNPreRAOptimizationsID

char & llvm::GCNPreRAOptimizationsID = GCNPreRAOptimizations::ID
extern

Definition at line 79 of file GCNPreRAOptimizations.cpp.

◆ GCNRegPressurePrinterID

char & llvm::GCNRegPressurePrinterID = GCNRegPressurePrinter::ID
extern

Definition at line 596 of file GCNRegPressure.cpp.

◆ GCNRewritePartialRegUsesID

char & llvm::GCNRewritePartialRegUsesID = GCNRewritePartialRegUses::ID
extern

Definition at line 495 of file GCNRewritePartialRegUses.cpp.

◆ get_array_pod_sort_comparator

template<typename T >
int(*)(const void *, const void *) llvm::get_array_pod_sort_comparator(const T &) ( const T )
inline

get_array_pod_sort_comparator - This is an internal helper function used to get type deduction of T right.

Definition at line 1570 of file STLExtras.h.

Referenced by array_pod_sort().

◆ GICombinerOptionCategory

cl::OptionCategory llvm::GICombinerOptionCategory("GlobalISel Combiner", "Control the rules which are enabled. These options all take a comma " "separated list of rules to disable and may be specified by number " "or number range (e.g. 1-10)." " They may also be specified by name.") ( "GlobalISel Combiner"  ,
"Control the rules which are enabled. These options all take a comma " "separated list of rules to disable and may be specified by number " "or number range (e.g. 1-10)." " They may also be specified by name."   
)

◆ halfBase

const UTF32 llvm::halfBase = 0x0010000UL
static

◆ halfMask

const UTF32 llvm::halfMask = 0x3FFUL
static

Definition at line 103 of file ConvertUTF.cpp.

Referenced by ConvertUTF32toUTF16(), and ConvertUTF8toUTF16().

◆ halfShift

const int llvm::halfShift = 10
static

◆ heatPalette

const char llvm::heatPalette[heatSize][8]
static
Initial value:
= {
"#3d50c3", "#4055c8", "#4358cb", "#465ecf", "#4961d2", "#4c66d6", "#4f69d9",
"#536edd", "#5572df", "#5977e3", "#5b7ae5", "#5f7fe8", "#6282ea", "#6687ed",
"#6a8bef", "#6c8ff1", "#7093f3", "#7396f5", "#779af7", "#7a9df8", "#7ea1fa",
"#81a4fb", "#85a8fc", "#88abfd", "#8caffe", "#8fb1fe", "#93b5fe", "#96b7ff",
"#9abbff", "#9ebeff", "#a1c0ff", "#a5c3fe", "#a7c5fe", "#abc8fd", "#aec9fc",
"#b2ccfb", "#b5cdfa", "#b9d0f9", "#bbd1f8", "#bfd3f6", "#c1d4f4", "#c5d6f2",
"#c7d7f0", "#cbd8ee", "#cedaeb", "#d1dae9", "#d4dbe6", "#d6dce4", "#d9dce1",
"#dbdcde", "#dedcdb", "#e0dbd8", "#e3d9d3", "#e5d8d1", "#e8d6cc", "#ead5c9",
"#ecd3c5", "#eed0c0", "#efcebd", "#f1ccb8", "#f2cab5", "#f3c7b1", "#f4c5ad",
"#f5c1a9", "#f6bfa6", "#f7bca1", "#f7b99e", "#f7b599", "#f7b396", "#f7af91",
"#f7ac8e", "#f7a889", "#f6a385", "#f5a081", "#f59c7d", "#f4987a", "#f39475",
"#f29072", "#f08b6e", "#ef886b", "#ed8366", "#ec7f63", "#e97a5f", "#e8765c",
"#e57058", "#e36c55", "#e16751", "#de614d", "#dc5d4a", "#d85646", "#d65244",
"#d24b40", "#d0473d", "#cc403a", "#ca3b37", "#c53334", "#c32e31", "#be242e",
"#bb1b2c", "#b70d28"}

Definition at line 23 of file HeatUtils.cpp.

Referenced by getHeatColor().

◆ heatSize

const unsigned llvm::heatSize = 100
static

Definition at line 22 of file HeatUtils.cpp.

Referenced by getHeatColor().

◆ HexagonDisableCompound

cl::opt< bool > llvm::HexagonDisableCompound
extern

◆ HexagonDisableDuplex

cl::opt< bool > llvm::HexagonDisableDuplex
extern

◆ HexagonExpandCondsetsID

char & llvm::HexagonExpandCondsetsID = HexagonExpandCondsets::ID

Definition at line 251 of file HexagonExpandCondsets.cpp.

◆ HexagonStages

const InstrStage llvm::HexagonStages[]
extern

◆ HexagonTfrCleanupID

char & llvm::HexagonTfrCleanupID = HexagonTfrCleanup::ID

Definition at line 84 of file HexagonTfrCleanup.cpp.

◆ hexDigitsLower

const char llvm::hexDigitsLower[] = "0123456789abcdef0"
static

Definition at line 790 of file APFloat.cpp.

◆ hexDigitsUpper

const char llvm::hexDigitsUpper[] = "0123456789ABCDEF0"
static

Definition at line 791 of file APFloat.cpp.

◆ HintsAllowReordering

cl::opt< bool > llvm::HintsAllowReordering("hints-allow-reordering", cl::init(true), cl::Hidden, cl::desc("Allow enabling loop hints to reorder " "FP operations during vectorization.")) ( "hints-allow-reordering"  ,
cl::init(true ,
cl::Hidden  ,
cl::desc("Allow enabling loop hints to reorder " "FP operations during vectorization.")   
)

◆ huge_valf

const float llvm::huge_valf = HUGE_VALF

Use this rather than HUGE_VALF; the latter causes warnings on MSVC.

Definition at line 28 of file MathExtras.cpp.

Referenced by llvm::LiveInterval::isSpillable(), and llvm::LiveInterval::markNotSpillable().

◆ IfConverterID

char & llvm::IfConverterID = IfConverter::ID
extern

IfConverter - This pass performs machine code if conversion.

Definition at line 432 of file IfConversion.cpp.

◆ IgnoreBundleTag

constexpr StringRef llvm::IgnoreBundleTag = "ignore"
constexpr

Tag in operand bundle indicating that this bundle should be ignored.

Definition at line 135 of file AssumeBundleQueries.h.

Referenced by findAffectedValues().

◆ ImplicitNullChecksID

char & llvm::ImplicitNullChecksID = ImplicitNullChecks::ID
extern

ImplicitNullChecks - This pass folds null pointer checks into nearby memory operations.

Definition at line 812 of file ImplicitNullChecks.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ ImprovedFSDiscriminator

cl::opt< bool > llvm::ImprovedFSDiscriminator ( "improved-fs-discriminator"  ,
cl::Hidden  ,
cl::init(false)  ,
cl::desc("New FS discriminators encoding (incompatible with the original " "encoding)")   
)

Definition at line 65 of file MIRSampleProfile.cpp.

Referenced by llvm::MIRProfileLoader::getInstWeight().

◆ InferAddressSpacesID

char& llvm::InferAddressSpacesID
extern

◆ infinityL

const char llvm::infinityL[] = "infinity"
static

Definition at line 792 of file APFloat.cpp.

Referenced by llvm::detail::IEEEFloat::convertToHexString().

◆ infinityU

const char llvm::infinityU[] = "INFINITY"
static

Definition at line 793 of file APFloat.cpp.

Referenced by llvm::detail::IEEEFloat::convertToHexString().

◆ InitialSyntheticCount

cl::opt< int > llvm::InitialSyntheticCount("initial-synthetic-count", cl::Hidden, cl::init(10), cl::desc("Initial value of synthetic entry count"))

Referenced by initializeCounts().

◆ InitUndefID

char & llvm::InitUndefID = InitUndef::ID
extern

Definition at line 98 of file InitUndef.cpp.

Referenced by llvm::TargetPassConfig::addOptimizedRegAlloc().

◆ InlineDecisionSpec

const TensorSpec llvm::InlineDecisionSpec
extern
Initial value:
=
TensorSpec::createSpec<int64_t>(DecisionName, {1})
#define DecisionName

Definition at line 107 of file MLInlineAdvisor.cpp.

Referenced by getReleaseModeAdvisor().

◆ InlinerFunctionImportStats

cl::opt< InlinerFunctionImportStatsOpts > llvm::InlinerFunctionImportStats ( "inliner-function-import-stats"  ,
cl::init(InlinerFunctionImportStatsOpts::No ,
cl::values(clEnumValN(InlinerFunctionImportStatsOpts::Basic, "basic", "basic statistics"), clEnumValN(InlinerFunctionImportStatsOpts::Verbose, "verbose", "printing of statistics for each inlined function"))  ,
cl::Hidden  ,
cl::desc("Enable inliner stats for imported functions")   
)

◆ InputFeatures

const std::vector<TensorSpec> llvm::InputFeatures
static
Initial value:
{
}
#define RA_PRIORITY_FEATURES_LIST(M)
#define _DECL_FEATURES(type, name, shape, _)

Definition at line 115 of file MLRegAllocPriorityAdvisor.cpp.

Referenced by INITIALIZE_PASS().

◆ InstCombineDefaultMaxIterations

constexpr unsigned llvm::InstCombineDefaultMaxIterations = 1
staticconstexpr

Definition at line 28 of file InstCombine.h.

◆ InstrProfRecordClosure

ValueProfRecordClosure llvm::InstrProfRecordClosure
static
Initial value:
= {
nullptr,
nullptr,
void getValueForSiteInstrProf(const void *R, InstrProfValueData *Dst, uint32_t K, uint32_t S)
Definition: InstrProf.cpp:1043
uint32_t getNumValueSitesInstrProf(const void *Record, uint32_t VKind)
Definition: InstrProf.cpp:1027
uint32_t getNumValueDataForSiteInstrProf(const void *R, uint32_t VK, uint32_t S)
Definition: InstrProf.cpp:1037
uint32_t getNumValueKindsInstrProf(const void *Record)
ValueProfRecordClosure Interface implementation for InstrProfRecord class.
Definition: InstrProf.cpp:1023
ValueProfData * allocValueProfDataInstrProf(size_t TotalSizeInBytes)
Definition: InstrProf.cpp:1048
uint32_t getNumValueDataInstrProf(const void *Record, uint32_t VKind)
Definition: InstrProf.cpp:1032

Definition at line 1055 of file InstrProf.cpp.

◆ IntrinsicsWithChain

const IntrinsicData llvm::IntrinsicsWithChain[]
static

Definition at line 68 of file X86IntrinsicsInfo.h.

Referenced by getIntrinsicWithChain(), and verifyIntrinsicTables().

◆ IntrinsicsWithoutChain

const IntrinsicData llvm::IntrinsicsWithoutChain[]
static

Definition at line 339 of file X86IntrinsicsInfo.h.

Referenced by getIntrinsicWithoutChain(), and verifyIntrinsicTables().

◆ is_incomplete_v

template<typename T >
constexpr bool llvm::is_incomplete_v = !is_detected<detail::has_sizeof, T>::value
constexpr

Detects when type T is incomplete.

This is true for forward declarations and false for types with a full definition.

Definition at line 2555 of file STLExtras.h.

◆ IsaAndPresentPred

template<typename... Types>
constexpr detail::IsaAndPresentCheckPredicate<Types...> llvm::IsaAndPresentPred {}
inlineconstexpr

Function object wrapper for the llvm::isa_and_present type check.

The function call operator returns true when the value can be cast to any type in Types, or if the value is not present (e.g., nullptr). Example:

SmallVector<Type> myTypes = ...;
if (llvm::all_of(myTypes, llvm::IsaAndPresentPred<VectorType>))
...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Definition: SmallVector.h:1209
bool all_of(R &&range, UnaryPredicate P)
Provide wrappers to std::all_of which take ranges instead of having to pass begin/end explicitly.
Definition: STLExtras.h:1722

Definition at line 848 of file Casting.h.

◆ IsaPred

template<typename... Types>
constexpr detail::IsaCheckPredicate<Types...> llvm::IsaPred {}
inlineconstexpr

Function object wrapper for the llvm::isa type check.

The function call operator returns true when the value can be cast to any type in Types. Example:

SmallVector<Type> myTypes = ...;
if (llvm::all_of(myTypes, llvm::IsaPred<VectorType>))
...

Definition at line 836 of file Casting.h.

◆ IsNullable

template<typename T >
constexpr bool llvm::IsNullable
constexpr
Initial value:
=
std::is_pointer_v<T> || std::is_constructible_v<T, std::nullptr_t>

Definition at line 593 of file Casting.h.

◆ IterativeBFIMaxIterationsPerBlock

cl::opt< unsigned > llvm::IterativeBFIMaxIterationsPerBlock("iterative-bfi-max-iterations-per-block", cl::init(1000), cl::Hidden, cl::desc("Iterative inference: maximum number of update iterations " "per block"))

◆ IterativeBFIPrecision

cl::opt< double > llvm::IterativeBFIPrecision("iterative-bfi-precision", cl::init(1e-12), cl::Hidden, cl::desc("Iterative inference: delta convergence precision; smaller values " "typically lead to better results at the cost of worsen runtime"))

◆ kAsanStackLeftRedzoneMagic

const int llvm::kAsanStackLeftRedzoneMagic = 0xf1
static

Definition at line 23 of file ASanStackFrameLayout.h.

Referenced by GetShadowBytes().

◆ kAsanStackMidRedzoneMagic

const int llvm::kAsanStackMidRedzoneMagic = 0xf2
static

Definition at line 24 of file ASanStackFrameLayout.h.

Referenced by GetShadowBytes().

◆ kAsanStackRightRedzoneMagic

const int llvm::kAsanStackRightRedzoneMagic = 0xf3
static

Definition at line 25 of file ASanStackFrameLayout.h.

Referenced by GetShadowBytes().

◆ kAsanStackUseAfterReturnMagic

const int llvm::kAsanStackUseAfterReturnMagic = 0xf5
static

Definition at line 26 of file ASanStackFrameLayout.h.

◆ kAsanStackUseAfterScopeMagic

const int llvm::kAsanStackUseAfterScopeMagic = 0xf8
static

Definition at line 27 of file ASanStackFrameLayout.h.

Referenced by GetShadowBytesAfterScope().

◆ kGlobalIdentifierDelimiter

constexpr char llvm::kGlobalIdentifierDelimiter = ';'
inlineconstexpr

◆ kMinAlignment

const uint64_t llvm::kMinAlignment = 16
static

Definition at line 35 of file ASanStackFrameLayout.cpp.

Referenced by ComputeASanStackFrameLayout().

◆ KnownAssumptionStrings

StringSet llvm::KnownAssumptionStrings
extern

A set of known assumption strings that are accepted without warning and which can be recommended as typo correction.

Referenced by llvm::KnownAssumptionString::KnownAssumptionString().

◆ kSanitizerBinaryMetadataAtomics

constexpr uint64_t llvm::kSanitizerBinaryMetadataAtomics
inlineconstexpr
Initial value:
=
constexpr int kSanitizerBinaryMetadataAtomicsBit

Definition at line 34 of file SanitizerBinaryMetadata.h.

◆ kSanitizerBinaryMetadataAtomicsBit

constexpr int llvm::kSanitizerBinaryMetadataAtomicsBit = 0
inlineconstexpr

Definition at line 30 of file SanitizerBinaryMetadata.h.

◆ kSanitizerBinaryMetadataAtomicsSection

constexpr char llvm::kSanitizerBinaryMetadataAtomicsSection[]
inlineconstexpr
Initial value:
=
"sanmd_atomics"

Definition at line 43 of file SanitizerBinaryMetadata.h.

◆ kSanitizerBinaryMetadataCoveredSection

constexpr char llvm::kSanitizerBinaryMetadataCoveredSection[]
inlineconstexpr
Initial value:
=
"sanmd_covered"

Definition at line 41 of file SanitizerBinaryMetadata.h.

◆ kSanitizerBinaryMetadataUAR

constexpr uint64_t llvm::kSanitizerBinaryMetadataUAR
inlineconstexpr
Initial value:
=
constexpr int kSanitizerBinaryMetadataUARBit

Definition at line 36 of file SanitizerBinaryMetadata.h.

◆ kSanitizerBinaryMetadataUARBit

constexpr int llvm::kSanitizerBinaryMetadataUARBit = 1
inlineconstexpr

Definition at line 31 of file SanitizerBinaryMetadata.h.

◆ kSanitizerBinaryMetadataUARHasSize

constexpr uint64_t llvm::kSanitizerBinaryMetadataUARHasSize
inlineconstexpr
Initial value:
=
constexpr int kSanitizerBinaryMetadataUARHasSizeBit

Definition at line 38 of file SanitizerBinaryMetadata.h.

◆ kSanitizerBinaryMetadataUARHasSizeBit

constexpr int llvm::kSanitizerBinaryMetadataUARHasSizeBit = 2
inlineconstexpr

Definition at line 32 of file SanitizerBinaryMetadata.h.

◆ LCSSAID

char & llvm::LCSSAID = LCSSAWrapperPass::ID
extern

Definition at line 507 of file LCSSA.cpp.

Referenced by getLoopAnalysisUsage().

◆ LiveDebugValuesID

char & llvm::LiveDebugValuesID = LiveDebugValues::ID
extern

LiveDebugValues pass.

Definition at line 91 of file LiveDebugValues.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ LiveIntervalsID

char & llvm::LiveIntervalsID = LiveIntervals::ID
extern

LiveIntervals - This analysis keeps track of the live ranges of virtual and physical registers.

Definition at line 61 of file LiveIntervals.cpp.

Referenced by llvm::TargetPassConfig::addOptimizedRegAlloc().

◆ LiveRangeShrinkID

char & llvm::LiveRangeShrinkID = LiveRangeShrink::ID
extern

LiveRangeShrink pass.

Move instruction close to its definition to shrink the definition's live range.

Definition at line 65 of file LiveRangeShrink.cpp.

◆ LiveStacksID

Live Stack Slot false char & llvm::LiveStacksID = LiveStacks::ID
extern

LiveStacks pass. An analysis keeping track of the liveness of stack slots.

Definition at line 30 of file LiveStacks.cpp.

◆ LiveVariablesID

char & llvm::LiveVariablesID = LiveVariables::ID
extern

LiveVariables pass - This pass computes the set of blocks in which each variable is life and sets machine operand kill flags.

Definition at line 45 of file LiveVariables.cpp.

Referenced by llvm::TargetPassConfig::addOptimizedRegAlloc().

◆ LLVMLoopUnrollFollowupAll

const char* const llvm::LLVMLoopUnrollFollowupAll = "llvm.loop.unroll.followup_all"

Metadata attribute names

Definition at line 42 of file UnrollLoop.h.

Referenced by CloneLoopBlocks(), and tryToUnrollLoop().

◆ LLVMLoopUnrollFollowupRemainder

const char* const llvm::LLVMLoopUnrollFollowupRemainder
Initial value:
=
"llvm.loop.unroll.followup_remainder"

Definition at line 45 of file UnrollLoop.h.

Referenced by CloneLoopBlocks(), and tryToUnrollLoop().

◆ LLVMLoopUnrollFollowupUnrolled

const char* const llvm::LLVMLoopUnrollFollowupUnrolled
Initial value:
=
"llvm.loop.unroll.followup_unrolled"

Definition at line 43 of file UnrollLoop.h.

Referenced by tryToUnrollLoop().

◆ LoadFP32ImmArr

constexpr std::pair<uint8_t, uint8_t> llvm::LoadFP32ImmArr[]
staticconstexpr
Initial value:
= {
{0b01101111, 0b00}, {0b01110000, 0b00}, {0b01110111, 0b00},
{0b01111000, 0b00}, {0b01111011, 0b00}, {0b01111100, 0b00},
{0b01111101, 0b00}, {0b01111101, 0b01}, {0b01111101, 0b10},
{0b01111101, 0b11}, {0b01111110, 0b00}, {0b01111110, 0b01},
{0b01111110, 0b10}, {0b01111110, 0b11}, {0b01111111, 0b00},
{0b01111111, 0b01}, {0b01111111, 0b10}, {0b01111111, 0b11},
{0b10000000, 0b00}, {0b10000000, 0b01}, {0b10000000, 0b10},
{0b10000001, 0b00}, {0b10000010, 0b00}, {0b10000011, 0b00},
{0b10000110, 0b00}, {0b10000111, 0b00}, {0b10001110, 0b00},
{0b10001111, 0b00}, {0b11111111, 0b00}, {0b11111111, 0b10},
}

Definition at line 153 of file RISCVBaseInfo.cpp.

Referenced by llvm::RISCVLoadFPImm::getFPImm(), and llvm::RISCVLoadFPImm::getLoadFPImm().

◆ LocalStackSlotAllocationID

char & llvm::LocalStackSlotAllocationID = LocalStackSlotPass::ID
extern

LocalStackSlotAllocation - This pass assigns local frame indices to stack slots relative to one another and allocates base registers to access them when it is estimated by the target to be out of range of normal frame pointer or stack pointer index addressing.

Definition at line 108 of file LocalStackSlotAllocation.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses(), and llvm::TargetPassConfig::addMachineSSAOptimization().

◆ LoopSimplifyID

loop Canonicalize natural false char & llvm::LoopSimplifyID = LoopSimplify::ID
extern

Definition at line 789 of file LoopSimplify.cpp.

Referenced by getLoopAnalysisUsage().

◆ LowerInvokePassID

char & llvm::LowerInvokePassID = LowerInvokeLegacyPass::ID

Definition at line 82 of file LowerInvoke.cpp.

◆ LowerSwitchID

char & llvm::LowerSwitchID = LowerSwitchLegacyPass::ID
extern

Definition at line 584 of file LowerSwitch.cpp.

◆ LTOCSIRProfile

cl::opt< std::string > llvm::LTOCSIRProfile("cs-profile-path", cl::desc("Context sensitive profile file path")) ( "cs-profile-path"  ,
cl::desc("Context sensitive profile file path")   
)

◆ LTODiscardValueNames

cl::opt< bool > llvm::LTODiscardValueNames ( "lto-discard-value-names"  ,
cl::desc("Strip names from Value during LTO (other than GlobalValue).")  ,
cl::init(false)  ,
cl::Hidden   
)

◆ LTORunCSIRInstr

cl::opt< bool > llvm::LTORunCSIRInstr("cs-profile-generate", cl::desc("Perform context sensitive PGO instrumentation")) ( "cs-profile-generate"  ,
cl::desc("Perform context sensitive PGO instrumentation")   
)

◆ LTOStatsFile

cl::opt< std::string > llvm::LTOStatsFile("lto-stats-file", cl::desc("Save statistics to the specified file"), cl::Hidden) ( "lto-stats-file"  ,
cl::desc("Save statistics to the specified file")  ,
cl::Hidden   
)

◆ MachineBlockPlacementID

char & llvm::MachineBlockPlacementID = MachineBlockPlacement::ID
extern

MachineBlockPlacement - This pass places basic blocks based on branch probabilities.

Definition at line 621 of file MachineBlockPlacement.cpp.

Referenced by llvm::TargetPassConfig::addBlockPlacement(), and overridePass().

◆ MachineBlockPlacementStatsID

char & llvm::MachineBlockPlacementStatsID = MachineBlockPlacementStats::ID
extern

MachineBlockPlacementStats - This pass collects statistics about the basic block placement using branch probabilities and block frequency information.

Definition at line 3686 of file MachineBlockPlacement.cpp.

Referenced by llvm::TargetPassConfig::addBlockPlacement().

◆ MachineCFGPrinterID

char & llvm::MachineCFGPrinterID = MachineCFGPrinter::ID
extern

MachineCFGPrinter pass.

Definition at line 77 of file MachineCFGPrinter.cpp.

◆ MachineCombinerID

char & llvm::MachineCombinerID = MachineCombiner::ID
extern

This pass performs instruction combining using trace metrics to estimate critical-path and resource depth.

Definition at line 131 of file MachineCombiner.cpp.

◆ MachineCopyPropagationID

char & llvm::MachineCopyPropagationID = MachineCopyPropagation::ID
extern

MachineCopyPropagation - This pass performs copy propagation on machine instructions.

Definition at line 445 of file MachineCopyPropagation.cpp.

Referenced by llvm::TargetPassConfig::addMachineLateOptimization(), llvm::TargetPassConfig::addOptimizedRegAlloc(), and overridePass().

◆ MachineCSEID

char & llvm::MachineCSEID = MachineCSE::ID
extern

MachineCSE - This pass performs global CSE on machine instructions.

Definition at line 165 of file MachineCSE.cpp.

Referenced by llvm::TargetPassConfig::addMachineSSAOptimization(), and overridePass().

◆ MachineDominanceFrontierID

char & llvm::MachineDominanceFrontierID = MachineDominanceFrontier::ID
extern

MachineDominanaceFrontier - This pass is a machine dominators analysis.

Definition at line 37 of file MachineDominanceFrontier.cpp.

◆ MachineDominatorsID

char& llvm::MachineDominatorsID
extern

MachineDominators - This pass is a machine dominators analysis pass.

Referenced by llvm::LiveIntervals::getAnalysisUsage().

◆ MachineFunctionPrinterPassID

char & llvm::MachineFunctionPrinterPassID = MachineFunctionPrinterPass::ID
extern

MachineFunctionPrinterPass - This pass prints out MachineInstr's.

Definition at line 58 of file MachineFunctionPrinterPass.cpp.

◆ MachineLateInstrsCleanupID

char & llvm::MachineLateInstrsCleanupID = MachineLateInstrsCleanup::ID
extern

MachineLateInstrsCleanup - This pass removes redundant identical instructions after register allocation and rematerialization.

Definition at line 88 of file MachineLateInstrsCleanup.cpp.

Referenced by llvm::TargetPassConfig::addMachineLateOptimization().

◆ MachineLICMID

char & llvm::MachineLICMID = MachineLICM::ID
extern

This pass performs loop invariant code motion on machine instructions.

Definition at line 321 of file MachineLICM.cpp.

Referenced by llvm::TargetPassConfig::addOptimizedRegAlloc(), and overridePass().

◆ MachineLoopInfoID

machine Machine Natural Loop true char & llvm::MachineLoopInfoID = MachineLoopInfo::ID
extern

MachineLoopInfo - This pass is a loop analysis pass.

Definition at line 43 of file MachineLoopInfo.cpp.

Referenced by llvm::TargetPassConfig::addOptimizedRegAlloc(), and llvm::LiveIntervals::getAnalysisUsage().

◆ MachinePipelinerID

char & llvm::MachinePipelinerID = MachinePipeliner::ID
extern

This pass performs software pipelining on machine instructions.

Definition at line 216 of file MachinePipeliner.cpp.

◆ MachineRegionInfoPassID

char& llvm::MachineRegionInfoPassID
extern

MachineRegionInfo - This pass computes SESE regions for machine functions.

◆ MachineSanitizerBinaryMetadataID

char& llvm::MachineSanitizerBinaryMetadataID
extern

◆ MachineSchedulerID

char & llvm::MachineSchedulerID = MachineScheduler::ID
extern

MachineScheduler - This pass schedules machine instructions.

Definition at line 264 of file MachineScheduler.cpp.

Referenced by llvm::TargetPassConfig::addOptimizedRegAlloc().

◆ MachineSinkingID

char & llvm::MachineSinkingID = MachineSinking::ID
extern

MachineSinking - This pass performs sinking on machine instructions.

Definition at line 272 of file MachineSink.cpp.

Referenced by llvm::TargetPassConfig::addMachineSSAOptimization(), and overridePass().

◆ MachineTraceMetricsID

char & llvm::MachineTraceMetricsID = MachineTraceMetrics::ID
extern

MachineTraceMetrics - This pass computes critical path and CPU resource usage in an ensemble of traces.

Definition at line 45 of file MachineTraceMetrics.cpp.

◆ MatchCallsByName

cl::opt< bool > llvm::MatchCallsByName("ir-sim-calls-by-name", cl::init(false), cl::ReallyHidden, cl::desc("only allow matching call instructions if the " "name and type signature match.")) ( "ir-sim-calls-by-name"  ,
cl::init(false)  ,
cl::ReallyHidden  ,
cl::desc("only allow matching call instructions if the " "name and type signature match.")   
)

◆ MAX_SUBTARGET_FEATURES

const unsigned llvm::MAX_SUBTARGET_FEATURES = MAX_SUBTARGET_WORDS * 64

Definition at line 35 of file SubtargetFeature.h.

Referenced by llvm::FeatureBitset::size().

◆ MAX_SUBTARGET_WORDS

const unsigned llvm::MAX_SUBTARGET_WORDS = 5

Definition at line 34 of file SubtargetFeature.h.

◆ MaxAnalysisRecursionDepth

constexpr unsigned llvm::MaxAnalysisRecursionDepth = 6
constexpr

◆ MaxDevirtIterations

cl::opt< unsigned > llvm::MaxDevirtIterations ( "max-devirt-iterations"  ,
cl::ReallyHidden  ,
cl::init(4)   
)

◆ maxExponent

const unsigned int llvm::maxExponent = 16383

Definition at line 285 of file APFloat.cpp.

Referenced by powerOf5().

◆ MaxInitializationChainLength

unsigned llvm::MaxInitializationChainLength
extern

The value passed to the line option that defines the maximal initialization chain length.

Definition at line 110 of file Attributor.cpp.

Referenced by llvm::Attributor::shouldInitialize().

◆ maxPowerOfFiveExponent

const unsigned int llvm::maxPowerOfFiveExponent = maxExponent + maxPrecision - 1

Definition at line 287 of file APFloat.cpp.

◆ maxPowerOfFiveParts

const unsigned int llvm::maxPowerOfFiveParts
Initial value:
=
2 +
const unsigned int maxPowerOfFiveExponent
Definition: APFloat.cpp:287
static constexpr unsigned integerPartWidth
Definition: APFloat.h:144

Definition at line 288 of file APFloat.cpp.

Referenced by powerOf5().

◆ maxPrecision

const unsigned int llvm::maxPrecision = 113

Definition at line 286 of file APFloat.cpp.

◆ MediumBasicBlockInstructionThreshold

cl::opt< unsigned > llvm::MediumBasicBlockInstructionThreshold("medium-basic-block-instruction-threshold", cl::Hidden, cl::init(15), cl::desc("The minimum number of instructions a basic block should contain " "before being considered medium-sized.")) ( "medium-basic-block-instruction-threshold"  ,
cl::Hidden  ,
cl::init(15)  ,
cl::desc("The minimum number of instructions a basic block should contain " "before being considered medium-sized.")   
)

◆ MIPS_NACL_BUNDLE_ALIGN

const Align llvm::MIPS_NACL_BUNDLE_ALIGN = Align(16)
static

◆ MIRAddFSDiscriminatorsID

char& llvm::MIRAddFSDiscriminatorsID
extern

This pass adds flow sensitive discriminators.

◆ MIRCanonicalizerID

char & llvm::MIRCanonicalizerID = MIRCanonicalizer::ID
extern

MIRCanonicalizer - This pass canonicalizes MIR by renaming vregs according to the semantics of the instruction as well as hoists code.

Definition at line 68 of file MIRCanonicalizerPass.cpp.

◆ MIRNamerID

char & llvm::MIRNamerID = MIRNamer::ID
extern

Definition at line 69 of file MIRNamerPass.cpp.

◆ MIRPrintingPassID

char & llvm::MIRPrintingPassID = MIRPrintingPass::ID
extern

MIRPrintingPass - this pass prints out the LLVM IR using the MIR serialization format.

Definition at line 70 of file MIRPrintingPass.cpp.

◆ MIRProfileLoaderPassID

Load MIR Sample false char & llvm::MIRProfileLoaderPassID = MIRProfileLoaderPass::ID
extern

This pass reads flow sensitive profile.

Definition at line 80 of file MIRSampleProfile.cpp.

◆ MischedDetailResourceBooking

cl::opt< bool > llvm::MischedDetailResourceBooking("misched-detail-resource-booking", cl::Hidden, cl::init(false), cl::desc("Show details of invoking getNextResoufceCycle.")) ( "misched-detail-resource-booking"  ,
cl::Hidden  ,
cl::init(false)  ,
cl::desc("Show details of invoking getNextResoufceCycle.")   
)

◆ MISchedDumpReservedCycles

cl::opt< bool > llvm::MISchedDumpReservedCycles("misched-dump-reserved-cycles", cl::Hidden, cl::init(false), cl::desc("Dump resource usage at schedule boundary.")) ( "misched-dump-reserved-cycles"  ,
cl::Hidden  ,
cl::init(false)  ,
cl::desc("Dump resource usage at schedule boundary.")   
)

◆ MisExpectTolerance

cl::opt< uint32_t > llvm::MisExpectTolerance("misexpect-tolerance", cl::init(0), cl::desc("Prevents emiting diagnostics when profile counts are " "within N% of the threshold..")) ( "misexpect-tolerance"  ,
cl::init(0)  ,
cl::desc("Prevents emiting diagnostics when profile counts are " "within N% of the threshold..")   
)
static

◆ MOLastUse

const MachineMemOperand::Flags llvm::MOLastUse
static
Initial value:
=
MachineMemOperand::MOTargetFlag2

Mark the MMO of a load as the last use.

Definition at line 45 of file SIInstrInfo.h.

Referenced by llvm::SIRegisterInfo::buildSpillLoadStore(), llvm::SIInstrInfo::getSerializableMachineMemOperandTargetFlags(), and llvm::SITargetLowering::getTargetMMOFlags().

◆ MONoClobber

const MachineMemOperand::Flags llvm::MONoClobber
static
Initial value:
=
MachineMemOperand::MOTargetFlag1

Mark the MMO of a uniform load if there are no potentially clobbering stores on any path from the start of an entry function to this load.

Definition at line 41 of file SIInstrInfo.h.

Referenced by llvm::SIInstrInfo::getSerializableMachineMemOperandTargetFlags(), llvm::SITargetLowering::getTargetMMOFlags(), llvm::SITargetLowering::isMemOpHasNoClobberedMemOperand(), and llvm::AMDGPURegisterBankInfo::isScalarLoadLegal().

◆ MONontemporalBit0

const MachineMemOperand::Flags llvm::MONontemporalBit0
static

◆ MONontemporalBit1

const MachineMemOperand::Flags llvm::MONontemporalBit1
static

◆ MOStridedAccess

const MachineMemOperand::Flags llvm::MOStridedAccess
static
Initial value:
=
MachineMemOperand::MOTargetFlag2

Definition at line 31 of file AArch64InstrInfo.h.

Referenced by llvm::AArch64InstrInfo::getSerializableMachineMemOperandTargetFlags(), and llvm::AArch64TargetLowering::getTargetMMOFlags().

◆ MOSuppressPair

const MachineMemOperand::Flags llvm::MOSuppressPair
static
Initial value:
=
MachineMemOperand::MOTargetFlag1

Definition at line 29 of file AArch64InstrInfo.h.

Referenced by llvm::AArch64InstrInfo::getSerializableMachineMemOperandTargetFlags(), and llvm::AArch64InstrInfo::suppressLdStPair().

◆ NaNL

const char llvm::NaNL[] = "nan"
static

Definition at line 794 of file APFloat.cpp.

Referenced by llvm::detail::IEEEFloat::convertToHexString().

◆ NaNU

const char llvm::NaNU[] = "NAN"
static

Definition at line 795 of file APFloat.cpp.

Referenced by llvm::detail::IEEEFloat::convertToHexString().

◆ NOMORE_ICP_MAGICNUM

const uint64_t llvm::NOMORE_ICP_MAGICNUM = -1

Magic number in the value profile metadata showing a target has been promoted for the instruction and shouldn't be promoted again.

Definition at line 57 of file Metadata.h.

Referenced by doesHistoryAllowICP(), getValueProfDataFromInstImpl(), scaleProfData(), and updateIDTMetaData().

◆ NoPGOWarnMismatch

cl::opt< bool > llvm::NoPGOWarnMismatch

Definition at line 55 of file MemProfiler.cpp.

Referenced by readMemprof(), and runNewPMPasses().

◆ NoPGOWarnMismatchComdatWeak

cl::opt< bool > llvm::NoPGOWarnMismatchComdatWeak("no-pgo-warn-mismatch-comdat-weak", cl::init(true), cl::Hidden, cl::desc("The option is used to turn on/off " "warnings about hash mismatch for comdat " "or weak functions."))

Referenced by readMemprof().

◆ NoWarnSampleUnused

cl::opt< bool > llvm::NoWarnSampleUnused("no-warn-sample-unused", cl::init(false), cl::Hidden, cl::desc("Use this option to turn off/on warnings about function with " "samples but without debug information to use those samples. "))

◆ NumberOfFeatures

constexpr size_t llvm::NumberOfFeatures
constexpr
Initial value:
=
static_cast<size_t>(FeatureIndex::NumberOfFeatures)

Definition at line 145 of file InlineModelFeatureMaps.h.

◆ NVPTXCtorDtorLoweringLegacyPassID

char & llvm::NVPTXCtorDtorLoweringLegacyPassID = NVPTXCtorDtorLoweringLegacy::ID
extern

Definition at line 290 of file NVPTXCtorDtorLowering.cpp.

◆ offsetsFromUTF8

const UTF32 llvm::offsetsFromUTF8[6]
static
Initial value:
= { 0x00000000UL, 0x00003080UL, 0x000E2080UL,
0x03C82080UL, 0xFA082080UL, 0x82082080UL }

Definition at line 135 of file ConvertUTF.cpp.

Referenced by ConvertUTF8toUTF16(), and ConvertUTF8toUTF32Impl().

◆ OptimizePHIsID

char & llvm::OptimizePHIsID = OptimizePHIs::ID
extern

OptimizePHIs - This pass optimizes machine instruction PHIs to take advantage of opportunities created during DAG legalization.

Definition at line 68 of file OptimizePHIs.cpp.

Referenced by llvm::TargetPassConfig::addMachineSSAOptimization().

◆ PackedVectorWidth

const unsigned llvm::PackedVectorWidth = 512
static

Definition at line 379 of file VE.h.

Referenced by getLegalVectorType().

◆ PartialUnrollingThreshold

cl::opt< unsigned > llvm::PartialUnrollingThreshold
extern

◆ PatchableFunctionID

char & llvm::PatchableFunctionID = PatchableFunction::ID
extern

This pass implements the "patchable-function" attribute.

Definition at line 66 of file PatchableFunction.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses(), and llvm::TargetPassConfig::addMachinePasses().

◆ PeepholeOptimizerID

char & llvm::PeepholeOptimizerID = PeepholeOptimizer::ID
extern

PeepholeOptimizer - This pass performs peephole optimizations - like extension and comparison eliminations.

Definition at line 486 of file PeepholeOptimizer.cpp.

Referenced by llvm::TargetPassConfig::addMachineSSAOptimization().

◆ PerfectShuffleTable

const unsigned llvm::PerfectShuffleTable[6561+1]
static

◆ PerLiveRangeShape

const std::vector<int64_t> llvm::PerLiveRangeShape {1}
static

Definition at line 71 of file MLRegAllocPriorityAdvisor.cpp.

Referenced by INITIALIZE_PASS().

◆ PGOViewCounts

cl::opt< PGOViewCountsType > llvm::PGOViewCounts ( "pgo-view-counts"  ,
cl::Hidden  ,
cl::desc("A boolean option to show CFG dag or text with " "block profile counts and branch probabilities " "right after PGO profile annotation step. The " "profile counts are computed using branch " "probabilities from the runtime profile data and " "block frequency propagation algorithm. To view " "the raw counts from the profile, use option " "-pgo-view-raw-counts instead. To limit graph " "display to only one function, use filtering option " "-view-bfi-func-name.")  ,
cl::values(clEnumValN(PGOVCT_None, "none", "do not show."), clEnumValN(PGOVCT_Graph, "graph", "show a graph."), clEnumValN(PGOVCT_Text, "text", "show in text."))   
)

Definition at line 324 of file PGOInstrumentation.cpp.

Referenced by annotateAllFunctions(), and getGVDT().

◆ PGOWarnMisExpect

cl::opt< bool > llvm::PGOWarnMisExpect("pgo-warn-misexpect", cl::init(false), cl::Hidden, cl::desc("Use this option to turn on/off " "warnings about incorrect usage of llvm.expect intrinsics.")) ( "pgo-warn-misexpect"  ,
cl::init(false)  ,
cl::Hidden  ,
cl::desc("Use this option to turn on/off " "warnings about incorrect usage of llvm.expect intrinsics.")   
)
static

◆ PGOWarnMissing

cl::opt< bool > llvm::PGOWarnMissing("pgo-warn-missing-function", cl::init(false), cl::Hidden, cl::desc("Use this option to turn on/off " "warnings about missing profile data for " "functions."))

Referenced by readMemprof().

◆ PGSOColdCodeOnly

cl::opt< bool > llvm::PGSOColdCodeOnly
extern

Referenced by isPGSOColdCodeOnly().

◆ PGSOColdCodeOnlyForInstrPGO

cl::opt< bool > llvm::PGSOColdCodeOnlyForInstrPGO
extern

Referenced by isPGSOColdCodeOnly().

◆ PGSOColdCodeOnlyForPartialSamplePGO

cl::opt< bool > llvm::PGSOColdCodeOnlyForPartialSamplePGO
extern

Referenced by isPGSOColdCodeOnly().

◆ PGSOColdCodeOnlyForSamplePGO

cl::opt< bool > llvm::PGSOColdCodeOnlyForSamplePGO
extern

Referenced by isPGSOColdCodeOnly().

◆ PgsoCutoffInstrProf

cl::opt< int > llvm::PgsoCutoffInstrProf
extern

◆ PgsoCutoffSampleProf

cl::opt< int > llvm::PgsoCutoffSampleProf
extern

◆ PGSOLargeWorkingSetSizeOnly

cl::opt< bool > llvm::PGSOLargeWorkingSetSizeOnly
extern

Referenced by isPGSOColdCodeOnly().

◆ PHIEliminationID

char & llvm::PHIEliminationID = PHIElimination::ID
extern

PHIElimination - This pass eliminates machine instruction PHI nodes by inserting copy instructions.

This destroys SSA information, but is the desired input for some register allocators. This pass is "required" by these register allocator like this: AU.addRequiredID(PHIEliminationID);

Definition at line 128 of file PHIElimination.cpp.

Referenced by llvm::TargetPassConfig::addFastRegAlloc(), and llvm::TargetPassConfig::addOptimizedRegAlloc().

◆ PoisonMaskElem

constexpr int llvm::PoisonMaskElem = -1
constexpr

Definition at line 2159 of file Instructions.h.

Referenced by llvm::slpvectorizer::BoUpSLP::ShuffleCostEstimator::add(), llvm::slpvectorizer::BoUpSLP::ShuffleInstructionBuilder::add(), addMask(), llvm::slpvectorizer::BoUpSLP::ShuffleInstructionBuilder::adjustExtracts(), buildUseMask(), canCreateUndefOrPoison(), canonicalizeInsertSplat(), llvm::ShuffleVectorInst::commute(), ConstantFoldShuffleVectorInstruction(), llvm::ShuffleVectorInst::convertShuffleMaskForBitcode(), createShiftShuffle(), defaultComponentBroadcast(), llvm::slpvectorizer::BoUpSLP::findReusedOrderedScalars(), foldIdentityExtractShuffle(), foldInsEltIntoIdentityShuffle(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectShuffleWith1Binop(), foldTruncShuffle(), llvm::InstCombinerImpl::foldVectorBinop(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), llvm::slpvectorizer::BoUpSLP::getReorderingData(), llvm::AArch64TTIImpl::getShuffleCost(), llvm::RISCVTTIImpl::getShuffleCost(), llvm::X86TTIImpl::getShuffleCost(), llvm::slpvectorizer::BoUpSLP::getTreeCost(), inversePermutation(), isFixedVectorShuffle(), llvm::ShuffleVectorInst::isOneUseSingleSourceMask(), llvm::ShuffleVectorInst::isReplicationMask(), isReplicationMaskWithParams(), llvm::ShuffleVectorInst::isValidOperands(), LLVMGetUndefMaskElem(), llvm::AArch64TargetLowering::lowerInterleavedStore(), llvm::slpvectorizer::BoUpSLP::optimizeGatherSequence(), performExtractsShuffleAction(), PrintShuffleMask(), processShuffleMasks(), llvm::slpvectorizer::BoUpSLP::reorderBottomToTop(), reorderOrder(), reorderReuses(), reorderScalars(), llvm::slpvectorizer::BoUpSLP::reorderTopToBottom(), scalarizeMaskedExpandLoad(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyShuffleVectorInst(), llvm::slpvectorizer::BoUpSLP::vectorizeTree(), and llvm::InstCombinerImpl::visitCallInst().

◆ PostMachineSchedulerID

char & llvm::PostMachineSchedulerID = PostMachineScheduler::ID
extern

PostMachineScheduler - This pass schedules machine instructions postRA.

Definition at line 295 of file MachineScheduler.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ PostRADirection

cl::opt< MISchedPostRASched::Direction > llvm::PostRADirection("misched-postra-direction", cl::Hidden, cl::desc("Post reg-alloc list scheduling direction"), cl::init(MISchedPostRASched::TopDown), cl::values( clEnumValN(MISchedPostRASched::TopDown, "topdown", "Force top-down post reg-alloc list scheduling"), clEnumValN(MISchedPostRASched::BottomUp, "bottomup", "Force bottom-up post reg-alloc list scheduling"), clEnumValN(MISchedPostRASched::Bidirectional, "bidirectional", "Force bidirectional post reg-alloc list scheduling"))) ( "misched-postra-direction"  ,
cl::Hidden  ,
cl::desc("Post reg-alloc list scheduling direction")  ,
cl::init(MISchedPostRASched::TopDown ,
cl::values( clEnumValN(MISchedPostRASched::TopDown, "topdown", "Force top-down post reg-alloc list scheduling"), clEnumValN(MISchedPostRASched::BottomUp, "bottomup", "Force bottom-up post reg-alloc list scheduling"), clEnumValN(MISchedPostRASched::Bidirectional, "bidirectional", "Force bidirectional post reg-alloc list scheduling"))   
)

◆ PostRAHazardRecognizerID

char & llvm::PostRAHazardRecognizerID = PostRAHazardRecognizer::ID
extern

PostRAHazardRecognizer - This pass runs the post-ra hazard recognizer.

Definition at line 61 of file PostRAHazardRecognizer.cpp.

◆ PostRAMachineSinkingID

char & llvm::PostRAMachineSinkingID = PostRAMachineSinking::ID
extern

This pass perform post-ra machine sink for COPY instructions.

Definition at line 1869 of file MachineSink.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses(), and overridePass().

◆ PostRASchedulerID

char & llvm::PostRASchedulerID = PostRAScheduler::ID
extern

PostRAScheduler - This pass performs post register allocation scheduling.

Definition at line 197 of file PostRASchedulerList.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses(), and overridePass().

◆ PPCGenScalarMASSEntriesID

char & llvm::PPCGenScalarMASSEntriesID = PPCGenScalarMASSEntries::ID
extern

Definition at line 142 of file PPCGenScalarMASSEntries.cpp.

◆ PPCLowerMASSVEntriesID

char & llvm::PPCLowerMASSVEntriesID = PPCLowerMASSVEntries::ID
extern

Definition at line 190 of file PPCLowerMASSVEntries.cpp.

◆ PPCVSXFMAMutateID

PowerPC VSX FMA false char & llvm::PPCVSXFMAMutateID = PPCVSXFMAMutate::ID
extern

Definition at line 386 of file PPCVSXFMAMutate.cpp.

◆ PrintBFI

cl::opt< bool > llvm::PrintBFI("print-bfi", cl::init(false), cl::Hidden, cl::desc("Print the block frequency info.")) ( "print-bfi"  ,
cl::init(false)  ,
cl::Hidden  ,
cl::desc("Print the block frequency info.")   
)
static

◆ PrintBFIFuncName

cl::opt< std::string > llvm::PrintBFIFuncName ( "print-bfi-func-name"  ,
cl::Hidden  ,
cl::desc("The option to specify the name of the function " "whose block frequency info is printed.")   
)

◆ PrintChanged

cl::opt< ChangePrinter > llvm::PrintChanged
extern

◆ PrintDAGs

cl::opt< bool > llvm::PrintDAGs("misched-print-dags", cl::Hidden, cl::desc("Print schedule DAGs"))

◆ PrintMachineBlockFreq

cl::opt< bool > llvm::PrintMachineBlockFreq("print-machine-bfi", cl::init(false), cl::Hidden, cl::desc("Print the machine block frequency info.")) ( "print-machine-bfi"  ,
cl::init(false)  ,
cl::Hidden  ,
cl::desc("Print the machine block frequency info.")   
)
static

◆ PrintPipelinePasses

cl::opt< bool > llvm::PrintPipelinePasses("print-pipeline-passes", cl::desc("Print a '-passes' compatible string describing the pipeline " "(best-effort only).")) ( "print-pipeline-passes"  ,
cl::desc("Print a '-passes' compatible string describing the pipeline " "(best-effort only).")   
)

◆ ProcessImplicitDefsID

char & llvm::ProcessImplicitDefsID = ProcessImplicitDefs::ID
extern

ProcessImpicitDefs pass - This pass removes IMPLICIT_DEFs.

Definition at line 58 of file ProcessImplicitDefs.cpp.

Referenced by llvm::TargetPassConfig::addOptimizedRegAlloc().

◆ ProfileCorrelate

cl::opt< InstrProfCorrelator::ProfCorrelatorKind > llvm::ProfileCorrelate ( "profile-correlate"  ,
cl::desc("Use debug info or binary file to correlate profiles.")  ,
cl::init(InstrProfCorrelator::NONE ,
cl::values(clEnumValN(InstrProfCorrelator::NONE, "", "No profile correlation"), clEnumValN(InstrProfCorrelator::DEBUG_INFO, "debug-info", "Use debug info to correlate"), clEnumValN(InstrProfCorrelator::BINARY, "binary", "Use binary to correlate"))   
)

Definition at line 333 of file PGOInstrumentation.cpp.

Referenced by createIRLevelProfileFlagVar().

◆ ProfileInlineGrowthLimit

cl::opt< int > llvm::ProfileInlineGrowthLimit("sample-profile-inline-growth-limit", cl::Hidden, cl::init(12), cl::desc("The size growth ratio limit for proirity-based sample profile " "loader inlining."))

◆ ProfileInlineLimitMax

cl::opt< int > llvm::ProfileInlineLimitMax("sample-profile-inline-limit-max", cl::Hidden, cl::init(10000), cl::desc("The upper bound of size growth limit for " "proirity-based sample profile loader inlining."))

◆ ProfileInlineLimitMin

cl::opt< int > llvm::ProfileInlineLimitMin("sample-profile-inline-limit-min", cl::Hidden, cl::init(100), cl::desc("The lower bound of size growth limit for " "proirity-based sample profile loader inlining."))

◆ ProfileLikelyProb

cl::opt< unsigned > llvm::ProfileLikelyProb("profile-likely-prob", cl::desc("branch probability threshold in percentage to be considered" " very likely when profile is available"), cl::init(51), cl::Hidden)

◆ ProfileSummaryColdCount

cl::opt< uint64_t > llvm::ProfileSummaryColdCount("profile-summary-cold-count", cl::ReallyHidden, cl::desc("A fixed cold count that overrides the count derived from" " profile-summary-cutoff-cold"))

◆ ProfileSummaryCutoffCold

cl::opt< int > llvm::ProfileSummaryCutoffCold("profile-summary-cutoff-cold", cl::Hidden, cl::init(999999), cl::desc("A count is cold if it is below the minimum count" " to reach this percentile of total counts."))

◆ ProfileSummaryCutoffHot

cl::opt< int > llvm::ProfileSummaryCutoffHot("profile-summary-cutoff-hot", cl::Hidden, cl::init(990000), cl::desc("A count is hot if it exceeds the minimum count to" " reach this percentile of total counts."))

◆ ProfileSummaryHotCount

cl::opt< uint64_t > llvm::ProfileSummaryHotCount("profile-summary-hot-count", cl::ReallyHidden, cl::desc("A fixed hot count that overrides the count derived from" " profile-summary-cutoff-hot"))

◆ ProfileSummaryHugeWorkingSetSizeThreshold

cl::opt< unsigned > llvm::ProfileSummaryHugeWorkingSetSizeThreshold("profile-summary-huge-working-set-size-threshold", cl::Hidden, cl::init(15000), cl::desc("The code working set size is considered huge if the number of" " blocks required to reach the -profile-summary-cutoff-hot" " percentile exceeds this count."))

◆ ProfileSummaryLargeWorkingSetSizeThreshold

cl::opt< unsigned > llvm::ProfileSummaryLargeWorkingSetSizeThreshold("profile-summary-large-working-set-size-threshold", cl::Hidden, cl::init(12500), cl::desc("The code working set size is considered large if the number of" " blocks required to reach the -profile-summary-cutoff-hot" " percentile exceeds this count."))

◆ PrologEpilogCodeInserterID

char & llvm::PrologEpilogCodeInserterID = PEI::ID
extern

PrologEpilogCodeInserter - This pass inserts prolog and epilog code, and eliminates abstract frame references.

Definition at line 149 of file PrologEpilogInserter.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ PseudoProbeDescMetadataName

constexpr const char* llvm::PseudoProbeDescMetadataName = "llvm.pseudo_probe_desc"
constexpr

◆ PseudoProbeFullDistributionFactor

constexpr uint64_t llvm::PseudoProbeFullDistributionFactor
staticconstexpr
Initial value:
=
std::numeric_limits<uint64_t>::max()

Definition at line 38 of file PseudoProbe.h.

Referenced by extractProbe(), llvm::SampleProfileProber::instrumentOneFunc(), and setProbeDistributionFactor().

◆ R600ClauseMergePassID

char & llvm::R600ClauseMergePassID = R600ClauseMergePass::ID
extern

Definition at line 74 of file R600ClauseMergePass.cpp.

◆ R600ControlFlowFinalizerID

char & llvm::R600ControlFlowFinalizerID = R600ControlFlowFinalizer::ID
extern

Definition at line 685 of file R600ControlFlowFinalizer.cpp.

◆ R600ExpandSpecialInstrsPassID

char & llvm::R600ExpandSpecialInstrsPassID = R600ExpandSpecialInstrsPass::ID
extern

Definition at line 57 of file R600ExpandSpecialInstrs.cpp.

◆ R600PacketizerID

char & llvm::R600PacketizerID = R600Packetizer::ID
extern

Definition at line 400 of file R600Packetizer.cpp.

◆ R600VectorRegMergerID

char & llvm::R600VectorRegMergerID = R600VectorRegMerger::ID
extern

Definition at line 134 of file R600OptimizeVectorRegisters.cpp.

◆ RABasicID

char & llvm::RABasicID = RABasic::ID
extern

Basic register allocator.

Definition at line 128 of file RegAllocBasic.cpp.

◆ RAGreedyID

char & llvm::RAGreedyID = RAGreedy::ID
extern

Greedy register allocator.

Definition at line 153 of file RegAllocGreedy.cpp.

◆ RegisterCoalescerID

char & llvm::RegisterCoalescerID = RegisterCoalescer::ID
extern

RegisterCoalescer - This pass merges live ranges to eliminate copies.

Definition at line 405 of file RegisterCoalescer.cpp.

Referenced by llvm::TargetPassConfig::addOptimizedRegAlloc().

◆ RegList16AVR

const MCPhysReg llvm::RegList16AVR[]
static
Initial value:
= {
AVR::R26R25, AVR::R25R24, AVR::R24R23, AVR::R23R22, AVR::R22R21,
AVR::R21R20, AVR::R20R19, AVR::R19R18, AVR::R18R17, AVR::R17R16,
AVR::R16R15, AVR::R15R14, AVR::R14R13, AVR::R13R12, AVR::R12R11,
AVR::R11R10, AVR::R10R9, AVR::R9R8}

Definition at line 1221 of file AVRISelLowering.cpp.

Referenced by analyzeArguments(), and analyzeReturnValues().

◆ RegList16Tiny

const MCPhysReg llvm::RegList16Tiny[]
static
Initial value:
= {AVR::R26R25, AVR::R25R24,
AVR::R24R23, AVR::R23R22,
AVR::R22R21, AVR::R21R20}

Definition at line 1226 of file AVRISelLowering.cpp.

Referenced by analyzeArguments(), and analyzeReturnValues().

◆ RegList8AVR

const MCPhysReg llvm::RegList8AVR[]
static
Initial value:
= {
AVR::R25, AVR::R24, AVR::R23, AVR::R22, AVR::R21, AVR::R20,
AVR::R19, AVR::R18, AVR::R17, AVR::R16, AVR::R15, AVR::R14,
AVR::R13, AVR::R12, AVR::R11, AVR::R10, AVR::R9, AVR::R8}

Registers for calling conventions, ordered in reverse as required by ABI.

Both arrays must be of the same length.

Definition at line 1215 of file AVRISelLowering.cpp.

Referenced by analyzeArguments(), and analyzeReturnValues().

◆ RegList8Tiny

const MCPhysReg llvm::RegList8Tiny[]
static
Initial value:
= {AVR::R25, AVR::R24, AVR::R23,
AVR::R22, AVR::R21, AVR::R20}

Definition at line 1219 of file AVRISelLowering.cpp.

Referenced by analyzeArguments(), and analyzeReturnValues().

◆ RemarksFilename

cl::opt< std::string > llvm::RemarksFilename ( "lto-pass-remarks-output"  ,
cl::desc("Output filename for pass remarks")  ,
cl::value_desc("filename")   
)

◆ RemarksFormat

cl::opt< std::string > llvm::RemarksFormat ( "lto-pass-remarks-format"  ,
cl::desc("The format used for serializing remarks (default: YAML)")  ,
cl::value_desc("format")  ,
cl::init("yaml")   
)

◆ RemarksHotnessThreshold

cl::opt< std::optional< uint64_t >, false, remarks::HotnessThresholdParser > llvm::RemarksHotnessThreshold ( "lto-pass-remarks-hotness-threshold"  ,
cl::desc("Minimum profile count required for an " "optimization remark to be output." " Use 'auto' to apply the threshold from profile summary.")  ,
cl::value_desc("uint or 'auto'")  ,
cl::init(0)  ,
cl::Hidden   
)

◆ RemarksPasses

cl::opt< std::string > llvm::RemarksPasses ( "lto-pass-remarks-filter"  ,
cl::desc("Only record optimization remarks from passes whose " "names match the given regular expression")  ,
cl::value_desc("regex")   
)

◆ RemarksWithHotness

cl::opt< bool > llvm::RemarksWithHotness ( "lto-pass-remarks-with-hotness"  ,
cl::desc("With PGO, include profile count in optimization remarks")  ,
cl::Hidden   
)

◆ RemoveRedundantDebugValuesID

char & llvm::RemoveRedundantDebugValuesID = RemoveRedundantDebugValues::ID
extern

RemoveRedundantDebugValues pass.

Definition at line 61 of file RemoveRedundantDebugValues.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ RenameIndependentSubregsID

char & llvm::RenameIndependentSubregsID = RenameIndependentSubregs::ID
extern

This pass detects subregister lanes in a virtual register that are used independently of other lanes and splits them into separate virtual registers.

Definition at line 113 of file RenameIndependentSubregs.cpp.

Referenced by llvm::TargetPassConfig::addOptimizedRegAlloc().

◆ RequireAndPreserveDomTree

cl::opt< bool > llvm::RequireAndPreserveDomTree
extern

This function is used to do simplification of a CFG.

For example, it adjusts branches to branches to eliminate the extra hop, it eliminates unreachable basic blocks, and does other peephole optimization of the CFG. It returns true if a modification was made, possibly deleting the basic block that was pointed to. LoopHeaders is an optional input parameter providing the set of loop headers that SimplifyCFG should not eliminate.

Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/llvm/include/llvm/Transforms/Utils/Local.h.

Referenced by llvm::SimplifyCFGPass::run(), llvm::AMDGPUUnifyDivergentExitNodesPass::run(), and simplifyFunctionCFG().

◆ ReuseFrameIndexVals

cl::opt<bool> llvm::ReuseFrameIndexVals
extern

◆ RewardName

const char *const llvm::RewardName = "delta_size"
extern

Definition at line 112 of file MLInlineAdvisor.cpp.

◆ RISCVFeatureKV

const SubtargetFeatureKV llvm::RISCVFeatureKV
extern

Definition at line 26 of file RISCVBaseInfo.cpp.

Referenced by llvm::RISCVFeatures::parseFeatureBits().

◆ SampleColdCallSiteThreshold

cl::opt< int > llvm::SampleColdCallSiteThreshold("sample-profile-cold-inline-threshold", cl::Hidden, cl::init(45), cl::desc("Threshold for inlining cold callsites"))

◆ SampleHotCallSiteThreshold

cl::opt< int > llvm::SampleHotCallSiteThreshold("sample-profile-hot-inline-threshold", cl::Hidden, cl::init(3000), cl::desc("Hot callsite threshold for proirity-based sample profile loader " "inlining."))

◆ SampleProfileMaxPropagateIterations

cl::opt< unsigned > llvm::SampleProfileMaxPropagateIterations("sample-profile-max-propagate-iterations", cl::init(100), cl::desc("Maximum number of iterations to go through when propagating " "sample block/edge weights through the CFG."))

◆ SampleProfileRecordCoverage

cl::opt< unsigned > llvm::SampleProfileRecordCoverage("sample-profile-check-record-coverage", cl::init(0), cl::value_desc("N"), cl::desc("Emit a warning if less than N% of records in the input profile " "are matched to the IR."))

◆ SampleProfileSampleCoverage

cl::opt< unsigned > llvm::SampleProfileSampleCoverage("sample-profile-check-sample-coverage", cl::init(0), cl::value_desc("N"), cl::desc("Emit a warning if less than N% of samples in the input profile " "are matched to the IR."))

◆ SampleProfileUseProfi

cl::opt< bool > llvm::SampleProfileUseProfi("sample-profile-use-profi", cl::Hidden, cl::desc("Use profi to infer block and edge counts."))

◆ SCEVCheapExpansionBudget

cl::opt< unsigned > llvm::SCEVCheapExpansionBudget
extern

◆ semBFloat

constexpr fltSemantics llvm::semBFloat = {127, -126, 8, 16}
staticconstexpr

◆ semBogus

constexpr fltSemantics llvm::semBogus = {0, 0, 0, 0}
staticconstexpr

◆ semFloat8E4M3B11FNUZ

constexpr fltSemantics llvm::semFloat8E4M3B11FNUZ
staticconstexpr
Initial value:
= {
4, -10, 4, 8, fltNonfiniteBehavior::NanOnly, fltNanEncoding::NegativeZero}

Definition at line 139 of file APFloat.cpp.

Referenced by llvm::detail::IEEEFloat::bitcastToAPInt(), and llvm::APFloatBase::Float8E4M3B11FNUZ().

◆ semFloat8E4M3FN

constexpr fltSemantics llvm::semFloat8E4M3FN
staticconstexpr
Initial value:
= {
8, -6, 4, 8, fltNonfiniteBehavior::NanOnly, fltNanEncoding::AllOnes}

Definition at line 135 of file APFloat.cpp.

Referenced by llvm::detail::IEEEFloat::bitcastToAPInt(), and llvm::APFloatBase::Float8E4M3FN().

◆ semFloat8E4M3FNUZ

constexpr fltSemantics llvm::semFloat8E4M3FNUZ
staticconstexpr
Initial value:
= {
7, -7, 4, 8, fltNonfiniteBehavior::NanOnly, fltNanEncoding::NegativeZero}

Definition at line 137 of file APFloat.cpp.

Referenced by llvm::detail::IEEEFloat::bitcastToAPInt(), and llvm::APFloatBase::Float8E4M3FNUZ().

◆ semFloat8E5M2

constexpr fltSemantics llvm::semFloat8E5M2 = {15, -14, 3, 8}
staticconstexpr

◆ semFloat8E5M2FNUZ

constexpr fltSemantics llvm::semFloat8E5M2FNUZ
staticconstexpr
Initial value:
= {
15, -15, 3, 8, fltNonfiniteBehavior::NanOnly, fltNanEncoding::NegativeZero}

Definition at line 133 of file APFloat.cpp.

Referenced by llvm::detail::IEEEFloat::bitcastToAPInt(), and llvm::APFloatBase::Float8E5M2FNUZ().

◆ semFloatTF32

constexpr fltSemantics llvm::semFloatTF32 = {127, -126, 11, 19}
staticconstexpr

◆ semIEEEdouble

constexpr fltSemantics llvm::semIEEEdouble = {1023, -1022, 53, 64}
staticconstexpr

◆ semIEEEhalf

constexpr fltSemantics llvm::semIEEEhalf = {15, -14, 11, 16}
staticconstexpr

◆ semIEEEquad

constexpr fltSemantics llvm::semIEEEquad = {16383, -16382, 113, 128}
staticconstexpr

◆ semIEEEsingle

constexpr fltSemantics llvm::semIEEEsingle = {127, -126, 24, 32}
staticconstexpr

◆ semPPCDoubleDouble

constexpr fltSemantics llvm::semPPCDoubleDouble = {-1, 0, 0, 128}
staticconstexpr

◆ semPPCDoubleDoubleLegacy

constexpr fltSemantics llvm::semPPCDoubleDoubleLegacy
staticconstexpr

◆ semX87DoubleExtended

constexpr fltSemantics llvm::semX87DoubleExtended = {16383, -16382, 64, 80}
staticconstexpr

◆ SetLicmMssaNoAccForPromotionCap

cl::opt< unsigned > llvm::SetLicmMssaNoAccForPromotionCap
extern

◆ SetLicmMssaOptCap

cl::opt< unsigned > llvm::SetLicmMssaOptCap
extern

◆ ShadowStackGCLoweringID

char & llvm::ShadowStackGCLoweringID = ShadowStackGCLowering::ID
extern

ShadowStackGCLowering - Implements the custom lowering mechanism used by the shadow stack GC.

Definition at line 134 of file ShadowStackGCLowering.cpp.

Referenced by llvm::TargetPassConfig::addIRPasses(), and llvm::AMDGPUPassConfig::AMDGPUPassConfig().

◆ ShouldPreserveAllAttributes

cl::opt< bool > llvm::ShouldPreserveAllAttributes("assume-preserve-all", cl::init(false), cl::Hidden, cl::desc("enable preservation of all attrbitues. even those that are " "unlikely to be usefull")) ( "assume-preserve-all"  ,
cl::init(false)  ,
cl::Hidden  ,
cl::desc("enable preservation of all attrbitues. even those that are " "unlikely to be usefull")   
)

◆ ShrinkWrapID

char & llvm::ShrinkWrapID = ShrinkWrap::ID
extern

ShrinkWrap pass. Look for the best place to insert save and restore.

Definition at line 288 of file ShrinkWrap.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().

◆ SIAnnotateControlFlowPassID

char& llvm::SIAnnotateControlFlowPassID
extern

◆ SIFixSGPRCopiesID

char & llvm::SIFixSGPRCopiesID = SIFixSGPRCopies::ID
extern

Definition at line 182 of file SIFixSGPRCopies.cpp.

◆ SIFixVGPRCopiesID

char & llvm::SIFixVGPRCopiesID = SIFixVGPRCopies::ID
extern

Definition at line 50 of file SIFixVGPRCopies.cpp.

◆ SIFoldOperandsID

char& llvm::SIFoldOperandsID
extern

◆ SIFormMemoryClausesID

char & llvm::SIFormMemoryClausesID = SIFormMemoryClauses::ID
extern

Definition at line 91 of file SIFormMemoryClauses.cpp.

◆ SIInsertHardClausesID

char & llvm::SIInsertHardClausesID = SIInsertHardClauses::ID
extern

Definition at line 272 of file SIInsertHardClauses.cpp.

◆ SIInsertWaitcntsID

char & llvm::SIInsertWaitcntsID = SIInsertWaitcnts::ID
extern

Definition at line 1129 of file SIInsertWaitcnts.cpp.

◆ SILateBranchLoweringPassID

SI insert s_cbranch_execz false char & llvm::SILateBranchLoweringPassID = SILateBranchLowering::ID
extern

Definition at line 67 of file SILateBranchLowering.cpp.

◆ SILoadStoreOptimizerID

char & llvm::SILoadStoreOptimizerID = SILoadStoreOptimizer::ID
extern

Definition at line 837 of file SILoadStoreOptimizer.cpp.

◆ SILowerControlFlowID

char & llvm::SILowerControlFlowID = SILowerControlFlow::ID
extern

Definition at line 176 of file SILowerControlFlow.cpp.

◆ SILowerI1CopiesID

char & llvm::SILowerI1CopiesID = SILowerI1Copies::ID
extern

Definition at line 409 of file SILowerI1Copies.cpp.

◆ SILowerSGPRSpillsID

SI lower SGPR spill false char & llvm::SILowerSGPRSpillsID = SILowerSGPRSpills::ID
extern

Definition at line 83 of file SILowerSGPRSpills.cpp.

◆ SILowerWWMCopiesID

char & llvm::SILowerWWMCopiesID = SILowerWWMCopies::ID
extern

Definition at line 73 of file SILowerWWMCopies.cpp.

◆ SIMemoryLegalizerID

char & llvm::SIMemoryLegalizerID = SIMemoryLegalizer::ID
extern

Definition at line 2671 of file SIMemoryLegalizer.cpp.

◆ SIModeRegisterID

char& llvm::SIModeRegisterID
extern

◆ SIOptimizeExecMaskingID

char & llvm::SIOptimizeExecMaskingID = SIOptimizeExecMasking::ID
extern

Definition at line 93 of file SIOptimizeExecMasking.cpp.

◆ SIOptimizeExecMaskingPreRAID

char & llvm::SIOptimizeExecMaskingPreRAID = SIOptimizeExecMaskingPreRA::ID
extern

Definition at line 75 of file SIOptimizeExecMaskingPreRA.cpp.

◆ SIOptimizeVGPRLiveRangeID

SI Optimize VGPR false char & llvm::SIOptimizeVGPRLiveRangeID = SIOptimizeVGPRLiveRange::ID
extern

Definition at line 627 of file SIOptimizeVGPRLiveRange.cpp.

◆ SIPeepholeSDWAID

char & llvm::SIPeepholeSDWAID = SIPeepholeSDWA::ID
extern

Definition at line 192 of file SIPeepholeSDWA.cpp.

◆ SIPostRABundlerID

char & llvm::SIPostRABundlerID = SIPostRABundler::ID
extern

Definition at line 69 of file SIPostRABundler.cpp.

◆ SIPreAllocateWWMRegsID

char & llvm::SIPreAllocateWWMRegsID = SIPreAllocateWWMRegs::ID
extern

Definition at line 86 of file SIPreAllocateWWMRegs.cpp.

◆ SIPreEmitPeepholeID

char& llvm::SIPreEmitPeepholeID
extern

◆ SIShrinkInstructionsID

char& llvm::SIShrinkInstructionsID
extern

◆ SIWholeQuadModeID

SI Whole Quad false char & llvm::SIWholeQuadModeID = SIWholeQuadMode::ID
extern

Definition at line 264 of file SIWholeQuadMode.cpp.

◆ SIZE_LONG

const int llvm::SIZE_LONG = 4

Definition at line 22 of file AVRMCELFStreamer.h.

Referenced by llvm::AVRMCELFStreamer::emitValueForModiferKind().

◆ SIZE_WORD

const int llvm::SIZE_WORD = 2

Definition at line 23 of file AVRMCELFStreamer.h.

Referenced by llvm::AVRMCELFStreamer::emitValueForModiferKind().

◆ SmallVector

template<typename T , unsigned N>
class LLVM_GSL_OWNER llvm::SmallVector

Forward declaration of SmallVector so that calculateSmallVectorDefaultInlinedElements can reference sizeof(SmallVector<T, 0>).

Definition at line 1135 of file SmallVector.h.

◆ SortProfiledSCC

cl::opt< bool > llvm::SortProfiledSCC("sort-profiled-scc-member", cl::init(true), cl::Hidden, cl::desc("Sort profiled recursion by edge weights."))

◆ SpillPlacementID

char & llvm::SpillPlacementID = SpillPlacement::ID
extern

SpillPlacement analysis.

Suggest optimal placement of spill code between basic blocks.

Definition at line 49 of file SpillPlacement.cpp.

◆ SrcMgr

SourceMgr llvm::SrcMgr

◆ StackColoringID

char & llvm::StackColoringID = StackColoring::ID
extern

StackSlotColoring - This pass performs stack coloring and merging.

It merges disjoint allocas to reduce the stack size.

Definition at line 516 of file StackColoring.cpp.

Referenced by llvm::TargetPassConfig::addMachineSSAOptimization().

◆ StackFrameLayoutAnalysisPassID

char & llvm::StackFrameLayoutAnalysisPassID = StackFrameLayoutAnalysisPass::ID
extern

StackFramePrinter - This pass prints the stack frame layout and variable mappings.

Definition at line 244 of file StackFrameLayoutAnalysisPass.cpp.

◆ StackMapLivenessID

char & llvm::StackMapLivenessID = StackMapLiveness::ID
extern

StackMapLiveness - This pass analyses the register live-out set of stackmap/patchpoint intrinsics and attaches the calculated information to the intrinsic for later emission to the StackMap.

Definition at line 86 of file StackMapLivenessAnalysis.cpp.

Referenced by llvm::AMDGPUPassConfig::addIRPasses(), llvm::TargetPassConfig::addMachinePasses(), and llvm::AMDGPUPassConfig::AMDGPUPassConfig().

◆ StackSlotColoringID

char & llvm::StackSlotColoringID = StackSlotColoring::ID
extern

StackSlotColoring - This pass performs stack slot coloring.

Definition at line 174 of file StackSlotColoring.cpp.

Referenced by llvm::TargetPassConfig::addOptimizedRegAlloc(), and overridePass().

◆ StandardVectorWidth

const unsigned llvm::StandardVectorWidth = 256
static

Definition at line 378 of file VE.h.

Referenced by getLegalVectorType(), isPackedVectorType(), and splitVectorType().

◆ StaticLikelyProb

cl::opt< unsigned > llvm::StaticLikelyProb("static-likely-prob", cl::desc("branch probability threshold in percentage" "to be considered very likely"), cl::init(80), cl::Hidden)

◆ SupportsHotColdNew

cl::opt< bool > llvm::SupportsHotColdNew("supports-hot-cold-new", cl::init(false), cl::Hidden, cl::desc("Linking with hot/cold operator new interfaces"))

Indicate we are linking with an allocator that supports hot/cold operator new interfaces.

Referenced by llvm::lto::LTO::run(), and llvm::MemProfContextDisambiguation::run().

◆ SwpEnableCopyToPhi

cl::opt< bool > llvm::SwpEnableCopyToPhi("pipeliner-enable-copytophi", cl::ReallyHidden, cl::init(true), cl::desc("Enable CopyToPhi DAG Mutation"))

◆ SwpForceIssueWidth

cl::opt< int > llvm::SwpForceIssueWidth("pipeliner-force-issue-width", cl::desc("Force pipeliner to use specified issue width."), cl::Hidden, cl::init(-1))

A command line argument to force pipeliner to use specified issue width.

Referenced by llvm::ResourceManager::ResourceManager().

◆ TailDuplicateID

char & llvm::TailDuplicateID = TailDuplicate::ID
extern

TailDuplicate - Duplicate blocks with unconditional branches into tails of their predecessors.

Definition at line 76 of file TailDuplication.cpp.

Referenced by llvm::TargetPassConfig::addMachineLateOptimization(), and overridePass().

◆ TensorTypeNames

std::array<std::string, static_cast<size_t>(TensorType::Total)> llvm::TensorTypeNames
static
Initial value:
{"INVALID",
#define TFUTILS_GETNAME_IMPL(T, _)
}

Definition at line 40 of file TensorSpec.cpp.

Referenced by toString().

◆ TheXtensaTarget

Target llvm::TheXtensaTarget
extern

Definition at line 23 of file XtensaTargetMachine.h.

Referenced by getTheXtensaTarget().

◆ TimePassesIsEnabled

bool llvm::TimePassesIsEnabled = false

If the user specifies the -time-passes argument on an LLVM tool command line then the value of this boolean will be true, otherwise false.

This is the storage for the -time-passes option.

Definition at line 37 of file PassTimingInfo.cpp.

Referenced by llvm::AsmPrinter::doFinalization(), llvm::AsmPrinter::doInitialization(), llvm::AsmPrinter::emitFunctionBody(), llvm::AsmPrinter::emitGlobalVariable(), and parseIR().

◆ TimePassesPerRun

bool llvm::TimePassesPerRun = false

If TimePassesPerRun is true, there would be one line of report for each pass invocation.

If TimePassesPerRun is false, there would be only one line of report for each pass (even there are more than one pass objects). (For new pass manager only)

Definition at line 38 of file PassTimingInfo.cpp.

◆ trailingBytesForUTF8

const char llvm::trailingBytesForUTF8[256]
static
Initial value:
= {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5
}

Definition at line 119 of file ConvertUTF.cpp.

Referenced by ConvertUTF8toUTF16(), ConvertUTF8toUTF32Impl(), getNumBytesForUTF8(), getUTF8SequenceSize(), isLegalUTF8Sequence(), and isLegalUTF8String().

◆ TwoAddressInstructionPassID

char & llvm::TwoAddressInstructionPassID = TwoAddressInstructionPass::ID
extern

TwoAddressInstruction - This pass reduces two-address instructions to use two operands.

This destroys SSA information but it is desired by register allocators.

Definition at line 215 of file TwoAddressInstructionPass.cpp.

Referenced by llvm::TargetPassConfig::addFastRegAlloc(), and llvm::TargetPassConfig::addOptimizedRegAlloc().

◆ UnpackMachineBundlesID

char & llvm::UnpackMachineBundlesID = UnpackMachineBundles::ID
extern

UnpackMachineBundles - This pass unpack machine instruction bundles.

Definition at line 42 of file MachineInstrBundle.cpp.

◆ UnreachableMachineBlockElimID

char& llvm::UnreachableMachineBlockElimID
extern

UnreachableMachineBlockElimination - This pass removes unreachable machine basic blocks.

Referenced by llvm::TargetPassConfig::addOptimizedRegAlloc(), and llvm::LiveVariables::getAnalysisUsage().

◆ UseContextLessSummary

cl::opt< bool > llvm::UseContextLessSummary("profile-summary-contextless", cl::Hidden, cl::desc("Merge context profiles before calculating thresholds."))

◆ UseIterativeBFIInference

cl::opt< bool > llvm::UseIterativeBFIInference("use-iterative-bfi-inference", cl::Hidden, cl::desc("Apply an iterative post-processing to infer correct BFI counts"))

◆ UseLEB128Directives

cl::opt< cl::boolOrDefault > llvm::UseLEB128Directives ( "use-leb128-directives"  ,
cl::Hidden  ,
cl::desc( "Disable the usage of LEB128 directives, and generate .byte instead.")  ,
cl::init(cl::BOU_UNSET  
)

◆ UseSegmentSetForPhysRegs

cl::opt< bool > llvm::UseSegmentSetForPhysRegs("use-segment-set-for-physregs", cl::Hidden, cl::init(true), cl::desc( "Use segment set for the computation of the live ranges of physregs."))

◆ VerifyDomInfo

bool llvm::VerifyDomInfo = false
extern

Enables verification of dominator trees.

This check is expensive and is disabled by default. -verify-dom-info allows selectively enabling the check without needing to recompile.

Definition at line 40 of file Dominators.cpp.

Referenced by llvm::FunctionToLoopPassAdaptor::run(), llvm::PostDominatorTreeWrapperPass::verifyAnalysis(), and llvm::DominatorTreeWrapperPass::verifyAnalysis().

◆ VerifyHSAMetadata

cl::opt< bool > llvm::VerifyHSAMetadata("amdgpu-verify-hsa-metadata", cl::desc("Verify AMDGPU HSA Metadata")) ( "amdgpu-verify-hsa-metadata"  ,
cl::desc("Verify AMDGPU HSA Metadata")   
)
static

◆ VerifyLoopInfo

bool llvm::VerifyLoopInfo = false
extern

Enable verification of loop info.

The flag enables checks which are expensive and are disabled by default unless the EXPENSIVE_CHECKS macro is defined. The -verify-loop-info flag allows the checks to be enabled selectively without re-compilation.

Definition at line 50 of file LoopInfo.cpp.

Referenced by llvm::FunctionToLoopPassAdaptor::run(), turnGuardIntoBranch(), and llvm::LoopInfoWrapperPass::verifyAnalysis().

◆ VerifyMachineDomInfo

bool llvm::VerifyMachineDomInfo = false

◆ VerifyMemorySSA

bool llvm::VerifyMemorySSA = false
extern

◆ VerifySCEV

bool llvm::VerifySCEV = false
extern

◆ VerifyScheduling

cl::opt< bool > llvm::VerifyScheduling("verify-misched", cl::Hidden, cl::desc("Verify machine instrs before and after machine scheduling"))

◆ ViewBlockFreqFuncName

cl::opt< std::string > llvm::ViewBlockFreqFuncName ( "view-bfi-func-name"  ,
cl::Hidden  ,
cl::desc("The option to specify " "the name of the function " "whose CFG will be displayed.")   
)

◆ ViewBlockLayoutWithBFI

cl::opt< GVDAGType > llvm::ViewBlockLayoutWithBFI ( "view-block-layout-with-bfi"  ,
cl::Hidden  ,
cl::desc( "Pop up a window to show a dag displaying MBP layout and associated " "block frequencies of the CFG.")  ,
cl::values(clEnumValN(GVDT_None, "none", "do not display graphs."), clEnumValN(GVDT_Fraction, "fraction", "display a graph using the " "fractional block frequency representation."), clEnumValN(GVDT_Integer, "integer", "display a graph using the raw " "integer fractional block frequency representation."), clEnumValN(GVDT_Count, "count", "display a graph using the real " "profile count if available."))   
)

Definition at line 225 of file MachineBlockPlacement.cpp.

Referenced by getGVDT().

◆ ViewHotFreqPercent

cl::opt< unsigned > llvm::ViewHotFreqPercent ( "view-hot-freq-percent"  ,
cl::init(10)  ,
cl::Hidden  ,
cl::desc("An integer in percent used to specify " "the hot blocks/edges to be displayed " "in red: a block or edge whose frequency " "is no less than the max frequency of the " "function multiplied by this percent.")   
)

◆ ViewMachineBlockFreqPropagationDAG

cl::opt< GVDAGType > llvm::ViewMachineBlockFreqPropagationDAG("view-machine-block-freq-propagation-dags", cl::Hidden, cl::desc("Pop up a window to show a dag displaying how machine block " "frequencies propagate through the CFG."), cl::values(clEnumValN(GVDT_None, "none", "do not display graphs."), clEnumValN(GVDT_Fraction, "fraction", "display a graph using the " "fractional block frequency representation."), clEnumValN(GVDT_Integer, "integer", "display a graph using the raw " "integer fractional block frequency representation."), clEnumValN(GVDT_Count, "count", "display a graph using the real " "profile count if available."))) ( "view-machine-block-freq-propagation-dags"  ,
cl::Hidden  ,
cl::desc("Pop up a window to show a dag displaying how machine block " "frequencies propagate through the CFG.")  ,
cl::values(clEnumValN(GVDT_None, "none", "do not display graphs."), clEnumValN(GVDT_Fraction, "fraction", "display a graph using the " "fractional block frequency representation."), clEnumValN(GVDT_Integer, "integer", "display a graph using the raw " "integer fractional block frequency representation."), clEnumValN(GVDT_Count, "count", "display a graph using the real " "profile count if available."))   
)
static

◆ ViewMISchedDAGs

cl::opt< bool > llvm::ViewMISchedDAGs("view-misched-dags", cl::Hidden, cl::desc("Pop up a window to show MISched dags after they are processed"))

◆ VirtRegRewriterID

char & llvm::VirtRegRewriterID = VirtRegRewriter::ID
extern

VirtRegRewriter pass.

Rewrite virtual registers to physical registers as assigned in VirtRegMap.

Definition at line 227 of file VirtRegMap.cpp.

Referenced by llvm::TargetPassConfig::addRegAssignAndRewriteOptimized().

◆ WebAssemblyFeatureKV

const SubtargetFeatureKV llvm::WebAssemblyFeatureKV[WebAssembly::NumSubtargetFeatures]
extern

◆ XRayInstrumentationID

char & llvm::XRayInstrumentationID = XRayInstrumentation::ID
extern

This pass inserts the XRay instrumentation sleds if they are supported by the target platform.

Definition at line 264 of file XRayInstrumentation.cpp.

Referenced by llvm::TargetPassConfig::addMachinePasses().