class CodeGenFunction

Declaration

class CodeGenFunction : public CodeGenTypeCache { /* full declaration omitted */ };

Description

CodeGenFunction - This class organizes the per-function state that is used while generating LLVM code.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:231

Inherits from: CodeGenTypeCache

Member Variables

public clang::CodeGen::CodeGenModule& CGM
public const clang::TargetInfo& Target
public clang::CodeGen::CodeGenFunction* ParentCGF = nullptr
public clang::CodeGen::LoopInfoStack LoopStack
public clang::CodeGen::CGBuilderTy Builder
public clang::CodeGen::VarBypassDetector Bypasses
public SmallVector<llvm::CanonicalLoopInfo*, 4> OMPLoopNestStack
Since OMPCanonicalLoops are nested inside other statements (in particular CapturedStmt generated by OMPExecutableDirective and non-perfectly nested loops), we cannot directly call OMPEmitOMPCanonicalLoop and receive its llvm::CanonicalLoopInfo. Instead, we call EmitStmt and any OMPEmitOMPCanonicalLoop called by it will add its CanonicalLoopInfo to this stack when done. Entering a new loop requires clearing this list; it either means we start parsing a new loop nest (in which case the previous loop nest goes out of scope) or a second loop in the same level in which case it would be ambiguous into which of the two (or more) loops the loop nest would extend.
public int ExpectedOMPLoopDepth = 0
Number of nested loop to be consumed by the last surrounding loop-associated directive.
public const clang::Decl* CurFuncDecl
CurFuncDecl - Holds the Decl for the current outermost non-closure context.
public const clang::Decl* CurCodeDecl
CurCodeDecl - This is the inner-most code context, which includes blocks.
public const clang::CodeGen::CGFunctionInfo* CurFnInfo
public clang::QualType FnRetTy
public llvm::Function* CurFn = nullptr
public llvm::SmallVector<const ParmVarDecl*, 4> FnArgs
Save Parameter Decl for coroutine.
public clang::CodeGen::CodeGenFunction::CGCoroInfo CurCoro
public clang::GlobalDecl CurGD
CurGD - The GlobalDecl for the current function being compiled.
public EHScopeStack::stable_iterator PrologueCleanupDepth
PrologueCleanupDepth - The cleanup depth enclosing all the cleanups associated with the parameters.
public clang::CodeGen::CodeGenFunction::JumpDest ReturnBlock
ReturnBlock - Unified return block.
public clang::CodeGen::Address ReturnValue = Address::invalid()
ReturnValue - The temporary alloca to hold the return value. This is invalid iff the function has no return value.
public clang::CodeGen::Address ReturnValuePointer = Address::invalid()
ReturnValuePointer - The temporary alloca to hold a pointer to sret. This is invalid if sret is not in use.
public const clang::Expr* RetExpr = nullptr
If a return statement is being visited, this holds the return statment's result expression.
public llvm::AssertingVH<llvm::Instruction> AllocaInsertPt
AllocaInsertPoint - This is an instruction in the entry block before which we prefer to insert allocas.
private llvm::AssertingVH<llvm::Instruction> PostAllocaInsertPt = nullptr
PostAllocaInsertPt will be lazily created when it is *really* required.
public clang::CodeGen::CodeGenFunction:: CGCapturedStmtInfo* CapturedStmtInfo = nullptr
public clang::SanitizerSet SanOpts
Sanitizers enabled for this function.
public bool IsSanitizerScope = false
True if CodeGen currently emits code implementing sanitizer checks.
public bool CurFuncIsThunk = false
In C++, whether we are code generating a thunk. This controls whether we should emit cleanups.
public bool AutoreleaseResult = false
In ARC, whether we should autorelease the return value.
public bool SawAsmBlock = false
Whether we processed a Microsoft-style asm block during CodeGen. These can potentially set the return value.
public const clang::NamedDecl* CurSEHParent = nullptr
public bool IsOutlinedSEHHelper = false
True if the current function is an outlined SEH helper. This can be a finally block or filter expression.
public bool IsInPreservedAIRegion = false
True if CodeGen currently emits code inside presereved access index region.
public bool InNoMergeAttributedStmt = false
True if the current statement has nomerge attribute.
public bool InNoInlineAttributedStmt = false
True if the current statement has noinline attribute.
public bool InAlwaysInlineAttributedStmt = false
True if the current statement has always_inline attribute.
public const clang::CallExpr* MustTailCall = nullptr
public const CodeGen::CGBlockInfo* BlockInfo = nullptr
public llvm::Value* BlockPointer = nullptr
public llvm::DenseMap<const VarDecl*, FieldDecl*> LambdaCaptureFields
public clang::FieldDecl* LambdaThisCaptureField = nullptr
public llvm::DenseMap<const VarDecl*, llvm::Value*> NRVOFlags
A mapping from NRVO variables to the flags used to indicate when the NRVO has been applied to this variable.
public clang::CodeGen::EHScopeStack EHStack
public llvm::SmallVector<char, 256> LifetimeExtendedCleanupStack
public llvm::SmallVector<const JumpDest*, 2> SEHTryEpilogueStack
public llvm::Instruction* CurrentFuncletPad = nullptr
public clang::CodeGen::Address NormalCleanupDest = Address::invalid()
i32s containing the indexes of the cleanup destinations.
public unsigned int NextCleanupDestIndex = 1
public llvm::BasicBlock* EHResumeBlock = nullptr
EHResumeBlock - Unified block containing a call to llvm.eh.resume.
public llvm::Value* ExceptionSlot = nullptr
The exception slot. All landing pads write the current exception pointer into this alloca.
public llvm::AllocaInst* EHSelectorSlot = nullptr
The selector slot. Under the MandatoryCleanup model, all landing pads write the current selector value into this alloca.
public SmallVector<clang::CodeGen::Address, 1> SEHCodeSlotStack
A stack of exception code slots. Entering an __except block pushes a slot on the stack and leaving pops one. The __exception_code() intrinsic loads a value from the top of the stack.
public llvm::Value* SEHInfo = nullptr
Value returned by __exception_info intrinsic.
public const clang::OMPExecutableDirective* OMPParentLoopDirectiveForScan = nullptr
Parent loop-based directive for scan directive.
public llvm::BasicBlock* OMPBeforeScanBlock = nullptr
public llvm::BasicBlock* OMPAfterScanBlock = nullptr
public llvm::BasicBlock* OMPScanExitBlock = nullptr
public llvm::BasicBlock* OMPScanDispatch = nullptr
public bool OMPFirstScanLoop = false
public clang::FPOptions CurFPFeatures
public SmallVector<llvm::Value*, 8> ObjCEHValueStack
ObjCEHValueStack - Stack of Objective-C exception values, used for rethrows.
public EHScopeStack::stable_iterator CurrentCleanupScopeDepth = EHScopeStack::stable_end()
private clang::CodeGen::CGDebugInfo* DebugInfo
private unsigned int VLAExprCounter = 0
Used to create unique names for artificial VLA size debug info variables.
private bool DisableDebugInfo = false
private bool DidCallStackSave = false
DidCallStackSave - Whether llvm.stacksave has been called. Used to avoid calling llvm.stacksave for multiple VLAs in the same scope.
private llvm::IndirectBrInst* IndirectBranch = nullptr
IndirectBranch - The first time an indirect goto is seen we create a block with an indirect branch. Every time we see the address of a label taken, we add the label to the indirect goto. Every subsequent indirect goto is codegen'd as a jump to the IndirectBranch's basic block.
private clang::CodeGen::CodeGenFunction::DeclMapTy LocalDeclMap
LocalDeclMap - This keeps track of the LLVM allocas or globals for local C decls.
private llvm::DenseMap<const ParmVarDecl*, EHScopeStack::stable_iterator> CalleeDestructedParamCleanups
private llvm::SmallDenseMap<const ParmVarDecl*, const ImplicitParamDecl*, 2> SizeArguments
SizeArguments - If a ParmVarDecl had the pass_object_size attribute, this will contain a mapping from said ParmVarDecl to its implicit "object_size" parameter.
private llvm::DenseMap<llvm::AllocaInst*, int> EscapedLocals
Track escaped local variables with auto storage. Used during SEH outlining to produce a call to llvm.localescape.
private llvm::DenseMap<const LabelDecl*, JumpDest> LabelMap
LabelMap - This keeps track of the LLVM basic block for each C label.
private SmallVector<clang::CodeGen::CodeGenFunction:: BreakContinue, 8> BreakContinueStack
private clang::CodeGen::CodeGenFunction:: OpenMPCancelExitStack OMPCancelStack
private clang::CodeGen::CodeGenPGO PGO
private llvm::SwitchInst* SwitchInsn = nullptr
SwitchInsn - This is nearest current switch instruction. It is null if current context is not in a switch.
private SmallVector<uint64_t, 16>* SwitchWeights = nullptr
The branch weights of SwitchInsn when doing instrumentation based PGO.
private SmallVector<Stmt::Likelihood, 16>* SwitchLikelihood = nullptr
The likelihood attributes of the SwitchCase.
private llvm::BasicBlock* CaseRangeBlock = nullptr
CaseRangeBlock - This block holds if condition check for last case statement range in current switch instruction.
private llvm::DenseMap<const OpaqueValueExpr*, LValue> OpaqueLValues
OpaqueLValues - Keeps track of the current set of opaque value expressions.
private llvm::DenseMap<const OpaqueValueExpr*, RValue> OpaqueRValues
private llvm::DenseMap<const Expr*, llvm::Value*> VLASizeMap
private llvm::BasicBlock* UnreachableBlock = nullptr
A block containing a single 'unreachable' instruction. Created lazily by getUnreachableBlock().
private unsigned int NumReturnExprs = 0
Counts of the number return expressions in the function.
private unsigned int NumSimpleReturnExprs = 0
Count the number of simple (constant) return expressions in the function.
private clang::SourceLocation LastStopPoint
The last regular (non-return) debug location (breakpoint) in the function.
public clang::CurrentSourceLocExprScope CurSourceLocExprScope
Source location information about the default argument or member initializer expression we're evaluating, if any.
private clang::ImplicitParamDecl* CXXABIThisDecl = nullptr
CXXThisDecl - When generating code for a C++ member function, this will hold the implicit 'this' declaration.
private llvm::Value* CXXABIThisValue = nullptr
private llvm::Value* CXXThisValue = nullptr
private clang::CharUnits CXXABIThisAlignment
private clang::CharUnits CXXThisAlignment
private clang::CodeGen::Address CXXDefaultInitExprThis = Address::invalid()
The value of 'this' to use when evaluating CXXDefaultInitExprs within this expression.
private llvm::Value* ArrayInitIndex = nullptr
The current array initialization index when evaluating an ArrayInitIndexExpr within an ArrayInitLoopExpr.
private clang::CodeGen::CallArgList CXXInheritedCtorInitExprArgs
The values of function arguments to use when evaluating CXXInheritedCtorInitExprs within this context.
private clang::ImplicitParamDecl* CXXStructorImplicitParamDecl = nullptr
CXXStructorImplicitParamDecl - When generating code for a constructor or destructor, this will hold the implicit argument (e.g. VTT).
private llvm::Value* CXXStructorImplicitParamValue = nullptr
private clang::CodeGen::CodeGenFunction:: ConditionalEvaluation* OutermostConditional = nullptr
OutermostConditional - Points to the outermost active conditional control. This is used so that we know if a temporary should be destroyed conditionally.
private clang::CodeGen::CodeGenFunction::LexicalScope* CurLexicalScope = nullptr
The current lexical scope.
private clang::SourceLocation CurEHLocation
The current source location that should be used for exception handling code.
private llvm::DenseMap<const ValueDecl*, BlockByrefInfo> BlockByrefInfos
BlockByrefInfos - For each __block variable, contains information about the layout of the variable.
private llvm::Value* RetValNullabilityPrecondition = nullptr
Used by -fsanitize=nullability-return to determine whether the return value can be checked.
private clang::CodeGen::Address ReturnLocation = Address::invalid()
Used to store precise source locations for return statements by the runtime return value checks.
private llvm::BasicBlock* TerminateLandingPad = nullptr
private llvm::BasicBlock* TerminateHandler = nullptr
private llvm::SmallVector<llvm::BasicBlock*, 2> TrapBBs
private llvm::MapVector<llvm::Value*, llvm::BasicBlock*> TerminateFunclets
Terminate funclets keyed by parent funclet pad.
private unsigned int LargestVectorWidth = 0
Largest vector width used in ths function. Will be used to create a function attribute.
private bool ShouldEmitLifetimeMarkers
True if we need emit the life-time markers. This is initially set in the constructor, but could be overwritten to true if this is a coroutine.
private llvm::SmallVector< std::pair<llvm::WeakTrackingVH, llvm::Value*>, 4> DeferredReplacements

Inherited from CodeGenTypeCache:

public VoidTy
public Int8Ty
public Int16Ty
public Int32Ty
public Int64Ty
public HalfTy
public BFloatTy
public FloatTy
public DoubleTy
public IntTy
public CharTy
public
public
public
public
public
public
public PointerWidthInBits
public
public
public ASTAllocaAddressSpace
public RuntimeCC

Method Overview

  • public void ActivateCleanupBlock(EHScopeStack::stable_iterator Cleanup, llvm::Instruction * DominatingIP)
  • public llvm::GlobalVariable * AddInitializerToStaticVarDecl(const clang::VarDecl & D, llvm::GlobalVariable * GV)
  • private void AddObjCARCExceptionMetadata(llvm::Instruction * Inst)
  • public bool AlwaysEmitXRayCustomEvents() const
  • public bool AlwaysEmitXRayTypedEvents() const
  • public clang::CodeGen::CGCallee BuildAppleKextVirtualCall(const clang::CXXMethodDecl * MD, clang::NestedNameSpecifier * Qual, llvm::Type * Ty)
  • public clang::CodeGen::CGCallee BuildAppleKextVirtualDestructorCall(const clang::CXXDestructorDecl * DD, clang::CXXDtorType Type, const clang::CXXRecordDecl * RD)
  • public void BuildBlockRelease(llvm::Value * DeclPtr, clang::CodeGen::BlockFieldFlags flags, bool CanThrow)
  • public clang::QualType BuildFunctionArgList(clang::GlobalDecl GD, clang::CodeGen::FunctionArgList & Args)
  • public llvm::Value * BuildVector(ArrayRef<llvm::Value *> Ops)
  • private CodeGenFunction(const clang::CodeGen::CodeGenFunction &)
  • public CodeGenFunction(clang::CodeGen::CodeGenModule & cgm, bool suppressNewContext = false)
  • public bool ConstantFoldsToSimpleInteger(const clang::Expr * Cond, bool & Result, bool AllowLabels = false)
  • public bool ConstantFoldsToSimpleInteger(const clang::Expr * Cond, llvm::APSInt & Result, bool AllowLabels = false)
  • public static bool ContainsLabel(const clang::Stmt * S, bool IgnoreCaseStmts = false)
  • public llvm::Type * ConvertType(clang::QualType T)
  • public llvm::Type * ConvertType(const clang::TypeDecl * T)
  • public llvm::Type * ConvertTypeForMem(clang::QualType T)
  • public clang::CodeGen::AggValueSlot CreateAggTemp(clang::QualType T, const llvm::Twine & Name = "tmp", clang::CodeGen::Address * Alloca = nullptr)
  • public clang::CodeGen::Address CreateDefaultAlignTempAlloca(llvm::Type * Ty, const llvm::Twine & Name = "tmp")
  • public clang::CodeGen::Address CreateIRTemp(clang::QualType T, const llvm::Twine & Name = "tmp")
  • public clang::CodeGen::Address CreateMemTemp(clang::QualType T, clang::CharUnits Align, const llvm::Twine & Name = "tmp", clang::CodeGen::Address * Alloca = nullptr)
  • public clang::CodeGen::Address CreateMemTemp(clang::QualType T, const llvm::Twine & Name = "tmp", clang::CodeGen::Address * Alloca = nullptr)
  • public clang::CodeGen::Address CreateMemTempWithoutCast(clang::QualType T, clang::CharUnits Align, const llvm::Twine & Name = "tmp")
  • public clang::CodeGen::Address CreateMemTempWithoutCast(clang::QualType T, const llvm::Twine & Name = "tmp")
  • public clang::CodeGen::Address CreateTempAlloca(llvm::Type * Ty, clang::CharUnits align, const llvm::Twine & Name = "tmp", llvm::Value * ArraySize = nullptr, clang::CodeGen::Address * Alloca = nullptr)
  • public llvm::AllocaInst * CreateTempAlloca(llvm::Type * Ty, const llvm::Twine & Name = "tmp", llvm::Value * ArraySize = nullptr)
  • public clang::CodeGen::Address CreateTempAllocaWithoutCast(llvm::Type * Ty, clang::CharUnits align, const llvm::Twine & Name = "tmp", llvm::Value * ArraySize = nullptr)
  • public void DeactivateCleanupBlock(EHScopeStack::stable_iterator Cleanup, llvm::Instruction * DominatingIP)
  • public llvm::Value * DecodeAddrUsedInPrologue(llvm::Value * F, llvm::Value * EncodedAddr)
  • public llvm::Value * EmitAArch64BuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E, llvm::Triple::ArchType Arch)
  • public llvm::Value * EmitAArch64CompareBuiltinExpr(llvm::Value * Op, llvm::Type * Ty, const llvm::CmpInst::Predicate Fp, const llvm::CmpInst::Predicate Ip, const llvm::Twine & Name = "")
  • public llvm::Value * EmitAArch64SVEBuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E)
  • public llvm::Value * EmitAMDGPUBuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E)
  • public clang::CodeGen::RValue EmitAMDGPUDevicePrintfCallExpr(const clang::CallExpr * E)
  • public llvm::Value * EmitARCAutorelease(llvm::Value * value)
  • public llvm::Value * EmitARCAutoreleaseReturnValue(llvm::Value * value)
  • public void EmitARCCopyWeak(clang::CodeGen::Address dst, clang::CodeGen::Address src)
  • public void EmitARCDestroyStrong(clang::CodeGen::Address addr, clang::CodeGen::ARCPreciseLifetime_t precise)
  • public void EmitARCDestroyWeak(clang::CodeGen::Address addr)
  • public llvm::Value * EmitARCExtendBlockObject(const clang::Expr * expr)
  • public void EmitARCInitWeak(clang::CodeGen::Address addr, llvm::Value * value)
  • public void EmitARCIntrinsicUse(ArrayRef<llvm::Value *> values)
  • public llvm::Value * EmitARCLoadWeak(clang::CodeGen::Address addr)
  • public llvm::Value * EmitARCLoadWeakRetained(clang::CodeGen::Address addr)
  • public void EmitARCMoveWeak(clang::CodeGen::Address dst, clang::CodeGen::Address src)
  • public void EmitARCNoopIntrinsicUse(ArrayRef<llvm::Value *> values)
  • public llvm::Value * EmitARCReclaimReturnedObject(const clang::Expr * e, bool allowUnsafeClaim)
  • public void EmitARCRelease(llvm::Value * value, clang::CodeGen::ARCPreciseLifetime_t precise)
  • public llvm::Value * EmitARCRetain(clang::QualType type, llvm::Value * value)
  • public llvm::Value * EmitARCRetainAutorelease(clang::QualType type, llvm::Value * value)
  • public llvm::Value * EmitARCRetainAutoreleaseNonBlock(llvm::Value * value)
  • public llvm::Value * EmitARCRetainAutoreleaseReturnValue(llvm::Value * value)
  • public llvm::Value * EmitARCRetainAutoreleaseScalarExpr(const clang::Expr * expr)
  • public llvm::Value * EmitARCRetainAutoreleasedReturnValue(llvm::Value * value)
  • public llvm::Value * EmitARCRetainBlock(llvm::Value * value, bool mandatory)
  • public llvm::Value * EmitARCRetainNonBlock(llvm::Value * value)
  • public llvm::Value * EmitARCRetainScalarExpr(const clang::Expr * expr)
  • public std::pair<LValue, llvm::Value *> EmitARCStoreAutoreleasing(const clang::BinaryOperator * e)
  • public std::pair<LValue, llvm::Value *> EmitARCStoreStrong(const clang::BinaryOperator * e, bool ignored)
  • public llvm::Value * EmitARCStoreStrong(clang::CodeGen::LValue lvalue, llvm::Value * value, bool resultIgnored)
  • public llvm::Value * EmitARCStoreStrongCall(clang::CodeGen::Address addr, llvm::Value * value, bool resultIgnored)
  • public std::pair<LValue, llvm::Value *> EmitARCStoreUnsafeUnretained(const clang::BinaryOperator * e, bool ignored)
  • public llvm::Value * EmitARCStoreWeak(clang::CodeGen::Address addr, llvm::Value * value, bool ignored)
  • public llvm::Value * EmitARCUnsafeClaimAutoreleasedReturnValue(llvm::Value * value)
  • public llvm::Value * EmitARCUnsafeUnretainedScalarExpr(const clang::Expr * expr)
  • public llvm::Value * EmitARMBuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E, clang::CodeGen::ReturnValueSlot ReturnValue, llvm::Triple::ArchType Arch)
  • public llvm::Value * EmitARMCDEBuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E, clang::CodeGen::ReturnValueSlot ReturnValue, llvm::Triple::ArchType Arch)
  • public llvm::Value * EmitARMMVEBuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E, clang::CodeGen::ReturnValueSlot ReturnValue, llvm::Triple::ArchType Arch)
  • public void EmitAggExpr(const clang::Expr * E, clang::CodeGen::AggValueSlot AS)
  • public clang::CodeGen::LValue EmitAggExprToLValue(const clang::Expr * E)
  • public void EmitAggregateAssign(clang::CodeGen::LValue Dest, clang::CodeGen::LValue Src, clang::QualType EltTy)
  • public void EmitAggregateCopy(clang::CodeGen::LValue Dest, clang::CodeGen::LValue Src, clang::QualType EltTy, AggValueSlot::Overlap_t MayOverlap, bool isVolatile = false)
  • public void EmitAggregateCopyCtor(clang::CodeGen::LValue Dest, clang::CodeGen::LValue Src, AggValueSlot::Overlap_t MayOverlap)
  • public void EmitAggregateStore(llvm::Value * Val, clang::CodeGen::Address Dest, bool DestIsVolatile)
  • public void EmitAndRegisterVariableArrayDimensions(clang::CodeGen::CGDebugInfo * DI, const clang::VarDecl & D, bool EmitDebugInfo)
  • public llvm::Value * EmitAnnotationCall(llvm::Function * AnnotationFn, llvm::Value * AnnotatedVal, llvm::StringRef AnnotationStr, clang::SourceLocation Location, const clang::AnnotateAttr * Attr)
  • public clang::CodeGen::RValue EmitAnyExpr(const clang::Expr * E, clang::CodeGen::AggValueSlot aggSlot = AggValueSlot::ignored(), bool ignoreResult = false)
  • public void EmitAnyExprToExn(const clang::Expr * E, clang::CodeGen::Address Addr)
  • public void EmitAnyExprToMem(const clang::Expr * E, clang::CodeGen::Address Location, clang::Qualifiers Quals, bool IsInitializer)
  • public clang::CodeGen::RValue EmitAnyExprToTemp(const clang::Expr * E)
  • public clang::CodeGen::LValue EmitArraySubscriptExpr(const clang::ArraySubscriptExpr * E, bool Accessed = false)
  • public clang::CodeGen::Address EmitArrayToPointerDecay(const clang::Expr * Array, clang::CodeGen::LValueBaseInfo * BaseInfo = nullptr, clang::CodeGen::TBAAAccessInfo * TBAAInfo = nullptr)
  • public void EmitAsanPrologueOrEpilogue(bool Prologue)
  • private std::pair<llvm::Value *, llvm::Type *> EmitAsmInput(const TargetInfo::ConstraintInfo & Info, const clang::Expr * InputExpr, std::string & ConstraintStr)
  • private std::pair<llvm::Value *, llvm::Type *> EmitAsmInputLValue(const TargetInfo::ConstraintInfo & Info, clang::CodeGen::LValue InputValue, clang::QualType InputType, std::string & ConstraintStr, clang::SourceLocation Loc)
  • public void EmitAsmStmt(const clang::AsmStmt & S)
  • public std::pair<RValue, llvm::Value *> EmitAtomicCompareExchange(clang::CodeGen::LValue Obj, clang::CodeGen::RValue Expected, clang::CodeGen::RValue Desired, clang::SourceLocation Loc, llvm::AtomicOrdering Success = llvm::AtomicOrdering::SequentiallyConsistent, llvm::AtomicOrdering Failure = llvm::AtomicOrdering::SequentiallyConsistent, bool IsWeak = false, clang::CodeGen::AggValueSlot Slot = AggValueSlot::ignored())
  • public clang::CodeGen::RValue EmitAtomicExpr(clang::AtomicExpr * E)
  • public void EmitAtomicInit(clang::Expr * E, clang::CodeGen::LValue lvalue)
  • public clang::CodeGen::RValue EmitAtomicLoad(clang::CodeGen::LValue lvalue, clang::SourceLocation loc, llvm::AtomicOrdering AO, bool IsVolatile = false, clang::CodeGen::AggValueSlot slot = AggValueSlot::ignored())
  • public clang::CodeGen::RValue EmitAtomicLoad(clang::CodeGen::LValue LV, clang::SourceLocation SL, clang::CodeGen::AggValueSlot Slot = AggValueSlot::ignored())
  • public void EmitAtomicStore(clang::CodeGen::RValue rvalue, clang::CodeGen::LValue lvalue, llvm::AtomicOrdering AO, bool IsVolatile, bool isInit)
  • public void EmitAtomicStore(clang::CodeGen::RValue rvalue, clang::CodeGen::LValue lvalue, bool isInit)
  • public void EmitAtomicUpdate(clang::CodeGen::LValue LVal, llvm::AtomicOrdering AO, const llvm::function_ref<RValue (RValue)> & UpdateOp, bool IsVolatile)
  • public void EmitAttributedStmt(const clang::AttributedStmt & S)
  • public clang::CodeGen::CodeGenFunction::AutoVarEmission EmitAutoVarAlloca(const clang::VarDecl & var)
  • public void EmitAutoVarCleanups(const clang::CodeGen::CodeGenFunction::AutoVarEmission & emission)
  • public void EmitAutoVarDecl(const clang::VarDecl & D)
  • public void EmitAutoVarInit(const clang::CodeGen::CodeGenFunction::AutoVarEmission & emission)
  • public llvm::Value * EmitBPFBuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E)
  • public clang::CodeGen::LValue EmitBinaryOperatorLValue(const clang::BinaryOperator * E)
  • public void EmitBlock(llvm::BasicBlock * BB, bool IsFinished = false)
  • public void EmitBlockAfterUses(llvm::BasicBlock * BB)
  • public clang::CodeGen::RValue EmitBlockCallExpr(const clang::CallExpr * E, clang::CodeGen::ReturnValueSlot ReturnValue)
  • public llvm::Value * EmitBlockCopyAndAutorelease(llvm::Value * Block, clang::QualType Ty)
  • public llvm::Value * EmitBlockLiteral(const clang::BlockExpr *)
  • private llvm::Value * EmitBlockLiteral(const clang::CodeGen::CGBlockInfo & Info)
  • public void EmitBlockWithFallThrough(llvm::BasicBlock * BB, const clang::Stmt * S)
  • public void EmitBoundsCheck(const clang::Expr * E, const clang::Expr * Base, llvm::Value * Index, clang::QualType IndexType, bool Accessed)
  • public void EmitBranch(llvm::BasicBlock * Block)
  • public void EmitBranchOnBoolExpr(const clang::Expr * Cond, llvm::BasicBlock * TrueBlock, llvm::BasicBlock * FalseBlock, uint64_t TrueCount, Stmt::Likelihood LH = Stmt::LH_None)
  • public void EmitBranchThroughCleanup(clang::CodeGen::CodeGenFunction::JumpDest Dest)
  • public void EmitBranchToCounterBlock(const clang::Expr * Cond, BinaryOperator::Opcode LOp, llvm::BasicBlock * TrueBlock, llvm::BasicBlock * FalseBlock, uint64_t TrueCount = 0, Stmt::Likelihood LH = Stmt::LH_None, const clang::Expr * CntrIdx = nullptr)
  • public void EmitBreakStmt(const clang::BreakStmt & S)
  • public clang::CodeGen::RValue EmitBuiltinAlignTo(const clang::CallExpr * E, bool AlignUp)
  • public llvm::Value * EmitBuiltinAvailable(const llvm::VersionTuple & Version)
  • public clang::CodeGen::RValue EmitBuiltinExpr(const clang::GlobalDecl GD, unsigned int BuiltinID, const clang::CallExpr * E, clang::CodeGen::ReturnValueSlot ReturnValue)
  • public clang::CodeGen::RValue EmitBuiltinIsAligned(const clang::CallExpr * E)
  • public clang::CodeGen::RValue EmitBuiltinNewDeleteCall(const clang::FunctionProtoType * Type, const clang::CallExpr * TheCallExpr, bool IsDelete)
  • public llvm::Value * EmitCMSEClearRecord(llvm::Value * V, llvm::IntegerType * ITy, clang::QualType RTy)
  • public llvm::Value * EmitCMSEClearRecord(llvm::Value * V, llvm::ArrayType * ATy, clang::QualType RTy)
  • public clang::CodeGen::RValue EmitCUDAKernelCallExpr(const clang::CUDAKernelCallExpr * E, clang::CodeGen::ReturnValueSlot ReturnValue)
  • public void EmitCXXAggrConstructorCall(const clang::CXXConstructorDecl * D, const clang::ArrayType * ArrayTy, clang::CodeGen::Address ArrayPtr, const clang::CXXConstructExpr * E, bool NewPointerIsChecked, bool ZeroInitialization = false)
  • public void EmitCXXAggrConstructorCall(const clang::CXXConstructorDecl * D, llvm::Value * NumElements, clang::CodeGen::Address ArrayPtr, const clang::CXXConstructExpr * E, bool NewPointerIsChecked, bool ZeroInitialization = false)
  • public clang::CodeGen::LValue EmitCXXBindTemporaryLValue(const clang::CXXBindTemporaryExpr * E)
  • public void EmitCXXConstructExpr(const clang::CXXConstructExpr * E, clang::CodeGen::AggValueSlot Dest)
  • public clang::CodeGen::LValue EmitCXXConstructLValue(const clang::CXXConstructExpr * E)
  • public void EmitCXXConstructorCall(const clang::CXXConstructorDecl * D, clang::CXXCtorType Type, bool ForVirtualBase, bool Delegating, clang::CodeGen::AggValueSlot ThisAVS, const clang::CXXConstructExpr * E)
  • public void EmitCXXConstructorCall(const clang::CXXConstructorDecl * D, clang::CXXCtorType Type, bool ForVirtualBase, bool Delegating, clang::CodeGen::Address This, clang::CodeGen::CallArgList & Args, AggValueSlot::Overlap_t Overlap, clang::SourceLocation Loc, bool NewPointerIsChecked)
  • public void EmitCXXDeleteExpr(const clang::CXXDeleteExpr * E)
  • public void EmitCXXDestructorCall(const clang::CXXDestructorDecl * D, clang::CXXDtorType Type, bool ForVirtualBase, bool Delegating, clang::CodeGen::Address This, clang::QualType ThisTy)
  • public clang::CodeGen::RValue EmitCXXDestructorCall(clang::GlobalDecl Dtor, const clang::CodeGen::CGCallee & Callee, llvm::Value * This, clang::QualType ThisTy, llvm::Value * ImplicitParam, clang::QualType ImplicitParamTy, const clang::CallExpr * E)
  • public void EmitCXXForRangeStmt(const clang::CXXForRangeStmt & S, ArrayRef<const clang::Attr *> Attrs = None)
  • public void EmitCXXGlobalVarDeclInit(const clang::VarDecl & D, llvm::GlobalVariable * GV, bool PerformInit)
  • public void EmitCXXGuardedInit(const clang::VarDecl & D, llvm::GlobalVariable * DeclPtr, bool PerformInit)
  • public void EmitCXXGuardedInitBranch(llvm::Value * NeedsInit, llvm::BasicBlock * InitBlock, llvm::BasicBlock * NoInitBlock, clang::CodeGen::CodeGenFunction::GuardKind Kind, const clang::VarDecl * D)
  • public clang::CodeGen::RValue EmitCXXMemberCallExpr(const clang::CXXMemberCallExpr * E, clang::CodeGen::ReturnValueSlot ReturnValue)
  • public clang::CodeGen::Address EmitCXXMemberDataPointerAddress(const clang::Expr * E, clang::CodeGen::Address base, llvm::Value * memberPtr, const clang::MemberPointerType * memberPtrType, clang::CodeGen::LValueBaseInfo * BaseInfo = nullptr, clang::CodeGen::TBAAAccessInfo * TBAAInfo = nullptr)
  • public clang::CodeGen::RValue EmitCXXMemberOrOperatorCall(const clang::CXXMethodDecl * Method, const clang::CodeGen::CGCallee & Callee, clang::CodeGen::ReturnValueSlot ReturnValue, llvm::Value * This, llvm::Value * ImplicitParam, clang::QualType ImplicitParamTy, const clang::CallExpr * E, clang::CodeGen::CallArgList * RtlArgs)
  • public clang::CodeGen::RValue EmitCXXMemberOrOperatorMemberCallExpr(const clang::CallExpr * CE, const clang::CXXMethodDecl * MD, clang::CodeGen::ReturnValueSlot ReturnValue, bool HasQualifier, clang::NestedNameSpecifier * Qualifier, bool IsArrow, const clang::Expr * Base)
  • public clang::CodeGen::RValue EmitCXXMemberPointerCallExpr(const clang::CXXMemberCallExpr * E, clang::CodeGen::ReturnValueSlot ReturnValue)
  • public llvm::Value * EmitCXXNewExpr(const clang::CXXNewExpr * E)
  • public clang::CodeGen::RValue EmitCXXOperatorMemberCallExpr(const clang::CXXOperatorCallExpr * E, const clang::CXXMethodDecl * MD, clang::CodeGen::ReturnValueSlot ReturnValue)
  • public clang::CodeGen::RValue EmitCXXPseudoDestructorExpr(const clang::CXXPseudoDestructorExpr * E)
  • public void EmitCXXTemporary(const clang::CXXTemporary * Temporary, clang::QualType TempType, clang::CodeGen::Address Ptr)
  • public void EmitCXXThrowExpr(const clang::CXXThrowExpr * E, bool KeepInsertionPoint = true)
  • public void EmitCXXTryStmt(const clang::CXXTryStmt & S)
  • public llvm::Value * EmitCXXTypeidExpr(const clang::CXXTypeidExpr * E)
  • public clang::CodeGen::LValue EmitCXXTypeidLValue(const clang::CXXTypeidExpr * E)
  • public clang::CodeGen::Address EmitCXXUuidofExpr(const clang::CXXUuidofExpr * E)
  • public clang::CodeGen::LValue EmitCXXUuidofLValue(const clang::CXXUuidofExpr * E)
  • public clang::CodeGen::RValue EmitCall(const clang::CodeGen::CGFunctionInfo & CallInfo, const clang::CodeGen::CGCallee & Callee, clang::CodeGen::ReturnValueSlot ReturnValue, const clang::CodeGen::CallArgList & Args, llvm::CallBase ** callOrInvoke, bool IsMustTail, clang::SourceLocation Loc)
  • public clang::CodeGen::RValue EmitCall(const clang::CodeGen::CGFunctionInfo & CallInfo, const clang::CodeGen::CGCallee & Callee, clang::CodeGen::ReturnValueSlot ReturnValue, const clang::CodeGen::CallArgList & Args, llvm::CallBase ** callOrInvoke = nullptr, bool IsMustTail = false)
  • public clang::CodeGen::RValue EmitCall(clang::QualType FnType, const clang::CodeGen::CGCallee & Callee, const clang::CallExpr * E, clang::CodeGen::ReturnValueSlot ReturnValue, llvm::Value * Chain = nullptr)
  • public void EmitCallAndReturnForThunk(llvm::FunctionCallee Callee, const clang::ThunkInfo * Thunk, bool IsUnprototyped)
  • public void EmitCallArg(clang::CodeGen::CallArgList & args, const clang::Expr * E, clang::QualType ArgType)
  • public void EmitCallArgs(clang::CodeGen::CallArgList & Args, clang::CodeGen::CodeGenFunction::PrototypeWrapper Prototype, llvm::iterator_range<CallExpr::const_arg_iterator> ArgRange, clang::CodeGen::CodeGenFunction::AbstractCallee AC = clang::CodeGen::CodeGenFunction::AbstractCallee(), unsigned int ParamsToSkip = 0, clang::CodeGen::CodeGenFunction::EvaluationOrder Order = EvaluationOrder::Default)
  • public clang::CodeGen::RValue EmitCallExpr(const clang::CallExpr * E, clang::CodeGen::ReturnValueSlot ReturnValue = clang::CodeGen::ReturnValueSlot())
  • public clang::CodeGen::LValue EmitCallExprLValue(const clang::CallExpr * E)
  • public llvm::CallBase * EmitCallOrInvoke(llvm::FunctionCallee Callee, ArrayRef<llvm::Value *> Args, const llvm::Twine & Name = "")
  • public clang::CodeGen::CGCallee EmitCallee(const clang::Expr * E)
  • public void EmitCapturedLocals(clang::CodeGen::CodeGenFunction & ParentCGF, const clang::Stmt * OutlinedStmt, bool IsFilter)
  • public llvm::Function * EmitCapturedStmt(const clang::CapturedStmt & S, clang::CapturedRegionKind K)
  • public void EmitCaseStmt(const clang::CaseStmt & S, ArrayRef<const clang::Attr *> Attrs)
  • public void EmitCaseStmtRange(const clang::CaseStmt & S, ArrayRef<const clang::Attr *> Attrs)
  • public clang::CodeGen::LValue EmitCastLValue(const clang::CastExpr * E)
  • public llvm::Value * EmitCastToVoidPtr(llvm::Value * value)
  • public void EmitCfiCheckFail()
  • public void EmitCfiCheckStub()
  • public void EmitCfiSlowPathCheck(clang::SanitizerMask Kind, llvm::Value * Cond, llvm::ConstantInt * TypeId, llvm::Value * Ptr, ArrayRef<llvm::Constant *> StaticArgs)
  • public void EmitCheck(ArrayRef<std::pair<llvm::Value *, SanitizerMask>> Checked, clang::CodeGen::SanitizerHandler Check, ArrayRef<llvm::Constant *> StaticArgs, ArrayRef<llvm::Value *> DynamicArgs)
  • public llvm::Constant * EmitCheckSourceLocation(clang::SourceLocation Loc)
  • public llvm::Constant * EmitCheckTypeDescriptor(clang::QualType T)
  • public llvm::Value * EmitCheckValue(llvm::Value * V)
  • public llvm::Value * EmitCheckedArgForBuiltin(const clang::Expr * E, clang::CodeGen::CodeGenFunction::BuiltinCheckKind Kind)
  • public llvm::Value * EmitCheckedInBoundsGEP(llvm::Type * ElemTy, llvm::Value * Ptr, ArrayRef<llvm::Value *> IdxList, bool SignedIndices, bool IsSubtraction, clang::SourceLocation Loc, const llvm::Twine & Name = "")
  • public clang::CodeGen::LValue EmitCheckedLValue(const clang::Expr * E, clang::CodeGen::CodeGenFunction::TypeCheckKind TCK)
  • public clang::CodeGen::RValue EmitCoawaitExpr(const clang::CoawaitExpr & E, clang::CodeGen::AggValueSlot aggSlot = AggValueSlot::ignored(), bool ignoreResult = false)
  • public clang::CodeGen::LValue EmitCoawaitLValue(const clang::CoawaitExpr * E)
  • public llvm::Value * EmitCommonNeonBuiltinExpr(unsigned int BuiltinID, unsigned int LLVMIntrinsic, unsigned int AltLLVMIntrinsic, const char * NameHint, unsigned int Modifier, const clang::CallExpr * E, SmallVectorImpl<llvm::Value *> & Ops, clang::CodeGen::Address PtrOp0, clang::CodeGen::Address PtrOp1, llvm::Triple::ArchType Arch)
  • public clang::CodeGen::LValue EmitComplexAssignmentLValue(const clang::BinaryOperator * E)
  • public clang::CodeGen::LValue EmitComplexCompoundAssignmentLValue(const clang::CompoundAssignOperator * E)
  • public clang::CodeGen::CodeGenFunction::ComplexPairTy EmitComplexExpr(const clang::Expr * E, bool IgnoreReal = false, bool IgnoreImag = false)
  • public void EmitComplexExprIntoLValue(const clang::Expr * E, clang::CodeGen::LValue dest, bool isInit)
  • public clang::CodeGen::CodeGenFunction::ComplexPairTy EmitComplexPrePostIncDec(const clang::UnaryOperator * E, clang::CodeGen::LValue LV, bool isInc, bool isPre)
  • public llvm::Value * EmitComplexToScalarConversion(clang::CodeGen::CodeGenFunction::ComplexPairTy Src, clang::QualType SrcTy, clang::QualType DstTy, clang::SourceLocation Loc)
  • public clang::CodeGen::LValue EmitCompoundAssignmentLValue(const clang::CompoundAssignOperator * E)
  • public clang::CodeGen::LValue EmitCompoundLiteralLValue(const clang::CompoundLiteralExpr * E)
  • public clang::CodeGen::Address EmitCompoundStmt(const clang::CompoundStmt & S, bool GetLast = false, clang::CodeGen::AggValueSlot AVS = AggValueSlot::ignored())
  • public clang::CodeGen::Address EmitCompoundStmtWithoutScope(const clang::CompoundStmt & S, bool GetLast = false, clang::CodeGen::AggValueSlot AVS = AggValueSlot::ignored())
  • public clang::CodeGen::LValue EmitConditionalOperatorLValue(const clang::AbstractConditionalOperator * E)
  • public void EmitConstructorBody(clang::CodeGen::FunctionArgList & Args)
  • public void EmitContinueStmt(const clang::ContinueStmt & S)
  • public void EmitCoreturnStmt(const clang::CoreturnStmt & S)
  • public void EmitCoroutineBody(const clang::CoroutineBodyStmt & S)
  • public clang::CodeGen::RValue EmitCoroutineIntrinsic(const clang::CallExpr * E, unsigned int IID)
  • public clang::CodeGen::RValue EmitCoyieldExpr(const clang::CoyieldExpr & E, clang::CodeGen::AggValueSlot aggSlot = AggValueSlot::ignored(), bool ignoreResult = false)
  • public clang::CodeGen::LValue EmitCoyieldLValue(const clang::CoyieldExpr * E)
  • public void EmitCtorPrologue(const clang::CXXConstructorDecl * CD, clang::CXXCtorType Type, clang::CodeGen::FunctionArgList & Args)
  • public void EmitDecl(const clang::Decl & D)
  • private void EmitDeclMetadata()
  • public void EmitDeclRefExprDbgValue(const clang::DeclRefExpr * E, const clang::APValue & Init)
  • public clang::CodeGen::LValue EmitDeclRefLValue(const clang::DeclRefExpr * E)
  • public void EmitDeclStmt(const clang::DeclStmt & S)
  • public void EmitDefaultStmt(const clang::DefaultStmt & S, ArrayRef<const clang::Attr *> Attrs)
  • public void EmitDelegateCXXConstructorCall(const clang::CXXConstructorDecl * Ctor, clang::CXXCtorType CtorType, const clang::CodeGen::FunctionArgList & Args, clang::SourceLocation Loc)
  • public void EmitDelegateCallArg(clang::CodeGen::CallArgList & args, const clang::VarDecl * param, clang::SourceLocation loc)
  • public void EmitDelegatingCXXConstructorCall(const clang::CXXConstructorDecl * Ctor, const clang::CodeGen::FunctionArgList & Args)
  • public void EmitDeleteCall(const clang::FunctionDecl * DeleteFD, llvm::Value * Ptr, clang::QualType DeleteTy, llvm::Value * NumElements = nullptr, clang::CharUnits CookieSize = clang::CharUnits())
  • public void EmitDestructorBody(clang::CodeGen::FunctionArgList & Args)
  • public void EmitDoStmt(const clang::DoStmt & S, ArrayRef<const clang::Attr *> Attrs = None)
  • public llvm::Value * EmitDynamicCast(clang::CodeGen::Address V, const clang::CXXDynamicCastExpr * DCE)
  • public void EmitEndEHSpec(const clang::Decl * D)
  • public void EmitExprAsInit(const clang::Expr * init, const clang::ValueDecl * D, clang::CodeGen::LValue lvalue, bool capturedByInit)
  • public clang::CodeGen::LValue EmitExtVectorElementExpr(const clang::ExtVectorElementExpr * E)
  • public clang::CodeGen::Address EmitExtVectorElementLValue(clang::CodeGen::LValue V)
  • public void EmitExtendGCLifetime(llvm::Value * object)
  • public clang::CodeGen::Address EmitFieldAnnotations(const clang::FieldDecl * D, clang::CodeGen::Address V)
  • public void EmitForStmt(const clang::ForStmt & S, ArrayRef<const clang::Attr *> Attrs = None)
  • public void EmitForwardingCallToLambda(const clang::CXXMethodDecl * LambdaCallOperator, clang::CodeGen::CallArgList & CallArgs)
  • public llvm::Value * EmitFromMemory(llvm::Value * Value, clang::QualType Ty)
  • public void EmitFunctionBody(const clang::Stmt * Body)
  • public void EmitFunctionEpilog(const clang::CodeGen::CGFunctionInfo & FI, bool EmitRetDbgLoc, clang::SourceLocation EndLoc)
  • public void EmitFunctionProlog(const clang::CodeGen::CGFunctionInfo & FI, llvm::Function * Fn, const clang::CodeGen::FunctionArgList & Args)
  • public void EmitGotoStmt(const clang::GotoStmt & S)
  • public llvm::Value * EmitHexagonBuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E)
  • public void EmitIfStmt(const clang::IfStmt & S)
  • public void EmitIgnoredConditionalOperator(const clang::AbstractConditionalOperator * E)
  • public void EmitIgnoredExpr(const clang::Expr * E)
  • public void EmitIndirectGotoStmt(const clang::IndirectGotoStmt & S)
  • public void EmitInheritedCXXConstructorCall(const clang::CXXConstructorDecl * D, bool ForVirtualBase, clang::CodeGen::Address This, bool InheritedFromVBase, const clang::CXXInheritedCtorInitExpr * E)
  • public clang::CodeGen::LValue EmitInitListLValue(const clang::InitListExpr * E)
  • public void EmitInitializerForField(clang::FieldDecl * Field, clang::CodeGen::LValue LHS, clang::Expr * Init)
  • public void EmitInlinedInheritingCXXConstructorCall(const clang::CXXConstructorDecl * Ctor, clang::CXXCtorType CtorType, bool ForVirtualBase, bool Delegating, clang::CodeGen::CallArgList & Args)
  • public void EmitInvariantStart(llvm::Constant * Addr, clang::CharUnits Size)
  • public llvm::Value * EmitIvarOffset(const clang::ObjCInterfaceDecl * Interface, const clang::ObjCIvarDecl * Ivar)
  • private void EmitKernelMetadata(const clang::FunctionDecl * FD, llvm::Function * Fn)
  • public clang::CodeGen::LValue EmitLValue(const clang::Expr * E)
  • public clang::CodeGen::LValue EmitLValueForField(clang::CodeGen::LValue Base, const clang::FieldDecl * Field)
  • public clang::CodeGen::LValue EmitLValueForFieldInitialization(clang::CodeGen::LValue Base, const clang::FieldDecl * Field)
  • public clang::CodeGen::LValue EmitLValueForIvar(clang::QualType ObjectTy, llvm::Value * Base, const clang::ObjCIvarDecl * Ivar, unsigned int CVRQualifiers)
  • public clang::CodeGen::LValue EmitLValueForLambdaField(const clang::FieldDecl * Field)
  • public void EmitLabel(const clang::LabelDecl * D)
  • public void EmitLabelStmt(const clang::LabelStmt & S)
  • public void EmitLambdaBlockInvokeBody()
  • public void EmitLambdaDelegatingInvokeBody(const clang::CXXMethodDecl * MD)
  • public void EmitLambdaStaticInvokeBody(const clang::CXXMethodDecl * MD)
  • public void EmitLambdaVLACapture(const clang::VariableArrayType * VAT, clang::CodeGen::LValue LV)
  • public llvm::BasicBlock * EmitLandingPad()
  • public void EmitLifetimeEnd(llvm::Value * Size, llvm::Value * Addr)
  • public llvm::Value * EmitLifetimeStart(llvm::TypeSize Size, llvm::Value * Addr)
  • public clang::CodeGen::RValue EmitLoadOfBitfieldLValue(clang::CodeGen::LValue LV, clang::SourceLocation Loc)
  • public clang::CodeGen::CodeGenFunction::ComplexPairTy EmitLoadOfComplex(clang::CodeGen::LValue src, clang::SourceLocation loc)
  • public clang::CodeGen::RValue EmitLoadOfExtVectorElementLValue(clang::CodeGen::LValue V)
  • public clang::CodeGen::RValue EmitLoadOfGlobalRegLValue(clang::CodeGen::LValue LV)
  • public clang::CodeGen::RValue EmitLoadOfLValue(clang::CodeGen::LValue V, clang::SourceLocation Loc)
  • public clang::CodeGen::Address EmitLoadOfPointer(clang::CodeGen::Address Ptr, const clang::PointerType * PtrTy, clang::CodeGen::LValueBaseInfo * BaseInfo = nullptr, clang::CodeGen::TBAAAccessInfo * TBAAInfo = nullptr)
  • public clang::CodeGen::LValue EmitLoadOfPointerLValue(clang::CodeGen::Address Ptr, const clang::PointerType * PtrTy)
  • public clang::CodeGen::Address EmitLoadOfReference(clang::CodeGen::LValue RefLVal, clang::CodeGen::LValueBaseInfo * PointeeBaseInfo = nullptr, clang::CodeGen::TBAAAccessInfo * PointeeTBAAInfo = nullptr)
  • public clang::CodeGen::LValue EmitLoadOfReferenceLValue(clang::CodeGen::Address RefAddr, clang::QualType RefTy, clang::CodeGen::AlignmentSource Source = AlignmentSource::Type)
  • public clang::CodeGen::LValue EmitLoadOfReferenceLValue(clang::CodeGen::LValue RefLVal)
  • public llvm::Value * EmitLoadOfScalar(clang::CodeGen::Address Addr, bool Volatile, clang::QualType Ty, clang::SourceLocation Loc, clang::CodeGen::AlignmentSource Source = AlignmentSource::Type, bool isNontemporal = false)
  • public llvm::Value * EmitLoadOfScalar(clang::CodeGen::Address Addr, bool Volatile, clang::QualType Ty, clang::SourceLocation Loc, clang::CodeGen::LValueBaseInfo BaseInfo, clang::CodeGen::TBAAAccessInfo TBAAInfo, bool isNontemporal = false)
  • public llvm::Value * EmitLoadOfScalar(clang::CodeGen::LValue lvalue, clang::SourceLocation Loc)
  • public clang::CodeGen::Address EmitMSVAListRef(const clang::Expr * E)
  • public llvm::Value * EmitMSVCBuiltinExpr(clang::CodeGen::CodeGenFunction::MSVCIntrin BuiltinID, const clang::CallExpr * E)
  • public clang::CodeGen::LValue EmitMaterializeTemporaryExpr(const clang::MaterializeTemporaryExpr * E)
  • public clang::CodeGen::LValue EmitMatrixSubscriptExpr(const clang::MatrixSubscriptExpr * E)
  • public clang::CodeGen::LValue EmitMemberExpr(const clang::MemberExpr * E)
  • public void EmitMultiVersionResolver(llvm::Function * Resolver, ArrayRef<clang::CodeGen::CodeGenFunction::MultiVersionResolverOption> Options)
  • public void EmitMustTailThunk(clang::GlobalDecl GD, llvm::Value * AdjustedThisPtr, llvm::FunctionCallee Callee)
  • public llvm::Value * EmitNVPTXBuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E)
  • public clang::CodeGen::RValue EmitNVPTXDevicePrintfCallExpr(const clang::CallExpr * E)
  • public llvm::Value * EmitNeonCall(llvm::Function * F, SmallVectorImpl<llvm::Value *> & O, const char * name, unsigned int shift = 0, bool rightshift = false)
  • public llvm::Value * EmitNeonRShiftImm(llvm::Value * Vec, llvm::Value * Amt, llvm::Type * Ty, bool usgn, const char * name)
  • public llvm::Value * EmitNeonShiftVector(llvm::Value * V, llvm::Type * Ty, bool negateForRightShift)
  • public llvm::Value * EmitNeonSplat(llvm::Value * V, llvm::Constant * Idx, const llvm::ElementCount & Count)
  • public llvm::Value * EmitNeonSplat(llvm::Value * V, llvm::Constant * Idx)
  • public void EmitNewArrayInitializer(const clang::CXXNewExpr * E, clang::QualType elementType, llvm::Type * ElementTy, clang::CodeGen::Address NewPtr, llvm::Value * NumElements, llvm::Value * AllocSizeWithoutCookie)
  • public void EmitNonNullArgCheck(clang::CodeGen::RValue RV, clang::QualType ArgType, clang::SourceLocation ArgLoc, clang::CodeGen::CodeGenFunction::AbstractCallee AC, unsigned int ParmNum)
  • public llvm::Value * EmitNonNullRValueCheck(clang::CodeGen::RValue RV, clang::QualType T)
  • public void EmitNoreturnRuntimeCallOrInvoke(llvm::FunctionCallee callee, ArrayRef<llvm::Value *> args)
  • public llvm::CallInst * EmitNounwindRuntimeCall(llvm::FunctionCallee callee, const llvm::Twine & name = "")
  • public llvm::CallInst * EmitNounwindRuntimeCall(llvm::FunctionCallee callee, ArrayRef<llvm::Value *> args, const llvm::Twine & name = "")
  • public void EmitNullInitialization(clang::CodeGen::Address DestPtr, clang::QualType Ty)
  • public void EmitNullabilityCheck(clang::CodeGen::LValue LHS, llvm::Value * RHS, clang::SourceLocation Loc)
  • public void EmitOMPAggregateAssign(clang::CodeGen::Address DestAddr, clang::CodeGen::Address SrcAddr, clang::QualType OriginalType, const llvm::function_ref<void (Address, Address)> CopyGen)
  • public clang::CodeGen::LValue EmitOMPArraySectionExpr(const clang::OMPArraySectionExpr * E, bool IsLowerBound = true)
  • public void EmitOMPAtomicDirective(const clang::OMPAtomicDirective & S)
  • public std::pair<bool, RValue> EmitOMPAtomicSimpleUpdateExpr(clang::CodeGen::LValue X, clang::CodeGen::RValue E, clang::BinaryOperatorKind BO, bool IsXLHSInRHSPart, llvm::AtomicOrdering AO, clang::SourceLocation Loc, const llvm::function_ref<RValue (RValue)> CommonGen)
  • public void EmitOMPBarrierDirective(const clang::OMPBarrierDirective & S)
  • public void EmitOMPCancelDirective(const clang::OMPCancelDirective & S)
  • public void EmitOMPCancellationPointDirective(const clang::OMPCancellationPointDirective & S)
  • public void EmitOMPCanonicalLoop(const clang::OMPCanonicalLoop * S)
  • public llvm::CanonicalLoopInfo * EmitOMPCollapsedCanonicalLoopNest(const clang::Stmt * S, int Depth)
  • public void EmitOMPCopy(clang::QualType OriginalType, clang::CodeGen::Address DestAddr, clang::CodeGen::Address SrcAddr, const clang::VarDecl * DestVD, const clang::VarDecl * SrcVD, const clang::Expr * Copy)
  • public bool EmitOMPCopyinClause(const clang::OMPExecutableDirective & D)
  • public void EmitOMPCriticalDirective(const clang::OMPCriticalDirective & S)
  • public void EmitOMPDepobjDirective(const clang::OMPDepobjDirective & S)
  • public void EmitOMPDistributeDirective(const clang::OMPDistributeDirective & S)
  • public void EmitOMPDistributeLoop(const clang::OMPLoopDirective & S, const clang::CodeGen::CodeGenFunction::CodeGenLoopTy & CodeGenLoop, clang::Expr * IncExpr)
  • private void EmitOMPDistributeOuterLoop(clang::OpenMPDistScheduleClauseKind ScheduleKind, const clang::OMPLoopDirective & S, clang::CodeGen::CodeGenFunction::OMPPrivateScope & LoopScope, const clang::CodeGen::CodeGenFunction::OMPLoopArguments & LoopArgs, const clang::CodeGen::CodeGenFunction::CodeGenLoopTy & CodeGenLoopContent)
  • public void EmitOMPDistributeParallelForDirective(const clang::OMPDistributeParallelForDirective & S)
  • public void EmitOMPDistributeParallelForSimdDirective(const clang::OMPDistributeParallelForSimdDirective & S)
  • public void EmitOMPDistributeSimdDirective(const clang::OMPDistributeSimdDirective & S)
  • public bool EmitOMPFirstprivateClause(const clang::OMPExecutableDirective & D, clang::CodeGen::CodeGenFunction::OMPPrivateScope & PrivateScope)
  • public void EmitOMPFlushDirective(const clang::OMPFlushDirective & S)
  • public void EmitOMPForDirective(const clang::OMPForDirective & S)
  • private void EmitOMPForOuterLoop(const clang::OpenMPScheduleTy & ScheduleKind, bool IsMonotonic, const clang::OMPLoopDirective & S, clang::CodeGen::CodeGenFunction::OMPPrivateScope & LoopScope, bool Ordered, const clang::CodeGen::CodeGenFunction::OMPLoopArguments & LoopArgs, const clang::CodeGen::CodeGenFunction::CodeGenDispatchBoundsTy & CGDispatchBounds)
  • public void EmitOMPForSimdDirective(const clang::OMPForSimdDirective & S)
  • public void EmitOMPGenericLoopDirective(const clang::OMPGenericLoopDirective & S)
  • public void EmitOMPInnerLoop(const clang::OMPExecutableDirective & S, bool RequiresCleanup, const clang::Expr * LoopCond, const clang::Expr * IncExpr, const llvm::function_ref<void (CodeGenFunction &)> BodyGen, const llvm::function_ref<void (CodeGenFunction &)> PostIncGen)
  • public void EmitOMPInteropDirective(const clang::OMPInteropDirective & S)
  • public void EmitOMPLastprivateClauseFinal(const clang::OMPExecutableDirective & D, bool NoFinals, llvm::Value * IsLastIterCond = nullptr)
  • public bool EmitOMPLastprivateClauseInit(const clang::OMPExecutableDirective & D, clang::CodeGen::CodeGenFunction::OMPPrivateScope & PrivateScope)
  • public void EmitOMPLinearClause(const clang::OMPLoopDirective & D, CodeGenFunction::OMPPrivateScope & PrivateScope)
  • public void EmitOMPLinearClauseFinal(const clang::OMPLoopDirective & D, const llvm::function_ref<llvm::Value *(CodeGenFunction &)> CondGen)
  • public bool EmitOMPLinearClauseInit(const clang::OMPLoopDirective & D)
  • public void EmitOMPLoopBody(const clang::OMPLoopDirective & D, clang::CodeGen::CodeGenFunction::JumpDest LoopExit)
  • public void EmitOMPMaskedDirective(const clang::OMPMaskedDirective & S)
  • public void EmitOMPMasterDirective(const clang::OMPMasterDirective & S)
  • public void EmitOMPMasterTaskLoopDirective(const clang::OMPMasterTaskLoopDirective & S)
  • public void EmitOMPMasterTaskLoopSimdDirective(const clang::OMPMasterTaskLoopSimdDirective & S)
  • public void EmitOMPMetaDirective(const clang::OMPMetaDirective & S)
  • public void EmitOMPOrderedDirective(const clang::OMPOrderedDirective & S)
  • private void EmitOMPOuterLoop(bool DynamicOrOrdered, bool IsMonotonic, const clang::OMPLoopDirective & S, clang::CodeGen::CodeGenFunction::OMPPrivateScope & LoopScope, const clang::CodeGen::CodeGenFunction::OMPLoopArguments & LoopArgs, const clang::CodeGen::CodeGenFunction::CodeGenLoopTy & CodeGenLoop, const clang::CodeGen::CodeGenFunction::CodeGenOrderedTy & CodeGenOrdered)
  • public void EmitOMPParallelDirective(const clang::OMPParallelDirective & S)
  • public void EmitOMPParallelForDirective(const clang::OMPParallelForDirective & S)
  • public void EmitOMPParallelForSimdDirective(const clang::OMPParallelForSimdDirective & S)
  • public void EmitOMPParallelMasterDirective(const clang::OMPParallelMasterDirective & S)
  • public void EmitOMPParallelMasterTaskLoopDirective(const clang::OMPParallelMasterTaskLoopDirective & S)
  • public void EmitOMPParallelMasterTaskLoopSimdDirective(const clang::OMPParallelMasterTaskLoopSimdDirective & S)
  • public void EmitOMPParallelSectionsDirective(const clang::OMPParallelSectionsDirective & S)
  • public void EmitOMPPrivateClause(const clang::OMPExecutableDirective & D, clang::CodeGen::CodeGenFunction::OMPPrivateScope & PrivateScope)
  • public void EmitOMPPrivateLoopCounters(const clang::OMPLoopDirective & S, clang::CodeGen::CodeGenFunction::OMPPrivateScope & LoopScope)
  • public void EmitOMPReductionClauseFinal(const clang::OMPExecutableDirective & D, const clang::OpenMPDirectiveKind ReductionKind)
  • public void EmitOMPReductionClauseInit(const clang::OMPExecutableDirective & D, clang::CodeGen::CodeGenFunction::OMPPrivateScope & PrivateScope, bool ForInscan = false)
  • public void EmitOMPScanDirective(const clang::OMPScanDirective & S)
  • public void EmitOMPSectionDirective(const clang::OMPSectionDirective & S)
  • public void EmitOMPSectionsDirective(const clang::OMPSectionsDirective & S)
  • public clang::CodeGen::LValue EmitOMPSharedLValue(const clang::Expr * E)
  • public void EmitOMPSimdDirective(const clang::OMPSimdDirective & S)
  • public void EmitOMPSimdFinal(const clang::OMPLoopDirective & D, const llvm::function_ref<llvm::Value *(CodeGenFunction &)> CondGen)
  • public void EmitOMPSimdInit(const clang::OMPLoopDirective & D)
  • public void EmitOMPSingleDirective(const clang::OMPSingleDirective & S)
  • public void EmitOMPTargetDataDirective(const clang::OMPTargetDataDirective & S)
  • public static void EmitOMPTargetDeviceFunction(clang::CodeGen::CodeGenModule & CGM, llvm::StringRef ParentName, const clang::OMPTargetDirective & S)
  • public void EmitOMPTargetDirective(const clang::OMPTargetDirective & S)
  • public void EmitOMPTargetEnterDataDirective(const clang::OMPTargetEnterDataDirective & S)
  • public void EmitOMPTargetExitDataDirective(const clang::OMPTargetExitDataDirective & S)
  • public static void EmitOMPTargetParallelDeviceFunction(clang::CodeGen::CodeGenModule & CGM, llvm::StringRef ParentName, const clang::OMPTargetParallelDirective & S)
  • public void EmitOMPTargetParallelDirective(const clang::OMPTargetParallelDirective & S)
  • public static void EmitOMPTargetParallelForDeviceFunction(clang::CodeGen::CodeGenModule & CGM, llvm::StringRef ParentName, const clang::OMPTargetParallelForDirective & S)
  • public void EmitOMPTargetParallelForDirective(const clang::OMPTargetParallelForDirective & S)
  • public static void EmitOMPTargetParallelForSimdDeviceFunction(clang::CodeGen::CodeGenModule & CGM, llvm::StringRef ParentName, const clang::OMPTargetParallelForSimdDirective & S)
  • public void EmitOMPTargetParallelForSimdDirective(const clang::OMPTargetParallelForSimdDirective & S)
  • public static void EmitOMPTargetSimdDeviceFunction(clang::CodeGen::CodeGenModule & CGM, llvm::StringRef ParentName, const clang::OMPTargetSimdDirective & S)
  • public void EmitOMPTargetSimdDirective(const clang::OMPTargetSimdDirective & S)
  • public void EmitOMPTargetTaskBasedDirective(const clang::OMPExecutableDirective & S, const clang::CodeGen::RegionCodeGenTy & BodyGen, clang::CodeGen::CodeGenFunction::OMPTargetDataInfo & InputInfo)
  • public static void EmitOMPTargetTeamsDeviceFunction(clang::CodeGen::CodeGenModule & CGM, llvm::StringRef ParentName, const clang::OMPTargetTeamsDirective & S)
  • public void EmitOMPTargetTeamsDirective(const clang::OMPTargetTeamsDirective & S)
  • public static void EmitOMPTargetTeamsDistributeDeviceFunction(clang::CodeGen::CodeGenModule & CGM, llvm::StringRef ParentName, const clang::OMPTargetTeamsDistributeDirective & S)
  • public void EmitOMPTargetTeamsDistributeDirective(const clang::OMPTargetTeamsDistributeDirective & S)
  • public static void EmitOMPTargetTeamsDistributeParallelForDeviceFunction(clang::CodeGen::CodeGenModule & CGM, llvm::StringRef ParentName, const clang::OMPTargetTeamsDistributeParallelForDirective & S)
  • public void EmitOMPTargetTeamsDistributeParallelForDirective(const clang::OMPTargetTeamsDistributeParallelForDirective & S)
  • public static void EmitOMPTargetTeamsDistributeParallelForSimdDeviceFunction(clang::CodeGen::CodeGenModule & CGM, llvm::StringRef ParentName, const clang::OMPTargetTeamsDistributeParallelForSimdDirective & S)
  • public void EmitOMPTargetTeamsDistributeParallelForSimdDirective(const clang::OMPTargetTeamsDistributeParallelForSimdDirective & S)
  • public static void EmitOMPTargetTeamsDistributeSimdDeviceFunction(clang::CodeGen::CodeGenModule & CGM, llvm::StringRef ParentName, const clang::OMPTargetTeamsDistributeSimdDirective & S)
  • public void EmitOMPTargetTeamsDistributeSimdDirective(const clang::OMPTargetTeamsDistributeSimdDirective & S)
  • public void EmitOMPTargetUpdateDirective(const clang::OMPTargetUpdateDirective & S)
  • public void EmitOMPTaskBasedDirective(const clang::OMPExecutableDirective & S, const clang::OpenMPDirectiveKind CapturedRegion, const clang::CodeGen::RegionCodeGenTy & BodyGen, const clang::CodeGen::CodeGenFunction::TaskGenTy & TaskGen, clang::CodeGen::OMPTaskDataTy & Data)
  • public void EmitOMPTaskDirective(const clang::OMPTaskDirective & S)
  • public void EmitOMPTaskLoopBasedDirective(const clang::OMPLoopDirective & S)
  • public void EmitOMPTaskLoopDirective(const clang::OMPTaskLoopDirective & S)
  • public void EmitOMPTaskLoopSimdDirective(const clang::OMPTaskLoopSimdDirective & S)
  • public void EmitOMPTaskgroupDirective(const clang::OMPTaskgroupDirective & S)
  • public void EmitOMPTaskwaitDirective(const clang::OMPTaskwaitDirective & S)
  • public void EmitOMPTaskyieldDirective(const clang::OMPTaskyieldDirective & S)
  • public void EmitOMPTeamsDirective(const clang::OMPTeamsDirective & S)
  • public void EmitOMPTeamsDistributeDirective(const clang::OMPTeamsDistributeDirective & S)
  • public void EmitOMPTeamsDistributeParallelForDirective(const clang::OMPTeamsDistributeParallelForDirective & S)
  • public void EmitOMPTeamsDistributeParallelForSimdDirective(const clang::OMPTeamsDistributeParallelForSimdDirective & S)
  • public void EmitOMPTeamsDistributeSimdDirective(const clang::OMPTeamsDistributeSimdDirective & S)
  • public void EmitOMPTileDirective(const clang::OMPTileDirective & S)
  • public void EmitOMPUnrollDirective(const clang::OMPUnrollDirective & S)
  • public void EmitOMPUseDeviceAddrClause(const clang::OMPUseDeviceAddrClause & C, clang::CodeGen::CodeGenFunction::OMPPrivateScope & PrivateScope, const llvm::DenseMap<const ValueDecl *, Address> & CaptureDeviceAddrMap)
  • public void EmitOMPUseDevicePtrClause(const clang::OMPUseDevicePtrClause & C, clang::CodeGen::CodeGenFunction::OMPPrivateScope & PrivateScope, const llvm::DenseMap<const ValueDecl *, Address> & CaptureDeviceAddrMap)
  • public bool EmitOMPWorksharingLoop(const clang::OMPLoopDirective & S, clang::Expr * EUB, const clang::CodeGen::CodeGenFunction::CodeGenLoopBoundsTy & CodeGenLoopBounds, const clang::CodeGen::CodeGenFunction::CodeGenDispatchBoundsTy & CGDispatchBounds)
  • public llvm::Value * EmitObjCAlloc(llvm::Value * value, llvm::Type * returnType)
  • public llvm::Value * EmitObjCAllocInit(llvm::Value * value, llvm::Type * resultType)
  • public llvm::Value * EmitObjCAllocWithZone(llvm::Value * value, llvm::Type * returnType)
  • public llvm::Value * EmitObjCArrayLiteral(const clang::ObjCArrayLiteral * E)
  • public void EmitObjCAtSynchronizedStmt(const clang::ObjCAtSynchronizedStmt & S)
  • public void EmitObjCAtThrowStmt(const clang::ObjCAtThrowStmt & S)
  • public void EmitObjCAtTryStmt(const clang::ObjCAtTryStmt & S)
  • public llvm::Value * EmitObjCAutorelease(llvm::Value * value, llvm::Type * returnType)
  • public void EmitObjCAutoreleasePoolCleanup(llvm::Value * Ptr)
  • public void EmitObjCAutoreleasePoolPop(llvm::Value * Ptr)
  • public llvm::Value * EmitObjCAutoreleasePoolPush()
  • public void EmitObjCAutoreleasePoolStmt(const clang::ObjCAutoreleasePoolStmt & S)
  • public llvm::Value * EmitObjCBoxedExpr(const clang::ObjCBoxedExpr * E)
  • public llvm::Value * EmitObjCCollectionLiteral(const clang::Expr * E, const clang::ObjCMethodDecl * MethodWithObjects)
  • public llvm::Value * EmitObjCConsumeObject(clang::QualType T, llvm::Value * Ptr)
  • public llvm::Value * EmitObjCDictionaryLiteral(const clang::ObjCDictionaryLiteral * E)
  • public clang::CodeGen::LValue EmitObjCEncodeExprLValue(const clang::ObjCEncodeExpr * E)
  • public llvm::Value * EmitObjCExtendObjectLifetime(clang::QualType T, llvm::Value * Ptr)
  • public void EmitObjCForCollectionStmt(const clang::ObjCForCollectionStmt & S)
  • public clang::CodeGen::LValue EmitObjCIsaExpr(const clang::ObjCIsaExpr * E)
  • public clang::CodeGen::LValue EmitObjCIvarRefLValue(const clang::ObjCIvarRefExpr * E)
  • public void EmitObjCMRRAutoreleasePoolPop(llvm::Value * Ptr)
  • public llvm::Value * EmitObjCMRRAutoreleasePoolPush()
  • public clang::CodeGen::RValue EmitObjCMessageExpr(const clang::ObjCMessageExpr * E, clang::CodeGen::ReturnValueSlot Return = clang::CodeGen::ReturnValueSlot())
  • public clang::CodeGen::LValue EmitObjCMessageExprLValue(const clang::ObjCMessageExpr * E)
  • public llvm::Value * EmitObjCProtocolExpr(const clang::ObjCProtocolExpr * E)
  • public void EmitObjCRelease(llvm::Value * value, clang::CodeGen::ARCPreciseLifetime_t precise)
  • public llvm::Value * EmitObjCRetainNonBlock(llvm::Value * value, llvm::Type * returnType)
  • public llvm::Value * EmitObjCSelectorExpr(const clang::ObjCSelectorExpr * E)
  • public clang::CodeGen::LValue EmitObjCSelectorLValue(const clang::ObjCSelectorExpr * E)
  • public llvm::Value * EmitObjCStringLiteral(const clang::ObjCStringLiteral * E)
  • public llvm::Value * EmitObjCThrowOperand(const clang::Expr * expr)
  • public clang::CodeGen::LValue EmitOpaqueValueLValue(const clang::OpaqueValueExpr * e)
  • public clang::CodeGen::RValue EmitOpenMPDevicePrintfCallExpr(const clang::CallExpr * E)
  • public llvm::Value * EmitPPCBuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E)
  • public void EmitParmDecl(const clang::VarDecl & D, clang::CodeGen::CodeGenFunction::ParamValue Arg, unsigned int ArgNo)
  • public clang::CodeGen::LValue EmitPointerToDataMemberBinaryExpr(const clang::BinaryOperator * E)
  • public clang::CodeGen::Address EmitPointerWithAlignment(const clang::Expr * Addr, clang::CodeGen::LValueBaseInfo * BaseInfo = nullptr, clang::CodeGen::TBAAAccessInfo * TBAAInfo = nullptr)
  • public clang::CodeGen::LValue EmitPredefinedLValue(const clang::PredefinedExpr * E)
  • public clang::CodeGen::LValue EmitPseudoObjectLValue(const clang::PseudoObjectExpr * e)
  • public clang::CodeGen::RValue EmitPseudoObjectRValue(const clang::PseudoObjectExpr * e, clang::CodeGen::AggValueSlot slot = AggValueSlot::ignored())
  • public llvm::Value * EmitRISCVBuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E, clang::CodeGen::ReturnValueSlot ReturnValue)
  • public clang::CodeGen::RValue EmitRValueForField(clang::CodeGen::LValue LV, const clang::FieldDecl * FD, clang::SourceLocation Loc)
  • public clang::CodeGen::RValue EmitReferenceBindingToExpr(const clang::Expr * E)
  • public llvm::DebugLoc EmitReturnBlock()
  • private void EmitReturnOfRValue(clang::CodeGen::RValue RV, clang::QualType Ty)
  • public void EmitReturnStmt(const clang::ReturnStmt & S)
  • public void EmitReturnValueCheck(llvm::Value * RV)
  • public llvm::CallInst * EmitRuntimeCall(llvm::FunctionCallee callee, const llvm::Twine & name = "")
  • public llvm::CallInst * EmitRuntimeCall(llvm::FunctionCallee callee, ArrayRef<llvm::Value *> args, const llvm::Twine & name = "")
  • public llvm::CallBase * EmitRuntimeCallOrInvoke(llvm::FunctionCallee callee, const llvm::Twine & name = "")
  • public llvm::CallBase * EmitRuntimeCallOrInvoke(llvm::FunctionCallee callee, ArrayRef<llvm::Value *> args, const llvm::Twine & name = "")
  • public llvm::Value * EmitSEHAbnormalTermination()
  • public llvm::Value * EmitSEHExceptionCode()
  • public void EmitSEHExceptionCodeSave(clang::CodeGen::CodeGenFunction & ParentCGF, llvm::Value * ParentFP, llvm::Value * EntryEBP)
  • public llvm::Value * EmitSEHExceptionInfo()
  • public void EmitSEHLeaveStmt(const clang::SEHLeaveStmt & S)
  • public void EmitSEHTryStmt(const clang::SEHTryStmt & S)
  • public llvm::Value * EmitSVEAllTruePred(const clang::SVETypeFlags & TypeFlags)
  • public llvm::Value * EmitSVEDupX(llvm::Value * Scalar, llvm::Type * Ty)
  • public llvm::Value * EmitSVEDupX(llvm::Value * Scalar)
  • public llvm::Value * EmitSVEGatherLoad(const clang::SVETypeFlags & TypeFlags, llvm::SmallVectorImpl<llvm::Value *> & Ops, unsigned int IntID)
  • public llvm::Value * EmitSVEGatherPrefetch(const clang::SVETypeFlags & TypeFlags, SmallVectorImpl<llvm::Value *> & Ops, unsigned int IntID)
  • public llvm::Value * EmitSVEMaskedLoad(const clang::CallExpr *, llvm::Type * ReturnTy, SmallVectorImpl<llvm::Value *> & Ops, unsigned int BuiltinID, bool IsZExtReturn)
  • public llvm::Value * EmitSVEMaskedStore(const clang::CallExpr *, SmallVectorImpl<llvm::Value *> & Ops, unsigned int BuiltinID)
  • public llvm::Value * EmitSVEMovl(const clang::SVETypeFlags & TypeFlags, llvm::ArrayRef<llvm::Value *> Ops, unsigned int BuiltinID)
  • public llvm::Value * EmitSVEPMull(const clang::SVETypeFlags & TypeFlags, llvm::SmallVectorImpl<llvm::Value *> & Ops, unsigned int BuiltinID)
  • public llvm::Value * EmitSVEPredicateCast(llvm::Value * Pred, llvm::ScalableVectorType * VTy)
  • public llvm::Value * EmitSVEPrefetchLoad(const clang::SVETypeFlags & TypeFlags, SmallVectorImpl<llvm::Value *> & Ops, unsigned int BuiltinID)
  • public llvm::Value * EmitSVEReinterpret(llvm::Value * Val, llvm::Type * Ty)
  • public llvm::Value * EmitSVEScatterStore(const clang::SVETypeFlags & TypeFlags, llvm::SmallVectorImpl<llvm::Value *> & Ops, unsigned int IntID)
  • public llvm::Value * EmitSVEStructLoad(const clang::SVETypeFlags & TypeFlags, SmallVectorImpl<llvm::Value *> & Ops, unsigned int IntID)
  • public llvm::Value * EmitSVEStructStore(const clang::SVETypeFlags & TypeFlags, SmallVectorImpl<llvm::Value *> & Ops, unsigned int IntID)
  • public void EmitSanitizerStatReport(llvm::SanitizerStatKind SSK)
  • public clang::CodeGen::LValue EmitScalarCompoundAssignWithComplex(const clang::CompoundAssignOperator * E, llvm::Value *& Result)
  • public llvm::Value * EmitScalarConversion(llvm::Value * Src, clang::QualType SrcTy, clang::QualType DstTy, clang::SourceLocation Loc)
  • public llvm::Value * EmitScalarExpr(const clang::Expr * E, bool IgnoreResultAssign = false)
  • public void EmitScalarInit(const clang::Expr * init, const clang::ValueDecl * D, clang::CodeGen::LValue lvalue, bool capturedByInit)
  • public llvm::Value * EmitScalarPrePostIncDec(const clang::UnaryOperator * E, clang::CodeGen::LValue LV, bool isInc, bool isPre)
  • public bool EmitScalarRangeCheck(llvm::Value * Value, clang::QualType Ty, clang::SourceLocation Loc)
  • private void EmitSections(const clang::OMPExecutableDirective & S)
  • public void EmitSehCppScopeBegin()
  • public void EmitSehCppScopeEnd()
  • public void EmitSehTryScopeBegin()
  • public void EmitSehTryScopeEnd()
  • public clang::CodeGen::RValue EmitSimpleCallExpr(const clang::CallExpr * E, clang::CodeGen::ReturnValueSlot ReturnValue)
  • public void EmitSimpleOMPExecutableDirective(const clang::OMPExecutableDirective & D)
  • public bool EmitSimpleStmt(const clang::Stmt * S, ArrayRef<const clang::Attr *> Attrs)
  • public void EmitStartEHSpec(const clang::Decl * D)
  • public void EmitStaticVarDecl(const clang::VarDecl & D, llvm::GlobalValue::LinkageTypes Linkage)
  • public void EmitStmt(const clang::Stmt * S, ArrayRef<const clang::Attr *> Attrs = None)
  • public clang::CodeGen::LValue EmitStmtExprLValue(const clang::StmtExpr * E)
  • public void EmitStopPoint(const clang::Stmt * S)
  • public void EmitStoreOfComplex(clang::CodeGen::CodeGenFunction::ComplexPairTy V, clang::CodeGen::LValue dest, bool isInit)
  • public void EmitStoreOfScalar(llvm::Value * Value, clang::CodeGen::Address Addr, bool Volatile, clang::QualType Ty, clang::CodeGen::AlignmentSource Source = AlignmentSource::Type, bool isInit = false, bool isNontemporal = false)
  • public void EmitStoreOfScalar(llvm::Value * Value, clang::CodeGen::Address Addr, bool Volatile, clang::QualType Ty, clang::CodeGen::LValueBaseInfo BaseInfo, clang::CodeGen::TBAAAccessInfo TBAAInfo, bool isInit = false, bool isNontemporal = false)
  • public void EmitStoreOfScalar(llvm::Value * value, clang::CodeGen::LValue lvalue, bool isInit = false)
  • public void EmitStoreThroughBitfieldLValue(clang::CodeGen::RValue Src, clang::CodeGen::LValue Dst, llvm::Value ** Result = nullptr)
  • public void EmitStoreThroughExtVectorComponentLValue(clang::CodeGen::RValue Src, clang::CodeGen::LValue Dst)
  • public void EmitStoreThroughGlobalRegLValue(clang::CodeGen::RValue Src, clang::CodeGen::LValue Dst)
  • public void EmitStoreThroughLValue(clang::CodeGen::RValue Src, clang::CodeGen::LValue Dst, bool isInit = false)
  • public clang::CodeGen::LValue EmitStringLiteralLValue(const clang::StringLiteral * E)
  • public void EmitSwitchStmt(const clang::SwitchStmt & S)
  • public void EmitSynthesizedCXXCopyCtor(clang::CodeGen::Address Dest, clang::CodeGen::Address Src, const clang::Expr * Exp)
  • public void EmitSynthesizedCXXCopyCtorCall(const clang::CXXConstructorDecl * D, clang::CodeGen::Address This, clang::CodeGen::Address Src, const clang::CXXConstructExpr * E)
  • public llvm::Value * EmitSystemZBuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E)
  • public llvm::Value * EmitTargetBuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E, clang::CodeGen::ReturnValueSlot ReturnValue)
  • public llvm::Value * EmitToMemory(llvm::Value * Value, clang::QualType Ty)
  • public llvm::CallInst * EmitTrapCall(llvm::Intrinsic::ID IntrID)
  • public void EmitTrapCheck(llvm::Value * Checked, clang::CodeGen::SanitizerHandler CheckHandlerID)
  • public void EmitTypeCheck(clang::CodeGen::CodeGenFunction::TypeCheckKind TCK, clang::SourceLocation Loc, llvm::Value * V, clang::QualType Type, clang::CharUnits Alignment = CharUnits::Zero(), clang::SanitizerSet SkippedChecks = clang::SanitizerSet(), llvm::Value * ArraySize = nullptr)
  • public void EmitTypeMetadataCodeForVCall(const clang::CXXRecordDecl * RD, llvm::Value * VTable, clang::SourceLocation Loc)
  • public clang::CodeGen::LValue EmitUnaryOpLValue(const clang::UnaryOperator * E)
  • public void EmitUnreachable(clang::SourceLocation Loc)
  • public clang::CodeGen::LValue EmitUnsupportedLValue(const clang::Expr * E, const char * Name)
  • public clang::CodeGen::RValue EmitUnsupportedRValue(const clang::Expr * E, const char * Name)
  • public clang::CodeGen::Address EmitVAArg(clang::VAArgExpr * VE, clang::CodeGen::Address & VAListAddr)
  • public clang::CodeGen::LValue EmitVAArgExprLValue(const clang::VAArgExpr * E)
  • public clang::CodeGen::Address EmitVAListRef(const clang::Expr * E)
  • public llvm::Value * EmitVAStartEnd(llvm::Value * ArgValue, bool IsStart)
  • public void EmitVTableAssumptionLoad(const clang::CodeGen::CodeGenFunction::VPtr & vptr, clang::CodeGen::Address This)
  • public void EmitVTableAssumptionLoads(const clang::CXXRecordDecl * ClassDecl, clang::CodeGen::Address This)
  • public void EmitVTablePtrCheck(const clang::CXXRecordDecl * RD, llvm::Value * VTable, clang::CodeGen::CodeGenFunction::CFITypeCheckKind TCK, clang::SourceLocation Loc)
  • public void EmitVTablePtrCheckForCall(const clang::CXXRecordDecl * RD, llvm::Value * VTable, clang::CodeGen::CodeGenFunction::CFITypeCheckKind TCK, clang::SourceLocation Loc)
  • public void EmitVTablePtrCheckForCast(clang::QualType T, clang::CodeGen::Address Derived, bool MayBeNull, clang::CodeGen::CodeGenFunction::CFITypeCheckKind TCK, clang::SourceLocation Loc)
  • public llvm::Value * EmitVTableTypeCheckedLoad(const clang::CXXRecordDecl * RD, llvm::Value * VTable, llvm::Type * VTableTy, uint64_t VTableByteOffset)
  • public void EmitVarAnnotations(const clang::VarDecl * D, llvm::Value * V)
  • public void EmitVarDecl(const clang::VarDecl & D)
  • public void EmitVariablyModifiedType(clang::QualType Ty)
  • public llvm::Value * EmitWebAssemblyBuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E)
  • public void EmitWhileStmt(const clang::WhileStmt & S, ArrayRef<const clang::Attr *> Attrs = None)
  • public llvm::Value * EmitX86BuiltinExpr(unsigned int BuiltinID, const clang::CallExpr * E)
  • private llvm::Value * EmitX86CpuInit()
  • private llvm::Value * EmitX86CpuIs(const clang::CallExpr * E)
  • private llvm::Value * EmitX86CpuIs(llvm::StringRef CPUStr)
  • private llvm::Value * EmitX86CpuSupports(uint64_t Mask)
  • private llvm::Value * EmitX86CpuSupports(ArrayRef<llvm::StringRef> FeatureStrs)
  • private llvm::Value * EmitX86CpuSupports(const clang::CallExpr * E)
  • public void EnsureInsertPoint()
  • public void EnterCXXTryStmt(const clang::CXXTryStmt & S, bool IsFnTryBlock = false)
  • public void EnterDtorCleanups(const clang::CXXDestructorDecl * Dtor, clang::CXXDtorType Type)
  • public void EnterSEHTryStmt(const clang::SEHTryStmt & S)
  • public void ErrorUnsupported(const clang::Stmt * S, const char * Type)
  • public llvm::Value * EvaluateExprAsBool(const clang::Expr * E)
  • public void ExitCXXTryStmt(const clang::CXXTryStmt & S, bool IsFnTryBlock = false)
  • public void ExitSEHTryStmt(const clang::SEHTryStmt & S)
  • private void ExpandTypeFromArgs(clang::QualType Ty, clang::CodeGen::LValue Dst, llvm::Function::arg_iterator & AI)
  • private void ExpandTypeToArgs(clang::QualType Ty, clang::CodeGen::CallArg Arg, llvm::FunctionType * IRFuncTy, SmallVectorImpl<llvm::Value *> & IRCallArgs, unsigned int & IRCallArgPos)
  • public void FinishFunction(clang::SourceLocation EndLoc = clang::SourceLocation())
  • public void FinishThunk()
  • private llvm::Value * FormResolverCondition(const clang::CodeGen::CodeGenFunction::MultiVersionResolverOption & RO)
  • public llvm::Function * GenerateBlockFunction(clang::GlobalDecl GD, const clang::CodeGen::CGBlockInfo & Info, const clang::CodeGen::CodeGenFunction::DeclMapTy & ldm, bool IsLambdaConversionToBlock, bool BuildGlobalBlock)
  • public void GenerateCXXGlobalCleanUpFunc(llvm::Function * Fn, ArrayRef<std::tuple<llvm::FunctionType *, llvm::WeakTrackingVH, llvm::Constant *>> DtorsOrStermFinalizers)
  • public void GenerateCXXGlobalInitFunc(llvm::Function * Fn, ArrayRef<llvm::Function *> CXXThreadLocals, clang::CodeGen::ConstantAddress Guard = ConstantAddress::invalid())
  • public void GenerateCXXGlobalVarDeclInitFunc(llvm::Function * Fn, const clang::VarDecl * D, llvm::GlobalVariable * Addr, bool PerformInit)
  • public clang::CodeGen::Address GenerateCapturedStmtArgument(const clang::CapturedStmt & S)
  • public llvm::Function * GenerateCapturedStmtFunction(const clang::CapturedStmt & S)
  • public void GenerateCode(clang::GlobalDecl GD, llvm::Function * Fn, const clang::CodeGen::CGFunctionInfo & FnInfo)
  • public llvm::Constant * GenerateCopyHelperFunction(const clang::CodeGen::CGBlockInfo & blockInfo)
  • public llvm::Constant * GenerateDestroyHelperFunction(const clang::CodeGen::CGBlockInfo & blockInfo)
  • public llvm::Constant * GenerateObjCAtomicGetterCopyHelperFunction(const clang::ObjCPropertyImplDecl * PID)
  • public llvm::Constant * GenerateObjCAtomicSetterCopyHelperFunction(const clang::ObjCPropertyImplDecl * PID)
  • public void GenerateObjCCtorDtorMethod(clang::ObjCImplementationDecl * IMP, clang::ObjCMethodDecl * MD, bool ctor)
  • public void GenerateObjCGetter(clang::ObjCImplementationDecl * IMP, const clang::ObjCPropertyImplDecl * PID)
  • public void GenerateObjCMethod(const clang::ObjCMethodDecl * OMD)
  • public void GenerateObjCSetter(clang::ObjCImplementationDecl * IMP, const clang::ObjCPropertyImplDecl * PID)
  • public llvm::Function * GenerateOpenMPCapturedStmtFunction(const clang::CapturedStmt & S, clang::SourceLocation Loc)
  • public void GenerateOpenMPCapturedVars(const clang::CapturedStmt & S, SmallVectorImpl<llvm::Value *> & CapturedVars)
  • public llvm::Function * GenerateSEHFilterFunction(clang::CodeGen::CodeGenFunction & ParentCGF, const clang::SEHExceptStmt & Except)
  • public llvm::Function * GenerateSEHFinallyFunction(clang::CodeGen::CodeGenFunction & ParentCGF, const clang::SEHFinallyStmt & Finally)
  • public llvm::Function * GenerateVarArgsThunk(llvm::Function * Fn, const clang::CodeGen::CGFunctionInfo & FnInfo, clang::GlobalDecl GD, const clang::ThunkInfo & Thunk)
  • public clang::CodeGen::Address GetAddrOfBlockDecl(const clang::VarDecl * var)
  • public llvm::BlockAddress * GetAddrOfLabel(const clang::LabelDecl * L)
  • public clang::CodeGen::Address GetAddrOfLocalVar(const clang::VarDecl * VD)
  • public clang::CodeGen::Address GetAddressOfBaseClass(clang::CodeGen::Address Value, const clang::CXXRecordDecl * Derived, CastExpr::path_const_iterator PathBegin, CastExpr::path_const_iterator PathEnd, bool NullCheckValue, clang::SourceLocation Loc)
  • public clang::CodeGen::Address GetAddressOfDerivedClass(clang::CodeGen::Address Value, const clang::CXXRecordDecl * Derived, CastExpr::path_const_iterator PathBegin, CastExpr::path_const_iterator PathEnd, bool NullCheckValue)
  • public clang::CodeGen::Address GetAddressOfDirectBaseInCompleteClass(clang::CodeGen::Address Value, const clang::CXXRecordDecl * Derived, const clang::CXXRecordDecl * Base, bool BaseIsVirtual)
  • public llvm::BasicBlock * GetIndirectGotoBlock()
  • public clang::CodeGen::RValue GetUndefRValue(clang::QualType Ty)
  • public llvm::Value * GetVTTParameter(clang::GlobalDecl GD, bool ForVirtualBase, bool Delegating)
  • public llvm::Value * GetVTablePtr(clang::CodeGen::Address This, llvm::Type * VTableTy, const clang::CXXRecordDecl * VTableClass)
  • private llvm::Value * GetValueForARMHint(unsigned int BuiltinID)
  • public bool HaveInsertPoint() const
  • public clang::CodeGen::LValue InitCapturedStruct(const clang::CapturedStmt & S)
  • public void InitializeVTablePointer(const clang::CodeGen::CodeGenFunction::VPtr & vptr)
  • public void InitializeVTablePointers(const clang::CXXRecordDecl * ClassDecl)
  • public void InsertHelper(llvm::Instruction * I, const llvm::Twine & Name, llvm::BasicBlock * BB, llvm::BasicBlock::iterator InsertPt) const
  • public static bool IsConstructorDelegationValid(const clang::CXXConstructorDecl * Ctor)
  • public static bool IsWrappedCXXThis(const clang::Expr * E)
  • public bool LValueIsSuitableForInlineAtomic(clang::CodeGen::LValue Src)
  • public clang::CodeGen::Address LoadBlockStruct()
  • public llvm::Value * LoadCXXThis()
  • public clang::CodeGen::Address LoadCXXThisAddress()
  • public llvm::Value * LoadCXXVTT()
  • public llvm::Value * LoadObjCSelf()
  • public llvm::Value * LoadPassedObjectSize(const clang::Expr * E, clang::QualType EltTy)
  • public llvm::Function * LookupNeonLLVMIntrinsic(unsigned int IntrinsicID, unsigned int Modifier, llvm::Type * ArgTy, const clang::CallExpr * E)
  • public clang::CodeGen::LValue MakeAddrLValue(clang::CodeGen::Address Addr, clang::QualType T, clang::CodeGen::LValueBaseInfo BaseInfo, clang::CodeGen::TBAAAccessInfo TBAAInfo)
  • public clang::CodeGen::LValue MakeAddrLValue(clang::CodeGen::Address Addr, clang::QualType T, clang::CodeGen::AlignmentSource Source = AlignmentSource::Type)
  • public clang::CodeGen::LValue MakeAddrLValue(llvm::Value * V, clang::QualType T, clang::CharUnits Alignment, clang::CodeGen::AlignmentSource Source = AlignmentSource::Type)
  • public clang::CodeGen::LValue MakeAddrLValueWithoutTBAA(clang::CodeGen::Address Addr, clang::QualType T, clang::CodeGen::AlignmentSource Source = AlignmentSource::Type)
  • public clang::CodeGen::LValue MakeNaturalAlignAddrLValue(llvm::Value * V, clang::QualType T)
  • public clang::CodeGen::LValue MakeNaturalAlignPointeeAddrLValue(llvm::Value * V, clang::QualType T)
  • public void PopCleanupBlock(bool FallThroughIsBranchThrough = false)
  • public void PopCleanupBlocks(EHScopeStack::stable_iterator OldCleanupStackSize, std::initializer_list<llvm::Value **> ValuesToReload = {})
  • public void PopCleanupBlocks(EHScopeStack::stable_iterator OldCleanupStackSize, size_t OldLifetimeExtendedStackSize, std::initializer_list<llvm::Value **> ValuesToReload = {})
  • public bool ProcessOrderScopeAMDGCN(llvm::Value * Order, llvm::Value * Scope, llvm::AtomicOrdering & AO, llvm::SyncScope::ID & SSID)
  • public void PushDestructorCleanup(clang::QualType T, clang::CodeGen::Address Addr)
  • public void PushDestructorCleanup(const clang::CXXDestructorDecl * Dtor, clang::QualType T, clang::CodeGen::Address Addr)
  • public void ResolveBranchFixups(llvm::BasicBlock * Target)
  • public llvm::Type * SVEBuiltinMemEltTy(const clang::SVETypeFlags & TypeFlags)
  • public void SetFPAccuracy(llvm::Value * Val, float Accuracy)
  • public void SetFastMathFlags(clang::FPOptions FPFeatures)
  • public bool ShouldEmitVTableTypeCheckedLoad(const clang::CXXRecordDecl * RD)
  • public bool ShouldInstrumentFunction()
  • public static bool ShouldNullCheckClassCastValue(const clang::CastExpr * Cast)
  • public bool ShouldSkipSanitizerInstrumentation()
  • public bool ShouldXRayInstrumentFunction() const
  • public void SimplifyForwardingBlocks(llvm::BasicBlock * BB)
  • public llvm::DebugLoc SourceLocToDebugLoc(clang::SourceLocation Location)
  • public void StartFunction(clang::GlobalDecl GD, clang::QualType RetTy, llvm::Function * Fn, const clang::CodeGen::CGFunctionInfo & FnInfo, const clang::CodeGen::FunctionArgList & Args, clang::SourceLocation Loc = clang::SourceLocation(), clang::SourceLocation StartLoc = clang::SourceLocation())
  • public void StartObjCMethod(const clang::ObjCMethodDecl * MD, const clang::ObjCContainerDecl * CD)
  • public void StartThunk(llvm::Function * Fn, clang::GlobalDecl GD, const clang::CodeGen::CGFunctionInfo & FnInfo, bool IsUnprototyped)
  • public clang::QualType TypeOfSelfObject()
  • public void VolatilizeTryBlocks(llvm::BasicBlock * BB, llvm::SmallPtrSet<llvm::BasicBlock *, 10> & V)
  • private clang::CodeGen::BlockByrefHelpers * buildByrefHelpers(llvm::StructType & byrefType, const clang::CodeGen::CodeGenFunction::AutoVarEmission & emission)
  • public void callCStructCopyAssignmentOperator(clang::CodeGen::LValue Dst, clang::CodeGen::LValue Src)
  • public void callCStructCopyConstructor(clang::CodeGen::LValue Dst, clang::CodeGen::LValue Src)
  • public void callCStructDefaultConstructor(clang::CodeGen::LValue Dst)
  • public void callCStructDestructor(clang::CodeGen::LValue Dst)
  • public void callCStructMoveAssignmentOperator(clang::CodeGen::LValue Dst, clang::CodeGen::LValue Src)
  • public void callCStructMoveConstructor(clang::CodeGen::LValue Dst, clang::CodeGen::LValue Src)
  • public bool checkIfFunctionMustProgress()
  • public bool checkIfLoopMustProgress(bool HasConstantCond)
  • public void checkTargetFeatures(clang::SourceLocation Loc, const clang::FunctionDecl * TargetDecl)
  • public void checkTargetFeatures(const clang::CallExpr * E, const clang::FunctionDecl * TargetDecl)
  • public static bool containsBreak(const clang::Stmt * S)
  • public clang::CodeGen::RValue convertTempToRValue(clang::CodeGen::Address addr, clang::QualType type, clang::SourceLocation Loc)
  • public llvm::Function * createAtExitStub(const clang::VarDecl & VD, llvm::FunctionCallee Dtor, llvm::Constant * Addr)
  • public llvm::BasicBlock * createBasicBlock(const llvm::Twine & name = "", llvm::Function * parent = nullptr, llvm::BasicBlock * before = nullptr)
  • public clang::CodeGen::Address createCleanupActiveFlag()
  • private llvm::MDNode * createProfileWeights(uint64_t TrueCount, uint64_t FalseCount) const
  • private llvm::MDNode * createProfileWeights(ArrayRef<uint64_t> Weights) const
  • private llvm::MDNode * createProfileWeightsForLoop(const clang::Stmt * Cond, uint64_t LoopCount) const
  • public llvm::Function * createTLSAtExitStub(const clang::VarDecl & VD, llvm::FunctionCallee Dtor, llvm::Constant * Addr, llvm::FunctionCallee & AtExit)
  • public bool currentFunctionUsesSEHTry() const
  • public static bool cxxDestructorCanThrow(clang::QualType T)
  • public void defaultInitNonTrivialCStructVar(clang::CodeGen::LValue Dst)
  • private void deferPlaceholderReplacement(llvm::Instruction * Old, llvm::Value * New)
  • public static void destroyARCStrongImprecise(clang::CodeGen::CodeGenFunction &, clang::CodeGen::Address, clang::QualType)
  • public static void destroyARCStrongPrecise(clang::CodeGen::CodeGenFunction &, clang::CodeGen::Address, clang::QualType)
  • public static void destroyARCWeak(clang::CodeGen::CodeGenFunction &, clang::CodeGen::Address, clang::QualType)
  • public static void destroyCXXObject(clang::CodeGen::CodeGenFunction &, clang::CodeGen::Address, clang::QualType)
  • public static void destroyNonTrivialCStruct(clang::CodeGen::CodeGenFunction &, clang::CodeGen::Address, clang::QualType)
  • public void disableDebugInfo()
  • public void emitARCCopyAssignWeak(clang::QualType Ty, clang::CodeGen::Address DstAddr, clang::CodeGen::Address SrcAddr)
  • public static void emitARCIntrinsicUse(clang::CodeGen::CodeGenFunction &, clang::CodeGen::Address, clang::QualType)
  • public void emitARCMoveAssignWeak(clang::QualType Ty, clang::CodeGen::Address DstAddr, clang::CodeGen::Address SrcAddr)
  • public clang::CodeGen::Address emitAddrOfImagComponent(clang::CodeGen::Address complex, clang::QualType complexType)
  • public clang::CodeGen::Address emitAddrOfRealComponent(clang::CodeGen::Address complex, clang::QualType complexType)
  • public void emitAlignmentAssumption(llvm::Value * PtrValue, clang::QualType Ty, clang::SourceLocation Loc, clang::SourceLocation AssumptionLoc, llvm::Value * Alignment, llvm::Value * OffsetValue = nullptr)
  • public void emitAlignmentAssumption(llvm::Value * PtrValue, const clang::Expr * E, clang::SourceLocation AssumptionLoc, llvm::Value * Alignment, llvm::Value * OffsetValue = nullptr)
  • public void emitAlignmentAssumptionCheck(llvm::Value * Ptr, clang::QualType Ty, clang::SourceLocation Loc, clang::SourceLocation AssumptionLoc, llvm::Value * Alignment, llvm::Value * OffsetValue, llvm::Value * TheCheck, llvm::Instruction * Assumption)
  • public void emitArrayDestroy(llvm::Value * begin, llvm::Value * end, clang::QualType elementType, clang::CharUnits elementAlign, clang::CodeGen::CodeGenFunction::Destroyer * destroyer, bool checkZeroLength, bool useEHCleanup)
  • public llvm::Value * emitArrayLength(const clang::ArrayType * arrayType, clang::QualType & baseType, clang::CodeGen::Address & addr)
  • public void emitAutoVarTypeCleanup(const clang::CodeGen::CodeGenFunction::AutoVarEmission & emission, QualType::DestructionKind dtorKind)
  • public clang::CodeGen::Address emitBlockByrefAddress(clang::CodeGen::Address baseAddr, const clang::CodeGen::BlockByrefInfo & info, bool followForward, const llvm::Twine & name)
  • public clang::CodeGen::Address emitBlockByrefAddress(clang::CodeGen::Address baseAddr, const clang::VarDecl * V, bool followForward = true)
  • public llvm::Value * emitBoolVecConversion(llvm::Value * SrcVec, unsigned int NumElementsDst, const llvm::Twine & Name = "")
  • public clang::CodeGen::RValue emitBuiltinOSLogFormat(const clang::CallExpr & E)
  • private llvm::Value * emitBuiltinObjectSize(const clang::Expr * E, unsigned int Type, llvm::IntegerType * ResType, llvm::Value * EmittedE, bool IsDynamic)
  • public void emitByrefStructureInit(const clang::CodeGen::CodeGenFunction::AutoVarEmission & emission)
  • private llvm::Value * emitCondLikelihoodViaExpectIntrinsic(llvm::Value * Cond, Stmt::Likelihood LH)
  • public void emitDestroy(clang::CodeGen::Address addr, clang::QualType type, clang::CodeGen::CodeGenFunction::Destroyer * destroyer, bool useEHCleanupForArray)
  • public void emitImplicitAssignmentOperatorBody(clang::CodeGen::FunctionArgList & Args)
  • public void emitOMPSimpleStore(clang::CodeGen::LValue LVal, clang::CodeGen::RValue RVal, clang::QualType RValTy, clang::SourceLocation Loc)
  • public clang::CodeGen::RValue emitRotate(const clang::CallExpr * E, bool IsRotateRight)
  • public llvm::Value * emitScalarConstant(const clang::CodeGen::CodeGenFunction::ConstantEmission & Constant, clang::Expr * E)
  • private void emitZeroOrPatternForAutoVarInit(clang::QualType type, const clang::VarDecl & D, clang::CodeGen::Address Loc)
  • public void enableDebugInfo()
  • public void enterByrefCleanup(clang::CodeGen::CleanupKind Kind, clang::CodeGen::Address Addr, clang::CodeGen::BlockFieldFlags Flags, bool LoadBlockVarAddr, bool CanThrow)
  • private llvm::Value * evaluateOrEmitBuiltinObjectSize(const clang::Expr * E, unsigned int Type, llvm::IntegerType * ResType, llvm::Value * EmittedE, bool IsDynamic)
  • public llvm::Function * generateBuiltinOSLogHelperFunction(const analyze_os_log::OSLogBufferLayout & Layout, clang::CharUnits BufferAlignment)
  • public llvm::Function * generateDestroyHelper(clang::CodeGen::Address addr, clang::QualType type, clang::CodeGen::CodeGenFunction::Destroyer * destroyer, bool useEHCleanupForArray, const clang::VarDecl * VD)
  • public void generateObjCGetterBody(const clang::ObjCImplementationDecl * classImpl, const clang::ObjCPropertyImplDecl * propImpl, const clang::ObjCMethodDecl * GetterMothodDecl, llvm::Constant * AtomicHelperFn)
  • public void generateObjCSetterBody(const clang::ObjCImplementationDecl * classImpl, const clang::ObjCPropertyImplDecl * propImpl, llvm::Constant * AtomicHelperFn)
  • public void generateThunk(llvm::Function * Fn, const clang::CodeGen::CGFunctionInfo & FnInfo, clang::GlobalDecl GD, const clang::ThunkInfo & Thunk, bool IsUnprototyped)
  • public clang::CodeGen::CleanupKind getARCCleanupKind()
  • public static unsigned int getAccessedFieldNo(unsigned int Idx, const llvm::Constant * Elts)
  • public llvm::Value * getArrayInitIndex()
  • public const clang::CodeGen::BlockByrefInfo & getBlockByrefInfo(const clang::VarDecl * var)
  • public SmallVector<llvm::OperandBundleDef, 1> getBundlesForFunclet(llvm::Value * Callee)
  • public clang::CodeGen::CleanupKind getCleanupKind(QualType::DestructionKind kind)
  • public clang::ASTContext & getContext() const
  • public uint64_t getCurrentProfileCount()
  • public clang::CodeGen::CGDebugInfo * getDebugInfo()
  • public unsigned int getDebugInfoFIndex(const clang::RecordDecl * Rec, unsigned int FieldIndex)
  • public clang::CodeGen::CodeGenFunction::Destroyer * getDestroyer(QualType::DestructionKind destructionKind)
  • public llvm::BasicBlock * getEHDispatchBlock(EHScopeStack::stable_iterator scope)
  • public llvm::BasicBlock * getEHResumeBlock(bool isCleanup)
  • public clang::CodeGen::Address getEHSelectorSlot()
  • public llvm::Type * getEltType(const clang::SVETypeFlags & TypeFlags)
  • public static clang::CodeGen::TypeEvaluationKind getEvaluationKind(clang::QualType T)
  • public llvm::Value * getExceptionFromSlot()
  • public clang::CodeGen::Address getExceptionSlot()
  • public llvm::BasicBlock * getFuncletEHDispatchBlock(EHScopeStack::stable_iterator scope)
  • public llvm::BasicBlock * getInvokeDest()
  • public llvm::BasicBlock * getInvokeDestImpl()
  • public clang::CodeGen::CodeGenFunction::JumpDest getJumpDestForLabel(const clang::LabelDecl * S)
  • public clang::CodeGen::CodeGenFunction::JumpDest getJumpDestInCurrentScope(llvm::BasicBlock * Target)
  • public clang::CodeGen::CodeGenFunction::JumpDest getJumpDestInCurrentScope(llvm::StringRef Name = llvm::StringRef())
  • public llvm::LLVMContext & getLLVMContext()
  • public const clang::LangOptions & getLangOpts() const
  • public static std::string getNonTrivialCopyConstructorStr(clang::QualType QT, clang::CharUnits Alignment, bool IsVolatile, clang::ASTContext & Ctx)
  • public static std::string getNonTrivialDestructorStr(clang::QualType QT, clang::CharUnits Alignment, bool IsVolatile, clang::ASTContext & Ctx)
  • public clang::CodeGen::Address getNormalCleanupDestSlot()
  • public clang::CodeGen::CodeGenFunction::JumpDest getOMPCancelDestination(clang::OpenMPDirectiveKind Kind)
  • public clang::CodeGen::LValue getOrCreateOpaqueLValueMapping(const clang::OpaqueValueExpr * e)
  • public clang::CodeGen::RValue getOrCreateOpaqueRValueMapping(const clang::OpaqueValueExpr * e)
  • public AggValueSlot::Overlap_t getOverlapForBaseInit(const clang::CXXRecordDecl * RD, const clang::CXXRecordDecl * BaseRD, bool IsVirtual)
  • public AggValueSlot::Overlap_t getOverlapForFieldInit(const clang::FieldDecl * FD)
  • public AggValueSlot::Overlap_t getOverlapForReturnValue()
  • public llvm::Instruction * getPostAllocaInsertPoint()
  • public uint64_t getProfileCount(const clang::Stmt * S)
  • private llvm::MDNode * getRangeForLoadFromType(clang::QualType Ty)
  • public SmallVector<llvm::Type *, 2> getSVEOverloadTypes(const clang::SVETypeFlags & TypeFlags, llvm::Type * ReturnType, ArrayRef<llvm::Value *> Ops)
  • public llvm::ScalableVectorType * getSVEPredType(const clang::SVETypeFlags & TypeFlags)
  • public llvm::ScalableVectorType * getSVEType(const clang::SVETypeFlags & TypeFlags)
  • public llvm::Value * getSelectorFromSlot()
  • public const clang::TargetInfo & getTarget() const
  • public const clang::CodeGen::TargetCodeGenInfo & getTargetHooks() const
  • public llvm::BasicBlock * getTerminateFunclet()
  • public llvm::BasicBlock * getTerminateHandler()
  • public llvm::BasicBlock * getTerminateLandingPad()
  • public llvm::Value * getTypeSize(clang::QualType Ty)
  • public clang::CodeGen::CodeGenTypes & getTypes() const
  • public llvm::BasicBlock * getUnreachableBlock()
  • public clang::CodeGen::CodeGenFunction::VlaSizePair getVLAElements1D(const clang::VariableArrayType * vla)
  • public clang::CodeGen::CodeGenFunction::VlaSizePair getVLAElements1D(clang::QualType vla)
  • public clang::CodeGen::CodeGenFunction::VlaSizePair getVLASize(clang::QualType vla)
  • public clang::CodeGen::CodeGenFunction::VlaSizePair getVLASize(const clang::VariableArrayType * vla)
  • public void getVTablePointers(clang::BaseSubobject Base, const clang::CXXRecordDecl * NearestVBase, clang::CharUnits OffsetFromNearestVBase, bool BaseIsNonVirtualPrimaryBase, const clang::CXXRecordDecl * VTableClass, clang::CodeGen::CodeGenFunction::VisitedVirtualBasesSetTy & VBases, clang::CodeGen::CodeGenFunction::VPtrsVector & vptrs)
  • public clang::CodeGen::CodeGenFunction::VPtrsVector getVTablePointers(const clang::CXXRecordDecl * VTableClass)
  • private clang::QualType getVarArgType(const clang::Expr * Arg)
  • public static bool hasAggregateEvaluationKind(clang::QualType T)
  • public bool hasLabelBeenSeenInCurrentScope() const
  • public static bool hasScalarEvaluationKind(clang::QualType T)
  • public bool hasVolatileMember(clang::QualType T)
  • public void incrementProfileCounter(const clang::Stmt * S, llvm::Value * StepV = nullptr)
  • public void initFullExprCleanup()
  • public void initFullExprCleanupWithFlag(clang::CodeGen::Address ActiveFlag)
  • public bool isCleanupPadScope() const
  • public bool isCoroutine() const
  • public bool isInConditionalBranch() const
  • public static bool isInstrumentedCondition(const clang::Expr * C)
  • public static bool isNullPointerAllowed(clang::CodeGen::CodeGenFunction::TypeCheckKind TCK)
  • public bool isObviouslyBranchWithoutCleanups(clang::CodeGen::CodeGenFunction::JumpDest Dest) const
  • public bool isSEHTryScope() const
  • public bool isTrivialInitializer(const clang::Expr * Init)
  • public static bool isVptrCheckRequired(clang::CodeGen::CodeGenFunction::TypeCheckKind TCK, clang::QualType Ty)
  • public void markAsIgnoreThreadCheckingAtRuntime(llvm::Function * Fn)
  • public static bool mightAddDeclToScope(const clang::Stmt * S)
  • public bool needsEHCleanup(QualType::DestructionKind kind)
  • public void popCatchScope()
  • public void processInReduction(const clang::OMPExecutableDirective & S, clang::CodeGen::OMPTaskDataTy & Data, clang::CodeGen::CodeGenFunction & CGF, const clang::CapturedStmt * CS, clang::CodeGen::CodeGenFunction::OMPPrivateScope & Scope)
  • public clang::CodeGen::CodeGenFunction::PeepholeProtection protectFromPeepholes(clang::CodeGen::RValue rvalue)
  • public void pushCallObjectDeleteCleanup(const clang::FunctionDecl * OperatorDelete, llvm::Value * CompletePtr, clang::QualType ElementType)
  • public template <class T, class... As>void pushCleanupAfterFullExpr(clang::CodeGen::CleanupKind Kind, As... A)
  • public template <class T, class... As>void pushCleanupAfterFullExprWithActiveFlag(clang::CodeGen::CleanupKind Kind, clang::CodeGen::Address ActiveFlag, As... A)
  • public void pushDestroy(QualType::DestructionKind dtorKind, clang::CodeGen::Address addr, clang::QualType type)
  • public void pushDestroy(clang::CodeGen::CleanupKind kind, clang::CodeGen::Address addr, clang::QualType type, clang::CodeGen::CodeGenFunction::Destroyer * destroyer, bool useEHCleanupForArray)
  • public void pushEHDestroy(QualType::DestructionKind dtorKind, clang::CodeGen::Address addr, clang::QualType type)
  • public template <class T, class... As>void pushFullExprCleanup(clang::CodeGen::CleanupKind kind, As... A)
  • public void pushIrregularPartialArrayCleanup(llvm::Value * arrayBegin, clang::CodeGen::Address arrayEndPointer, clang::QualType elementType, clang::CharUnits elementAlignment, clang::CodeGen::CodeGenFunction::Destroyer * destroyer)
  • public void pushLifetimeExtendedDestroy(clang::CodeGen::CleanupKind kind, clang::CodeGen::Address addr, clang::QualType type, clang::CodeGen::CodeGenFunction::Destroyer * destroyer, bool useEHCleanupForArray)
  • public void pushRegularPartialArrayCleanup(llvm::Value * arrayBegin, llvm::Value * arrayEnd, clang::QualType elementType, clang::CharUnits elementAlignment, clang::CodeGen::CodeGenFunction::Destroyer * destroyer)
  • public void pushSEHCleanup(clang::CodeGen::CleanupKind kind, llvm::Function * FinallyFunc)
  • public void pushStackRestore(clang::CodeGen::CleanupKind kind, clang::CodeGen::Address SPMem)
  • public clang::CodeGen::Address recoverAddrOfEscapedLocal(clang::CodeGen::CodeGenFunction & ParentCGF, clang::CodeGen::Address ParentVar, llvm::Value * ParentFP)
  • public void registerGlobalDtorWithAtExit(llvm::Constant * dtorStub)
  • public void registerGlobalDtorWithAtExit(const clang::VarDecl & D, llvm::FunctionCallee fn, llvm::Constant * addr)
  • private bool requiresReturnValueCheck() const
  • private bool requiresReturnValueNullabilityCheck() const
  • public bool sanitizePerformTypeCheck() const
  • public template <class T>typename DominatingValue<T>::saved_type saveValueInCond(T value)
  • private void setAddrOfLocalVar(const clang::VarDecl * VD, clang::CodeGen::Address Addr)
  • public void setBeforeOutermostConditional(llvm::Value * value, clang::CodeGen::Address addr)
  • public void setBlockContextParameter(const clang::ImplicitParamDecl * D, unsigned int argNum, llvm::Value * ptr)
  • public void setCurrentProfileCount(uint64_t Count)
  • public bool shouldUseFusedARCCalls()
  • public void startOutlinedSEHHelper(clang::CodeGen::CodeGenFunction & ParentCGF, bool IsFilter, const clang::Stmt * OutlinedStmt)
  • public clang::CodeGen::CodeGenFunction::ConstantEmission tryEmitAsConstant(const clang::MemberExpr * ME)
  • public clang::CodeGen::CodeGenFunction::ConstantEmission tryEmitAsConstant(clang::DeclRefExpr * refExpr)
  • public void unprotectFromPeepholes(clang::CodeGen::CodeGenFunction::PeepholeProtection protection)
  • public llvm::Value * unregisterGlobalDtorWithUnAtExit(llvm::Constant * dtorStub)
  • public llvm::Value * vectorWrapScalar16(llvm::Value * Op)
  • public ~CodeGenFunction()

Inherited from CodeGenTypeCache:

Methods

void ActivateCleanupBlock(
    EHScopeStack::stable_iterator Cleanup,
    llvm::Instruction* DominatingIP)

Description

ActivateCleanupBlock - Activates an initially-inactive cleanup. Cannot be used to resurrect a deactivated cleanup.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:867

Parameters

EHScopeStack::stable_iterator Cleanup
llvm::Instruction* DominatingIP
- An instruction which is known to dominate the current IP (if set) and which lies along all paths of execution between the current IP and the the point at which the cleanup comes into scope.

llvm::GlobalVariable*
AddInitializerToStaticVarDecl(
    const clang::VarDecl& D,
    llvm::GlobalVariable* GV)

Description

AddInitializerToStaticVarDecl - Add the initializer for 'D' to the global variable that has already been created for it. If the initializer has a different type than GV does, this may free GV and return a different one. Otherwise it just returns GV.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4419

Parameters

const clang::VarDecl& D
llvm::GlobalVariable* GV

void AddObjCARCExceptionMetadata(
    llvm::Instruction* Inst)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4806

Parameters

llvm::Instruction* Inst

bool AlwaysEmitXRayCustomEvents() const

Description

AlwaysEmitXRayCustomEvents - Return true if we must unconditionally emit XRay custom event handling calls.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2358

bool AlwaysEmitXRayTypedEvents() const

Description

AlwaysEmitXRayTypedEvents - Return true if clang must unconditionally emit XRay typed event handling calls.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2362

clang::CodeGen::CGCallee
BuildAppleKextVirtualCall(
    const clang::CXXMethodDecl* MD,
    clang::NestedNameSpecifier* Qual,
    llvm::Type* Ty)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4053

Parameters

const clang::CXXMethodDecl* MD
clang::NestedNameSpecifier* Qual
llvm::Type* Ty

clang::CodeGen::CGCallee
BuildAppleKextVirtualDestructorCall(
    const clang::CXXDestructorDecl* DD,
    clang::CXXDtorType Type,
    const clang::CXXRecordDecl* RD)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4057

Parameters

const clang::CXXDestructorDecl* DD
clang::CXXDtorType Type
const clang::CXXRecordDecl* RD

void BuildBlockRelease(
    llvm::Value* DeclPtr,
    clang::CodeGen::BlockFieldFlags flags,
    bool CanThrow)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2149

Parameters

llvm::Value* DeclPtr
clang::CodeGen::BlockFieldFlags flags
bool CanThrow

clang::QualType BuildFunctionArgList(
    clang::GlobalDecl GD,
    clang::CodeGen::FunctionArgList& Args)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2192

Parameters

clang::GlobalDecl GD
clang::CodeGen::FunctionArgList& Args

llvm::Value* BuildVector(
    ArrayRef<llvm::Value*> Ops)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4244

Parameters

ArrayRef<llvm::Value*> Ops

CodeGenFunction(
    const clang::CodeGen::CodeGenFunction&)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:232

Parameters

const clang::CodeGen::CodeGenFunction&

CodeGenFunction(
    clang::CodeGen::CodeGenModule& cgm,
    bool suppressNewContext = false)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1979

Parameters

clang::CodeGen::CodeGenModule& cgm
bool suppressNewContext = false

bool ConstantFoldsToSimpleInteger(
    const clang::Expr* Cond,
    bool& Result,
    bool AllowLabels = false)

Description

ConstantFoldsToSimpleInteger - If the specified expression does not fold to a constant, or if it does but contains a label, return false. If it constant folds return true and set the boolean result in Result.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4532

Parameters

const clang::Expr* Cond
bool& Result
bool AllowLabels = false

bool ConstantFoldsToSimpleInteger(
    const clang::Expr* Cond,
    llvm::APSInt& Result,
    bool AllowLabels = false)

Description

ConstantFoldsToSimpleInteger - If the specified expression does not fold to a constant, or if it does but contains a label, return false. If it constant folds return true and set the folded value.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4538

Parameters

const clang::Expr* Cond
llvm::APSInt& Result
bool AllowLabels = false

static bool ContainsLabel(
    const clang::Stmt* S,
    bool IgnoreCaseStmts = false)

Description

ContainsLabel - Return true if the statement contains a label in it. If this statement is not executed normally, it not containing a label means that we can just remove the code.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4518

Parameters

const clang::Stmt* S
bool IgnoreCaseStmts = false

llvm::Type* ConvertType(clang::QualType T)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2403

Parameters

clang::QualType T

llvm::Type* ConvertType(const clang::TypeDecl* T)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2404

Parameters

const clang::TypeDecl* T

llvm::Type* ConvertTypeForMem(clang::QualType T)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2402

Parameters

clang::QualType T

clang::CodeGen::AggValueSlot CreateAggTemp(
    clang::QualType T,
    const llvm::Twine& Name = "tmp",
    clang::CodeGen::Address* Alloca = nullptr)

Description

CreateAggTemp - Create a temporary memory object for the given aggregate type.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2612

Parameters

clang::QualType T
const llvm::Twine& Name = "tmp"
clang::CodeGen::Address* Alloca = nullptr

clang::CodeGen::Address
CreateDefaultAlignTempAlloca(
    llvm::Type* Ty,
    const llvm::Twine& Name = "tmp")

Description

CreateDefaultAlignedTempAlloca - This creates an alloca with the default ABI alignment of the given LLVM type. IMPORTANT NOTE: This is *not* generally the right alignment for any given AST type that happens to have been lowered to the given IR type. This should only ever be used for function-local, IR-driven manipulations like saving and restoring a value. Do not hand this address off to arbitrary IRGen routines, and especially do not pass it as an argument to a function that might expect a properly ABI-aligned value.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2583

Parameters

llvm::Type* Ty
const llvm::Twine& Name = "tmp"

clang::CodeGen::Address CreateIRTemp(
    clang::QualType T,
    const llvm::Twine& Name = "tmp")

Description

CreateIRTemp - Create a temporary IR object of the given type, with appropriate alignment. This routine should only be used when an temporary value needs to be stored into an alloca (for example, to avoid explicit PHI construction), but the type is the IR type, not the type appropriate for storing in memory. That is, this is exactly equivalent to CreateMemTemp, but calling ConvertType instead of ConvertTypeForMem.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2594

Parameters

clang::QualType T
const llvm::Twine& Name = "tmp"

clang::CodeGen::Address CreateMemTemp(
    clang::QualType T,
    clang::CharUnits Align,
    const llvm::Twine& Name = "tmp",
    clang::CodeGen::Address* Alloca = nullptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2601

Parameters

clang::QualType T
clang::CharUnits Align
const llvm::Twine& Name = "tmp"
clang::CodeGen::Address* Alloca = nullptr

clang::CodeGen::Address CreateMemTemp(
    clang::QualType T,
    const llvm::Twine& Name = "tmp",
    clang::CodeGen::Address* Alloca = nullptr)

Description

CreateMemTemp - Create a temporary memory object of the given type, with appropriate alignmen and cast it to the default address space. Returns the original alloca instruction by \p Alloca if it is not nullptr.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2599

Parameters

clang::QualType T
const llvm::Twine& Name = "tmp"
clang::CodeGen::Address* Alloca = nullptr

clang::CodeGen::Address CreateMemTempWithoutCast(
    clang::QualType T,
    clang::CharUnits Align,
    const llvm::Twine& Name = "tmp")

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2607

Parameters

clang::QualType T
clang::CharUnits Align
const llvm::Twine& Name = "tmp"

clang::CodeGen::Address CreateMemTempWithoutCast(
    clang::QualType T,
    const llvm::Twine& Name = "tmp")

Description

CreateMemTemp - Create a temporary memory object of the given type, with appropriate alignmen without casting it to the default address space.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2606

Parameters

clang::QualType T
const llvm::Twine& Name = "tmp"

clang::CodeGen::Address CreateTempAlloca(
    llvm::Type* Ty,
    clang::CharUnits align,
    const llvm::Twine& Name = "tmp",
    llvm::Value* ArraySize = nullptr,
    clang::CodeGen::Address* Alloca = nullptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2565

Parameters

llvm::Type* Ty
clang::CharUnits align
const llvm::Twine& Name = "tmp"
llvm::Value* ArraySize = nullptr
clang::CodeGen::Address* Alloca = nullptr

llvm::AllocaInst* CreateTempAlloca(
    llvm::Type* Ty,
    const llvm::Twine& Name = "tmp",
    llvm::Value* ArraySize = nullptr)

Description

CreateTempAlloca - This creates an alloca and inserts it into the entry block if \p ArraySize is nullptr, otherwise inserts it at the current insertion point of the builder. The caller is responsible for setting an appropriate alignment on the alloca. \p ArraySize is the number of array elements to be allocated if it is not nullptr. LangAS::Default is the address space of pointers to local variables and temporaries, as exposed in the source language. In certain configurations, this is not the same as the alloca address space, and a cast is needed to lift the pointer from the alloca AS into LangAS::Default. This can happen when the target uses a restricted address space for the stack but the source language requires LangAS::Default to be a generic address space. The latter condition is common for most programming languages; OpenCL is an exception in that LangAS::Default is the private address space, which naturally maps to the stack. Because the address of a temporary is often exposed to the program in various ways, this function will perform the cast. The original alloca instruction is returned through \p Alloca if it is not nullptr. The cast is not performaed in CreateTempAllocaWithoutCast. This is more efficient if the caller knows that the address will not be exposed.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2563

Parameters

llvm::Type* Ty
const llvm::Twine& Name = "tmp"
llvm::Value* ArraySize = nullptr

clang::CodeGen::Address
CreateTempAllocaWithoutCast(
    llvm::Type* Ty,
    clang::CharUnits align,
    const llvm::Twine& Name = "tmp",
    llvm::Value* ArraySize = nullptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2569

Parameters

llvm::Type* Ty
clang::CharUnits align
const llvm::Twine& Name = "tmp"
llvm::Value* ArraySize = nullptr

void DeactivateCleanupBlock(
    EHScopeStack::stable_iterator Cleanup,
    llvm::Instruction* DominatingIP)

Description

DeactivateCleanupBlock - Deactivates the given cleanup block. The block cannot be reactivated. Pops it if it's the top of the stack.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:857

Parameters

EHScopeStack::stable_iterator Cleanup
llvm::Instruction* DominatingIP
- An instruction which is known to dominate the current IP (if set) and which lies along all paths of execution between the current IP and the the point at which the cleanup comes into scope.

llvm::Value* DecodeAddrUsedInPrologue(
    llvm::Value* F,
    llvm::Value* EncodedAddr)

Description

Decode an address used in a function prologue, encoded by \c EncodeAddrForUseInPrologue.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2366

Parameters

llvm::Value* F
llvm::Value* EncodedAddr

llvm::Value* EmitAArch64BuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E,
    llvm::Triple::ArchType Arch)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4240

Parameters

unsigned int BuiltinID
const clang::CallExpr* E
llvm::Triple::ArchType Arch

llvm::Value* EmitAArch64CompareBuiltinExpr(
    llvm::Value* Op,
    llvm::Type* Ty,
    const llvm::CmpInst::Predicate Fp,
    const llvm::CmpInst::Predicate Ip,
    const llvm::Twine& Name = "")

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4148

Parameters

llvm::Value* Op
llvm::Type* Ty
const llvm::CmpInst::Predicate Fp
const llvm::CmpInst::Predicate Ip
const llvm::Twine& Name = ""

llvm::Value* EmitAArch64SVEBuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4238

Parameters

unsigned int BuiltinID
const clang::CallExpr* E

llvm::Value* EmitAMDGPUBuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4247

Parameters

unsigned int BuiltinID
const clang::CallExpr* E

clang::CodeGen::RValue
EmitAMDGPUDevicePrintfCallExpr(
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4121

Parameters

const clang::CallExpr* E

llvm::Value* EmitARCAutorelease(
    llvm::Value* value)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4303

Parameters

llvm::Value* value

llvm::Value* EmitARCAutoreleaseReturnValue(
    llvm::Value* value)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4304

Parameters

llvm::Value* value

void EmitARCCopyWeak(clang::CodeGen::Address dst,
                     clang::CodeGen::Address src)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4290

Parameters

clang::CodeGen::Address dst
clang::CodeGen::Address src

void EmitARCDestroyStrong(
    clang::CodeGen::Address addr,
    clang::CodeGen::ARCPreciseLifetime_t precise)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4301

Parameters

clang::CodeGen::Address addr
clang::CodeGen::ARCPreciseLifetime_t precise

void EmitARCDestroyWeak(
    clang::CodeGen::Address addr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4284

Parameters

clang::CodeGen::Address addr

llvm::Value* EmitARCExtendBlockObject(
    const clang::Expr* expr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4331

Parameters

const clang::Expr* expr

void EmitARCInitWeak(clang::CodeGen::Address addr,
                     llvm::Value* value)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4283

Parameters

clang::CodeGen::Address addr
llvm::Value* value

void EmitARCIntrinsicUse(
    ArrayRef<llvm::Value*> values)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4338

Parameters

ArrayRef<llvm::Value*> values

llvm::Value* EmitARCLoadWeak(
    clang::CodeGen::Address addr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4285

Parameters

clang::CodeGen::Address addr

llvm::Value* EmitARCLoadWeakRetained(
    clang::CodeGen::Address addr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4286

Parameters

clang::CodeGen::Address addr

void EmitARCMoveWeak(clang::CodeGen::Address dst,
                     clang::CodeGen::Address src)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4291

Parameters

clang::CodeGen::Address dst
clang::CodeGen::Address src

void EmitARCNoopIntrinsicUse(
    ArrayRef<llvm::Value*> values)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4340

Parameters

ArrayRef<llvm::Value*> values

llvm::Value* EmitARCReclaimReturnedObject(
    const clang::Expr* e,
    bool allowUnsafeClaim)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4332

Parameters

const clang::Expr* e
bool allowUnsafeClaim

void EmitARCRelease(
    llvm::Value* value,
    clang::CodeGen::ARCPreciseLifetime_t precise)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4302

Parameters

llvm::Value* value
clang::CodeGen::ARCPreciseLifetime_t precise

llvm::Value* EmitARCRetain(clang::QualType type,
                           llvm::Value* value)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4298

Parameters

clang::QualType type
llvm::Value* value

llvm::Value* EmitARCRetainAutorelease(
    clang::QualType type,
    llvm::Value* value)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4292

Parameters

clang::QualType type
llvm::Value* value

llvm::Value* EmitARCRetainAutoreleaseNonBlock(
    llvm::Value* value)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4293

Parameters

llvm::Value* value

llvm::Value* EmitARCRetainAutoreleaseReturnValue(
    llvm::Value* value)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4305

Parameters

llvm::Value* value

llvm::Value* EmitARCRetainAutoreleaseScalarExpr(
    const clang::Expr* expr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4335

Parameters

const clang::Expr* expr

llvm::Value* EmitARCRetainAutoreleasedReturnValue(
    llvm::Value* value)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4306

Parameters

llvm::Value* value

llvm::Value* EmitARCRetainBlock(
    llvm::Value* value,
    bool mandatory)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4300

Parameters

llvm::Value* value
bool mandatory

llvm::Value* EmitARCRetainNonBlock(
    llvm::Value* value)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4299

Parameters

llvm::Value* value

llvm::Value* EmitARCRetainScalarExpr(
    const clang::Expr* expr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4334

Parameters

const clang::Expr* expr

std::pair<LValue, llvm::Value*>
EmitARCStoreAutoreleasing(
    const clang::BinaryOperator* e)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4315

Parameters

const clang::BinaryOperator* e

std::pair<LValue, llvm::Value*>
EmitARCStoreStrong(const clang::BinaryOperator* e,
                   bool ignored)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4317

Parameters

const clang::BinaryOperator* e
bool ignored

llvm::Value* EmitARCStoreStrong(
    clang::CodeGen::LValue lvalue,
    llvm::Value* value,
    bool resultIgnored)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4294

Parameters

clang::CodeGen::LValue lvalue
llvm::Value* value
bool resultIgnored

llvm::Value* EmitARCStoreStrongCall(
    clang::CodeGen::Address addr,
    llvm::Value* value,
    bool resultIgnored)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4296

Parameters

clang::CodeGen::Address addr
llvm::Value* value
bool resultIgnored

std::pair<LValue, llvm::Value*>
EmitARCStoreUnsafeUnretained(
    const clang::BinaryOperator* e,
    bool ignored)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4319

Parameters

const clang::BinaryOperator* e
bool ignored

llvm::Value* EmitARCStoreWeak(
    clang::CodeGen::Address addr,
    llvm::Value* value,
    bool ignored)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4287

Parameters

clang::CodeGen::Address addr
llvm::Value* value
bool ignored

llvm::Value*
EmitARCUnsafeClaimAutoreleasedReturnValue(
    llvm::Value* value)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4307

Parameters

llvm::Value* value

llvm::Value* EmitARCUnsafeUnretainedScalarExpr(
    const clang::Expr* expr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4336

Parameters

const clang::Expr* expr

llvm::Value* EmitARMBuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E,
    clang::CodeGen::ReturnValueSlot ReturnValue,
    llvm::Triple::ArchType Arch)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4152

Parameters

unsigned int BuiltinID
const clang::CallExpr* E
clang::CodeGen::ReturnValueSlot ReturnValue
llvm::Triple::ArchType Arch

llvm::Value* EmitARMCDEBuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E,
    clang::CodeGen::ReturnValueSlot ReturnValue,
    llvm::Triple::ArchType Arch)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4158

Parameters

unsigned int BuiltinID
const clang::CallExpr* E
clang::CodeGen::ReturnValueSlot ReturnValue
llvm::Triple::ArchType Arch

llvm::Value* EmitARMMVEBuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E,
    clang::CodeGen::ReturnValueSlot ReturnValue,
    llvm::Triple::ArchType Arch)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4155

Parameters

unsigned int BuiltinID
const clang::CallExpr* E
clang::CodeGen::ReturnValueSlot ReturnValue
llvm::Triple::ArchType Arch

void EmitAggExpr(const clang::Expr* E,
                 clang::CodeGen::AggValueSlot AS)

Description

EmitAggExpr - Emit the computation of the specified expression of aggregate type. The result is computed into the given slot, which may be null to indicate that the value is not needed.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4381

Parameters

const clang::Expr* E
clang::CodeGen::AggValueSlot AS

clang::CodeGen::LValue EmitAggExprToLValue(
    const clang::Expr* E)

Description

EmitAggExprToLValue - Emit the computation of the specified expression of aggregate type into a temporary LValue.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4385

Parameters

const clang::Expr* E

void EmitAggregateAssign(
    clang::CodeGen::LValue Dest,
    clang::CodeGen::LValue Src,
    clang::QualType EltTy)

Description

Emit an aggregate assignment.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2695

Parameters

clang::CodeGen::LValue Dest
clang::CodeGen::LValue Src
clang::QualType EltTy

void EmitAggregateCopy(
    clang::CodeGen::LValue Dest,
    clang::CodeGen::LValue Src,
    clang::QualType EltTy,
    AggValueSlot::Overlap_t MayOverlap,
    bool isVolatile = false)

Description

EmitAggregateCopy - Emit an aggregate copy.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2712

Parameters

clang::CodeGen::LValue Dest
clang::CodeGen::LValue Src
clang::QualType EltTy
AggValueSlot::Overlap_t MayOverlap
Whether the tail padding of the destination might be occupied by some other object. More efficient code can often be generated if not.
bool isVolatile = false
\c true iff either the source or the destination is volatile.

void EmitAggregateCopyCtor(
    clang::CodeGen::LValue Dest,
    clang::CodeGen::LValue Src,
    AggValueSlot::Overlap_t MayOverlap)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2700

Parameters

clang::CodeGen::LValue Dest
clang::CodeGen::LValue Src
AggValueSlot::Overlap_t MayOverlap

void EmitAggregateStore(
    llvm::Value* Val,
    clang::CodeGen::Address Dest,
    bool DestIsVolatile)

Description

Build all the stores needed to initialize an aggregate at Dest with the value Val.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4389

Parameters

llvm::Value* Val
clang::CodeGen::Address Dest
bool DestIsVolatile

void EmitAndRegisterVariableArrayDimensions(
    clang::CodeGen::CGDebugInfo* DI,
    const clang::VarDecl& D,
    bool EmitDebugInfo)

Description

Emits the alloca and debug information for the size expressions for each dimension of an array. It registers the association of its (1-dimensional) QualTypes and size expression's debug node, so that CGDebugInfo can reference this node when creating the DISubrange object to describe the array types.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3132

Parameters

clang::CodeGen::CGDebugInfo* DI
const clang::VarDecl& D
bool EmitDebugInfo

llvm::Value* EmitAnnotationCall(
    llvm::Function* AnnotationFn,
    llvm::Value* AnnotatedVal,
    llvm::StringRef AnnotationStr,
    clang::SourceLocation Location,
    const clang::AnnotateAttr* Attr)

Description

Emit an annotation call (intrinsic).

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4498

Parameters

llvm::Function* AnnotationFn
llvm::Value* AnnotatedVal
llvm::StringRef AnnotationStr
clang::SourceLocation Location
const clang::AnnotateAttr* Attr

clang::CodeGen::RValue EmitAnyExpr(
    const clang::Expr* E,
    clang::CodeGen::AggValueSlot aggSlot =
        AggValueSlot::ignored(),
    bool ignoreResult = false)

Description

EmitAnyExpr - Emit code to compute the specified expression which can have any type. The result is returned as an RValue struct. If this is an aggregate expression, the aggloc/agglocvolatile arguments indicate where the result should be returned.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2638

Parameters

const clang::Expr* E
clang::CodeGen::AggValueSlot aggSlot = AggValueSlot::ignored()
bool ignoreResult = false
True if the resulting value isn't used.

void EmitAnyExprToExn(
    const clang::Expr* E,
    clang::CodeGen::Address Addr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2660

Parameters

const clang::Expr* E
clang::CodeGen::Address Addr

void EmitAnyExprToMem(
    const clang::Expr* E,
    clang::CodeGen::Address Location,
    clang::Qualifiers Quals,
    bool IsInitializer)

Description

EmitAnyExprToMem - Emits the code necessary to evaluate an arbitrary expression into the given memory location.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2657

Parameters

const clang::Expr* E
clang::CodeGen::Address Location
clang::Qualifiers Quals
bool IsInitializer

clang::CodeGen::RValue EmitAnyExprToTemp(
    const clang::Expr* E)

Description

EmitAnyExprToTemp - Similarly to EmitAnyExpr(), however, the result will always be accessible even if no aggregate location is provided.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2653

Parameters

const clang::Expr* E

clang::CodeGen::LValue EmitArraySubscriptExpr(
    const clang::ArraySubscriptExpr* E,
    bool Accessed = false)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3911

Parameters

const clang::ArraySubscriptExpr* E
bool Accessed = false

clang::CodeGen::Address EmitArrayToPointerDecay(
    const clang::Expr* Array,
    clang::CodeGen::LValueBaseInfo* BaseInfo =
        nullptr,
    clang::CodeGen::TBAAAccessInfo* TBAAInfo =
        nullptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3931

Parameters

const clang::Expr* Array
clang::CodeGen::LValueBaseInfo* BaseInfo = nullptr
clang::CodeGen::TBAAAccessInfo* TBAAInfo = nullptr

void EmitAsanPrologueOrEpilogue(bool Prologue)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2228

Parameters

bool Prologue

std::pair<llvm::Value*, llvm::Type*> EmitAsmInput(
    const TargetInfo::ConstraintInfo& Info,
    const clang::Expr* InputExpr,
    std::string& ConstraintStr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4695

Parameters

const TargetInfo::ConstraintInfo& Info
const clang::Expr* InputExpr
std::string& ConstraintStr

std::pair<llvm::Value*, llvm::Type*>
EmitAsmInputLValue(
    const TargetInfo::ConstraintInfo& Info,
    clang::CodeGen::LValue InputValue,
    clang::QualType InputType,
    std::string& ConstraintStr,
    clang::SourceLocation Loc)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4699

Parameters

const TargetInfo::ConstraintInfo& Info
clang::CodeGen::LValue InputValue
clang::QualType InputType
std::string& ConstraintStr
clang::SourceLocation Loc

void EmitAsmStmt(const clang::AsmStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3255

Parameters

const clang::AsmStmt& S

std::pair<RValue, llvm::Value*>
EmitAtomicCompareExchange(
    clang::CodeGen::LValue Obj,
    clang::CodeGen::RValue Expected,
    clang::CodeGen::RValue Desired,
    clang::SourceLocation Loc,
    llvm::AtomicOrdering Success = llvm::
        AtomicOrdering::SequentiallyConsistent,
    llvm::AtomicOrdering Failure = llvm::
        AtomicOrdering::SequentiallyConsistent,
    bool IsWeak = false,
    clang::CodeGen::AggValueSlot Slot =
        AggValueSlot::ignored())

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3797

Parameters

clang::CodeGen::LValue Obj
clang::CodeGen::RValue Expected
clang::CodeGen::RValue Desired
clang::SourceLocation Loc
llvm::AtomicOrdering Success = llvm::AtomicOrdering::SequentiallyConsistent
llvm::AtomicOrdering Failure = llvm::AtomicOrdering::SequentiallyConsistent
bool IsWeak = false
clang::CodeGen::AggValueSlot Slot = AggValueSlot::ignored()

clang::CodeGen::RValue EmitAtomicExpr(
    clang::AtomicExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4491

Parameters

clang::AtomicExpr* E

void EmitAtomicInit(clang::Expr* E,
                    clang::CodeGen::LValue lvalue)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3781

Parameters

clang::Expr* E
clang::CodeGen::LValue lvalue

clang::CodeGen::RValue EmitAtomicLoad(
    clang::CodeGen::LValue lvalue,
    clang::SourceLocation loc,
    llvm::AtomicOrdering AO,
    bool IsVolatile = false,
    clang::CodeGen::AggValueSlot slot =
        AggValueSlot::ignored())

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3788

Parameters

clang::CodeGen::LValue lvalue
clang::SourceLocation loc
llvm::AtomicOrdering AO
bool IsVolatile = false
clang::CodeGen::AggValueSlot slot = AggValueSlot::ignored()

clang::CodeGen::RValue EmitAtomicLoad(
    clang::CodeGen::LValue LV,
    clang::SourceLocation SL,
    clang::CodeGen::AggValueSlot Slot =
        AggValueSlot::ignored())

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3785

Parameters

clang::CodeGen::LValue LV
clang::SourceLocation SL
clang::CodeGen::AggValueSlot Slot = AggValueSlot::ignored()

void EmitAtomicStore(
    clang::CodeGen::RValue rvalue,
    clang::CodeGen::LValue lvalue,
    llvm::AtomicOrdering AO,
    bool IsVolatile,
    bool isInit)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3794

Parameters

clang::CodeGen::RValue rvalue
clang::CodeGen::LValue lvalue
llvm::AtomicOrdering AO
bool IsVolatile
bool isInit

void EmitAtomicStore(
    clang::CodeGen::RValue rvalue,
    clang::CodeGen::LValue lvalue,
    bool isInit)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3792

Parameters

clang::CodeGen::RValue rvalue
clang::CodeGen::LValue lvalue
bool isInit

void EmitAtomicUpdate(
    clang::CodeGen::LValue LVal,
    llvm::AtomicOrdering AO,
    const llvm::function_ref<RValue(RValue)>&
        UpdateOp,
    bool IsVolatile)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3805

Parameters

clang::CodeGen::LValue LVal
llvm::AtomicOrdering AO
const llvm::function_ref<RValue(RValue)>& UpdateOp
bool IsVolatile

void EmitAttributedStmt(
    const clang::AttributedStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3237

Parameters

const clang::AttributedStmt& S

clang::CodeGen::CodeGenFunction::AutoVarEmission
EmitAutoVarAlloca(const clang::VarDecl& var)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3121

Parameters

const clang::VarDecl& var

void EmitAutoVarCleanups(
    const clang::CodeGen::CodeGenFunction::
        AutoVarEmission& emission)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3123

Parameters

const clang::CodeGen::CodeGenFunction:: AutoVarEmission& emission

void EmitAutoVarDecl(const clang::VarDecl& D)

Description

EmitAutoVarDecl - Emit an auto variable declaration. This function can be called with a null (unreachable) insert point.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3049

Parameters

const clang::VarDecl& D

void EmitAutoVarInit(
    const clang::CodeGen::CodeGenFunction::
        AutoVarEmission& emission)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3122

Parameters

const clang::CodeGen::CodeGenFunction:: AutoVarEmission& emission

llvm::Value* EmitBPFBuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4242

Parameters

unsigned int BuiltinID
const clang::CallExpr* E

clang::CodeGen::LValue EmitBinaryOperatorLValue(
    const clang::BinaryOperator* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3900

Parameters

const clang::BinaryOperator* E

void EmitBlock(llvm::BasicBlock* BB,
               bool IsFinished = false)

Description

EmitBlock - Emit the given block IsFinished - If true, indicates that the caller has finished emitting branches to the given block and does not expect to emit code into it. This means the block can be ignored if it is unreachable.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2450

Parameters

llvm::BasicBlock* BB
bool IsFinished = false

void EmitBlockAfterUses(llvm::BasicBlock* BB)

Description

EmitBlockAfterUses - Emit the given block somewhere hopefully near its uses, and leave the insertion point in it.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2454

Parameters

llvm::BasicBlock* BB

clang::CodeGen::RValue EmitBlockCallExpr(
    const clang::CallExpr* E,
    clang::CodeGen::ReturnValueSlot ReturnValue)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4141

Parameters

const clang::CallExpr* E
clang::CodeGen::ReturnValueSlot ReturnValue

llvm::Value* EmitBlockCopyAndAutorelease(
    llvm::Value* Block,
    clang::QualType Ty)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2147

Parameters

llvm::Value* Block
clang::QualType Ty

llvm::Value* EmitBlockLiteral(
    const clang::BlockExpr*)

Description

Emit block literal.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2130

Parameters

const clang::BlockExpr*

Returns

an LLVM value which is a pointer to a struct which contains information about the block, including the block invoke function, the captured variables, etc.

llvm::Value* EmitBlockLiteral(
    const clang::CodeGen::CGBlockInfo& Info)

Description

Helpers for blocks.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3678

Parameters

const clang::CodeGen::CGBlockInfo& Info

void EmitBlockWithFallThrough(
    llvm::BasicBlock* BB,
    const clang::Stmt* S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2218

Parameters

llvm::BasicBlock* BB
const clang::Stmt* S

void EmitBoundsCheck(const clang::Expr* E,
                     const clang::Expr* Base,
                     llvm::Value* Index,
                     clang::QualType IndexType,
                     bool Accessed)

Description

Emit a check that \p Base points into an array object, which we can access at index \p Index. \p Accessed should be \c false if we this expression is used as an lvalue, for instance in "&Arr[Idx]".

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3007

Parameters

const clang::Expr* E
const clang::Expr* Base
llvm::Value* Index
clang::QualType IndexType
bool Accessed

void EmitBranch(llvm::BasicBlock* Block)

Description

EmitBranch - Emit a branch to the specified basic block from the current insert block, taking care to avoid creation of branches from dummy blocks. It is legal to call this function even if there is no current insertion point. This function clears the current insertion point. The caller should follow calls to this function with calls to Emit*Block prior to generation new code.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2464

Parameters

llvm::BasicBlock* Block

void EmitBranchOnBoolExpr(
    const clang::Expr* Cond,
    llvm::BasicBlock* TrueBlock,
    llvm::BasicBlock* FalseBlock,
    uint64_t TrueCount,
    Stmt::Likelihood LH = Stmt::LH_None)

Description

EmitBranchOnBoolExpr - Emit a branch on a boolean condition (e.g. for an if statement) to the specified blocks. Based on the condition, this might try to simplify the codegen of the conditional based on the branch. TrueCount should be the number of times we expect the condition to evaluate to true based on PGO data.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4561

Parameters

const clang::Expr* Cond
llvm::BasicBlock* TrueBlock
llvm::BasicBlock* FalseBlock
uint64_t TrueCount
Stmt::Likelihood LH = Stmt::LH_None

void EmitBranchThroughCleanup(
    clang::CodeGen::CodeGenFunction::JumpDest
        Dest)

Description

EmitBranchThroughCleanup - Emit a branch from the current insert block through the normal cleanup handling code (if any) and then on to

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1166

Parameters

clang::CodeGen::CodeGenFunction::JumpDest Dest

void EmitBranchToCounterBlock(
    const clang::Expr* Cond,
    BinaryOperator::Opcode LOp,
    llvm::BasicBlock* TrueBlock,
    llvm::BasicBlock* FalseBlock,
    uint64_t TrueCount = 0,
    Stmt::Likelihood LH = Stmt::LH_None,
    const clang::Expr* CntrIdx = nullptr)

Description

EmitBranchToCounterBlock - Emit a conditional branch to a new block that increments a profile counter based on the semantics of the given logical operator opcode. This is used to instrument branch condition coverage for logical operators.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4549

Parameters

const clang::Expr* Cond
BinaryOperator::Opcode LOp
llvm::BasicBlock* TrueBlock
llvm::BasicBlock* FalseBlock
uint64_t TrueCount = 0
Stmt::Likelihood LH = Stmt::LH_None
const clang::Expr* CntrIdx = nullptr

void EmitBreakStmt(const clang::BreakStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3249

Parameters

const clang::BreakStmt& S

clang::CodeGen::RValue EmitBuiltinAlignTo(
    const clang::CallExpr* E,
    bool AlignUp)

Description

Emit IR for __builtin_align_up/__builtin_align_down.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4135

Parameters

const clang::CallExpr* E
bool AlignUp

llvm::Value* EmitBuiltinAvailable(
    const llvm::VersionTuple& Version)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4262

Parameters

const llvm::VersionTuple& Version

clang::CodeGen::RValue EmitBuiltinExpr(
    const clang::GlobalDecl GD,
    unsigned int BuiltinID,
    const clang::CallExpr* E,
    clang::CodeGen::ReturnValueSlot ReturnValue)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4124

Parameters

const clang::GlobalDecl GD
unsigned int BuiltinID
const clang::CallExpr* E
clang::CodeGen::ReturnValueSlot ReturnValue

clang::CodeGen::RValue EmitBuiltinIsAligned(
    const clang::CallExpr* E)

Description

Emit IR for __builtin_is_aligned.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4133

Parameters

const clang::CallExpr* E

clang::CodeGen::RValue EmitBuiltinNewDeleteCall(
    const clang::FunctionProtoType* Type,
    const clang::CallExpr* TheCallExpr,
    bool IsDelete)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2940

Parameters

const clang::FunctionProtoType* Type
const clang::CallExpr* TheCallExpr
bool IsDelete

llvm::Value* EmitCMSEClearRecord(
    llvm::Value* V,
    llvm::IntegerType* ITy,
    clang::QualType RTy)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4161

Parameters

llvm::Value* V
llvm::IntegerType* ITy
clang::QualType RTy

llvm::Value* EmitCMSEClearRecord(
    llvm::Value* V,
    llvm::ArrayType* ATy,
    clang::QualType RTy)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4163

Parameters

llvm::Value* V
llvm::ArrayType* ATy
clang::QualType RTy

clang::CodeGen::RValue EmitCUDAKernelCallExpr(
    const clang::CUDAKernelCallExpr* E,
    clang::CodeGen::ReturnValueSlot ReturnValue)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4117

Parameters

const clang::CUDAKernelCallExpr* E
clang::CodeGen::ReturnValueSlot ReturnValue

void EmitCXXAggrConstructorCall(
    const clang::CXXConstructorDecl* D,
    const clang::ArrayType* ArrayTy,
    clang::CodeGen::Address ArrayPtr,
    const clang::CXXConstructExpr* E,
    bool NewPointerIsChecked,
    bool ZeroInitialization = false)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2897

Parameters

const clang::CXXConstructorDecl* D
const clang::ArrayType* ArrayTy
clang::CodeGen::Address ArrayPtr
const clang::CXXConstructExpr* E
bool NewPointerIsChecked
bool ZeroInitialization = false

void EmitCXXAggrConstructorCall(
    const clang::CXXConstructorDecl* D,
    llvm::Value* NumElements,
    clang::CodeGen::Address ArrayPtr,
    const clang::CXXConstructExpr* E,
    bool NewPointerIsChecked,
    bool ZeroInitialization = false)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2904

Parameters

const clang::CXXConstructorDecl* D
llvm::Value* NumElements
clang::CodeGen::Address ArrayPtr
const clang::CXXConstructExpr* E
bool NewPointerIsChecked
bool ZeroInitialization = false

clang::CodeGen::LValue EmitCXXBindTemporaryLValue(
    const clang::CXXBindTemporaryExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3989

Parameters

const clang::CXXBindTemporaryExpr* E

void EmitCXXConstructExpr(
    const clang::CXXConstructExpr* E,
    clang::CodeGen::AggValueSlot Dest)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4485

Parameters

const clang::CXXConstructExpr* E
clang::CodeGen::AggValueSlot Dest

clang::CodeGen::LValue EmitCXXConstructLValue(
    const clang::CXXConstructExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3988

Parameters

const clang::CXXConstructExpr* E

void EmitCXXConstructorCall(
    const clang::CXXConstructorDecl* D,
    clang::CXXCtorType Type,
    bool ForVirtualBase,
    bool Delegating,
    clang::CodeGen::AggValueSlot ThisAVS,
    const clang::CXXConstructExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2876

Parameters

const clang::CXXConstructorDecl* D
clang::CXXCtorType Type
bool ForVirtualBase
bool Delegating
clang::CodeGen::AggValueSlot ThisAVS
const clang::CXXConstructExpr* E

void EmitCXXConstructorCall(
    const clang::CXXConstructorDecl* D,
    clang::CXXCtorType Type,
    bool ForVirtualBase,
    bool Delegating,
    clang::CodeGen::Address This,
    clang::CodeGen::CallArgList& Args,
    AggValueSlot::Overlap_t Overlap,
    clang::SourceLocation Loc,
    bool NewPointerIsChecked)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2880

Parameters

const clang::CXXConstructorDecl* D
clang::CXXCtorType Type
bool ForVirtualBase
bool Delegating
clang::CodeGen::Address This
clang::CodeGen::CallArgList& Args
AggValueSlot::Overlap_t Overlap
clang::SourceLocation Loc
bool NewPointerIsChecked

void EmitCXXDeleteExpr(
    const clang::CXXDeleteExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2934

Parameters

const clang::CXXDeleteExpr* E

void EmitCXXDestructorCall(
    const clang::CXXDestructorDecl* D,
    clang::CXXDtorType Type,
    bool ForVirtualBase,
    bool Delegating,
    clang::CodeGen::Address This,
    clang::QualType ThisTy)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2913

Parameters

const clang::CXXDestructorDecl* D
clang::CXXDtorType Type
bool ForVirtualBase
bool Delegating
clang::CodeGen::Address This
clang::QualType ThisTy

clang::CodeGen::RValue EmitCXXDestructorCall(
    clang::GlobalDecl Dtor,
    const clang::CodeGen::CGCallee& Callee,
    llvm::Value* This,
    clang::QualType ThisTy,
    llvm::Value* ImplicitParam,
    clang::QualType ImplicitParamTy,
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4091

Parameters

clang::GlobalDecl Dtor
const clang::CodeGen::CGCallee& Callee
llvm::Value* This
clang::QualType ThisTy
llvm::Value* ImplicitParam
clang::QualType ImplicitParamTy
const clang::CallExpr* E

void EmitCXXForRangeStmt(
    const clang::CXXForRangeStmt& S,
    ArrayRef<const clang::Attr*> Attrs = None)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3322

Parameters

const clang::CXXForRangeStmt& S
ArrayRef<const clang::Attr*> Attrs = None

void EmitCXXGlobalVarDeclInit(
    const clang::VarDecl& D,
    llvm::GlobalVariable* GV,
    bool PerformInit)

Description

EmitCXXGlobalVarDeclInit - Create the initializer for a C++ variable with global storage.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4427

Parameters

const clang::VarDecl& D
llvm::GlobalVariable* GV
bool PerformInit

void EmitCXXGuardedInit(
    const clang::VarDecl& D,
    llvm::GlobalVariable* DeclPtr,
    bool PerformInit)

Description

Emit code in this function to perform a guarded variable initialization. Guarded initializations are used when it's not possible to prove that an initialization will be done exactly once, e.g. with a static local variable or a static data member of a class template.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4454

Parameters

const clang::VarDecl& D
llvm::GlobalVariable* DeclPtr
bool PerformInit

void EmitCXXGuardedInitBranch(
    llvm::Value* NeedsInit,
    llvm::BasicBlock* InitBlock,
    llvm::BasicBlock* NoInitBlock,
    clang::CodeGen::CodeGenFunction::GuardKind
        Kind,
    const clang::VarDecl* D)

Description

Emit a branch to select whether or not to perform guarded initialization.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4460

Parameters

llvm::Value* NeedsInit
llvm::BasicBlock* InitBlock
llvm::BasicBlock* NoInitBlock
clang::CodeGen::CodeGenFunction::GuardKind Kind
const clang::VarDecl* D

clang::CodeGen::RValue EmitCXXMemberCallExpr(
    const clang::CXXMemberCallExpr* E,
    clang::CodeGen::ReturnValueSlot ReturnValue)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4095

Parameters

const clang::CXXMemberCallExpr* E
clang::CodeGen::ReturnValueSlot ReturnValue

clang::CodeGen::Address
EmitCXXMemberDataPointerAddress(
    const clang::Expr* E,
    clang::CodeGen::Address base,
    llvm::Value* memberPtr,
    const clang::MemberPointerType* memberPtrType,
    clang::CodeGen::LValueBaseInfo* BaseInfo =
        nullptr,
    clang::CodeGen::TBAAAccessInfo* TBAAInfo =
        nullptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4104

Parameters

const clang::Expr* E
clang::CodeGen::Address base
llvm::Value* memberPtr
const clang::MemberPointerType* memberPtrType
clang::CodeGen::LValueBaseInfo* BaseInfo = nullptr
clang::CodeGen::TBAAAccessInfo* TBAAInfo = nullptr

clang::CodeGen::RValue
EmitCXXMemberOrOperatorCall(
    const clang::CXXMethodDecl* Method,
    const clang::CodeGen::CGCallee& Callee,
    clang::CodeGen::ReturnValueSlot ReturnValue,
    llvm::Value* This,
    llvm::Value* ImplicitParam,
    clang::QualType ImplicitParamTy,
    const clang::CallExpr* E,
    clang::CodeGen::CallArgList* RtlArgs)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4085

Parameters

const clang::CXXMethodDecl* Method
const clang::CodeGen::CGCallee& Callee
clang::CodeGen::ReturnValueSlot ReturnValue
llvm::Value* This
llvm::Value* ImplicitParam
clang::QualType ImplicitParamTy
const clang::CallExpr* E
clang::CodeGen::CallArgList* RtlArgs

clang::CodeGen::RValue
EmitCXXMemberOrOperatorMemberCallExpr(
    const clang::CallExpr* CE,
    const clang::CXXMethodDecl* MD,
    clang::CodeGen::ReturnValueSlot ReturnValue,
    bool HasQualifier,
    clang::NestedNameSpecifier* Qualifier,
    bool IsArrow,
    const clang::Expr* Base)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4097

Parameters

const clang::CallExpr* CE
const clang::CXXMethodDecl* MD
clang::CodeGen::ReturnValueSlot ReturnValue
bool HasQualifier
clang::NestedNameSpecifier* Qualifier
bool IsArrow
const clang::Expr* Base

clang::CodeGen::RValue
EmitCXXMemberPointerCallExpr(
    const clang::CXXMemberCallExpr* E,
    clang::CodeGen::ReturnValueSlot ReturnValue)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4109

Parameters

const clang::CXXMemberCallExpr* E
clang::CodeGen::ReturnValueSlot ReturnValue

llvm::Value* EmitCXXNewExpr(
    const clang::CXXNewExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2933

Parameters

const clang::CXXNewExpr* E

clang::CodeGen::RValue
EmitCXXOperatorMemberCallExpr(
    const clang::CXXOperatorCallExpr* E,
    const clang::CXXMethodDecl* MD,
    clang::CodeGen::ReturnValueSlot ReturnValue)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4112

Parameters

const clang::CXXOperatorCallExpr* E
const clang::CXXMethodDecl* MD
clang::CodeGen::ReturnValueSlot ReturnValue

clang::CodeGen::RValue
EmitCXXPseudoDestructorExpr(
    const clang::CXXPseudoDestructorExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4115

Parameters

const clang::CXXPseudoDestructorExpr* E

void EmitCXXTemporary(
    const clang::CXXTemporary* Temporary,
    clang::QualType TempType,
    clang::CodeGen::Address Ptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2922

Parameters

const clang::CXXTemporary* Temporary
clang::QualType TempType
clang::CodeGen::Address Ptr

void EmitCXXThrowExpr(
    const clang::CXXThrowExpr* E,
    bool KeepInsertionPoint = true)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4489

Parameters

const clang::CXXThrowExpr* E
bool KeepInsertionPoint = true

void EmitCXXTryStmt(const clang::CXXTryStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3278

Parameters

const clang::CXXTryStmt& S

llvm::Value* EmitCXXTypeidExpr(
    const clang::CXXTypeidExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2943

Parameters

const clang::CXXTypeidExpr* E

clang::CodeGen::LValue EmitCXXTypeidLValue(
    const clang::CXXTypeidExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3990

Parameters

const clang::CXXTypeidExpr* E

clang::CodeGen::Address EmitCXXUuidofExpr(
    const clang::CXXUuidofExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2945

Parameters

const clang::CXXUuidofExpr* E

clang::CodeGen::LValue EmitCXXUuidofLValue(
    const clang::CXXUuidofExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3991

Parameters

const clang::CXXUuidofExpr* E

clang::CodeGen::RValue EmitCall(
    const clang::CodeGen::CGFunctionInfo&
        CallInfo,
    const clang::CodeGen::CGCallee& Callee,
    clang::CodeGen::ReturnValueSlot ReturnValue,
    const clang::CodeGen::CallArgList& Args,
    llvm::CallBase** callOrInvoke,
    bool IsMustTail,
    clang::SourceLocation Loc)

Description

EmitCall - Generate a call of the given function, expecting the given result type, and using the given argument list which specifies both the LLVM arguments and the types they were derived from.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4007

Parameters

const clang::CodeGen::CGFunctionInfo& CallInfo
const clang::CodeGen::CGCallee& Callee
clang::CodeGen::ReturnValueSlot ReturnValue
const clang::CodeGen::CallArgList& Args
llvm::CallBase** callOrInvoke
bool IsMustTail
clang::SourceLocation Loc

clang::CodeGen::RValue EmitCall(
    const clang::CodeGen::CGFunctionInfo&
        CallInfo,
    const clang::CodeGen::CGCallee& Callee,
    clang::CodeGen::ReturnValueSlot ReturnValue,
    const clang::CodeGen::CallArgList& Args,
    llvm::CallBase** callOrInvoke = nullptr,
    bool IsMustTail = false)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4011

Parameters

const clang::CodeGen::CGFunctionInfo& CallInfo
const clang::CodeGen::CGCallee& Callee
clang::CodeGen::ReturnValueSlot ReturnValue
const clang::CodeGen::CallArgList& Args
llvm::CallBase** callOrInvoke = nullptr
bool IsMustTail = false

clang::CodeGen::RValue EmitCall(
    clang::QualType FnType,
    const clang::CodeGen::CGCallee& Callee,
    const clang::CallExpr* E,
    clang::CodeGen::ReturnValueSlot ReturnValue,
    llvm::Value* Chain = nullptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4018

Parameters

clang::QualType FnType
const clang::CodeGen::CGCallee& Callee
const clang::CallExpr* E
clang::CodeGen::ReturnValueSlot ReturnValue
llvm::Value* Chain = nullptr

void EmitCallAndReturnForThunk(
    llvm::FunctionCallee Callee,
    const clang::ThunkInfo* Thunk,
    bool IsUnprototyped)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2243

Parameters

llvm::FunctionCallee Callee
const clang::ThunkInfo* Thunk
bool IsUnprototyped

void EmitCallArg(
    clang::CodeGen::CallArgList& args,
    const clang::Expr* E,
    clang::QualType ArgType)

Description

EmitCallArg - Emit a single call argument.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4645

Parameters

clang::CodeGen::CallArgList& args
const clang::Expr* E
clang::QualType ArgType

void EmitCallArgs(
    clang::CodeGen::CallArgList& Args,
    clang::CodeGen::CodeGenFunction::
        PrototypeWrapper Prototype,
    llvm::iterator_range<
        CallExpr::const_arg_iterator> ArgRange,
    clang::CodeGen::CodeGenFunction::
        AbstractCallee AC = clang::CodeGen::
            CodeGenFunction::AbstractCallee(),
    unsigned int ParamsToSkip = 0,
    clang::CodeGen::CodeGenFunction::
        EvaluationOrder Order =
            EvaluationOrder::Default)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4743

Parameters

clang::CodeGen::CallArgList& Args
clang::CodeGen::CodeGenFunction::PrototypeWrapper Prototype
llvm::iterator_range<CallExpr::const_arg_iterator> ArgRange
clang::CodeGen::CodeGenFunction::AbstractCallee AC = clang::CodeGen::CodeGenFunction::AbstractCallee()
unsigned int ParamsToSkip = 0
clang::CodeGen::CodeGenFunction::EvaluationOrder Order = EvaluationOrder::Default

clang::CodeGen::RValue EmitCallExpr(
    const clang::CallExpr* E,
    clang::CodeGen::ReturnValueSlot ReturnValue =
        clang::CodeGen::ReturnValueSlot())

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4020

Parameters

const clang::CallExpr* E
clang::CodeGen::ReturnValueSlot ReturnValue = clang::CodeGen::ReturnValueSlot()

clang::CodeGen::LValue EmitCallExprLValue(
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3903

Parameters

const clang::CallExpr* E

llvm::CallBase* EmitCallOrInvoke(
    llvm::FunctionCallee Callee,
    ArrayRef<llvm::Value*> Args,
    const llvm::Twine& Name = "")

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4042

Parameters

llvm::FunctionCallee Callee
ArrayRef<llvm::Value*> Args
const llvm::Twine& Name = ""

clang::CodeGen::CGCallee EmitCallee(
    const clang::Expr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4023

Parameters

const clang::Expr* E

void EmitCapturedLocals(
    clang::CodeGen::CodeGenFunction& ParentCGF,
    const clang::Stmt* OutlinedStmt,
    bool IsFilter)

Description

Scan the outlined statement for captures from the parent function. For each capture, mark the capture as escaped and emit a call to llvm.localrecover. Insert the localrecover result into the LocalDeclMap.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3310

Parameters

clang::CodeGen::CodeGenFunction& ParentCGF
const clang::Stmt* OutlinedStmt
bool IsFilter

llvm::Function* EmitCapturedStmt(
    const clang::CapturedStmt& S,
    clang::CapturedRegionKind K)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3341

Parameters

const clang::CapturedStmt& S
clang::CapturedRegionKind K

void EmitCaseStmt(
    const clang::CaseStmt& S,
    ArrayRef<const clang::Attr*> Attrs)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3253

Parameters

const clang::CaseStmt& S
ArrayRef<const clang::Attr*> Attrs

void EmitCaseStmtRange(
    const clang::CaseStmt& S,
    ArrayRef<const clang::Attr*> Attrs)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3254

Parameters

const clang::CaseStmt& S
ArrayRef<const clang::Attr*> Attrs

clang::CodeGen::LValue EmitCastLValue(
    const clang::CastExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3923

Parameters

const clang::CastExpr* E

llvm::Value* EmitCastToVoidPtr(llvm::Value* value)

Description

Emit a cast to void* in the appropriate address space.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2623

Parameters

llvm::Value* value

void EmitCfiCheckFail()

Description

Emit a cross-DSO CFI failure handling function.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4637

void EmitCfiCheckStub()

Description

Emit a stub for the cross-DSO CFI check function.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4634

void EmitCfiSlowPathCheck(
    clang::SanitizerMask Kind,
    llvm::Value* Cond,
    llvm::ConstantInt* TypeId,
    llvm::Value* Ptr,
    ArrayRef<llvm::Constant*> StaticArgs)

Description

Emit a slow path cross-DSO CFI check which calls __cfi_slowpath if Cond if false.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4617

Parameters

clang::SanitizerMask Kind
llvm::Value* Cond
llvm::ConstantInt* TypeId
llvm::Value* Ptr
ArrayRef<llvm::Constant*> StaticArgs

void EmitCheck(
    ArrayRef<std::pair<llvm::Value*,
                       SanitizerMask>> Checked,
    clang::CodeGen::SanitizerHandler Check,
    ArrayRef<llvm::Constant*> StaticArgs,
    ArrayRef<llvm::Value*> DynamicArgs)

Description

Create a basic block that will either trap or call a handler function in the UBSan runtime with the provided arguments, and create a conditional branch to it.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4611

Parameters

ArrayRef<std::pair<llvm::Value*, SanitizerMask>> Checked
clang::CodeGen::SanitizerHandler Check
ArrayRef<llvm::Constant*> StaticArgs
ArrayRef<llvm::Value*> DynamicArgs

llvm::Constant* EmitCheckSourceLocation(
    clang::SourceLocation Loc)

Description

Emit a description of a source location in a format suitable for passing to a runtime sanitizer handler.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4606

Parameters

clang::SourceLocation Loc

llvm::Constant* EmitCheckTypeDescriptor(
    clang::QualType T)

Description

Emit a description of a type in a format suitable for passing to a runtime sanitizer handler.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4598

Parameters

clang::QualType T

llvm::Value* EmitCheckValue(llvm::Value* V)

Description

Convert a value into a format suitable for passing to a runtime sanitizer handler.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4602

Parameters

llvm::Value* V

llvm::Value* EmitCheckedArgForBuiltin(
    const clang::Expr* E,
    clang::CodeGen::CodeGenFunction::
        BuiltinCheckKind Kind)

Description

Emits an argument for a call to a builtin. If the builtin sanitizer is enabled, a runtime check specified by \p Kind is also emitted.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4594

Parameters

const clang::Expr* E
clang::CodeGen::CodeGenFunction::BuiltinCheckKind Kind

llvm::Value* EmitCheckedInBoundsGEP(
    llvm::Type* ElemTy,
    llvm::Value* Ptr,
    ArrayRef<llvm::Value*> IdxList,
    bool SignedIndices,
    bool IsSubtraction,
    clang::SourceLocation Loc,
    const llvm::Twine& Name = "")

Description

Same as IRBuilder::CreateInBoundsGEP, but additionally emits a check to detect undefined behavior when the pointer overflow sanitizer is enabled.\p SignedIndices indicates whether any of the GEP indices are signed.\p IsSubtraction indicates whether the expression used to form the GEP is a subtraction.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4578

Parameters

llvm::Type* ElemTy
llvm::Value* Ptr
ArrayRef<llvm::Value*> IdxList
bool SignedIndices
bool IsSubtraction
clang::SourceLocation Loc
const llvm::Twine& Name = ""

clang::CodeGen::LValue EmitCheckedLValue(
    const clang::Expr* E,
    clang::CodeGen::CodeGenFunction::TypeCheckKind
        TCK)

Description

Same as EmitLValue but additionally we generate checking code to guard against undefined behavior. This is only suitable when we know that the address will be used to access the object.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3776

Parameters

const clang::Expr* E
clang::CodeGen::CodeGenFunction::TypeCheckKind TCK

clang::CodeGen::RValue EmitCoawaitExpr(
    const clang::CoawaitExpr& E,
    clang::CodeGen::AggValueSlot aggSlot =
        AggValueSlot::ignored(),
    bool ignoreResult = false)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3265

Parameters

const clang::CoawaitExpr& E
clang::CodeGen::AggValueSlot aggSlot = AggValueSlot::ignored()
bool ignoreResult = false

clang::CodeGen::LValue EmitCoawaitLValue(
    const clang::CoawaitExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3268

Parameters

const clang::CoawaitExpr* E

llvm::Value* EmitCommonNeonBuiltinExpr(
    unsigned int BuiltinID,
    unsigned int LLVMIntrinsic,
    unsigned int AltLLVMIntrinsic,
    const char* NameHint,
    unsigned int Modifier,
    const clang::CallExpr* E,
    SmallVectorImpl<llvm::Value*>& Ops,
    clang::CodeGen::Address PtrOp0,
    clang::CodeGen::Address PtrOp1,
    llvm::Triple::ArchType Arch)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4166

Parameters

unsigned int BuiltinID
unsigned int LLVMIntrinsic
unsigned int AltLLVMIntrinsic
const char* NameHint
unsigned int Modifier
const clang::CallExpr* E
SmallVectorImpl<llvm::Value*>& Ops
clang::CodeGen::Address PtrOp0
clang::CodeGen::Address PtrOp1
llvm::Triple::ArchType Arch

clang::CodeGen::LValue
EmitComplexAssignmentLValue(
    const clang::BinaryOperator* E)

Description

Emit an l-value for an assignment (simple or compound) of complex type.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3894

Parameters

const clang::BinaryOperator* E

clang::CodeGen::LValue
EmitComplexCompoundAssignmentLValue(
    const clang::CompoundAssignOperator* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3895

Parameters

const clang::CompoundAssignOperator* E

clang::CodeGen::CodeGenFunction::ComplexPairTy
EmitComplexExpr(const clang::Expr* E,
                bool IgnoreReal = false,
                bool IgnoreImag = false)

Description

EmitComplexExpr - Emit the computation of the specified expression of complex type, returning the result.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4397

Parameters

const clang::Expr* E
bool IgnoreReal = false
bool IgnoreImag = false

void EmitComplexExprIntoLValue(
    const clang::Expr* E,
    clang::CodeGen::LValue dest,
    bool isInit)

Description

EmitComplexExprIntoLValue - Emit the given expression of complex type and place its result into the specified l-value.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4403

Parameters

const clang::Expr* E
clang::CodeGen::LValue dest
bool isInit

clang::CodeGen::CodeGenFunction::ComplexPairTy
EmitComplexPrePostIncDec(
    const clang::UnaryOperator* E,
    clang::CodeGen::LValue LV,
    bool isInc,
    bool isPre)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3012

Parameters

const clang::UnaryOperator* E
clang::CodeGen::LValue LV
bool isInc
bool isPre

llvm::Value* EmitComplexToScalarConversion(
    clang::CodeGen::CodeGenFunction::ComplexPairTy
        Src,
    clang::QualType SrcTy,
    clang::QualType DstTy,
    clang::SourceLocation Loc)

Description

Emit a conversion from the specified complex type to the specified destination type, where the destination type is an LLVM scalar type.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4374

Parameters

clang::CodeGen::CodeGenFunction::ComplexPairTy Src
clang::QualType SrcTy
clang::QualType DstTy
clang::SourceLocation Loc

clang::CodeGen::LValue
EmitCompoundAssignmentLValue(
    const clang::CompoundAssignOperator* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3901

Parameters

const clang::CompoundAssignOperator* E

clang::CodeGen::LValue EmitCompoundLiteralLValue(
    const clang::CompoundLiteralExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3919

Parameters

const clang::CompoundLiteralExpr* E

clang::CodeGen::Address EmitCompoundStmt(
    const clang::CompoundStmt& S,
    bool GetLast = false,
    clang::CodeGen::AggValueSlot AVS =
        AggValueSlot::ignored())

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3225

Parameters

const clang::CompoundStmt& S
bool GetLast = false
clang::CodeGen::AggValueSlot AVS = AggValueSlot::ignored()

clang::CodeGen::Address
EmitCompoundStmtWithoutScope(
    const clang::CompoundStmt& S,
    bool GetLast = false,
    clang::CodeGen::AggValueSlot AVS =
        AggValueSlot::ignored())

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3227

Parameters

const clang::CompoundStmt& S
bool GetLast = false
clang::CodeGen::AggValueSlot AVS = AggValueSlot::ignored()

clang::CodeGen::LValue
EmitConditionalOperatorLValue(
    const clang::AbstractConditionalOperator* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3922

Parameters

const clang::AbstractConditionalOperator* E

void EmitConstructorBody(
    clang::CodeGen::FunctionArgList& Args)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2214

Parameters

clang::CodeGen::FunctionArgList& Args

void EmitContinueStmt(
    const clang::ContinueStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3250

Parameters

const clang::ContinueStmt& S

void EmitCoreturnStmt(
    const clang::CoreturnStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3264

Parameters

const clang::CoreturnStmt& S

void EmitCoroutineBody(
    const clang::CoroutineBodyStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3263

Parameters

const clang::CoroutineBodyStmt& S

clang::CodeGen::RValue EmitCoroutineIntrinsic(
    const clang::CallExpr* E,
    unsigned int IID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3273

Parameters

const clang::CallExpr* E
unsigned int IID

clang::CodeGen::RValue EmitCoyieldExpr(
    const clang::CoyieldExpr& E,
    clang::CodeGen::AggValueSlot aggSlot =
        AggValueSlot::ignored(),
    bool ignoreResult = false)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3269

Parameters

const clang::CoyieldExpr& E
clang::CodeGen::AggValueSlot aggSlot = AggValueSlot::ignored()
bool ignoreResult = false

clang::CodeGen::LValue EmitCoyieldLValue(
    const clang::CoyieldExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3272

Parameters

const clang::CoyieldExpr* E

void EmitCtorPrologue(
    const clang::CXXConstructorDecl* CD,
    clang::CXXCtorType Type,
    clang::CodeGen::FunctionArgList& Args)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2261

Parameters

const clang::CXXConstructorDecl* CD
clang::CXXCtorType Type
clang::CodeGen::FunctionArgList& Args

void EmitDecl(const clang::Decl& D)

Description

EmitDecl - Emit a declaration. This function can be called with a null (unreachable) insert point.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3029

Parameters

const clang::Decl& D

void EmitDeclMetadata()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4801

void EmitDeclRefExprDbgValue(
    const clang::DeclRefExpr* E,
    const clang::APValue& Init)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3998

Parameters

const clang::DeclRefExpr* E
const clang::APValue& Init

clang::CodeGen::LValue EmitDeclRefLValue(
    const clang::DeclRefExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3906

Parameters

const clang::DeclRefExpr* E

void EmitDeclStmt(const clang::DeclStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3248

Parameters

const clang::DeclStmt& S

void EmitDefaultStmt(
    const clang::DefaultStmt& S,
    ArrayRef<const clang::Attr*> Attrs)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3252

Parameters

const clang::DefaultStmt& S
ArrayRef<const clang::Attr*> Attrs

void EmitDelegateCXXConstructorCall(
    const clang::CXXConstructorDecl* Ctor,
    clang::CXXCtorType CtorType,
    const clang::CodeGen::FunctionArgList& Args,
    clang::SourceLocation Loc)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2847

Parameters

const clang::CXXConstructorDecl* Ctor
clang::CXXCtorType CtorType
const clang::CodeGen::FunctionArgList& Args
clang::SourceLocation Loc

void EmitDelegateCallArg(
    clang::CodeGen::CallArgList& args,
    const clang::VarDecl* param,
    clang::SourceLocation loc)

Description

EmitDelegateCallArg - We are performing a delegate call; that is, the current function is delegating to another one. Produce a r-value suitable for passing the given parameter.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4650

Parameters

clang::CodeGen::CallArgList& args
const clang::VarDecl* param
clang::SourceLocation loc

void EmitDelegatingCXXConstructorCall(
    const clang::CXXConstructorDecl* Ctor,
    const clang::CodeGen::FunctionArgList& Args)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2855

Parameters

const clang::CXXConstructorDecl* Ctor
const clang::CodeGen::FunctionArgList& Args

void EmitDeleteCall(
    const clang::FunctionDecl* DeleteFD,
    llvm::Value* Ptr,
    clang::QualType DeleteTy,
    llvm::Value* NumElements = nullptr,
    clang::CharUnits CookieSize =
        clang::CharUnits())

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2936

Parameters

const clang::FunctionDecl* DeleteFD
llvm::Value* Ptr
clang::QualType DeleteTy
llvm::Value* NumElements = nullptr
clang::CharUnits CookieSize = clang::CharUnits()

void EmitDestructorBody(
    clang::CodeGen::FunctionArgList& Args)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2215

Parameters

clang::CodeGen::FunctionArgList& Args

void EmitDoStmt(
    const clang::DoStmt& S,
    ArrayRef<const clang::Attr*> Attrs = None)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3244

Parameters

const clang::DoStmt& S
ArrayRef<const clang::Attr*> Attrs = None

llvm::Value* EmitDynamicCast(
    clang::CodeGen::Address V,
    const clang::CXXDynamicCastExpr* DCE)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2944

Parameters

clang::CodeGen::Address V
const clang::CXXDynamicCastExpr* DCE

void EmitEndEHSpec(const clang::Decl* D)

Description

EmitEndEHSpec - Emit the end of the exception spec.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2388

Parameters

const clang::Decl* D

void EmitExprAsInit(const clang::Expr* init,
                    const clang::ValueDecl* D,
                    clang::CodeGen::LValue lvalue,
                    bool capturedByInit)

Description

EmitExprAsInit - Emits the code necessary to initialize a location in memory with the given initializer.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2664

Parameters

const clang::Expr* init
const clang::ValueDecl* D
clang::CodeGen::LValue lvalue
bool capturedByInit

clang::CodeGen::LValue EmitExtVectorElementExpr(
    const clang::ExtVectorElementExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3916

Parameters

const clang::ExtVectorElementExpr* E

clang::CodeGen::Address
EmitExtVectorElementLValue(
    clang::CodeGen::LValue V)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3927

Parameters

clang::CodeGen::LValue V

void EmitExtendGCLifetime(llvm::Value* object)

Description

EmitExtendGCLifetime - Given a pointer to an Objective-C object, make sure it survives garbage collection until this point.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4393

Parameters

llvm::Value* object

clang::CodeGen::Address EmitFieldAnnotations(
    const clang::FieldDecl* D,
    clang::CodeGen::Address V)

Description

Emit field annotations for the given field & value. Returns the annotation result.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4509

Parameters

const clang::FieldDecl* D
clang::CodeGen::Address V

void EmitForStmt(
    const clang::ForStmt& S,
    ArrayRef<const clang::Attr*> Attrs = None)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3245

Parameters

const clang::ForStmt& S
ArrayRef<const clang::Attr*> Attrs = None

void EmitForwardingCallToLambda(
    const clang::CXXMethodDecl*
        LambdaCallOperator,
    clang::CodeGen::CallArgList& CallArgs)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2220

Parameters

const clang::CXXMethodDecl* LambdaCallOperator
clang::CodeGen::CallArgList& CallArgs

llvm::Value* EmitFromMemory(llvm::Value* Value,
                            clang::QualType Ty)

Description

EmitFromMemory - Change a scalar value from its memory representation to its value representation.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3815

Parameters

llvm::Value* Value
clang::QualType Ty

void EmitFunctionBody(const clang::Stmt* Body)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2217

Parameters

const clang::Stmt* Body

void EmitFunctionEpilog(
    const clang::CodeGen::CGFunctionInfo& FI,
    bool EmitRetDbgLoc,
    clang::SourceLocation EndLoc)

Description

EmitFunctionEpilog - Emit the target specific LLVM code to return the given temporary.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2378

Parameters

const clang::CodeGen::CGFunctionInfo& FI
bool EmitRetDbgLoc
clang::SourceLocation EndLoc

void EmitFunctionProlog(
    const clang::CodeGen::CGFunctionInfo& FI,
    llvm::Function* Fn,
    const clang::CodeGen::FunctionArgList& Args)

Description

EmitFunctionProlog - Emit the target specific LLVM code to load the arguments for the given function. This is also responsible for naming the LLVM function arguments.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2372

Parameters

const clang::CodeGen::CGFunctionInfo& FI
llvm::Function* Fn
const clang::CodeGen::FunctionArgList& Args

void EmitGotoStmt(const clang::GotoStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3238

Parameters

const clang::GotoStmt& S

llvm::Value* EmitHexagonBuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4252

Parameters

unsigned int BuiltinID
const clang::CallExpr* E

void EmitIfStmt(const clang::IfStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3240

Parameters

const clang::IfStmt& S

void EmitIgnoredConditionalOperator(
    const clang::AbstractConditionalOperator* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3921

Parameters

const clang::AbstractConditionalOperator* E

void EmitIgnoredExpr(const clang::Expr* E)

Description

EmitIgnoredExpr - Emit an expression in a context which ignores the result.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2630

Parameters

const clang::Expr* E

void EmitIndirectGotoStmt(
    const clang::IndirectGotoStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3239

Parameters

const clang::IndirectGotoStmt& S

void EmitInheritedCXXConstructorCall(
    const clang::CXXConstructorDecl* D,
    bool ForVirtualBase,
    clang::CodeGen::Address This,
    bool InheritedFromVBase,
    const clang::CXXInheritedCtorInitExpr* E)

Description

Emit a call to a constructor inherited from a base class, passing the current constructor's arguments along unmodified (without even making a copy).

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2871

Parameters

const clang::CXXConstructorDecl* D
bool ForVirtualBase
clang::CodeGen::Address This
bool InheritedFromVBase
const clang::CXXInheritedCtorInitExpr* E

clang::CodeGen::LValue EmitInitListLValue(
    const clang::InitListExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3920

Parameters

const clang::InitListExpr* E

void EmitInitializerForField(
    clang::FieldDecl* Field,
    clang::CodeGen::LValue LHS,
    clang::Expr* Init)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2264

Parameters

clang::FieldDecl* Field
clang::CodeGen::LValue LHS
clang::Expr* Init

void EmitInlinedInheritingCXXConstructorCall(
    const clang::CXXConstructorDecl* Ctor,
    clang::CXXCtorType CtorType,
    bool ForVirtualBase,
    bool Delegating,
    clang::CodeGen::CallArgList& Args)

Description

Emit a call to an inheriting constructor (that is, one that invokes a constructor inherited from a base class) by inlining its definition. This is necessary if the ABI does not support forwarding the arguments to the base class constructor (because they're variadic or similar).

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2862

Parameters

const clang::CXXConstructorDecl* Ctor
clang::CXXCtorType CtorType
bool ForVirtualBase
bool Delegating
clang::CodeGen::CallArgList& Args

void EmitInvariantStart(llvm::Constant* Addr,
                        clang::CharUnits Size)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4423

Parameters

llvm::Constant* Addr
clang::CharUnits Size

llvm::Value* EmitIvarOffset(
    const clang::ObjCInterfaceDecl* Interface,
    const clang::ObjCIvarDecl* Ivar)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3973

Parameters

const clang::ObjCInterfaceDecl* Interface
const clang::ObjCIvarDecl* Ivar

void EmitKernelMetadata(
    const clang::FunctionDecl* FD,
    llvm::Function* Fn)

Description

Add OpenCL kernel arg metadata and the kernel attribute metadata to the function metadata.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1976

Parameters

const clang::FunctionDecl* FD
llvm::Function* Fn

clang::CodeGen::LValue EmitLValue(
    const clang::Expr* E)

Description

EmitLValue - Emit code to compute a designator that specifies the location of the expression. This can return one of two things: a simple address or a bitfield reference. In either case, the LLVM Value* in the LValue structure is guaranteed to be an LLVM pointer type. If this returns a bitfield reference, nothing about the pointee type of the LLVM value is known: For example, it may not be a pointer to an integer. If this returns a normal address, and if the lvalue's C type is fixed size, this method guarantees that the returned pointer type will point to an LLVM type of the same size of the lvalue's type. If the lvalue has a variable length type, this is not possible.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3771

Parameters

const clang::Expr* E

clang::CodeGen::LValue EmitLValueForField(
    clang::CodeGen::LValue Base,
    const clang::FieldDecl* Field)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3975

Parameters

clang::CodeGen::LValue Base
const clang::FieldDecl* Field

clang::CodeGen::LValue
EmitLValueForFieldInitialization(
    clang::CodeGen::LValue Base,
    const clang::FieldDecl* Field)

Description

EmitLValueForFieldInitialization - Like EmitLValueForField, except that if the Field is a reference, this will return the address of the reference and not the address of the value stored in the reference.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3981

Parameters

clang::CodeGen::LValue Base
const clang::FieldDecl* Field

clang::CodeGen::LValue EmitLValueForIvar(
    clang::QualType ObjectTy,
    llvm::Value* Base,
    const clang::ObjCIvarDecl* Ivar,
    unsigned int CVRQualifiers)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3984

Parameters

clang::QualType ObjectTy
llvm::Value* Base
const clang::ObjCIvarDecl* Ivar
unsigned int CVRQualifiers

clang::CodeGen::LValue EmitLValueForLambdaField(
    const clang::FieldDecl* Field)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3976

Parameters

const clang::FieldDecl* Field

void EmitLabel(const clang::LabelDecl* D)

Description

EmitLabel - Emit the block for the given label. It is legal to call this function even if there is no current insertion point.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3234

Parameters

const clang::LabelDecl* D

void EmitLabelStmt(const clang::LabelStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3236

Parameters

const clang::LabelStmt& S

void EmitLambdaBlockInvokeBody()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2222

void EmitLambdaDelegatingInvokeBody(
    const clang::CXXMethodDecl* MD)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2223

Parameters

const clang::CXXMethodDecl* MD

void EmitLambdaStaticInvokeBody(
    const clang::CXXMethodDecl* MD)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2224

Parameters

const clang::CXXMethodDecl* MD

void EmitLambdaVLACapture(
    const clang::VariableArrayType* VAT,
    clang::CodeGen::LValue LV)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2225

Parameters

const clang::VariableArrayType* VAT
clang::CodeGen::LValue LV

llvm::BasicBlock* EmitLandingPad()

Description

Emits a landing pad for the current EH stack.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:679

void EmitLifetimeEnd(llvm::Value* Size,
                     llvm::Value* Addr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2931

Parameters

llvm::Value* Size
llvm::Value* Addr

llvm::Value* EmitLifetimeStart(
    llvm::TypeSize Size,
    llvm::Value* Addr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2930

Parameters

llvm::TypeSize Size
llvm::Value* Addr

clang::CodeGen::RValue EmitLoadOfBitfieldLValue(
    clang::CodeGen::LValue LV,
    clang::SourceLocation Loc)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3874

Parameters

clang::CodeGen::LValue LV
clang::SourceLocation Loc

clang::CodeGen::CodeGenFunction::ComplexPairTy
EmitLoadOfComplex(clang::CodeGen::LValue src,
                  clang::SourceLocation loc)

Description

EmitLoadOfComplex - Load a complex number from the specified l-value.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4409

Parameters

clang::CodeGen::LValue src
clang::SourceLocation loc

clang::CodeGen::RValue
EmitLoadOfExtVectorElementLValue(
    clang::CodeGen::LValue V)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3873

Parameters

clang::CodeGen::LValue V

clang::CodeGen::RValue EmitLoadOfGlobalRegLValue(
    clang::CodeGen::LValue LV)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3875

Parameters

clang::CodeGen::LValue LV

clang::CodeGen::RValue EmitLoadOfLValue(
    clang::CodeGen::LValue V,
    clang::SourceLocation Loc)

Description

EmitLoadOfLValue - Given an expression that represents a value lvalue, this method emits the address of the lvalue, then loads the result as an rvalue, returning the rvalue.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3872

Parameters

clang::CodeGen::LValue V
clang::SourceLocation Loc

clang::CodeGen::Address EmitLoadOfPointer(
    clang::CodeGen::Address Ptr,
    const clang::PointerType* PtrTy,
    clang::CodeGen::LValueBaseInfo* BaseInfo =
        nullptr,
    clang::CodeGen::TBAAAccessInfo* TBAAInfo =
        nullptr)

Description

Load a pointer with type \p PtrTy stored at address \p Ptr. Note that \p PtrTy is the type of the loaded pointer, not the addresses it is loaded from.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2532

Parameters

clang::CodeGen::Address Ptr
const clang::PointerType* PtrTy
clang::CodeGen::LValueBaseInfo* BaseInfo = nullptr
clang::CodeGen::TBAAAccessInfo* TBAAInfo = nullptr

clang::CodeGen::LValue EmitLoadOfPointerLValue(
    clang::CodeGen::Address Ptr,
    const clang::PointerType* PtrTy)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2535

Parameters

clang::CodeGen::Address Ptr
const clang::PointerType* PtrTy

clang::CodeGen::Address EmitLoadOfReference(
    clang::CodeGen::LValue RefLVal,
    clang::CodeGen::LValueBaseInfo*
        PointeeBaseInfo = nullptr,
    clang::CodeGen::TBAAAccessInfo*
        PointeeTBAAInfo = nullptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2517

Parameters

clang::CodeGen::LValue RefLVal
clang::CodeGen::LValueBaseInfo* PointeeBaseInfo = nullptr
clang::CodeGen::TBAAAccessInfo* PointeeTBAAInfo = nullptr

clang::CodeGen::LValue EmitLoadOfReferenceLValue(
    clang::CodeGen::Address RefAddr,
    clang::QualType RefTy,
    clang::CodeGen::AlignmentSource Source =
        AlignmentSource::Type)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2521

Parameters

clang::CodeGen::Address RefAddr
clang::QualType RefTy
clang::CodeGen::AlignmentSource Source = AlignmentSource::Type

clang::CodeGen::LValue EmitLoadOfReferenceLValue(
    clang::CodeGen::LValue RefLVal)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2520

Parameters

clang::CodeGen::LValue RefLVal

llvm::Value* EmitLoadOfScalar(
    clang::CodeGen::Address Addr,
    bool Volatile,
    clang::QualType Ty,
    clang::SourceLocation Loc,
    clang::CodeGen::AlignmentSource Source =
        AlignmentSource::Type,
    bool isNontemporal = false)

Description

EmitLoadOfScalar - Load a scalar value from an address, taking care to appropriately convert from the memory representation to the LLVM value representation.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3827

Parameters

clang::CodeGen::Address Addr
bool Volatile
clang::QualType Ty
clang::SourceLocation Loc
clang::CodeGen::AlignmentSource Source = AlignmentSource::Type
bool isNontemporal = false

llvm::Value* EmitLoadOfScalar(
    clang::CodeGen::Address Addr,
    bool Volatile,
    clang::QualType Ty,
    clang::SourceLocation Loc,
    clang::CodeGen::LValueBaseInfo BaseInfo,
    clang::CodeGen::TBAAAccessInfo TBAAInfo,
    bool isNontemporal = false)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3835

Parameters

clang::CodeGen::Address Addr
bool Volatile
clang::QualType Ty
clang::SourceLocation Loc
clang::CodeGen::LValueBaseInfo BaseInfo
clang::CodeGen::TBAAAccessInfo TBAAInfo
bool isNontemporal = false

llvm::Value* EmitLoadOfScalar(
    clang::CodeGen::LValue lvalue,
    clang::SourceLocation Loc)

Description

EmitLoadOfScalar - Load a scalar value from an address, taking care to appropriately convert from the memory representation to the LLVM value representation. The l-value must be a simple l-value.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3844

Parameters

clang::CodeGen::LValue lvalue
clang::SourceLocation Loc

clang::CodeGen::Address EmitMSVAListRef(
    const clang::Expr* E)

Description

Emit a "reference" to a __builtin_ms_va_list; this is always the value of the expression, because a __builtin_ms_va_list is a pointer to a char.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2649

Parameters

const clang::Expr* E

llvm::Value* EmitMSVCBuiltinExpr(
    clang::CodeGen::CodeGenFunction::MSVCIntrin
        BuiltinID,
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4260

Parameters

clang::CodeGen::CodeGenFunction::MSVCIntrin BuiltinID
const clang::CallExpr* E

clang::CodeGen::LValue
EmitMaterializeTemporaryExpr(
    const clang::MaterializeTemporaryExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3924

Parameters

const clang::MaterializeTemporaryExpr* E

clang::CodeGen::LValue EmitMatrixSubscriptExpr(
    const clang::MatrixSubscriptExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3913

Parameters

const clang::MatrixSubscriptExpr* E

clang::CodeGen::LValue EmitMemberExpr(
    const clang::MemberExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3917

Parameters

const clang::MemberExpr* E

void EmitMultiVersionResolver(
    llvm::Function* Resolver,
    ArrayRef<clang::CodeGen::CodeGenFunction::
                 MultiVersionResolverOption>
        Options)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4795

Parameters

llvm::Function* Resolver
ArrayRef<clang::CodeGen::CodeGenFunction:: MultiVersionResolverOption> Options

void EmitMustTailThunk(
    clang::GlobalDecl GD,
    llvm::Value* AdjustedThisPtr,
    llvm::FunctionCallee Callee)

Description

Emit a musttail call for a thunk with a potentially adjusted this pointer.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2249

Parameters

clang::GlobalDecl GD
llvm::Value* AdjustedThisPtr
llvm::FunctionCallee Callee

llvm::Value* EmitNVPTXBuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4249

Parameters

unsigned int BuiltinID
const clang::CallExpr* E

clang::CodeGen::RValue
EmitNVPTXDevicePrintfCallExpr(
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4120

Parameters

const clang::CallExpr* E

llvm::Value* EmitNeonCall(
    llvm::Function* F,
    SmallVectorImpl<llvm::Value*>& O,
    const char* name,
    unsigned int shift = 0,
    bool rightshift = false)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4179

Parameters

llvm::Function* F
SmallVectorImpl<llvm::Value*>& O
const char* name
unsigned int shift = 0
bool rightshift = false

llvm::Value* EmitNeonRShiftImm(llvm::Value* Vec,
                               llvm::Value* Amt,
                               llvm::Type* Ty,
                               bool usgn,
                               const char* name)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4188

Parameters

llvm::Value* Vec
llvm::Value* Amt
llvm::Type* Ty
bool usgn
const char* name

llvm::Value* EmitNeonShiftVector(
    llvm::Value* V,
    llvm::Type* Ty,
    bool negateForRightShift)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4186

Parameters

llvm::Value* V
llvm::Type* Ty
bool negateForRightShift

llvm::Value* EmitNeonSplat(
    llvm::Value* V,
    llvm::Constant* Idx,
    const llvm::ElementCount& Count)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4183

Parameters

llvm::Value* V
llvm::Constant* Idx
const llvm::ElementCount& Count

llvm::Value* EmitNeonSplat(llvm::Value* V,
                           llvm::Constant* Idx)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4185

Parameters

llvm::Value* V
llvm::Constant* Idx

void EmitNewArrayInitializer(
    const clang::CXXNewExpr* E,
    clang::QualType elementType,
    llvm::Type* ElementTy,
    clang::CodeGen::Address NewPtr,
    llvm::Value* NumElements,
    llvm::Value* AllocSizeWithoutCookie)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2917

Parameters

const clang::CXXNewExpr* E
clang::QualType elementType
llvm::Type* ElementTy
clang::CodeGen::Address NewPtr
llvm::Value* NumElements
llvm::Value* AllocSizeWithoutCookie

void EmitNonNullArgCheck(
    clang::CodeGen::RValue RV,
    clang::QualType ArgType,
    clang::SourceLocation ArgLoc,
    clang::CodeGen::CodeGenFunction::
        AbstractCallee AC,
    unsigned int ParmNum)

Description

Create a check for a function parameter that may potentially be declared as non-null.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4641

Parameters

clang::CodeGen::RValue RV
clang::QualType ArgType
clang::SourceLocation ArgLoc
clang::CodeGen::CodeGenFunction::AbstractCallee AC
unsigned int ParmNum

llvm::Value* EmitNonNullRValueCheck(
    clang::CodeGen::RValue RV,
    clang::QualType T)

Description

Create a check that a scalar RValue is non-null.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3739

Parameters

clang::CodeGen::RValue RV
clang::QualType T

void EmitNoreturnRuntimeCallOrInvoke(
    llvm::FunctionCallee callee,
    ArrayRef<llvm::Value*> args)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4050

Parameters

llvm::FunctionCallee callee
ArrayRef<llvm::Value*> args

llvm::CallInst* EmitNounwindRuntimeCall(
    llvm::FunctionCallee callee,
    const llvm::Twine& name = "")

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4033

Parameters

llvm::FunctionCallee callee
const llvm::Twine& name = ""

llvm::CallInst* EmitNounwindRuntimeCall(
    llvm::FunctionCallee callee,
    ArrayRef<llvm::Value*> args,
    const llvm::Twine& name = "")

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4035

Parameters

llvm::FunctionCallee callee
ArrayRef<llvm::Value*> args
const llvm::Twine& name = ""

void EmitNullInitialization(
    clang::CodeGen::Address DestPtr,
    clang::QualType Ty)

Description

EmitNullInitialization - Generate code to set a value of the given type to null, If the type contains data member pointers, they will be initialized to -1 in accordance with the Itanium C++ ABI.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2748

Parameters

clang::CodeGen::Address DestPtr
clang::QualType Ty

void EmitNullabilityCheck(
    clang::CodeGen::LValue LHS,
    llvm::Value* RHS,
    clang::SourceLocation Loc)

Description

Given an assignment `*LHS = RHS`, emit a test that checks if \p RHS is nonnull, if \p LHS is marked _Nonnull.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4567

Parameters

clang::CodeGen::LValue LHS
llvm::Value* RHS
clang::SourceLocation Loc

void EmitOMPAggregateAssign(
    clang::CodeGen::Address DestAddr,
    clang::CodeGen::Address SrcAddr,
    clang::QualType OriginalType,
    const llvm::function_ref<
        void(Address, Address)> CopyGen)

Description

Perform element by element copying of arrays with type \a OriginalType from \a SrcAddr to \a DestAddr using copying procedure generated by \a CopyGen.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3359

Parameters

clang::CodeGen::Address DestAddr
Address of the destination array.
clang::CodeGen::Address SrcAddr
Address of the source array.
clang::QualType OriginalType
Type of destination and source arrays.
const llvm::function_ref<void(Address, Address)> CopyGen
Copying procedure that copies value of single array element to another single array element.

clang::CodeGen::LValue EmitOMPArraySectionExpr(
    const clang::OMPArraySectionExpr* E,
    bool IsLowerBound = true)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3914

Parameters

const clang::OMPArraySectionExpr* E
bool IsLowerBound = true

void EmitOMPAtomicDirective(
    const clang::OMPAtomicDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3529

Parameters

const clang::OMPAtomicDirective& S

std::pair<bool, RValue>
EmitOMPAtomicSimpleUpdateExpr(
    clang::CodeGen::LValue X,
    clang::CodeGen::RValue E,
    clang::BinaryOperatorKind BO,
    bool IsXLHSInRHSPart,
    llvm::AtomicOrdering AO,
    clang::SourceLocation Loc,
    const llvm::function_ref<RValue(RValue)>
        CommonGen)

Description

Emit atomic update code for constructs: \a X = \a X \a BO \a E or\a X = \a E \a BO \a E.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3390

Parameters

clang::CodeGen::LValue X
Value to be updated.
clang::CodeGen::RValue E
Update value.
clang::BinaryOperatorKind BO
Binary operation for update operation.
bool IsXLHSInRHSPart
true if \a X is LHS in RHS part of the update expression, false otherwise.
llvm::AtomicOrdering AO
Atomic ordering of the generated atomic instructions.
clang::SourceLocation Loc
const llvm::function_ref<RValue(RValue)> CommonGen
Code generator for complex expressions that cannot be expressed through atomicrmw instruction.

Returns

<true , OldAtomicValue> if simple 'atomicrmw' instruction was generated, <false , RValue::get(nullptr)> otherwise.

void EmitOMPBarrierDirective(
    const clang::OMPBarrierDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3522

Parameters

const clang::OMPBarrierDirective& S

void EmitOMPCancelDirective(
    const clang::OMPCancelDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3541

Parameters

const clang::OMPCancelDirective& S

void EmitOMPCancellationPointDirective(
    const clang::OMPCancellationPointDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3540

Parameters

const clang::OMPCancellationPointDirective& S

void EmitOMPCanonicalLoop(
    const clang::OMPCanonicalLoop* S)

Description

Emit an OMPCanonicalLoop using the OpenMPIRBuilder.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3630

Parameters

const clang::OMPCanonicalLoop* S

llvm::CanonicalLoopInfo*
EmitOMPCollapsedCanonicalLoopNest(
    const clang::Stmt* S,
    int Depth)

Description

Emit the Stmt \p S and return its topmost canonical loop, if any. TODO: The \p Depth paramter is not yet implemented and must be 1. In the future it is meant to be the number of loops expected in the loop nests (usually specified by the "collapse" clause) that are collapsed to a single loop by this function.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3626

Parameters

const clang::Stmt* S
int Depth

void EmitOMPCopy(clang::QualType OriginalType,
                 clang::CodeGen::Address DestAddr,
                 clang::CodeGen::Address SrcAddr,
                 const clang::VarDecl* DestVD,
                 const clang::VarDecl* SrcVD,
                 const clang::Expr* Copy)

Description

Emit proper copying of data from one variable to another.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3373

Parameters

clang::QualType OriginalType
Original type of the copied variables.
clang::CodeGen::Address DestAddr
Destination address.
clang::CodeGen::Address SrcAddr
Source address.
const clang::VarDecl* DestVD
Destination variable used in \a CopyExpr (for arrays, has type of the base array element).
const clang::VarDecl* SrcVD
Source variable used in \a CopyExpr (for arrays, has type of the base array element).
const clang::Expr* Copy
Actual copygin expression for copying data from \a SrcVD to \a DestVD.

bool EmitOMPCopyinClause(
    const clang::OMPExecutableDirective& D)

Description

Emit code for copyin clause in \a D directive. The next code is generated at the start of outlined functions for directives:

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3415

Parameters

const clang::OMPExecutableDirective& D
OpenMP directive possibly with 'copyin' clause(s).

Returns

true if at least one copyin variable is found, false otherwise.

void EmitOMPCriticalDirective(
    const clang::OMPCriticalDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3515

Parameters

const clang::OMPCriticalDirective& S

void EmitOMPDepobjDirective(
    const clang::OMPDepobjDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3526

Parameters

const clang::OMPDepobjDirective& S

void EmitOMPDistributeDirective(
    const clang::OMPDistributeDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3552

Parameters

const clang::OMPDistributeDirective& S

void EmitOMPDistributeLoop(
    const clang::OMPLoopDirective& S,
    const clang::CodeGen::CodeGenFunction::
        CodeGenLoopTy& CodeGenLoop,
    clang::Expr* IncExpr)

Description

Emit code for the distribute loop-based directive.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3664

Parameters

const clang::OMPLoopDirective& S
const clang::CodeGen::CodeGenFunction:: CodeGenLoopTy& CodeGenLoop
clang::Expr* IncExpr

void EmitOMPDistributeOuterLoop(
    clang::OpenMPDistScheduleClauseKind
        ScheduleKind,
    const clang::OMPLoopDirective& S,
    clang::CodeGen::CodeGenFunction::
        OMPPrivateScope& LoopScope,
    const clang::CodeGen::CodeGenFunction::
        OMPLoopArguments& LoopArgs,
    const clang::CodeGen::CodeGenFunction::
        CodeGenLoopTy& CodeGenLoopContent)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3724

Parameters

clang::OpenMPDistScheduleClauseKind ScheduleKind
const clang::OMPLoopDirective& S
clang::CodeGen::CodeGenFunction::OMPPrivateScope& LoopScope
const clang::CodeGen::CodeGenFunction:: OMPLoopArguments& LoopArgs
const clang::CodeGen::CodeGenFunction:: CodeGenLoopTy& CodeGenLoopContent

void EmitOMPDistributeParallelForDirective(
    const clang::
        OMPDistributeParallelForDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3553

Parameters

const clang::OMPDistributeParallelForDirective& S

void EmitOMPDistributeParallelForSimdDirective(
    const clang::
        OMPDistributeParallelForSimdDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3555

Parameters

const clang:: OMPDistributeParallelForSimdDirective& S

void EmitOMPDistributeSimdDirective(
    const clang::OMPDistributeSimdDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3557

Parameters

const clang::OMPDistributeSimdDirective& S

bool EmitOMPFirstprivateClause(
    const clang::OMPExecutableDirective& D,
    clang::CodeGen::CodeGenFunction::
        OMPPrivateScope& PrivateScope)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3394

Parameters

const clang::OMPExecutableDirective& D
clang::CodeGen::CodeGenFunction::OMPPrivateScope& PrivateScope

void EmitOMPFlushDirective(
    const clang::OMPFlushDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3525

Parameters

const clang::OMPFlushDirective& S

void EmitOMPForDirective(
    const clang::OMPForDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3508

Parameters

const clang::OMPForDirective& S

void EmitOMPForOuterLoop(
    const clang::OpenMPScheduleTy& ScheduleKind,
    bool IsMonotonic,
    const clang::OMPLoopDirective& S,
    clang::CodeGen::CodeGenFunction::
        OMPPrivateScope& LoopScope,
    bool Ordered,
    const clang::CodeGen::CodeGenFunction::
        OMPLoopArguments& LoopArgs,
    const clang::CodeGen::CodeGenFunction::
        CodeGenDispatchBoundsTy& CGDispatchBounds)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3719

Parameters

const clang::OpenMPScheduleTy& ScheduleKind
bool IsMonotonic
const clang::OMPLoopDirective& S
clang::CodeGen::CodeGenFunction::OMPPrivateScope& LoopScope
bool Ordered
const clang::CodeGen::CodeGenFunction:: OMPLoopArguments& LoopArgs
const clang::CodeGen::CodeGenFunction:: CodeGenDispatchBoundsTy& CGDispatchBounds

void EmitOMPForSimdDirective(
    const clang::OMPForSimdDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3509

Parameters

const clang::OMPForSimdDirective& S

void EmitOMPGenericLoopDirective(
    const clang::OMPGenericLoopDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3577

Parameters

const clang::OMPGenericLoopDirective& S

void EmitOMPInnerLoop(
    const clang::OMPExecutableDirective& S,
    bool RequiresCleanup,
    const clang::Expr* LoopCond,
    const clang::Expr* IncExpr,
    const llvm::function_ref<
        void(CodeGenFunction&)> BodyGen,
    const llvm::function_ref<
        void(CodeGenFunction&)> PostIncGen)

Description

Emit inner loop of the worksharing/simd construct.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3642

Parameters

const clang::OMPExecutableDirective& S
Directive, for which the inner loop must be emitted.
bool RequiresCleanup
true, if directive has some associated private variables.
const clang::Expr* LoopCond
Bollean condition for loop continuation.
const clang::Expr* IncExpr
Increment expression for loop control variable.
const llvm::function_ref<void(CodeGenFunction&)> BodyGen
Generator for the inner body of the inner loop.
const llvm::function_ref<void(CodeGenFunction&)> PostIncGen
Genrator for post-increment code (required for ordered loop directvies).

void EmitOMPInteropDirective(
    const clang::OMPInteropDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3578

Parameters

const clang::OMPInteropDirective& S

void EmitOMPLastprivateClauseFinal(
    const clang::OMPExecutableDirective& D,
    bool NoFinals,
    llvm::Value* IsLastIterCond = nullptr)

Description

Emit final copying of lastprivate values to original variables at the end of the worksharing or simd directive.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3436

Parameters

const clang::OMPExecutableDirective& D
Directive that has at least one 'lastprivate' directives.
bool NoFinals
llvm::Value* IsLastIterCond = nullptr
Boolean condition that must be set to 'i1 true' if it is the last iteration of the loop code in associated directive, or to 'i1 false' otherwise. If this item is nullptr, no final check is required.

bool EmitOMPLastprivateClauseInit(
    const clang::OMPExecutableDirective& D,
    clang::CodeGen::CodeGenFunction::
        OMPPrivateScope& PrivateScope)

Description

Emit initial code for lastprivate variables. If some variable is not also firstprivate, then the default initialization is used. Otherwise initialization of this variable is performed by EmitOMPFirstprivateClause method.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3427

Parameters

const clang::OMPExecutableDirective& D
Directive that may have 'lastprivate' directives.
clang::CodeGen::CodeGenFunction::OMPPrivateScope& PrivateScope
Private scope for capturing lastprivate variables for proper codegen in internal captured statement.

Returns

true if there is at least one lastprivate variable, false otherwise.

void EmitOMPLinearClause(
    const clang::OMPLoopDirective& D,
    CodeGenFunction::OMPPrivateScope&
        PrivateScope)

Description

Emit initial code for linear clauses.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3440

Parameters

const clang::OMPLoopDirective& D
CodeGenFunction::OMPPrivateScope& PrivateScope

void EmitOMPLinearClauseFinal(
    const clang::OMPLoopDirective& D,
    const llvm::function_ref<
        llvm::Value*(CodeGenFunction&)> CondGen)

Description

Emit final code for linear clauses.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3445

Parameters

const clang::OMPLoopDirective& D
const llvm::function_ref<llvm::Value*( CodeGenFunction&)> CondGen
Optional conditional code for final part of codegen for linear clause.

bool EmitOMPLinearClauseInit(
    const clang::OMPLoopDirective& D)

Description

Emit initial code for linear variables. Creates private copies and initializes them with the values according to OpenMP standard.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3471

Parameters

const clang::OMPLoopDirective& D
Directive (possibly) with the 'linear' clause.

Returns

true if at least one linear variable is found that should be initialized with the value of the original variable, false otherwise.

void EmitOMPLoopBody(
    const clang::OMPLoopDirective& D,
    clang::CodeGen::CodeGenFunction::JumpDest
        LoopExit)

Description

Helper for the OpenMP loop directives.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3654

Parameters

const clang::OMPLoopDirective& D
clang::CodeGen::CodeGenFunction::JumpDest LoopExit

void EmitOMPMaskedDirective(
    const clang::OMPMaskedDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3514

Parameters

const clang::OMPMaskedDirective& S

void EmitOMPMasterDirective(
    const clang::OMPMasterDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3513

Parameters

const clang::OMPMasterDirective& S

void EmitOMPMasterTaskLoopDirective(
    const clang::OMPMasterTaskLoopDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3545

Parameters

const clang::OMPMasterTaskLoopDirective& S

void EmitOMPMasterTaskLoopSimdDirective(
    const clang::OMPMasterTaskLoopSimdDirective&
        S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3547

Parameters

const clang::OMPMasterTaskLoopSimdDirective& S

void EmitOMPMetaDirective(
    const clang::OMPMetaDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3503

Parameters

const clang::OMPMetaDirective& S

void EmitOMPOrderedDirective(
    const clang::OMPOrderedDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3528

Parameters

const clang::OMPOrderedDirective& S

void EmitOMPOuterLoop(
    bool DynamicOrOrdered,
    bool IsMonotonic,
    const clang::OMPLoopDirective& S,
    clang::CodeGen::CodeGenFunction::
        OMPPrivateScope& LoopScope,
    const clang::CodeGen::CodeGenFunction::
        OMPLoopArguments& LoopArgs,
    const clang::CodeGen::CodeGenFunction::
        CodeGenLoopTy& CodeGenLoop,
    const clang::CodeGen::CodeGenFunction::
        CodeGenOrderedTy& CodeGenOrdered)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3714

Parameters

bool DynamicOrOrdered
bool IsMonotonic
const clang::OMPLoopDirective& S
clang::CodeGen::CodeGenFunction::OMPPrivateScope& LoopScope
const clang::CodeGen::CodeGenFunction:: OMPLoopArguments& LoopArgs
const clang::CodeGen::CodeGenFunction:: CodeGenLoopTy& CodeGenLoop
const clang::CodeGen::CodeGenFunction:: CodeGenOrderedTy& CodeGenOrdered

void EmitOMPParallelDirective(
    const clang::OMPParallelDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3504

Parameters

const clang::OMPParallelDirective& S

void EmitOMPParallelForDirective(
    const clang::OMPParallelForDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3516

Parameters

const clang::OMPParallelForDirective& S

void EmitOMPParallelForSimdDirective(
    const clang::OMPParallelForSimdDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3517

Parameters

const clang::OMPParallelForSimdDirective& S

void EmitOMPParallelMasterDirective(
    const clang::OMPParallelMasterDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3519

Parameters

const clang::OMPParallelMasterDirective& S

void EmitOMPParallelMasterTaskLoopDirective(
    const clang::
        OMPParallelMasterTaskLoopDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3548

Parameters

const clang::OMPParallelMasterTaskLoopDirective& S

void EmitOMPParallelMasterTaskLoopSimdDirective(
    const clang::
        OMPParallelMasterTaskLoopSimdDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3550

Parameters

const clang:: OMPParallelMasterTaskLoopSimdDirective& S

void EmitOMPParallelSectionsDirective(
    const clang::OMPParallelSectionsDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3518

Parameters

const clang::OMPParallelSectionsDirective& S

void EmitOMPPrivateClause(
    const clang::OMPExecutableDirective& D,
    clang::CodeGen::CodeGenFunction::
        OMPPrivateScope& PrivateScope)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3396

Parameters

const clang::OMPExecutableDirective& D
clang::CodeGen::CodeGenFunction::OMPPrivateScope& PrivateScope

void EmitOMPPrivateLoopCounters(
    const clang::OMPLoopDirective& S,
    clang::CodeGen::CodeGenFunction::
        OMPPrivateScope& LoopScope)

Description

Emit initial code for loop counters of loop-based directives.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3650

Parameters

const clang::OMPLoopDirective& S
clang::CodeGen::CodeGenFunction::OMPPrivateScope& LoopScope

void EmitOMPReductionClauseFinal(
    const clang::OMPExecutableDirective& D,
    const clang::OpenMPDirectiveKind
        ReductionKind)

Description

Emit final update of reduction values to original variables at the end of the directive.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3463

Parameters

const clang::OMPExecutableDirective& D
Directive that has at least one 'reduction' directives.
const clang::OpenMPDirectiveKind ReductionKind
The kind of reduction to perform.

void EmitOMPReductionClauseInit(
    const clang::OMPExecutableDirective& D,
    clang::CodeGen::CodeGenFunction::
        OMPPrivateScope& PrivateScope,
    bool ForInscan = false)

Description

Emit initial code for reduction variables. Creates reduction copies and initializes them with the values according to OpenMP standard.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3455

Parameters

const clang::OMPExecutableDirective& D
Directive (possibly) with the 'reduction' clause.
clang::CodeGen::CodeGenFunction::OMPPrivateScope& PrivateScope
Private scope for capturing reduction variables for proper codegen in internal captured statement.
bool ForInscan = false

void EmitOMPScanDirective(
    const clang::OMPScanDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3527

Parameters

const clang::OMPScanDirective& S

void EmitOMPSectionDirective(
    const clang::OMPSectionDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3511

Parameters

const clang::OMPSectionDirective& S

void EmitOMPSectionsDirective(
    const clang::OMPSectionsDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3510

Parameters

const clang::OMPSectionsDirective& S

clang::CodeGen::LValue EmitOMPSharedLValue(
    const clang::Expr* E)

Description

Emits the lvalue for the expression with possibly captured variable.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3674

Parameters

const clang::Expr* E

void EmitOMPSimdDirective(
    const clang::OMPSimdDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3505

Parameters

const clang::OMPSimdDirective& S

void EmitOMPSimdFinal(
    const clang::OMPLoopDirective& D,
    const llvm::function_ref<
        llvm::Value*(CodeGenFunction&)> CondGen)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3669

Parameters

const clang::OMPLoopDirective& D
const llvm::function_ref<llvm::Value*( CodeGenFunction&)> CondGen

void EmitOMPSimdInit(
    const clang::OMPLoopDirective& D)

Description

Helpers for the OpenMP loop directives.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3668

Parameters

const clang::OMPLoopDirective& D

void EmitOMPSingleDirective(
    const clang::OMPSingleDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3512

Parameters

const clang::OMPSingleDirective& S

void EmitOMPTargetDataDirective(
    const clang::OMPTargetDataDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3531

Parameters

const clang::OMPTargetDataDirective& S

static void EmitOMPTargetDeviceFunction(
    clang::CodeGen::CodeGenModule& CGM,
    llvm::StringRef ParentName,
    const clang::OMPTargetDirective& S)

Description

Emit device code for the target directive.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3581

Parameters

clang::CodeGen::CodeGenModule& CGM
llvm::StringRef ParentName
const clang::OMPTargetDirective& S

void EmitOMPTargetDirective(
    const clang::OMPTargetDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3530

Parameters

const clang::OMPTargetDirective& S

void EmitOMPTargetEnterDataDirective(
    const clang::OMPTargetEnterDataDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3532

Parameters

const clang::OMPTargetEnterDataDirective& S

void EmitOMPTargetExitDataDirective(
    const clang::OMPTargetExitDataDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3533

Parameters

const clang::OMPTargetExitDataDirective& S

static void EmitOMPTargetParallelDeviceFunction(
    clang::CodeGen::CodeGenModule& CGM,
    llvm::StringRef ParentName,
    const clang::OMPTargetParallelDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3585

Parameters

clang::CodeGen::CodeGenModule& CGM
llvm::StringRef ParentName
const clang::OMPTargetParallelDirective& S

void EmitOMPTargetParallelDirective(
    const clang::OMPTargetParallelDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3535

Parameters

const clang::OMPTargetParallelDirective& S

static void
EmitOMPTargetParallelForDeviceFunction(
    clang::CodeGen::CodeGenModule& CGM,
    llvm::StringRef ParentName,
    const clang::OMPTargetParallelForDirective& S)

Description

Emit device code for the target parallel for directive.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3588

Parameters

clang::CodeGen::CodeGenModule& CGM
llvm::StringRef ParentName
const clang::OMPTargetParallelForDirective& S

void EmitOMPTargetParallelForDirective(
    const clang::OMPTargetParallelForDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3537

Parameters

const clang::OMPTargetParallelForDirective& S

static void
EmitOMPTargetParallelForSimdDeviceFunction(
    clang::CodeGen::CodeGenModule& CGM,
    llvm::StringRef ParentName,
    const clang::
        OMPTargetParallelForSimdDirective& S)

Description

Emit device code for the target parallel for simd directive.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3592

Parameters

clang::CodeGen::CodeGenModule& CGM
llvm::StringRef ParentName
const clang::OMPTargetParallelForSimdDirective& S

void EmitOMPTargetParallelForSimdDirective(
    const clang::
        OMPTargetParallelForSimdDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3558

Parameters

const clang::OMPTargetParallelForSimdDirective& S

static void EmitOMPTargetSimdDeviceFunction(
    clang::CodeGen::CodeGenModule& CGM,
    llvm::StringRef ParentName,
    const clang::OMPTargetSimdDirective& S)

Description

Emit device code for the target simd directive.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3608

Parameters

clang::CodeGen::CodeGenModule& CGM
llvm::StringRef ParentName
const clang::OMPTargetSimdDirective& S

void EmitOMPTargetSimdDirective(
    const clang::OMPTargetSimdDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3560

Parameters

const clang::OMPTargetSimdDirective& S

void EmitOMPTargetTaskBasedDirective(
    const clang::OMPExecutableDirective& S,
    const clang::CodeGen::RegionCodeGenTy&
        BodyGen,
    clang::CodeGen::CodeGenFunction::
        OMPTargetDataInfo& InputInfo)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3495

Parameters

const clang::OMPExecutableDirective& S
const clang::CodeGen::RegionCodeGenTy& BodyGen
clang::CodeGen::CodeGenFunction:: OMPTargetDataInfo& InputInfo

static void EmitOMPTargetTeamsDeviceFunction(
    clang::CodeGen::CodeGenModule& CGM,
    llvm::StringRef ParentName,
    const clang::OMPTargetTeamsDirective& S)

Description

Emit device code for the target teams directive.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3597

Parameters

clang::CodeGen::CodeGenModule& CGM
llvm::StringRef ParentName
const clang::OMPTargetTeamsDirective& S

void EmitOMPTargetTeamsDirective(
    const clang::OMPTargetTeamsDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3568

Parameters

const clang::OMPTargetTeamsDirective& S

static void
EmitOMPTargetTeamsDistributeDeviceFunction(
    clang::CodeGen::CodeGenModule& CGM,
    llvm::StringRef ParentName,
    const clang::
        OMPTargetTeamsDistributeDirective& S)

Description

Emit device code for the target teams distribute directive.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3600

Parameters

clang::CodeGen::CodeGenModule& CGM
llvm::StringRef ParentName
const clang::OMPTargetTeamsDistributeDirective& S

void EmitOMPTargetTeamsDistributeDirective(
    const clang::
        OMPTargetTeamsDistributeDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3569

Parameters

const clang::OMPTargetTeamsDistributeDirective& S

static void
EmitOMPTargetTeamsDistributeParallelForDeviceFunction(
    clang::CodeGen::CodeGenModule& CGM,
    llvm::StringRef ParentName,
    const clang::
        OMPTargetTeamsDistributeParallelForDirective&
            S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3617

Parameters

clang::CodeGen::CodeGenModule& CGM
llvm::StringRef ParentName
const clang:: OMPTargetTeamsDistributeParallelForDirective& S

void EmitOMPTargetTeamsDistributeParallelForDirective(
    const clang::
        OMPTargetTeamsDistributeParallelForDirective&
            S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3571

Parameters

const clang:: OMPTargetTeamsDistributeParallelForDirective& S

static void
EmitOMPTargetTeamsDistributeParallelForSimdDeviceFunction(
    clang::CodeGen::CodeGenModule& CGM,
    llvm::StringRef ParentName,
    const clang::
        OMPTargetTeamsDistributeParallelForSimdDirective&
            S)

Description

Emit device code for the target teams distribute parallel for simd directive.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3613

Parameters

clang::CodeGen::CodeGenModule& CGM
llvm::StringRef ParentName
const clang:: OMPTargetTeamsDistributeParallelForSimdDirective& S

void EmitOMPTargetTeamsDistributeParallelForSimdDirective(
    const clang::
        OMPTargetTeamsDistributeParallelForSimdDirective&
            S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3573

Parameters

const clang:: OMPTargetTeamsDistributeParallelForSimdDirective& S

static void
EmitOMPTargetTeamsDistributeSimdDeviceFunction(
    clang::CodeGen::CodeGenModule& CGM,
    llvm::StringRef ParentName,
    const clang::
        OMPTargetTeamsDistributeSimdDirective& S)

Description

Emit device code for the target teams distribute simd directive.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3604

Parameters

clang::CodeGen::CodeGenModule& CGM
llvm::StringRef ParentName
const clang:: OMPTargetTeamsDistributeSimdDirective& S

void EmitOMPTargetTeamsDistributeSimdDirective(
    const clang::
        OMPTargetTeamsDistributeSimdDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3575

Parameters

const clang:: OMPTargetTeamsDistributeSimdDirective& S

void EmitOMPTargetUpdateDirective(
    const clang::OMPTargetUpdateDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3534

Parameters

const clang::OMPTargetUpdateDirective& S

void EmitOMPTaskBasedDirective(
    const clang::OMPExecutableDirective& S,
    const clang::OpenMPDirectiveKind
        CapturedRegion,
    const clang::CodeGen::RegionCodeGenTy&
        BodyGen,
    const clang::CodeGen::CodeGenFunction::
        TaskGenTy& TaskGen,
    clang::CodeGen::OMPTaskDataTy& Data)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3477

Parameters

const clang::OMPExecutableDirective& S
const clang::OpenMPDirectiveKind CapturedRegion
const clang::CodeGen::RegionCodeGenTy& BodyGen
const clang::CodeGen::CodeGenFunction::TaskGenTy& TaskGen
clang::CodeGen::OMPTaskDataTy& Data

void EmitOMPTaskDirective(
    const clang::OMPTaskDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3520

Parameters

const clang::OMPTaskDirective& S

void EmitOMPTaskLoopBasedDirective(
    const clang::OMPLoopDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3542

Parameters

const clang::OMPLoopDirective& S

void EmitOMPTaskLoopDirective(
    const clang::OMPTaskLoopDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3543

Parameters

const clang::OMPTaskLoopDirective& S

void EmitOMPTaskLoopSimdDirective(
    const clang::OMPTaskLoopSimdDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3544

Parameters

const clang::OMPTaskLoopSimdDirective& S

void EmitOMPTaskgroupDirective(
    const clang::OMPTaskgroupDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3524

Parameters

const clang::OMPTaskgroupDirective& S

void EmitOMPTaskwaitDirective(
    const clang::OMPTaskwaitDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3523

Parameters

const clang::OMPTaskwaitDirective& S

void EmitOMPTaskyieldDirective(
    const clang::OMPTaskyieldDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3521

Parameters

const clang::OMPTaskyieldDirective& S

void EmitOMPTeamsDirective(
    const clang::OMPTeamsDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3538

Parameters

const clang::OMPTeamsDirective& S

void EmitOMPTeamsDistributeDirective(
    const clang::OMPTeamsDistributeDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3561

Parameters

const clang::OMPTeamsDistributeDirective& S

void EmitOMPTeamsDistributeParallelForDirective(
    const clang::
        OMPTeamsDistributeParallelForDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3566

Parameters

const clang:: OMPTeamsDistributeParallelForDirective& S

void EmitOMPTeamsDistributeParallelForSimdDirective(
    const clang::
        OMPTeamsDistributeParallelForSimdDirective&
            S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3564

Parameters

const clang:: OMPTeamsDistributeParallelForSimdDirective& S

void EmitOMPTeamsDistributeSimdDirective(
    const clang::OMPTeamsDistributeSimdDirective&
        S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3563

Parameters

const clang::OMPTeamsDistributeSimdDirective& S

void EmitOMPTileDirective(
    const clang::OMPTileDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3506

Parameters

const clang::OMPTileDirective& S

void EmitOMPUnrollDirective(
    const clang::OMPUnrollDirective& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3507

Parameters

const clang::OMPUnrollDirective& S

void EmitOMPUseDeviceAddrClause(
    const clang::OMPUseDeviceAddrClause& C,
    clang::CodeGen::CodeGenFunction::
        OMPPrivateScope& PrivateScope,
    const llvm::DenseMap<const ValueDecl*,
                         Address>&
        CaptureDeviceAddrMap)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3401

Parameters

const clang::OMPUseDeviceAddrClause& C
clang::CodeGen::CodeGenFunction::OMPPrivateScope& PrivateScope
const llvm::DenseMap<const ValueDecl*, Address>& CaptureDeviceAddrMap

void EmitOMPUseDevicePtrClause(
    const clang::OMPUseDevicePtrClause& C,
    clang::CodeGen::CodeGenFunction::
        OMPPrivateScope& PrivateScope,
    const llvm::DenseMap<const ValueDecl*,
                         Address>&
        CaptureDeviceAddrMap)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3398

Parameters

const clang::OMPUseDevicePtrClause& C
clang::CodeGen::CodeGenFunction::OMPPrivateScope& PrivateScope
const llvm::DenseMap<const ValueDecl*, Address>& CaptureDeviceAddrMap

bool EmitOMPWorksharingLoop(
    const clang::OMPLoopDirective& S,
    clang::Expr* EUB,
    const clang::CodeGen::CodeGenFunction::
        CodeGenLoopBoundsTy& CodeGenLoopBounds,
    const clang::CodeGen::CodeGenFunction::
        CodeGenDispatchBoundsTy& CGDispatchBounds)

Description

Emit code for the worksharing loop-based directive.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3659

Parameters

const clang::OMPLoopDirective& S
clang::Expr* EUB
const clang::CodeGen::CodeGenFunction:: CodeGenLoopBoundsTy& CodeGenLoopBounds
const clang::CodeGen::CodeGenFunction:: CodeGenDispatchBoundsTy& CGDispatchBounds

Returns

true, if this construct has any lastprivate clause, false - otherwise.

llvm::Value* EmitObjCAlloc(llvm::Value* value,
                           llvm::Type* returnType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4321

Parameters

llvm::Value* value
llvm::Type* returnType

llvm::Value* EmitObjCAllocInit(
    llvm::Value* value,
    llvm::Type* resultType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4325

Parameters

llvm::Value* value
llvm::Type* resultType

llvm::Value* EmitObjCAllocWithZone(
    llvm::Value* value,
    llvm::Type* returnType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4323

Parameters

llvm::Value* value
llvm::Type* returnType

llvm::Value* EmitObjCArrayLiteral(
    const clang::ObjCArrayLiteral* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4267

Parameters

const clang::ObjCArrayLiteral* E

void EmitObjCAtSynchronizedStmt(
    const clang::ObjCAtSynchronizedStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3260

Parameters

const clang::ObjCAtSynchronizedStmt& S

void EmitObjCAtThrowStmt(
    const clang::ObjCAtThrowStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3259

Parameters

const clang::ObjCAtThrowStmt& S

void EmitObjCAtTryStmt(
    const clang::ObjCAtTryStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3258

Parameters

const clang::ObjCAtTryStmt& S

llvm::Value* EmitObjCAutorelease(
    llvm::Value* value,
    llvm::Type* returnType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4309

Parameters

llvm::Value* value
llvm::Type* returnType

void EmitObjCAutoreleasePoolCleanup(
    llvm::Value* Ptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4351

Parameters

llvm::Value* Ptr

void EmitObjCAutoreleasePoolPop(llvm::Value* Ptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4348

Parameters

llvm::Value* Ptr

llvm::Value* EmitObjCAutoreleasePoolPush()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4349

void EmitObjCAutoreleasePoolStmt(
    const clang::ObjCAutoreleasePoolStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3261

Parameters

const clang::ObjCAutoreleasePoolStmt& S

llvm::Value* EmitObjCBoxedExpr(
    const clang::ObjCBoxedExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4266

Parameters

const clang::ObjCBoxedExpr* E

llvm::Value* EmitObjCCollectionLiteral(
    const clang::Expr* E,
    const clang::ObjCMethodDecl*
        MethodWithObjects)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4269

Parameters

const clang::Expr* E
const clang::ObjCMethodDecl* MethodWithObjects

llvm::Value* EmitObjCConsumeObject(
    clang::QualType T,
    llvm::Value* Ptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4328

Parameters

clang::QualType T
llvm::Value* Ptr

llvm::Value* EmitObjCDictionaryLiteral(
    const clang::ObjCDictionaryLiteral* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4268

Parameters

const clang::ObjCDictionaryLiteral* E

clang::CodeGen::LValue EmitObjCEncodeExprLValue(
    const clang::ObjCEncodeExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3908

Parameters

const clang::ObjCEncodeExpr* E

llvm::Value* EmitObjCExtendObjectLifetime(
    clang::QualType T,
    llvm::Value* Ptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4329

Parameters

clang::QualType T
llvm::Value* Ptr

void EmitObjCForCollectionStmt(
    const clang::ObjCForCollectionStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3257

Parameters

const clang::ObjCForCollectionStmt& S

clang::CodeGen::LValue EmitObjCIsaExpr(
    const clang::ObjCIsaExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3918

Parameters

const clang::ObjCIsaExpr* E

clang::CodeGen::LValue EmitObjCIvarRefLValue(
    const clang::ObjCIvarRefExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3994

Parameters

const clang::ObjCIvarRefExpr* E

void EmitObjCMRRAutoreleasePoolPop(
    llvm::Value* Ptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4352

Parameters

llvm::Value* Ptr

llvm::Value* EmitObjCMRRAutoreleasePoolPush()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4350

clang::CodeGen::RValue EmitObjCMessageExpr(
    const clang::ObjCMessageExpr* E,
    clang::CodeGen::ReturnValueSlot Return =
        clang::CodeGen::ReturnValueSlot())

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4272

Parameters

const clang::ObjCMessageExpr* E
clang::CodeGen::ReturnValueSlot Return = clang::CodeGen::ReturnValueSlot()

clang::CodeGen::LValue EmitObjCMessageExprLValue(
    const clang::ObjCMessageExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3993

Parameters

const clang::ObjCMessageExpr* E

llvm::Value* EmitObjCProtocolExpr(
    const clang::ObjCProtocolExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4264

Parameters

const clang::ObjCProtocolExpr* E

void EmitObjCRelease(
    llvm::Value* value,
    clang::CodeGen::ARCPreciseLifetime_t precise)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4312

Parameters

llvm::Value* value
clang::CodeGen::ARCPreciseLifetime_t precise

llvm::Value* EmitObjCRetainNonBlock(
    llvm::Value* value,
    llvm::Type* returnType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4310

Parameters

llvm::Value* value
llvm::Type* returnType

llvm::Value* EmitObjCSelectorExpr(
    const clang::ObjCSelectorExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4271

Parameters

const clang::ObjCSelectorExpr* E

clang::CodeGen::LValue EmitObjCSelectorLValue(
    const clang::ObjCSelectorExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3997

Parameters

const clang::ObjCSelectorExpr* E

llvm::Value* EmitObjCStringLiteral(
    const clang::ObjCStringLiteral* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4265

Parameters

const clang::ObjCStringLiteral* E

llvm::Value* EmitObjCThrowOperand(
    const clang::Expr* expr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4327

Parameters

const clang::Expr* expr

clang::CodeGen::LValue EmitOpaqueValueLValue(
    const clang::OpaqueValueExpr* e)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3925

Parameters

const clang::OpaqueValueExpr* e

clang::CodeGen::RValue
EmitOpenMPDevicePrintfCallExpr(
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4122

Parameters

const clang::CallExpr* E

llvm::Value* EmitPPCBuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4246

Parameters

unsigned int BuiltinID
const clang::CallExpr* E

void EmitParmDecl(
    const clang::VarDecl& D,
    clang::CodeGen::CodeGenFunction::ParamValue
        Arg,
    unsigned int ArgNo)

Description

EmitParmDecl - Emit a ParmVarDecl or an ImplicitParamDecl.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3170

Parameters

const clang::VarDecl& D
clang::CodeGen::CodeGenFunction::ParamValue Arg
unsigned int ArgNo

clang::CodeGen::LValue
EmitPointerToDataMemberBinaryExpr(
    const clang::BinaryOperator* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3996

Parameters

const clang::BinaryOperator* E

clang::CodeGen::Address EmitPointerWithAlignment(
    const clang::Expr* Addr,
    clang::CodeGen::LValueBaseInfo* BaseInfo =
        nullptr,
    clang::CodeGen::TBAAAccessInfo* TBAAInfo =
        nullptr)

Description

EmitPointerWithAlignment - Given an expression with a pointer type, emit the value and compute our best estimate of the alignment of the pointee. One reasonable way to use this information is when there's a language guarantee that the pointer must be aligned to some stricter value, and we're simply trying to ensure that sufficiently obvious uses of under- aligned objects don't get miscompiled; for example, a placement new into the address of a local variable. In such a case, it's quite reasonable to just ignore the returned alignment when it isn't from an explicit source.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4766

Parameters

const clang::Expr* Addr
clang::CodeGen::LValueBaseInfo* BaseInfo = nullptr
- If non-null, this will be initialized with information about the source of the alignment and the may-alias attribute. Note that this function will conservatively fall back on the type when it doesn't recognize the expression and may-alias will be set to false.
clang::CodeGen::TBAAAccessInfo* TBAAInfo = nullptr

clang::CodeGen::LValue EmitPredefinedLValue(
    const clang::PredefinedExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3909

Parameters

const clang::PredefinedExpr* E

clang::CodeGen::LValue EmitPseudoObjectLValue(
    const clang::PseudoObjectExpr* e)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3971

Parameters

const clang::PseudoObjectExpr* e

clang::CodeGen::RValue EmitPseudoObjectRValue(
    const clang::PseudoObjectExpr* e,
    clang::CodeGen::AggValueSlot slot =
        AggValueSlot::ignored())

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3969

Parameters

const clang::PseudoObjectExpr* e
clang::CodeGen::AggValueSlot slot = AggValueSlot::ignored()

llvm::Value* EmitRISCVBuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E,
    clang::CodeGen::ReturnValueSlot ReturnValue)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4253

Parameters

unsigned int BuiltinID
const clang::CallExpr* E
clang::CodeGen::ReturnValueSlot ReturnValue

clang::CodeGen::RValue EmitRValueForField(
    clang::CodeGen::LValue LV,
    const clang::FieldDecl* FD,
    clang::SourceLocation Loc)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3929

Parameters

clang::CodeGen::LValue LV
const clang::FieldDecl* FD
clang::SourceLocation Loc

clang::CodeGen::RValue EmitReferenceBindingToExpr(
    const clang::Expr* E)

Description

Emits a reference binding to the passed in expression.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4355

Parameters

const clang::Expr* E

llvm::DebugLoc EmitReturnBlock()

Description

Emit the unified return block, trying to avoid its emission when possible.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2234

Returns

The debug location of the user written return statement if the return block is is avoided.

void EmitReturnOfRValue(clang::CodeGen::RValue RV,
                        clang::QualType Ty)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4667

Parameters

clang::CodeGen::RValue RV
clang::QualType Ty

void EmitReturnStmt(const clang::ReturnStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3247

Parameters

const clang::ReturnStmt& S

void EmitReturnValueCheck(llvm::Value* RV)

Description

Emit a test that checks if the return value \p RV is nonnull.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2382

Parameters

llvm::Value* RV

llvm::CallInst* EmitRuntimeCall(
    llvm::FunctionCallee callee,
    const llvm::Twine& name = "")

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4028

Parameters

llvm::FunctionCallee callee
const llvm::Twine& name = ""

llvm::CallInst* EmitRuntimeCall(
    llvm::FunctionCallee callee,
    ArrayRef<llvm::Value*> args,
    const llvm::Twine& name = "")

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4030

Parameters

llvm::FunctionCallee callee
ArrayRef<llvm::Value*> args
const llvm::Twine& name = ""

llvm::CallBase* EmitRuntimeCallOrInvoke(
    llvm::FunctionCallee callee,
    const llvm::Twine& name = "")

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4048

Parameters

llvm::FunctionCallee callee
const llvm::Twine& name = ""

llvm::CallBase* EmitRuntimeCallOrInvoke(
    llvm::FunctionCallee callee,
    ArrayRef<llvm::Value*> args,
    const llvm::Twine& name = "")

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4045

Parameters

llvm::FunctionCallee callee
ArrayRef<llvm::Value*> args
const llvm::Twine& name = ""

llvm::Value* EmitSEHAbnormalTermination()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3302

llvm::Value* EmitSEHExceptionCode()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3300

void EmitSEHExceptionCodeSave(
    clang::CodeGen::CodeGenFunction& ParentCGF,
    llvm::Value* ParentFP,
    llvm::Value* EntryEBP)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3297

Parameters

clang::CodeGen::CodeGenFunction& ParentCGF
llvm::Value* ParentFP
llvm::Value* EntryEBP

llvm::Value* EmitSEHExceptionInfo()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3301

void EmitSEHLeaveStmt(
    const clang::SEHLeaveStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3280

Parameters

const clang::SEHLeaveStmt& S

void EmitSEHTryStmt(const clang::SEHTryStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3279

Parameters

const clang::SEHTryStmt& S

llvm::Value* EmitSVEAllTruePred(
    const clang::SVETypeFlags& TypeFlags)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4202

Parameters

const clang::SVETypeFlags& TypeFlags

llvm::Value* EmitSVEDupX(llvm::Value* Scalar,
                         llvm::Type* Ty)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4204

Parameters

llvm::Value* Scalar
llvm::Type* Ty

llvm::Value* EmitSVEDupX(llvm::Value* Scalar)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4203

Parameters

llvm::Value* Scalar

llvm::Value* EmitSVEGatherLoad(
    const clang::SVETypeFlags& TypeFlags,
    llvm::SmallVectorImpl<llvm::Value*>& Ops,
    unsigned int IntID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4214

Parameters

const clang::SVETypeFlags& TypeFlags
llvm::SmallVectorImpl<llvm::Value*>& Ops
unsigned int IntID

llvm::Value* EmitSVEGatherPrefetch(
    const clang::SVETypeFlags& TypeFlags,
    SmallVectorImpl<llvm::Value*>& Ops,
    unsigned int IntID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4229

Parameters

const clang::SVETypeFlags& TypeFlags
SmallVectorImpl<llvm::Value*>& Ops
unsigned int IntID

llvm::Value* EmitSVEMaskedLoad(
    const clang::CallExpr*,
    llvm::Type* ReturnTy,
    SmallVectorImpl<llvm::Value*>& Ops,
    unsigned int BuiltinID,
    bool IsZExtReturn)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4220

Parameters

const clang::CallExpr*
llvm::Type* ReturnTy
SmallVectorImpl<llvm::Value*>& Ops
unsigned int BuiltinID
bool IsZExtReturn

llvm::Value* EmitSVEMaskedStore(
    const clang::CallExpr*,
    SmallVectorImpl<llvm::Value*>& Ops,
    unsigned int BuiltinID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4223

Parameters

const clang::CallExpr*
SmallVectorImpl<llvm::Value*>& Ops
unsigned int BuiltinID

llvm::Value* EmitSVEMovl(
    const clang::SVETypeFlags& TypeFlags,
    llvm::ArrayRef<llvm::Value*> Ops,
    unsigned int BuiltinID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4209

Parameters

const clang::SVETypeFlags& TypeFlags
llvm::ArrayRef<llvm::Value*> Ops
unsigned int BuiltinID

llvm::Value* EmitSVEPMull(
    const clang::SVETypeFlags& TypeFlags,
    llvm::SmallVectorImpl<llvm::Value*>& Ops,
    unsigned int BuiltinID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4206

Parameters

const clang::SVETypeFlags& TypeFlags
llvm::SmallVectorImpl<llvm::Value*>& Ops
unsigned int BuiltinID

llvm::Value* EmitSVEPredicateCast(
    llvm::Value* Pred,
    llvm::ScalableVectorType* VTy)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4212

Parameters

llvm::Value* Pred
llvm::ScalableVectorType* VTy

llvm::Value* EmitSVEPrefetchLoad(
    const clang::SVETypeFlags& TypeFlags,
    SmallVectorImpl<llvm::Value*>& Ops,
    unsigned int BuiltinID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4226

Parameters

const clang::SVETypeFlags& TypeFlags
SmallVectorImpl<llvm::Value*>& Ops
unsigned int BuiltinID

llvm::Value* EmitSVEReinterpret(llvm::Value* Val,
                                llvm::Type* Ty)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4205

Parameters

llvm::Value* Val
llvm::Type* Ty

llvm::Value* EmitSVEScatterStore(
    const clang::SVETypeFlags& TypeFlags,
    llvm::SmallVectorImpl<llvm::Value*>& Ops,
    unsigned int IntID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4217

Parameters

const clang::SVETypeFlags& TypeFlags
llvm::SmallVectorImpl<llvm::Value*>& Ops
unsigned int IntID

llvm::Value* EmitSVEStructLoad(
    const clang::SVETypeFlags& TypeFlags,
    SmallVectorImpl<llvm::Value*>& Ops,
    unsigned int IntID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4232

Parameters

const clang::SVETypeFlags& TypeFlags
SmallVectorImpl<llvm::Value*>& Ops
unsigned int IntID

llvm::Value* EmitSVEStructStore(
    const clang::SVETypeFlags& TypeFlags,
    SmallVectorImpl<llvm::Value*>& Ops,
    unsigned int IntID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4235

Parameters

const clang::SVETypeFlags& TypeFlags
SmallVectorImpl<llvm::Value*>& Ops
unsigned int IntID

void EmitSanitizerStatReport(
    llvm::SanitizerStatKind SSK)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4775

Parameters

llvm::SanitizerStatKind SSK

clang::CodeGen::LValue
EmitScalarCompoundAssignWithComplex(
    const clang::CompoundAssignOperator* E,
    llvm::Value*& Result)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3896

Parameters

const clang::CompoundAssignOperator* E
llvm::Value*& Result

llvm::Value* EmitScalarConversion(
    llvm::Value* Src,
    clang::QualType SrcTy,
    clang::QualType DstTy,
    clang::SourceLocation Loc)

Description

Emit a conversion from the specified type to the specified destination type, both of which are LLVM scalar types.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4369

Parameters

llvm::Value* Src
clang::QualType SrcTy
clang::QualType DstTy
clang::SourceLocation Loc

llvm::Value* EmitScalarExpr(
    const clang::Expr* E,
    bool IgnoreResultAssign = false)

Description

EmitScalarExpr - Emit the computation of the specified expression of LLVM scalar type, returning the result.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4365

Parameters

const clang::Expr* E
bool IgnoreResultAssign = false

void EmitScalarInit(const clang::Expr* init,
                    const clang::ValueDecl* D,
                    clang::CodeGen::LValue lvalue,
                    bool capturedByInit)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3036

Parameters

const clang::Expr* init
const clang::ValueDecl* D
clang::CodeGen::LValue lvalue
bool capturedByInit

llvm::Value* EmitScalarPrePostIncDec(
    const clang::UnaryOperator* E,
    clang::CodeGen::LValue LV,
    bool isInc,
    bool isPre)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3010

Parameters

const clang::UnaryOperator* E
clang::CodeGen::LValue LV
bool isInc
bool isPre

bool EmitScalarRangeCheck(
    llvm::Value* Value,
    clang::QualType Ty,
    clang::SourceLocation Loc)

Description

Check if the scalar \p Value is within the valid range for the given type \p Ty. Returns true if a check is needed (even if the range is unknown).

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3821

Parameters

llvm::Value* Value
clang::QualType Ty
clang::SourceLocation Loc

void EmitSections(
    const clang::OMPExecutableDirective& S)

Description

Emit code for sections directive.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3730

Parameters

const clang::OMPExecutableDirective& S

void EmitSehCppScopeBegin()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2925

void EmitSehCppScopeEnd()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2926

void EmitSehTryScopeBegin()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2927

void EmitSehTryScopeEnd()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2928

clang::CodeGen::RValue EmitSimpleCallExpr(
    const clang::CallExpr* E,
    clang::CodeGen::ReturnValueSlot ReturnValue)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4022

Parameters

const clang::CallExpr* E
clang::CodeGen::ReturnValueSlot ReturnValue

void EmitSimpleOMPExecutableDirective(
    const clang::OMPExecutableDirective& D)

Description

Emit simple code for OpenMP directives in Simd-only mode.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3305

Parameters

const clang::OMPExecutableDirective& D

bool EmitSimpleStmt(
    const clang::Stmt* S,
    ArrayRef<const clang::Attr*> Attrs)

Description

EmitSimpleStmt - Try to emit a "simple" statement which does not necessarily require an insertion point or debug information; typically because the statement amounts to a jump or a container of other statements.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3223

Parameters

const clang::Stmt* S
ArrayRef<const clang::Attr*> Attrs

Returns

True if the statement was handled.

void EmitStartEHSpec(const clang::Decl* D)

Description

EmitStartEHSpec - Emit the start of the exception spec.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2385

Parameters

const clang::Decl* D

void EmitStaticVarDecl(
    const clang::VarDecl& D,
    llvm::GlobalValue::LinkageTypes Linkage)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3136

Parameters

const clang::VarDecl& D
llvm::GlobalValue::LinkageTypes Linkage

void EmitStmt(
    const clang::Stmt* S,
    ArrayRef<const clang::Attr*> Attrs = None)

Description

EmitStmt - Emit the code for the statement This function may clear the current insertion point; callers should use EnsureInsertPoint if they wish to subsequently generate code without first calling EmitBlock, EmitBranch, or EmitStmt.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3215

Parameters

const clang::Stmt* S
ArrayRef<const clang::Attr*> Attrs = None

clang::CodeGen::LValue EmitStmtExprLValue(
    const clang::StmtExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3995

Parameters

const clang::StmtExpr* E

void EmitStopPoint(const clang::Stmt* S)

Description

EmitStopPoint - Emit a debug stoppoint if we are emitting debug info.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3207

Parameters

const clang::Stmt* S

void EmitStoreOfComplex(
    clang::CodeGen::CodeGenFunction::ComplexPairTy
        V,
    clang::CodeGen::LValue dest,
    bool isInit)

Description

EmitStoreOfComplex - Store a complex number into the specified l-value.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4406

Parameters

clang::CodeGen::CodeGenFunction::ComplexPairTy V
clang::CodeGen::LValue dest
bool isInit

void EmitStoreOfScalar(
    llvm::Value* Value,
    clang::CodeGen::Address Addr,
    bool Volatile,
    clang::QualType Ty,
    clang::CodeGen::AlignmentSource Source =
        AlignmentSource::Type,
    bool isInit = false,
    bool isNontemporal = false)

Description

EmitStoreOfScalar - Store a scalar value to an address, taking care to appropriately convert from the memory representation to the LLVM value representation.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3849

Parameters

llvm::Value* Value
clang::CodeGen::Address Addr
bool Volatile
clang::QualType Ty
clang::CodeGen::AlignmentSource Source = AlignmentSource::Type
bool isInit = false
bool isNontemporal = false

void EmitStoreOfScalar(
    llvm::Value* Value,
    clang::CodeGen::Address Addr,
    bool Volatile,
    clang::QualType Ty,
    clang::CodeGen::LValueBaseInfo BaseInfo,
    clang::CodeGen::TBAAAccessInfo TBAAInfo,
    bool isInit = false,
    bool isNontemporal = false)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3857

Parameters

llvm::Value* Value
clang::CodeGen::Address Addr
bool Volatile
clang::QualType Ty
clang::CodeGen::LValueBaseInfo BaseInfo
clang::CodeGen::TBAAAccessInfo TBAAInfo
bool isInit = false
bool isNontemporal = false

void EmitStoreOfScalar(
    llvm::Value* value,
    clang::CodeGen::LValue lvalue,
    bool isInit = false)

Description

EmitStoreOfScalar - Store a scalar value to an address, taking care to appropriately convert from the memory representation to the LLVM value representation. The l-value must be a simple l-value. The isInit flag indicates whether this is an initialization. If so, atomic qualifiers are ignored and the store is always non-atomic.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3867

Parameters

llvm::Value* value
clang::CodeGen::LValue lvalue
bool isInit = false

void EmitStoreThroughBitfieldLValue(
    clang::CodeGen::RValue Src,
    clang::CodeGen::LValue Dst,
    llvm::Value** Result = nullptr)

Description

EmitStoreThroughBitfieldLValue - Store Src into Dst with same constraints as EmitStoreThroughLValue.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3890

Parameters

clang::CodeGen::RValue Src
clang::CodeGen::LValue Dst
llvm::Value** Result = nullptr
[out] - If non-null, this will be set to a Value* for the bit-field contents after the store, appropriate for use as the result of an assignment to the bit-field.

void EmitStoreThroughExtVectorComponentLValue(
    clang::CodeGen::RValue Src,
    clang::CodeGen::LValue Dst)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3881

Parameters

clang::CodeGen::RValue Src
clang::CodeGen::LValue Dst

void EmitStoreThroughGlobalRegLValue(
    clang::CodeGen::RValue Src,
    clang::CodeGen::LValue Dst)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3882

Parameters

clang::CodeGen::RValue Src
clang::CodeGen::LValue Dst

void EmitStoreThroughLValue(
    clang::CodeGen::RValue Src,
    clang::CodeGen::LValue Dst,
    bool isInit = false)

Description

EmitStoreThroughLValue - Store the specified rvalue into the specified lvalue, where both are guaranteed to the have the same type, and that type is 'Ty'.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3880

Parameters

clang::CodeGen::RValue Src
clang::CodeGen::LValue Dst
bool isInit = false

clang::CodeGen::LValue EmitStringLiteralLValue(
    const clang::StringLiteral* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3907

Parameters

const clang::StringLiteral* E

void EmitSwitchStmt(const clang::SwitchStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3251

Parameters

const clang::SwitchStmt& S

void EmitSynthesizedCXXCopyCtor(
    clang::CodeGen::Address Dest,
    clang::CodeGen::Address Src,
    const clang::Expr* Exp)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4487

Parameters

clang::CodeGen::Address Dest
clang::CodeGen::Address Src
const clang::Expr* Exp

void EmitSynthesizedCXXCopyCtorCall(
    const clang::CXXConstructorDecl* D,
    clang::CodeGen::Address This,
    clang::CodeGen::Address Src,
    const clang::CXXConstructExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2893

Parameters

const clang::CXXConstructorDecl* D
clang::CodeGen::Address This
clang::CodeGen::Address Src
const clang::CXXConstructExpr* E

llvm::Value* EmitSystemZBuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4248

Parameters

unsigned int BuiltinID
const clang::CallExpr* E

llvm::Value* EmitTargetBuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E,
    clang::CodeGen::ReturnValueSlot ReturnValue)

Description

EmitTargetBuiltinExpr - Emit the given builtin call. Returns 0 if the call is unhandled by the current target.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4145

Parameters

unsigned int BuiltinID
const clang::CallExpr* E
clang::CodeGen::ReturnValueSlot ReturnValue

llvm::Value* EmitToMemory(llvm::Value* Value,
                          clang::QualType Ty)

Description

EmitToMemory - Change a scalar value from its value representation to its in-memory representation.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3811

Parameters

llvm::Value* Value
clang::QualType Ty

llvm::CallInst* EmitTrapCall(
    llvm::Intrinsic::ID IntrID)

Description

Emit a call to trap or debugtrap and attach function attribute "trap-func-name" if specified.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4631

Parameters

llvm::Intrinsic::ID IntrID

void EmitTrapCheck(
    llvm::Value* Checked,
    clang::CodeGen::SanitizerHandler
        CheckHandlerID)

Description

Create a basic block that will call the trap intrinsic, and emit a conditional branch to it, for the -ftrapv checks.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4627

Parameters

llvm::Value* Checked
clang::CodeGen::SanitizerHandler CheckHandlerID

void EmitTypeCheck(
    clang::CodeGen::CodeGenFunction::TypeCheckKind
        TCK,
    clang::SourceLocation Loc,
    llvm::Value* V,
    clang::QualType Type,
    clang::CharUnits Alignment =
        CharUnits::Zero(),
    clang::SanitizerSet SkippedChecks =
        clang::SanitizerSet(),
    llvm::Value* ArraySize = nullptr)

Description

Emit a check that \p V is the address of storage of the appropriate size and alignment for an object of type \p Type (or if ArraySize is provided, for an array of that bound).

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2999

Parameters

clang::CodeGen::CodeGenFunction::TypeCheckKind TCK
clang::SourceLocation Loc
llvm::Value* V
clang::QualType Type
clang::CharUnits Alignment = CharUnits::Zero()
clang::SanitizerSet SkippedChecks = clang::SanitizerSet()
llvm::Value* ArraySize = nullptr

void EmitTypeMetadataCodeForVCall(
    const clang::CXXRecordDecl* RD,
    llvm::Value* VTable,
    clang::SourceLocation Loc)

Description

If whole-program virtual table optimization is enabled, emit an assumption that VTable is a member of RD's type identifier. Or, if vptr CFI is enabled, emit a check that VTable is a member of RD's type identifier.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2324

Parameters

const clang::CXXRecordDecl* RD
llvm::Value* VTable
clang::SourceLocation Loc

clang::CodeGen::LValue EmitUnaryOpLValue(
    const clang::UnaryOperator* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3910

Parameters

const clang::UnaryOperator* E

void EmitUnreachable(clang::SourceLocation Loc)

Description

Emit a reached-unreachable diagnostic if \p Loc is valid and runtime checking is enabled. Otherwise, just emit an unreachable instruction.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4623

Parameters

clang::SourceLocation Loc

clang::CodeGen::LValue EmitUnsupportedLValue(
    const clang::Expr* E,
    const char* Name)

Description

EmitUnsupportedLValue - Emit a dummy l-value using the type of E and issue an ErrorUnsupported style diagnostic (using the provided Name).

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3752

Parameters

const clang::Expr* E
const char* Name

clang::CodeGen::RValue EmitUnsupportedRValue(
    const clang::Expr* E,
    const char* Name)

Description

EmitUnsupportedRValue - Emit a dummy r-value using the type of E and issue an ErrorUnsupported style diagnostic (using the provided Name).

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3747

Parameters

const clang::Expr* E
const char* Name

clang::CodeGen::Address EmitVAArg(
    clang::VAArgExpr* VE,
    clang::CodeGen::Address& VAListAddr)

Description

Generate code to get an argument from the passed in pointer and update it accordingly.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2766

Parameters

clang::VAArgExpr* VE
The \c VAArgExpr for which to generate code.
clang::CodeGen::Address& VAListAddr
Receives a reference to the \c va_list as emitted by either \c EmitVAListRef or \c EmitMSVAListRef.

Returns

A pointer to the argument.

clang::CodeGen::LValue EmitVAArgExprLValue(
    const clang::VAArgExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3905

Parameters

const clang::VAArgExpr* E

clang::CodeGen::Address EmitVAListRef(
    const clang::Expr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2644

Parameters

const clang::Expr* E

llvm::Value* EmitVAStartEnd(llvm::Value* ArgValue,
                            bool IsStart)

Description

Emits a call to an LLVM variable-argument intrinsic, either\c llvm.va_start or \c llvm.va_end.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2756

Parameters

llvm::Value* ArgValue
A reference to the \c va_list as emitted by either\c EmitVAListRef or \c EmitMSVAListRef.
bool IsStart
If \c true, emits a call to \c llvm.va_start; otherwise, calls \c llvm.va_end.

void EmitVTableAssumptionLoad(
    const clang::CodeGen::CodeGenFunction::VPtr&
        vptr,
    clang::CodeGen::Address This)

Description

Emit assumption that vptr load == global vtable.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2891

Parameters

const clang::CodeGen::CodeGenFunction::VPtr& vptr
clang::CodeGen::Address This

void EmitVTableAssumptionLoads(
    const clang::CXXRecordDecl* ClassDecl,
    clang::CodeGen::Address This)

Description

Emit assumption load for all bases. Requires to be be called only on most-derived class and not under construction of the object.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2888

Parameters

const clang::CXXRecordDecl* ClassDecl
clang::CodeGen::Address This

void EmitVTablePtrCheck(
    const clang::CXXRecordDecl* RD,
    llvm::Value* VTable,
    clang::CodeGen::CodeGenFunction::
        CFITypeCheckKind TCK,
    clang::SourceLocation Loc)

Description

EmitVTablePtrCheck - Emit a check that VTable is a valid virtual table for RD using llvm.type.test.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2318

Parameters

const clang::CXXRecordDecl* RD
llvm::Value* VTable
clang::CodeGen::CodeGenFunction::CFITypeCheckKind TCK
clang::SourceLocation Loc

void EmitVTablePtrCheckForCall(
    const clang::CXXRecordDecl* RD,
    llvm::Value* VTable,
    clang::CodeGen::CodeGenFunction::
        CFITypeCheckKind TCK,
    clang::SourceLocation Loc)

Description

EmitVTablePtrCheckForCall - Virtual method MD is being called via VTable. If vptr CFI is enabled, emit a check that VTable is valid.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2313

Parameters

const clang::CXXRecordDecl* RD
llvm::Value* VTable
clang::CodeGen::CodeGenFunction::CFITypeCheckKind TCK
clang::SourceLocation Loc

void EmitVTablePtrCheckForCast(
    clang::QualType T,
    clang::CodeGen::Address Derived,
    bool MayBeNull,
    clang::CodeGen::CodeGenFunction::
        CFITypeCheckKind TCK,
    clang::SourceLocation Loc)

Description

Derived is the presumed address of an object of type T after a cast. If T is a polymorphic class type, emit a check that the virtual table for Derived belongs to a class derived from T.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2308

Parameters

clang::QualType T
clang::CodeGen::Address Derived
bool MayBeNull
clang::CodeGen::CodeGenFunction::CFITypeCheckKind TCK
clang::SourceLocation Loc

llvm::Value* EmitVTableTypeCheckedLoad(
    const clang::CXXRecordDecl* RD,
    llvm::Value* VTable,
    llvm::Type* VTableTy,
    uint64_t VTableByteOffset)

Description

Emit a type checked load from the given vtable.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2333

Parameters

const clang::CXXRecordDecl* RD
llvm::Value* VTable
llvm::Type* VTableTy
uint64_t VTableByteOffset

void EmitVarAnnotations(const clang::VarDecl* D,
                        llvm::Value* V)

Description

Emit local annotations for the local variable V, declared by D.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4505

Parameters

const clang::VarDecl* D
llvm::Value* V

void EmitVarDecl(const clang::VarDecl& D)

Description

EmitVarDecl - Emit a local variable declaration. This function can be called with a null (unreachable) insert point.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3034

Parameters

const clang::VarDecl& D

void EmitVariablyModifiedType(clang::QualType Ty)

Description

EmitVLASize - Capture all the sizes for the VLA expressions in the given variably-modified type and store them in the VLASizeMap. This function can be called with a null (unreachable) insert point.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2778

Parameters

clang::QualType Ty

llvm::Value* EmitWebAssemblyBuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4250

Parameters

unsigned int BuiltinID
const clang::CallExpr* E

void EmitWhileStmt(
    const clang::WhileStmt& S,
    ArrayRef<const clang::Attr*> Attrs = None)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3242

Parameters

const clang::WhileStmt& S
ArrayRef<const clang::Attr*> Attrs = None

llvm::Value* EmitX86BuiltinExpr(
    unsigned int BuiltinID,
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4245

Parameters

unsigned int BuiltinID
const clang::CallExpr* E

llvm::Value* EmitX86CpuInit()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4814

llvm::Value* EmitX86CpuIs(
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4809

Parameters

const clang::CallExpr* E

llvm::Value* EmitX86CpuIs(llvm::StringRef CPUStr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4810

Parameters

llvm::StringRef CPUStr

llvm::Value* EmitX86CpuSupports(uint64_t Mask)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4813

Parameters

uint64_t Mask

llvm::Value* EmitX86CpuSupports(
    ArrayRef<llvm::StringRef> FeatureStrs)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4812

Parameters

ArrayRef<llvm::StringRef> FeatureStrs

llvm::Value* EmitX86CpuSupports(
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4811

Parameters

const clang::CallExpr* E

void EnsureInsertPoint()

Description

EnsureInsertPoint - Ensure that an insertion point is defined so that emitted IR has a place to go. Note that by definition, if this function creates a block then that block is unreachable; callers may do better to detect when no insertion point is defined and simply skip IR generation.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2476

void EnterCXXTryStmt(const clang::CXXTryStmt& S,
                     bool IsFnTryBlock = false)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3275

Parameters

const clang::CXXTryStmt& S
bool IsFnTryBlock = false

void EnterDtorCleanups(
    const clang::CXXDestructorDecl* Dtor,
    clang::CXXDtorType Type)

Description

EnterDtorCleanups - Enter the cleanups necessary to complete the given phase of destruction for a destructor. The end result should call destructors on members and base classes in reverse order of their construction.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2342

Parameters

const clang::CXXDestructorDecl* Dtor
clang::CXXDtorType Type

void EnterSEHTryStmt(const clang::SEHTryStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3281

Parameters

const clang::SEHTryStmt& S

void ErrorUnsupported(const clang::Stmt* S,
                      const char* Type)

Description

ErrorUnsupported - Print out an error that codegen doesn't support the specified stmt yet.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2483

Parameters

const clang::Stmt* S
const char* Type

llvm::Value* EvaluateExprAsBool(
    const clang::Expr* E)

Description

EvaluateExprAsBool - Perform the usual unary conversions on the specified expression and compare the result against zero, returning an Int1Ty value.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2627

Parameters

const clang::Expr* E

void ExitCXXTryStmt(const clang::CXXTryStmt& S,
                    bool IsFnTryBlock = false)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3276

Parameters

const clang::CXXTryStmt& S
bool IsFnTryBlock = false

void ExitSEHTryStmt(const clang::SEHTryStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3282

Parameters

const clang::SEHTryStmt& S

void ExpandTypeFromArgs(
    clang::QualType Ty,
    clang::CodeGen::LValue Dst,
    llvm::Function::arg_iterator& AI)

Description

ExpandTypeFromArgs - Reconstruct a structure of type

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4684

Parameters

clang::QualType Ty
clang::CodeGen::LValue Dst
llvm::Function::arg_iterator& AI
- The first function argument of the expansion.

void ExpandTypeToArgs(
    clang::QualType Ty,
    clang::CodeGen::CallArg Arg,
    llvm::FunctionType* IRFuncTy,
    SmallVectorImpl<llvm::Value*>& IRCallArgs,
    unsigned int& IRCallArgPos)

Description

ExpandTypeToArgs - Expand an CallArg

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4690

Parameters

clang::QualType Ty
clang::CodeGen::CallArg Arg
llvm::FunctionType* IRFuncTy
SmallVectorImpl<llvm::Value*>& IRCallArgs
unsigned int& IRCallArgPos

void FinishFunction(clang::SourceLocation EndLoc =
                        clang::SourceLocation())

Description

FinishFunction - Complete IR generation of the current function. It is legal to call this function even if there is no current insertion point.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2238

Parameters

clang::SourceLocation EndLoc = clang::SourceLocation()

void FinishThunk()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2246

llvm::Value* FormResolverCondition(
    const clang::CodeGen::CodeGenFunction::
        MultiVersionResolverOption& RO)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4815

Parameters

const clang::CodeGen::CodeGenFunction:: MultiVersionResolverOption& RO

llvm::Function* GenerateBlockFunction(
    clang::GlobalDecl GD,
    const clang::CodeGen::CGBlockInfo& Info,
    const clang::CodeGen::CodeGenFunction::
        DeclMapTy& ldm,
    bool IsLambdaConversionToBlock,
    bool BuildGlobalBlock)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2132

Parameters

clang::GlobalDecl GD
const clang::CodeGen::CGBlockInfo& Info
const clang::CodeGen::CodeGenFunction::DeclMapTy& ldm
bool IsLambdaConversionToBlock
bool BuildGlobalBlock

void GenerateCXXGlobalCleanUpFunc(
    llvm::Function* Fn,
    ArrayRef<std::tuple<llvm::FunctionType*,
                        llvm::WeakTrackingVH,
                        llvm::Constant*>>
        DtorsOrStermFinalizers)

Description

GenerateCXXGlobalCleanUpFunc - Generates code for cleaning up global variables.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4474

Parameters

llvm::Function* Fn
ArrayRef<std::tuple<llvm::FunctionType*, llvm::WeakTrackingVH, llvm::Constant*>> DtorsOrStermFinalizers

void GenerateCXXGlobalInitFunc(
    llvm::Function* Fn,
    ArrayRef<llvm::Function*> CXXThreadLocals,
    clang::CodeGen::ConstantAddress Guard =
        ConstantAddress::invalid())

Description

GenerateCXXGlobalInitFunc - Generates code for initializing global variables.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4468

Parameters

llvm::Function* Fn
ArrayRef<llvm::Function*> CXXThreadLocals
clang::CodeGen::ConstantAddress Guard = ConstantAddress::invalid()

void GenerateCXXGlobalVarDeclInitFunc(
    llvm::Function* Fn,
    const clang::VarDecl* D,
    llvm::GlobalVariable* Addr,
    bool PerformInit)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4480

Parameters

llvm::Function* Fn
const clang::VarDecl* D
llvm::GlobalVariable* Addr
bool PerformInit

clang::CodeGen::Address
GenerateCapturedStmtArgument(
    const clang::CapturedStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3343

Parameters

const clang::CapturedStmt& S

llvm::Function* GenerateCapturedStmtFunction(
    const clang::CapturedStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3342

Parameters

const clang::CapturedStmt& S

void GenerateCode(
    clang::GlobalDecl GD,
    llvm::Function* Fn,
    const clang::CodeGen::CGFunctionInfo& FnInfo)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2194

Parameters

clang::GlobalDecl GD
llvm::Function* Fn
const clang::CodeGen::CGFunctionInfo& FnInfo

llvm::Constant* GenerateCopyHelperFunction(
    const clang::CodeGen::CGBlockInfo& blockInfo)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2141

Parameters

const clang::CodeGen::CGBlockInfo& blockInfo

llvm::Constant* GenerateDestroyHelperFunction(
    const clang::CodeGen::CGBlockInfo& blockInfo)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2142

Parameters

const clang::CodeGen::CGBlockInfo& blockInfo

llvm::Constant*
GenerateObjCAtomicGetterCopyHelperFunction(
    const clang::ObjCPropertyImplDecl* PID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2145

Parameters

const clang::ObjCPropertyImplDecl* PID

llvm::Constant*
GenerateObjCAtomicSetterCopyHelperFunction(
    const clang::ObjCPropertyImplDecl* PID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2143

Parameters

const clang::ObjCPropertyImplDecl* PID

void GenerateObjCCtorDtorMethod(
    clang::ObjCImplementationDecl* IMP,
    clang::ObjCMethodDecl* MD,
    bool ctor)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2111

Parameters

clang::ObjCImplementationDecl* IMP
clang::ObjCMethodDecl* MD
bool ctor

void GenerateObjCGetter(
    clang::ObjCImplementationDecl* IMP,
    const clang::ObjCPropertyImplDecl* PID)

Description

GenerateObjCGetter - Synthesize an Objective-C property getter function.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2104

Parameters

clang::ObjCImplementationDecl* IMP
const clang::ObjCPropertyImplDecl* PID

void GenerateObjCMethod(
    const clang::ObjCMethodDecl* OMD)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2099

Parameters

const clang::ObjCMethodDecl* OMD

void GenerateObjCSetter(
    clang::ObjCImplementationDecl* IMP,
    const clang::ObjCPropertyImplDecl* PID)

Description

GenerateObjCSetter - Synthesize an Objective-C property setter function for the given property.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2116

Parameters

clang::ObjCImplementationDecl* IMP
const clang::ObjCPropertyImplDecl* PID

llvm::Function*
GenerateOpenMPCapturedStmtFunction(
    const clang::CapturedStmt& S,
    clang::SourceLocation Loc)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3344

Parameters

const clang::CapturedStmt& S
clang::SourceLocation Loc

void GenerateOpenMPCapturedVars(
    const clang::CapturedStmt& S,
    SmallVectorImpl<llvm::Value*>& CapturedVars)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3346

Parameters

const clang::CapturedStmt& S
SmallVectorImpl<llvm::Value*>& CapturedVars

llvm::Function* GenerateSEHFilterFunction(
    clang::CodeGen::CodeGenFunction& ParentCGF,
    const clang::SEHExceptStmt& Except)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3291

Parameters

clang::CodeGen::CodeGenFunction& ParentCGF
const clang::SEHExceptStmt& Except

llvm::Function* GenerateSEHFinallyFunction(
    clang::CodeGen::CodeGenFunction& ParentCGF,
    const clang::SEHFinallyStmt& Finally)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3294

Parameters

clang::CodeGen::CodeGenFunction& ParentCGF
const clang::SEHFinallyStmt& Finally

llvm::Function* GenerateVarArgsThunk(
    llvm::Function* Fn,
    const clang::CodeGen::CGFunctionInfo& FnInfo,
    clang::GlobalDecl GD,
    const clang::ThunkInfo& Thunk)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2257

Parameters

llvm::Function* Fn
const clang::CodeGen::CGFunctionInfo& FnInfo
clang::GlobalDecl GD
const clang::ThunkInfo& Thunk

clang::CodeGen::Address GetAddrOfBlockDecl(
    const clang::VarDecl* var)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2179

Parameters

const clang::VarDecl* var

llvm::BlockAddress* GetAddrOfLabel(
    const clang::LabelDecl* L)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2739

Parameters

const clang::LabelDecl* L

clang::CodeGen::Address GetAddrOfLocalVar(
    const clang::VarDecl* VD)

Description

GetAddrOfLocalVar - Return the address of a local variable.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2717

Parameters

const clang::VarDecl* VD

clang::CodeGen::Address GetAddressOfBaseClass(
    clang::CodeGen::Address Value,
    const clang::CXXRecordDecl* Derived,
    CastExpr::path_const_iterator PathBegin,
    CastExpr::path_const_iterator PathEnd,
    bool NullCheckValue,
    clang::SourceLocation Loc)

Description

GetAddressOfBaseClass - This function will add the necessary delta to the load of 'this' and returns address of the base class.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2828

Parameters

clang::CodeGen::Address Value
const clang::CXXRecordDecl* Derived
CastExpr::path_const_iterator PathBegin
CastExpr::path_const_iterator PathEnd
bool NullCheckValue
clang::SourceLocation Loc

clang::CodeGen::Address GetAddressOfDerivedClass(
    clang::CodeGen::Address Value,
    const clang::CXXRecordDecl* Derived,
    CastExpr::path_const_iterator PathBegin,
    CastExpr::path_const_iterator PathEnd,
    bool NullCheckValue)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2834

Parameters

clang::CodeGen::Address Value
const clang::CXXRecordDecl* Derived
CastExpr::path_const_iterator PathBegin
CastExpr::path_const_iterator PathEnd
bool NullCheckValue

clang::CodeGen::Address
GetAddressOfDirectBaseInCompleteClass(
    clang::CodeGen::Address Value,
    const clang::CXXRecordDecl* Derived,
    const clang::CXXRecordDecl* Base,
    bool BaseIsVirtual)

Description

GetAddressOfBaseOfCompleteClass - Convert the given pointer to a complete class to the given direct base.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2819

Parameters

clang::CodeGen::Address Value
const clang::CXXRecordDecl* Derived
const clang::CXXRecordDecl* Base
bool BaseIsVirtual

llvm::BasicBlock* GetIndirectGotoBlock()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2740

clang::CodeGen::RValue GetUndefRValue(
    clang::QualType Ty)

Description

GetUndefRValue - Get an appropriate 'undef' rvalue for the given type.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3742

Parameters

clang::QualType Ty

llvm::Value* GetVTTParameter(clang::GlobalDecl GD,
                             bool ForVirtualBase,
                             bool Delegating)

Description

GetVTTParameter - Return the VTT parameter that should be passed to a base constructor/destructor with virtual bases. FIXME: VTTs are Itanium ABI-specific, so the definition should move to ItaniumCXXABI.cpp together with all the references to VTT.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2844

Parameters

clang::GlobalDecl GD
bool ForVirtualBase
bool Delegating

llvm::Value* GetVTablePtr(
    clang::CodeGen::Address This,
    llvm::Type* VTableTy,
    const clang::CXXRecordDecl* VTableClass)

Description

GetVTablePtr - Return the Value of the vtable pointer member pointed to by This.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2292

Parameters

clang::CodeGen::Address This
llvm::Type* VTableTy
const clang::CXXRecordDecl* VTableClass

llvm::Value* GetValueForARMHint(
    unsigned int BuiltinID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4808

Parameters

unsigned int BuiltinID

bool HaveInsertPoint() const

Description

HaveInsertPoint - True if an insertion point is defined. If not, this indicates that the current code being emitted is unreachable.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2468

clang::CodeGen::LValue InitCapturedStruct(
    const clang::CapturedStmt& S)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3340

Parameters

const clang::CapturedStmt& S

void InitializeVTablePointer(
    const clang::CodeGen::CodeGenFunction::VPtr&
        vptr)

Description

Initialize the vtable pointer of the given subobject.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2275

Parameters

const clang::CodeGen::CodeGenFunction::VPtr& vptr

void InitializeVTablePointers(
    const clang::CXXRecordDecl* ClassDecl)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2288

Parameters

const clang::CXXRecordDecl* ClassDecl

void InsertHelper(
    llvm::Instruction* I,
    const llvm::Twine& Name,
    llvm::BasicBlock* BB,
    llvm::BasicBlock::iterator InsertPt) const

Description

CGBuilder insert helper. This function is called after an instruction is created using Builder.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:314

Parameters

llvm::Instruction* I
const llvm::Twine& Name
llvm::BasicBlock* BB
llvm::BasicBlock::iterator InsertPt

static bool IsConstructorDelegationValid(
    const clang::CXXConstructorDecl* Ctor)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2212

Parameters

const clang::CXXConstructorDecl* Ctor

static bool IsWrappedCXXThis(const clang::Expr* E)

Description

Check if \p E is a C++ "this" pointer wrapped in value-preserving casts.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2743

Parameters

const clang::Expr* E

bool LValueIsSuitableForInlineAtomic(
    clang::CodeGen::LValue Src)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3783

Parameters

clang::CodeGen::LValue Src

clang::CodeGen::Address LoadBlockStruct()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2178

llvm::Value* LoadCXXThis()

Description

LoadCXXThis - Load the value of 'this'. This function is only valid while generating code for an C++ member function.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2801

clang::CodeGen::Address LoadCXXThisAddress()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2805

llvm::Value* LoadCXXVTT()

Description

LoadCXXVTT - Load the VTT parameter to base constructors/destructors have virtual bases.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2811

llvm::Value* LoadObjCSelf()

Description

LoadObjCSelf - Load the value of self. This function is only valid while generating code for an Objective-C method.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2410

llvm::Value* LoadPassedObjectSize(
    const clang::Expr* E,
    clang::QualType EltTy)

Description

If \p E references a parameter with pass_object_size info or a constant array size modifier, emit the object size divided by the size of \p EltTy. Otherwise return null.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4773

Parameters

const clang::Expr* E
clang::QualType EltTy

llvm::Function* LookupNeonLLVMIntrinsic(
    unsigned int IntrinsicID,
    unsigned int Modifier,
    llvm::Type* ArgTy,
    const clang::CallExpr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4176

Parameters

unsigned int IntrinsicID
unsigned int Modifier
llvm::Type* ArgTy
const clang::CallExpr* E

clang::CodeGen::LValue MakeAddrLValue(
    clang::CodeGen::Address Addr,
    clang::QualType T,
    clang::CodeGen::LValueBaseInfo BaseInfo,
    clang::CodeGen::TBAAAccessInfo TBAAInfo)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2495

Parameters

clang::CodeGen::Address Addr
clang::QualType T
clang::CodeGen::LValueBaseInfo BaseInfo
clang::CodeGen::TBAAAccessInfo TBAAInfo

clang::CodeGen::LValue MakeAddrLValue(
    clang::CodeGen::Address Addr,
    clang::QualType T,
    clang::CodeGen::AlignmentSource Source =
        AlignmentSource::Type)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2489

Parameters

clang::CodeGen::Address Addr
clang::QualType T
clang::CodeGen::AlignmentSource Source = AlignmentSource::Type

clang::CodeGen::LValue MakeAddrLValue(
    llvm::Value* V,
    clang::QualType T,
    clang::CharUnits Alignment,
    clang::CodeGen::AlignmentSource Source =
        AlignmentSource::Type)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2500

Parameters

llvm::Value* V
clang::QualType T
clang::CharUnits Alignment
clang::CodeGen::AlignmentSource Source = AlignmentSource::Type

clang::CodeGen::LValue MakeAddrLValueWithoutTBAA(
    clang::CodeGen::Address Addr,
    clang::QualType T,
    clang::CodeGen::AlignmentSource Source =
        AlignmentSource::Type)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2508

Parameters

clang::CodeGen::Address Addr
clang::QualType T
clang::CodeGen::AlignmentSource Source = AlignmentSource::Type

clang::CodeGen::LValue MakeNaturalAlignAddrLValue(
    llvm::Value* V,
    clang::QualType T)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2515

Parameters

llvm::Value* V
clang::QualType T

clang::CodeGen::LValue
MakeNaturalAlignPointeeAddrLValue(
    llvm::Value* V,
    clang::QualType T)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2514

Parameters

llvm::Value* V
clang::QualType T

void PopCleanupBlock(
    bool FallThroughIsBranchThrough = false)

Description

PopCleanupBlock - Will pop the cleanup entry on the stack and process all branch fixups.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:847

Parameters

bool FallThroughIsBranchThrough = false

void PopCleanupBlocks(
    EHScopeStack::stable_iterator
        OldCleanupStackSize,
    std::initializer_list<llvm::Value**>
        ValuesToReload = {})

Description

Takes the old cleanup stack size and emits the cleanup blocks that have been added.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1134

Parameters

EHScopeStack::stable_iterator OldCleanupStackSize
std::initializer_list<llvm::Value**> ValuesToReload = {}

void PopCleanupBlocks(
    EHScopeStack::stable_iterator
        OldCleanupStackSize,
    size_t OldLifetimeExtendedStackSize,
    std::initializer_list<llvm::Value**>
        ValuesToReload = {})

Description

Takes the old cleanup stack size and emits the cleanup blocks that have been added, then adds all lifetime-extended cleanups from the given position to the stack.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1141

Parameters

EHScopeStack::stable_iterator OldCleanupStackSize
size_t OldLifetimeExtendedStackSize
std::initializer_list<llvm::Value**> ValuesToReload = {}

bool ProcessOrderScopeAMDGCN(
    llvm::Value* Order,
    llvm::Value* Scope,
    llvm::AtomicOrdering& AO,
    llvm::SyncScope::ID& SSID)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4255

Parameters

llvm::Value* Order
llvm::Value* Scope
llvm::AtomicOrdering& AO
llvm::SyncScope::ID& SSID

void PushDestructorCleanup(
    clang::QualType T,
    clang::CodeGen::Address Addr)

Description

PushDestructorCleanup - Push a cleanup to call the complete-object destructor of an object of the given type at the given address. Does nothing if T is not a C++ class type with a non-trivial destructor.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:837

Parameters

clang::QualType T
clang::CodeGen::Address Addr

void PushDestructorCleanup(
    const clang::CXXDestructorDecl* Dtor,
    clang::QualType T,
    clang::CodeGen::Address Addr)

Description

PushDestructorCleanup - Push a cleanup to call the complete-object variant of the given destructor on the object at the given address.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:842

Parameters

const clang::CXXDestructorDecl* Dtor
clang::QualType T
clang::CodeGen::Address Addr

void ResolveBranchFixups(llvm::BasicBlock* Target)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1145

Parameters

llvm::BasicBlock* Target

llvm::Type* SVEBuiltinMemEltTy(
    const clang::SVETypeFlags& TypeFlags)

Description

SVEBuiltinMemEltTy - Returns the memory element type for this memory access builtin. Only required if it can't be inferred from the base pointer operand.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4194

Parameters

const clang::SVETypeFlags& TypeFlags

void SetFPAccuracy(llvm::Value* Val,
                   float Accuracy)

Description

SetFPAccuracy - Set the minimum required accuracy of the given floating point operation, expressed as the maximum relative error in ulp.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4655

Parameters

llvm::Value* Val
float Accuracy

void SetFastMathFlags(clang::FPOptions FPFeatures)

Description

Set the codegen fast-math flags.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4658

Parameters

clang::FPOptions FPFeatures

bool ShouldEmitVTableTypeCheckedLoad(
    const clang::CXXRecordDecl* RD)

Description

Returns whether we should perform a type checked load when loading a virtual function for virtual calls to members of RD. This is generally true when both vcall CFI and whole-program-vtables are enabled.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2330

Parameters

const clang::CXXRecordDecl* RD

bool ShouldInstrumentFunction()

Description

ShouldInstrumentFunction - Return true if the current function should be instrumented with __cyg_profile_func_* calls

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2346

static bool ShouldNullCheckClassCastValue(
    const clang::CastExpr* Cast)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2824

Parameters

const clang::CastExpr* Cast

bool ShouldSkipSanitizerInstrumentation()

Description

ShouldSkipSanitizerInstrumentation - Return true if the current function should not be instrumented with sanitizers.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2350

bool ShouldXRayInstrumentFunction() const

Description

ShouldXRayInstrument - Return true if the current function should be instrumented with XRay nop sleds.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2354

void SimplifyForwardingBlocks(
    llvm::BasicBlock* BB)

Description

SimplifyForwardingBlocks - If the given basic block is only a branch to another basic block, simplify it. This assumes that no other code could potentially reference the basic block.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2440

Parameters

llvm::BasicBlock* BB

llvm::DebugLoc SourceLocToDebugLoc(
    clang::SourceLocation Location)

Description

Converts Location to a DebugLoc, if debug information is enabled.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3016

Parameters

clang::SourceLocation Location

void StartFunction(
    clang::GlobalDecl GD,
    clang::QualType RetTy,
    llvm::Function* Fn,
    const clang::CodeGen::CGFunctionInfo& FnInfo,
    const clang::CodeGen::FunctionArgList& Args,
    clang::SourceLocation Loc =
        clang::SourceLocation(),
    clang::SourceLocation StartLoc =
        clang::SourceLocation())

Description

Emit code for the start of a function.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2204

Parameters

clang::GlobalDecl GD
clang::QualType RetTy
llvm::Function* Fn
const clang::CodeGen::CGFunctionInfo& FnInfo
const clang::CodeGen::FunctionArgList& Args
clang::SourceLocation Loc = clang::SourceLocation()
The location to be associated with the function.
clang::SourceLocation StartLoc = clang::SourceLocation()
The location of the function body.

void StartObjCMethod(
    const clang::ObjCMethodDecl* MD,
    const clang::ObjCContainerDecl* CD)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2101

Parameters

const clang::ObjCMethodDecl* MD
const clang::ObjCContainerDecl* CD

void StartThunk(
    llvm::Function* Fn,
    clang::GlobalDecl GD,
    const clang::CodeGen::CGFunctionInfo& FnInfo,
    bool IsUnprototyped)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2240

Parameters

llvm::Function* Fn
clang::GlobalDecl GD
const clang::CodeGen::CGFunctionInfo& FnInfo
bool IsUnprototyped

clang::QualType TypeOfSelfObject()

Description

TypeOfSelfObject - Return type of object that this self represents.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2413

void VolatilizeTryBlocks(
    llvm::BasicBlock* BB,
    llvm::SmallPtrSet<llvm::BasicBlock*, 10>& V)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3283

Parameters

llvm::BasicBlock* BB
llvm::SmallPtrSet<llvm::BasicBlock*, 10>& V

clang::CodeGen::BlockByrefHelpers*
buildByrefHelpers(
    llvm::StructType& byrefType,
    const clang::CodeGen::CodeGenFunction::
        AutoVarEmission& emission)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4803

Parameters

llvm::StructType& byrefType
const clang::CodeGen::CodeGenFunction:: AutoVarEmission& emission

void callCStructCopyAssignmentOperator(
    clang::CodeGen::LValue Dst,
    clang::CodeGen::LValue Src)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4081

Parameters

clang::CodeGen::LValue Dst
clang::CodeGen::LValue Src

void callCStructCopyConstructor(
    clang::CodeGen::LValue Dst,
    clang::CodeGen::LValue Src)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4079

Parameters

clang::CodeGen::LValue Dst
clang::CodeGen::LValue Src

void callCStructDefaultConstructor(
    clang::CodeGen::LValue Dst)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4077

Parameters

clang::CodeGen::LValue Dst

void callCStructDestructor(
    clang::CodeGen::LValue Dst)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4078

Parameters

clang::CodeGen::LValue Dst

void callCStructMoveAssignmentOperator(
    clang::CodeGen::LValue Dst,
    clang::CodeGen::LValue Src)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4082

Parameters

clang::CodeGen::LValue Dst
clang::CodeGen::LValue Src

void callCStructMoveConstructor(
    clang::CodeGen::LValue Dst,
    clang::CodeGen::LValue Src)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4080

Parameters

clang::CodeGen::LValue Dst
clang::CodeGen::LValue Src

bool checkIfFunctionMustProgress()

Description

Returns true if a function must make progress, which means the mustprogress attribute can be added.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:567

bool checkIfLoopMustProgress(bool HasConstantCond)

Description

Returns true if a loop must make progress, which means the mustprogress attribute can be added. \p HasConstantCond indicates whether the branch condition is a known constant.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:586

Parameters

bool HasConstantCond

void checkTargetFeatures(
    clang::SourceLocation Loc,
    const clang::FunctionDecl* TargetDecl)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4026

Parameters

clang::SourceLocation Loc
const clang::FunctionDecl* TargetDecl

void checkTargetFeatures(
    const clang::CallExpr* E,
    const clang::FunctionDecl* TargetDecl)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4025

Parameters

const clang::CallExpr* E
const clang::FunctionDecl* TargetDecl

static bool containsBreak(const clang::Stmt* S)

Description

containsBreak - Return true if the statement contains a break out of it. If the statement (recursively) contains a switch or loop with a break inside of it, this is fine.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4523

Parameters

const clang::Stmt* S

clang::CodeGen::RValue convertTempToRValue(
    clang::CodeGen::Address addr,
    clang::QualType type,
    clang::SourceLocation Loc)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3778

Parameters

clang::CodeGen::Address addr
clang::QualType type
clang::SourceLocation Loc

llvm::Function* createAtExitStub(
    const clang::VarDecl& VD,
    llvm::FunctionCallee Dtor,
    llvm::Constant* Addr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4430

Parameters

const clang::VarDecl& VD
llvm::FunctionCallee Dtor
llvm::Constant* Addr

llvm::BasicBlock* createBasicBlock(
    const llvm::Twine& name = "",
    llvm::Function* parent = nullptr,
    llvm::BasicBlock* before = nullptr)

Description

createBasicBlock - Create an LLVM basic block.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2427

Parameters

const llvm::Twine& name = ""
llvm::Function* parent = nullptr
llvm::BasicBlock* before = nullptr

clang::CodeGen::Address createCleanupActiveFlag()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:831

llvm::MDNode* createProfileWeights(
    uint64_t TrueCount,
    uint64_t FalseCount) const

Description

Calculate branch weights appropriate for PGO data

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1519

Parameters

uint64_t TrueCount
uint64_t FalseCount

llvm::MDNode* createProfileWeights(
    ArrayRef<uint64_t> Weights) const

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1521

Parameters

ArrayRef<uint64_t> Weights

llvm::MDNode* createProfileWeightsForLoop(
    const clang::Stmt* Cond,
    uint64_t LoopCount) const

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1522

Parameters

const clang::Stmt* Cond
uint64_t LoopCount

llvm::Function* createTLSAtExitStub(
    const clang::VarDecl& VD,
    llvm::FunctionCallee Dtor,
    llvm::Constant* Addr,
    llvm::FunctionCallee& AtExit)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4433

Parameters

const clang::VarDecl& VD
llvm::FunctionCallee Dtor
llvm::Constant* Addr
llvm::FunctionCallee& AtExit

bool currentFunctionUsesSEHTry() const

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2023

static bool cxxDestructorCanThrow(
    clang::QualType T)

Description

Check if \p T is a C++ class that has a destructor that can throw.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2139

Parameters

clang::QualType T

void defaultInitNonTrivialCStructVar(
    clang::CodeGen::LValue Dst)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4076

Parameters

clang::CodeGen::LValue Dst

void deferPlaceholderReplacement(
    llvm::Instruction* Old,
    llvm::Value* New)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4669

Parameters

llvm::Instruction* Old
llvm::Value* New

static void destroyARCStrongImprecise(
    clang::CodeGen::CodeGenFunction&,
    clang::CodeGen::Address,
    clang::QualType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4342

Parameters

clang::CodeGen::CodeGenFunction&
clang::CodeGen::Address
clang::QualType

static void destroyARCStrongPrecise(
    clang::CodeGen::CodeGenFunction&,
    clang::CodeGen::Address,
    clang::QualType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4343

Parameters

clang::CodeGen::CodeGenFunction&
clang::CodeGen::Address
clang::QualType

static void destroyARCWeak(
    clang::CodeGen::CodeGenFunction&,
    clang::CodeGen::Address,
    clang::QualType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4344

Parameters

clang::CodeGen::CodeGenFunction&
clang::CodeGen::Address
clang::QualType

static void destroyCXXObject(
    clang::CodeGen::CodeGenFunction&,
    clang::CodeGen::Address,
    clang::QualType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2911

Parameters

clang::CodeGen::CodeGenFunction&
clang::CodeGen::Address
clang::QualType

static void destroyNonTrivialCStruct(
    clang::CodeGen::CodeGenFunction&,
    clang::CodeGen::Address,
    clang::QualType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4346

Parameters

clang::CodeGen::CodeGenFunction&
clang::CodeGen::Address
clang::QualType

void disableDebugInfo()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1989

void emitARCCopyAssignWeak(
    clang::QualType Ty,
    clang::CodeGen::Address DstAddr,
    clang::CodeGen::Address SrcAddr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4288

Parameters

clang::QualType Ty
clang::CodeGen::Address DstAddr
clang::CodeGen::Address SrcAddr

static void emitARCIntrinsicUse(
    clang::CodeGen::CodeGenFunction&,
    clang::CodeGen::Address,
    clang::QualType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4345

Parameters

clang::CodeGen::CodeGenFunction&
clang::CodeGen::Address
clang::QualType

void emitARCMoveAssignWeak(
    clang::QualType Ty,
    clang::CodeGen::Address DstAddr,
    clang::CodeGen::Address SrcAddr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4289

Parameters

clang::QualType Ty
clang::CodeGen::Address DstAddr
clang::CodeGen::Address SrcAddr

clang::CodeGen::Address emitAddrOfImagComponent(
    clang::CodeGen::Address complex,
    clang::QualType complexType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4412

Parameters

clang::CodeGen::Address complex
clang::QualType complexType

clang::CodeGen::Address emitAddrOfRealComponent(
    clang::CodeGen::Address complex,
    clang::QualType complexType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4411

Parameters

clang::CodeGen::Address complex
clang::QualType complexType

void emitAlignmentAssumption(
    llvm::Value* PtrValue,
    clang::QualType Ty,
    clang::SourceLocation Loc,
    clang::SourceLocation AssumptionLoc,
    llvm::Value* Alignment,
    llvm::Value* OffsetValue = nullptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3192

Parameters

llvm::Value* PtrValue
clang::QualType Ty
clang::SourceLocation Loc
clang::SourceLocation AssumptionLoc
llvm::Value* Alignment
llvm::Value* OffsetValue = nullptr

void emitAlignmentAssumption(
    llvm::Value* PtrValue,
    const clang::Expr* E,
    clang::SourceLocation AssumptionLoc,
    llvm::Value* Alignment,
    llvm::Value* OffsetValue = nullptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3197

Parameters

llvm::Value* PtrValue
const clang::Expr* E
clang::SourceLocation AssumptionLoc
llvm::Value* Alignment
llvm::Value* OffsetValue = nullptr

void emitAlignmentAssumptionCheck(
    llvm::Value* Ptr,
    clang::QualType Ty,
    clang::SourceLocation Loc,
    clang::SourceLocation AssumptionLoc,
    llvm::Value* Alignment,
    llvm::Value* OffsetValue,
    llvm::Value* TheCheck,
    llvm::Instruction* Assumption)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3184

Parameters

llvm::Value* Ptr
clang::QualType Ty
clang::SourceLocation Loc
clang::SourceLocation AssumptionLoc
llvm::Value* Alignment
llvm::Value* OffsetValue
llvm::Value* TheCheck
llvm::Instruction* Assumption

void emitArrayDestroy(
    llvm::Value* begin,
    llvm::Value* end,
    clang::QualType elementType,
    clang::CharUnits elementAlign,
    clang::CodeGen::CodeGenFunction::Destroyer*
        destroyer,
    bool checkZeroLength,
    bool useEHCleanup)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2067

Parameters

llvm::Value* begin
llvm::Value* end
clang::QualType elementType
clang::CharUnits elementAlign
clang::CodeGen::CodeGenFunction::Destroyer* destroyer
bool checkZeroLength
bool useEHCleanup

llvm::Value* emitArrayLength(
    const clang::ArrayType* arrayType,
    clang::QualType& baseType,
    clang::CodeGen::Address& addr)

Description

emitArrayLength - Compute the length of an array, even if it's a VLA, and drill down to the base element type.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2770

Parameters

const clang::ArrayType* arrayType
clang::QualType& baseType
clang::CodeGen::Address& addr

void emitAutoVarTypeCleanup(
    const clang::CodeGen::CodeGenFunction::
        AutoVarEmission& emission,
    QualType::DestructionKind dtorKind)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3124

Parameters

const clang::CodeGen::CodeGenFunction:: AutoVarEmission& emission
QualType::DestructionKind dtorKind

clang::CodeGen::Address emitBlockByrefAddress(
    clang::CodeGen::Address baseAddr,
    const clang::CodeGen::BlockByrefInfo& info,
    bool followForward,
    const llvm::Twine& name)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2185

Parameters

clang::CodeGen::Address baseAddr
const clang::CodeGen::BlockByrefInfo& info
bool followForward
const llvm::Twine& name

clang::CodeGen::Address emitBlockByrefAddress(
    clang::CodeGen::Address baseAddr,
    const clang::VarDecl* V,
    bool followForward = true)

Description

BuildBlockByrefAddress - Computes the location of the data in a variable which is declared as __block.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2183

Parameters

clang::CodeGen::Address baseAddr
const clang::VarDecl* V
bool followForward = true

llvm::Value* emitBoolVecConversion(
    llvm::Value* SrcVec,
    unsigned int NumElementsDst,
    const llvm::Twine& Name = "")

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4661

Parameters

llvm::Value* SrcVec
unsigned int NumElementsDst
const llvm::Twine& Name = ""

clang::CodeGen::RValue emitBuiltinOSLogFormat(
    const clang::CallExpr& E)

Description

Emit IR for __builtin_os_log_format.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4130

Parameters

const clang::CallExpr& E

llvm::Value* emitBuiltinObjectSize(
    const clang::Expr* E,
    unsigned int Type,
    llvm::IntegerType* ResType,
    llvm::Value* EmittedE,
    bool IsDynamic)

Description

Emits the size of E, as required by __builtin_object_size. This function is aware of pass_object_size parameters, and will act accordingly if E is a parameter with the pass_object_size attribute.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4716

Parameters

const clang::Expr* E
unsigned int Type
llvm::IntegerType* ResType
llvm::Value* EmittedE
bool IsDynamic

void emitByrefStructureInit(
    const clang::CodeGen::CodeGenFunction::
        AutoVarEmission& emission)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2154

Parameters

const clang::CodeGen::CodeGenFunction:: AutoVarEmission& emission

llvm::Value* emitCondLikelihoodViaExpectIntrinsic(
    llvm::Value* Cond,
    Stmt::Likelihood LH)

Description

Lower the Likelihood knowledge about the \p Cond via llvm.expect intrin.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1513

Parameters

llvm::Value* Cond
Stmt::Likelihood LH

void emitDestroy(
    clang::CodeGen::Address addr,
    clang::QualType type,
    clang::CodeGen::CodeGenFunction::Destroyer*
        destroyer,
    bool useEHCleanupForArray)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2061

Parameters

clang::CodeGen::Address addr
clang::QualType type
clang::CodeGen::CodeGenFunction::Destroyer* destroyer
bool useEHCleanupForArray

void emitImplicitAssignmentOperatorBody(
    clang::CodeGen::FunctionArgList& Args)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2216

Parameters

clang::CodeGen::FunctionArgList& Args

void emitOMPSimpleStore(
    clang::CodeGen::LValue LVal,
    clang::CodeGen::RValue RVal,
    clang::QualType RValTy,
    clang::SourceLocation Loc)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3348

Parameters

clang::CodeGen::LValue LVal
clang::CodeGen::RValue RVal
clang::QualType RValTy
clang::SourceLocation Loc

clang::CodeGen::RValue emitRotate(
    const clang::CallExpr* E,
    bool IsRotateRight)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4127

Parameters

const clang::CallExpr* E
bool IsRotateRight

llvm::Value* emitScalarConstant(
    const clang::CodeGen::CodeGenFunction::
        ConstantEmission& Constant,
    clang::Expr* E)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3967

Parameters

const clang::CodeGen::CodeGenFunction:: ConstantEmission& Constant
clang::Expr* E

void emitZeroOrPatternForAutoVarInit(
    clang::QualType type,
    const clang::VarDecl& D,
    clang::CodeGen::Address Loc)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4721

Parameters

clang::QualType type
const clang::VarDecl& D
clang::CodeGen::Address Loc

void enableDebugInfo()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1990

void enterByrefCleanup(
    clang::CodeGen::CleanupKind Kind,
    clang::CodeGen::Address Addr,
    clang::CodeGen::BlockFieldFlags Flags,
    bool LoadBlockVarAddr,
    bool CanThrow)

Description

Enter a cleanup to destroy a __block variable. Note that this cleanup should be a no-op if the variable hasn't left the stack yet; if a cleanup is required for the variable itself, that needs to be done externally.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2172

Parameters

clang::CodeGen::CleanupKind Kind
Cleanup kind.
clang::CodeGen::Address Addr
When \p LoadBlockVarAddr is false, the address of the __block structure that will be passed to _Block_object_dispose. When\p LoadBlockVarAddr is true, the address of the field of the block structure that holds the address of the __block structure.
clang::CodeGen::BlockFieldFlags Flags
The flag that will be passed to _Block_object_dispose.
bool LoadBlockVarAddr
Indicates whether we need to emit a load from\p Addr to get the address of the __block structure.
bool CanThrow

llvm::Value* evaluateOrEmitBuiltinObjectSize(
    const clang::Expr* E,
    unsigned int Type,
    llvm::IntegerType* ResType,
    llvm::Value* EmittedE,
    bool IsDynamic)

Description

Attempts to statically evaluate the object size of E. If that fails, emits code to figure the size of E out for us. This is pass_object_size aware. If EmittedExpr is non-null, this will use that instead of re-emitting E.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4708

Parameters

const clang::Expr* E
unsigned int Type
llvm::IntegerType* ResType
llvm::Value* EmittedE
bool IsDynamic

llvm::Function*
generateBuiltinOSLogHelperFunction(
    const analyze_os_log::OSLogBufferLayout&
        Layout,
    clang::CharUnits BufferAlignment)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4137

Parameters

const analyze_os_log::OSLogBufferLayout& Layout
clang::CharUnits BufferAlignment

llvm::Function* generateDestroyHelper(
    clang::CodeGen::Address addr,
    clang::QualType type,
    clang::CodeGen::CodeGenFunction::Destroyer*
        destroyer,
    bool useEHCleanupForArray,
    const clang::VarDecl* VD)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2063

Parameters

clang::CodeGen::Address addr
clang::QualType type
clang::CodeGen::CodeGenFunction::Destroyer* destroyer
bool useEHCleanupForArray
const clang::VarDecl* VD

void generateObjCGetterBody(
    const clang::ObjCImplementationDecl*
        classImpl,
    const clang::ObjCPropertyImplDecl* propImpl,
    const clang::ObjCMethodDecl* GetterMothodDecl,
    llvm::Constant* AtomicHelperFn)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2106

Parameters

const clang::ObjCImplementationDecl* classImpl
const clang::ObjCPropertyImplDecl* propImpl
const clang::ObjCMethodDecl* GetterMothodDecl
llvm::Constant* AtomicHelperFn

void generateObjCSetterBody(
    const clang::ObjCImplementationDecl*
        classImpl,
    const clang::ObjCPropertyImplDecl* propImpl,
    llvm::Constant* AtomicHelperFn)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2118

Parameters

const clang::ObjCImplementationDecl* classImpl
const clang::ObjCPropertyImplDecl* propImpl
llvm::Constant* AtomicHelperFn

void generateThunk(
    llvm::Function* Fn,
    const clang::CodeGen::CGFunctionInfo& FnInfo,
    clang::GlobalDecl GD,
    const clang::ThunkInfo& Thunk,
    bool IsUnprototyped)

Description

Generate a thunk for the given method.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2253

Parameters

llvm::Function* Fn
const clang::CodeGen::CGFunctionInfo& FnInfo
clang::GlobalDecl GD
const clang::ThunkInfo& Thunk
bool IsUnprototyped

clang::CodeGen::CleanupKind getARCCleanupKind()

Description

Retrieves the default cleanup kind for an ARC cleanup. Except under -fobjc-arc-eh, ARC cleanups are normal-only.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4277

static unsigned int getAccessedFieldNo(
    unsigned int Idx,
    const llvm::Constant* Elts)

Description

getAccessedFieldNo - Given an encoded value and a result number, return the input field number being accessed.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2737

Parameters

unsigned int Idx
const llvm::Constant* Elts

llvm::Value* getArrayInitIndex()

Description

Get the index of the current ArrayInitLoopExpr, if any.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2733

const clang::CodeGen::BlockByrefInfo&
getBlockByrefInfo(const clang::VarDecl* var)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2190

Parameters

const clang::VarDecl* var

SmallVector<llvm::OperandBundleDef, 1>
getBundlesForFunclet(llvm::Value* Callee)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4040

Parameters

llvm::Value* Callee

clang::CodeGen::CleanupKind getCleanupKind(
    QualType::DestructionKind kind)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2091

Parameters

QualType::DestructionKind kind

clang::ASTContext& getContext() const

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1983

uint64_t getCurrentProfileCount()

Description

Get the profiler's current count. This is generally the count for the most recently incremented counter.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1547

clang::CodeGen::CGDebugInfo* getDebugInfo()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1984

unsigned int getDebugInfoFIndex(
    const clang::RecordDecl* Rec,
    unsigned int FieldIndex)

Description

Get the record field index as represented in debug info.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3019

Parameters

const clang::RecordDecl* Rec
unsigned int FieldIndex

clang::CodeGen::CodeGenFunction::Destroyer*
getDestroyer(
    QualType::DestructionKind destructionKind)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2072

Parameters

QualType::DestructionKind destructionKind

llvm::BasicBlock* getEHDispatchBlock(
    EHScopeStack::stable_iterator scope)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1179

Parameters

EHScopeStack::stable_iterator scope

llvm::BasicBlock* getEHResumeBlock(bool isCleanup)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1178

Parameters

bool isCleanup

clang::CodeGen::Address getEHSelectorSlot()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2001

llvm::Type* getEltType(
    const clang::SVETypeFlags& TypeFlags)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4199

Parameters

const clang::SVETypeFlags& TypeFlags

static clang::CodeGen::TypeEvaluationKind
getEvaluationKind(clang::QualType T)

Description

getEvaluationKind - Return the TypeEvaluationKind of QualType \c T.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2416

Parameters

clang::QualType T

llvm::Value* getExceptionFromSlot()

Description

Returns the contents of the function's exception object and selector slots.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2005

clang::CodeGen::Address getExceptionSlot()

Description

Returns a pointer to the function's exception object and selector slot, which is assigned in every landing pad.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2000

llvm::BasicBlock* getFuncletEHDispatchBlock(
    EHScopeStack::stable_iterator scope)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1181

Parameters

EHScopeStack::stable_iterator scope

llvm::BasicBlock* getInvokeDest()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2018

llvm::BasicBlock* getInvokeDestImpl()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:681

clang::CodeGen::CodeGenFunction::JumpDest
getJumpDestForLabel(const clang::LabelDecl* S)

Description

getBasicBlockForLabel - Return the LLVM basicblock that the specified label maps to.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2435

Parameters

const clang::LabelDecl* S

clang::CodeGen::CodeGenFunction::JumpDest
getJumpDestInCurrentScope(
    llvm::BasicBlock* Target)

Description

The given basic block lies in the current EH scope, but may be a target of a potentially scope-crossing jump; get a stable handle to which we can perform this jump later.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1150

Parameters

llvm::BasicBlock* Target

clang::CodeGen::CodeGenFunction::JumpDest
getJumpDestInCurrentScope(
    llvm::StringRef Name = llvm::StringRef())

Description

The given basic block lies in the current EH scope, but may be a target of a potentially scope-crossing jump; get a stable handle to which we can perform this jump later.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1159

Parameters

llvm::StringRef Name = llvm::StringRef()

llvm::LLVMContext& getLLVMContext()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2026

const clang::LangOptions& getLangOpts() const

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1996

static std::string
getNonTrivialCopyConstructorStr(
    clang::QualType QT,
    clang::CharUnits Alignment,
    bool IsVolatile,
    clang::ASTContext& Ctx)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4063

Parameters

clang::QualType QT
clang::CharUnits Alignment
bool IsVolatile
clang::ASTContext& Ctx

static std::string getNonTrivialDestructorStr(
    clang::QualType QT,
    clang::CharUnits Alignment,
    bool IsVolatile,
    clang::ASTContext& Ctx)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4069

Parameters

clang::QualType QT
clang::CharUnits Alignment
bool IsVolatile
clang::ASTContext& Ctx

clang::CodeGen::Address getNormalCleanupDestSlot()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2008

clang::CodeGen::CodeGenFunction::JumpDest
getOMPCancelDestination(
    clang::OpenMPDirectiveKind Kind)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3648

Parameters

clang::OpenMPDirectiveKind Kind

clang::CodeGen::LValue
getOrCreateOpaqueLValueMapping(
    const clang::OpaqueValueExpr* e)

Description

Given an opaque value expression, return its LValue mapping if it exists, otherwise create one.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2726

Parameters

const clang::OpaqueValueExpr* e

clang::CodeGen::RValue
getOrCreateOpaqueRValueMapping(
    const clang::OpaqueValueExpr* e)

Description

Given an opaque value expression, return its RValue mapping if it exists, otherwise create one.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2730

Parameters

const clang::OpaqueValueExpr* e

AggValueSlot::Overlap_t getOverlapForBaseInit(
    const clang::CXXRecordDecl* RD,
    const clang::CXXRecordDecl* BaseRD,
    bool IsVirtual)

Description

Determine whether a base class initialization may overlap some other object.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2690

Parameters

const clang::CXXRecordDecl* RD
const clang::CXXRecordDecl* BaseRD
bool IsVirtual

AggValueSlot::Overlap_t getOverlapForFieldInit(
    const clang::FieldDecl* FD)

Description

Determine whether a field initialization may overlap some other object.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2686

Parameters

const clang::FieldDecl* FD

AggValueSlot::Overlap_t getOverlapForReturnValue()

Description

Determine whether a return value slot may overlap some other object.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2678

llvm::Instruction* getPostAllocaInsertPoint()

Description

Return PostAllocaInsertPt. If it is not yet created, then insert it immediately after AllocaInsertPt.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:391

uint64_t getProfileCount(const clang::Stmt* S)

Description

Get the profiler's count for the given statement.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1536

Parameters

const clang::Stmt* S

llvm::MDNode* getRangeForLoadFromType(
    clang::QualType Ty)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4666

Parameters

clang::QualType Ty

SmallVector<llvm::Type*, 2> getSVEOverloadTypes(
    const clang::SVETypeFlags& TypeFlags,
    llvm::Type* ReturnType,
    ArrayRef<llvm::Value*> Ops)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4197

Parameters

const clang::SVETypeFlags& TypeFlags
llvm::Type* ReturnType
ArrayRef<llvm::Value*> Ops

llvm::ScalableVectorType* getSVEPredType(
    const clang::SVETypeFlags& TypeFlags)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4201

Parameters

const clang::SVETypeFlags& TypeFlags

llvm::ScalableVectorType* getSVEType(
    const clang::SVETypeFlags& TypeFlags)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4200

Parameters

const clang::SVETypeFlags& TypeFlags

llvm::Value* getSelectorFromSlot()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2006

const clang::TargetInfo& getTarget() const

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2025

const clang::CodeGen::TargetCodeGenInfo&
getTargetHooks() const

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2027

llvm::BasicBlock* getTerminateFunclet()

Description

getTerminateLandingPad - Return a cleanup funclet that just calls terminate.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2395

llvm::BasicBlock* getTerminateHandler()

Description

getTerminateHandler - Return a handler (not a landing pad, just a catch handler) that just calls terminate. This is used when a terminate scope encloses a try.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2400

llvm::BasicBlock* getTerminateLandingPad()

Description

getTerminateLandingPad - Return a landing pad that just calls terminate.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2391

llvm::Value* getTypeSize(clang::QualType Ty)

Description

Returns calculated size of the specified type.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3339

Parameters

clang::QualType Ty

clang::CodeGen::CodeGenTypes& getTypes() const

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1982

llvm::BasicBlock* getUnreachableBlock()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2010

clang::CodeGen::CodeGenFunction::VlaSizePair
getVLAElements1D(
    const clang::VariableArrayType* vla)

Description

Return the number of elements for a single dimension for the given array type.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2789

Parameters

const clang::VariableArrayType* vla

clang::CodeGen::CodeGenFunction::VlaSizePair
getVLAElements1D(clang::QualType vla)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2790

Parameters

clang::QualType vla

clang::CodeGen::CodeGenFunction::VlaSizePair
getVLASize(clang::QualType vla)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2797

Parameters

clang::QualType vla

clang::CodeGen::CodeGenFunction::VlaSizePair
getVLASize(const clang::VariableArrayType* vla)

Description

Returns an LLVM value that corresponds to the size, in non-variably-sized elements, of a variable length array type, plus that largest non-variably-sized element type. Assumes that the type has already been emitted with EmitVariablyModifiedType.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2796

Parameters

const clang::VariableArrayType* vla

void getVTablePointers(
    clang::BaseSubobject Base,
    const clang::CXXRecordDecl* NearestVBase,
    clang::CharUnits OffsetFromNearestVBase,
    bool BaseIsNonVirtualPrimaryBase,
    const clang::CXXRecordDecl* VTableClass,
    clang::CodeGen::CodeGenFunction::
        VisitedVirtualBasesSetTy& VBases,
    clang::CodeGen::CodeGenFunction::VPtrsVector&
        vptrs)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2282

Parameters

clang::BaseSubobject Base
const clang::CXXRecordDecl* NearestVBase
clang::CharUnits OffsetFromNearestVBase
bool BaseIsNonVirtualPrimaryBase
const clang::CXXRecordDecl* VTableClass
clang::CodeGen::CodeGenFunction:: VisitedVirtualBasesSetTy& VBases
clang::CodeGen::CodeGenFunction::VPtrsVector& vptrs

clang::CodeGen::CodeGenFunction::VPtrsVector
getVTablePointers(
    const clang::CXXRecordDecl* VTableClass)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2280

Parameters

const clang::CXXRecordDecl* VTableClass

clang::QualType getVarArgType(
    const clang::Expr* Arg)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4799

Parameters

const clang::Expr* Arg

static bool hasAggregateEvaluationKind(
    clang::QualType T)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2422

Parameters

clang::QualType T

bool hasLabelBeenSeenInCurrentScope() const

Description

Return true if a label was seen in the current scope.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:367

static bool hasScalarEvaluationKind(
    clang::QualType T)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2418

Parameters

clang::QualType T

bool hasVolatileMember(clang::QualType T)

Description

hasVolatileMember - returns true if aggregate type has a volatile member.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2669

Parameters

clang::QualType T

void incrementProfileCounter(
    const clang::Stmt* S,
    llvm::Value* StepV = nullptr)

Description

Increment the profiler's counter for the given statement by \p StepV. If \p StepV is null, the default increment is 1.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1528

Parameters

const clang::Stmt* S
llvm::Value* StepV = nullptr

void initFullExprCleanup()

Description

Set up the last cleanup that was pushed as a conditional full-expression cleanup.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:826

void initFullExprCleanupWithFlag(
    clang::CodeGen::Address ActiveFlag)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:830

Parameters

clang::CodeGen::Address ActiveFlag

bool isCleanupPadScope() const

Description

Returns true while emitting a cleanuppad.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:762

bool isCoroutine() const

Declared at: clang/lib/CodeGen/CodeGenFunction.h:340

bool isInConditionalBranch() const

Description

isInConditionalBranch - Return true if we're currently emitting one branch or the other of a conditional expression.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1212

static bool isInstrumentedCondition(
    const clang::Expr* C)

Description

isInstrumentedCondition - Determine whether the given condition is an instrumentable condition (i.e. no "&&" or "||").

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4543

Parameters

const clang::Expr* C

static bool isNullPointerAllowed(
    clang::CodeGen::CodeGenFunction::TypeCheckKind
        TCK)

Description

Determine whether the pointer type check \p TCK permits null pointers.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2987

Parameters

clang::CodeGen::CodeGenFunction::TypeCheckKind TCK

bool isObviouslyBranchWithoutCleanups(
    clang::CodeGen::CodeGenFunction::JumpDest
        Dest) const

Description

isObviouslyBranchWithoutCleanups - Return true if a branch to the specified destination obviously has no cleanups to run. 'false' is always a conservatively correct answer for this method.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1171

Parameters

clang::CodeGen::CodeGenFunction::JumpDest Dest

bool isSEHTryScope() const

Description

Returns true inside SEH __try blocks.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:759

bool isTrivialInitializer(const clang::Expr* Init)

Description

Determine whether the given initializer is trivial in the sense that it requires no code to be generated.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3044

Parameters

const clang::Expr* Init

static bool isVptrCheckRequired(
    clang::CodeGen::CodeGenFunction::TypeCheckKind
        TCK,
    clang::QualType Ty)

Description

Determine whether the pointer type check \p TCK requires a vptr check.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2990

Parameters

clang::CodeGen::CodeGenFunction::TypeCheckKind TCK
clang::QualType Ty

void markAsIgnoreThreadCheckingAtRuntime(
    llvm::Function* Fn)

Description

Annotate the function with an attribute that disables TSan checking at runtime.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2199

Parameters

llvm::Function* Fn

static bool mightAddDeclToScope(
    const clang::Stmt* S)

Description

Determine if the given statement might introduce a declaration into the current scope, by being a (possibly-labelled) DeclStmt.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4527

Parameters

const clang::Stmt* S

bool needsEHCleanup(
    QualType::DestructionKind kind)

Description

Determines whether an EH cleanup is required to destroy a type with the given destruction kind.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2076

Parameters

QualType::DestructionKind kind

void popCatchScope()

Description

popCatchScope - Pops the catch scope at the top of the EHScope stack, emitting any required code (other than the catch handlers themselves).

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1176

void processInReduction(
    const clang::OMPExecutableDirective& S,
    clang::CodeGen::OMPTaskDataTy& Data,
    clang::CodeGen::CodeGenFunction& CGF,
    const clang::CapturedStmt* CS,
    clang::CodeGen::CodeGenFunction::
        OMPPrivateScope& Scope)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3498

Parameters

const clang::OMPExecutableDirective& S
clang::CodeGen::OMPTaskDataTy& Data
clang::CodeGen::CodeGenFunction& CGF
const clang::CapturedStmt* CS
clang::CodeGen::CodeGenFunction::OMPPrivateScope& Scope

clang::CodeGen::CodeGenFunction::
    PeepholeProtection
    protectFromPeepholes(
        clang::CodeGen::RValue rvalue)

Description

protectFromPeepholes - Protect a value that we're intending to store to the side, but which will probably be used later, from aggressive peepholing optimizations that might delete it. Pass the result to unprotectFromPeepholes to declare that protection is no longer required. There's no particular reason why this shouldn't apply to l-values, it's just that no existing peepholes work on pointers.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3181

Parameters

clang::CodeGen::RValue rvalue

void pushCallObjectDeleteCleanup(
    const clang::FunctionDecl* OperatorDelete,
    llvm::Value* CompletePtr,
    clang::QualType ElementType)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2057

Parameters

const clang::FunctionDecl* OperatorDelete
llvm::Value* CompletePtr
clang::QualType ElementType

template <class T, class... As>
void pushCleanupAfterFullExpr(
    clang::CodeGen::CleanupKind Kind,
    As... A)

Description

Queue a cleanup to be pushed after finishing the current full-expression, potentially with an active flag.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:788

Templates

T
As

Parameters

clang::CodeGen::CleanupKind Kind
As... A

template <class T, class... As>
void pushCleanupAfterFullExprWithActiveFlag(
    clang::CodeGen::CleanupKind Kind,
    clang::CodeGen::Address ActiveFlag,
    As... A)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:805

Templates

T
As

Parameters

clang::CodeGen::CleanupKind Kind
clang::CodeGen::Address ActiveFlag
As... A

void pushDestroy(
    QualType::DestructionKind dtorKind,
    clang::CodeGen::Address addr,
    clang::QualType type)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2048

Parameters

QualType::DestructionKind dtorKind
clang::CodeGen::Address addr
clang::QualType type

void pushDestroy(
    clang::CodeGen::CleanupKind kind,
    clang::CodeGen::Address addr,
    clang::QualType type,
    clang::CodeGen::CodeGenFunction::Destroyer*
        destroyer,
    bool useEHCleanupForArray)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2052

Parameters

clang::CodeGen::CleanupKind kind
clang::CodeGen::Address addr
clang::QualType type
clang::CodeGen::CodeGenFunction::Destroyer* destroyer
bool useEHCleanupForArray

void pushEHDestroy(
    QualType::DestructionKind dtorKind,
    clang::CodeGen::Address addr,
    clang::QualType type)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2050

Parameters

QualType::DestructionKind dtorKind
clang::CodeGen::Address addr
clang::QualType type

template <class T, class... As>
void pushFullExprCleanup(
    clang::CodeGen::CleanupKind kind,
    As... A)

Description

pushFullExprCleanup - Push a cleanup to be run at the end of the current full-expression. Safe against the possibility that we're currently inside a conditionally-evaluated expression.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:770

Templates

T
As

Parameters

clang::CodeGen::CleanupKind kind
As... A

void pushIrregularPartialArrayCleanup(
    llvm::Value* arrayBegin,
    clang::CodeGen::Address arrayEndPointer,
    clang::QualType elementType,
    clang::CharUnits elementAlignment,
    clang::CodeGen::CodeGenFunction::Destroyer*
        destroyer)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2037

Parameters

llvm::Value* arrayBegin
clang::CodeGen::Address arrayEndPointer
clang::QualType elementType
clang::CharUnits elementAlignment
clang::CodeGen::CodeGenFunction::Destroyer* destroyer

void pushLifetimeExtendedDestroy(
    clang::CodeGen::CleanupKind kind,
    clang::CodeGen::Address addr,
    clang::QualType type,
    clang::CodeGen::CodeGenFunction::Destroyer*
        destroyer,
    bool useEHCleanupForArray)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2054

Parameters

clang::CodeGen::CleanupKind kind
clang::CodeGen::Address addr
clang::QualType type
clang::CodeGen::CodeGenFunction::Destroyer* destroyer
bool useEHCleanupForArray

void pushRegularPartialArrayCleanup(
    llvm::Value* arrayBegin,
    llvm::Value* arrayEnd,
    clang::QualType elementType,
    clang::CharUnits elementAlignment,
    clang::CodeGen::CodeGenFunction::Destroyer*
        destroyer)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2042

Parameters

llvm::Value* arrayBegin
llvm::Value* arrayEnd
clang::QualType elementType
clang::CharUnits elementAlignment
clang::CodeGen::CodeGenFunction::Destroyer* destroyer

void pushSEHCleanup(
    clang::CodeGen::CleanupKind kind,
    llvm::Function* FinallyFunc)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3286

Parameters

clang::CodeGen::CleanupKind kind
llvm::Function* FinallyFunc

void pushStackRestore(
    clang::CodeGen::CleanupKind kind,
    clang::CodeGen::Address SPMem)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2060

Parameters

clang::CodeGen::CleanupKind kind
clang::CodeGen::Address SPMem

clang::CodeGen::Address recoverAddrOfEscapedLocal(
    clang::CodeGen::CodeGenFunction& ParentCGF,
    clang::CodeGen::Address ParentVar,
    llvm::Value* ParentFP)

Description

Recovers the address of a local in a parent function. ParentVar is the address of the variable used in the immediate parent function. It can either be an alloca or a call to llvm.localrecover if there are nested outlined functions. ParentFP is the frame pointer of the outermost parent frame.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3318

Parameters

clang::CodeGen::CodeGenFunction& ParentCGF
clang::CodeGen::Address ParentVar
llvm::Value* ParentFP

void registerGlobalDtorWithAtExit(
    llvm::Constant* dtorStub)

Description

Call atexit() with function dtorStub.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4444

Parameters

llvm::Constant* dtorStub

void registerGlobalDtorWithAtExit(
    const clang::VarDecl& D,
    llvm::FunctionCallee fn,
    llvm::Constant* addr)

Description

Call atexit() with a function that passes the given argument to the given function.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4440

Parameters

const clang::VarDecl& D
llvm::FunctionCallee fn
llvm::Constant* addr

bool requiresReturnValueCheck() const

Description

Check if the return value of this function requires sanitization.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1957

bool requiresReturnValueNullabilityCheck() const

Description

Check if -fsanitize=nullability-return instrumentation is required for this function.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1948

bool sanitizePerformTypeCheck() const

Description

Whether any type-checking sanitizers are enabled. If \c false, calls to EmitTypeCheck can be skipped.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2994

template <class T>
typename DominatingValue<T>::saved_type
saveValueInCond(T value)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:710

Templates

T

Parameters

T value

void setAddrOfLocalVar(
    const clang::VarDecl* VD,
    clang::CodeGen::Address Addr)

Description

Set the address of a local variable.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4675

Parameters

const clang::VarDecl* VD
clang::CodeGen::Address Addr

void setBeforeOutermostConditional(
    llvm::Value* value,
    clang::CodeGen::Address addr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1214

Parameters

llvm::Value* value
clang::CodeGen::Address addr

void setBlockContextParameter(
    const clang::ImplicitParamDecl* D,
    unsigned int argNum,
    llvm::Value* ptr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:2175

Parameters

const clang::ImplicitParamDecl* D
unsigned int argNum
llvm::Value* ptr

void setCurrentProfileCount(uint64_t Count)

Description

Set the profiler's current count.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1541

Parameters

uint64_t Count

bool shouldUseFusedARCCalls()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1992

void startOutlinedSEHHelper(
    clang::CodeGen::CodeGenFunction& ParentCGF,
    bool IsFilter,
    const clang::Stmt* OutlinedStmt)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3288

Parameters

clang::CodeGen::CodeGenFunction& ParentCGF
bool IsFilter
const clang::Stmt* OutlinedStmt

clang::CodeGen::CodeGenFunction::ConstantEmission
tryEmitAsConstant(const clang::MemberExpr* ME)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3966

Parameters

const clang::MemberExpr* ME

clang::CodeGen::CodeGenFunction::ConstantEmission
tryEmitAsConstant(clang::DeclRefExpr* refExpr)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3965

Parameters

clang::DeclRefExpr* refExpr

void unprotectFromPeepholes(
    clang::CodeGen::CodeGenFunction::
        PeepholeProtection protection)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:3182

Parameters

clang::CodeGen::CodeGenFunction:: PeepholeProtection protection

llvm::Value* unregisterGlobalDtorWithUnAtExit(
    llvm::Constant* dtorStub)

Description

Call unatexit() with function dtorStub.

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4447

Parameters

llvm::Constant* dtorStub

llvm::Value* vectorWrapScalar16(llvm::Value* Op)

Declared at: clang/lib/CodeGen/CodeGenFunction.h:4190

Parameters

llvm::Value* Op

~CodeGenFunction()

Declared at: clang/lib/CodeGen/CodeGenFunction.h:1980