clang 20.0.0git
|
CodeGenFunction - This class organizes the per-function state that is used while generating LLVM code. More...
#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CodeGen/CodeGenFunction.h"
Classes | |
class | AbstractCallee |
An abstract representation of regular/ObjC call/message targets. More... | |
struct | AllocaTrackerRAII |
class | ArrayInitLoopExprScope |
The scope of an ArrayInitLoopExpr. More... | |
class | AutoVarEmission |
struct | AwaitSuspendWrapperInfo |
class | CallLifetimeEnd |
class | CGCapturedStmtInfo |
API for captured statement code generation. More... | |
class | CGCapturedStmtRAII |
RAII for correct setting/restoring of CapturedStmtInfo. More... | |
struct | CGCoroInfo |
class | CGFPOptionsRAII |
struct | CleanupDeactivationScope |
class | ConditionalEvaluation |
An object to manage conditionally-evaluated expressions. More... | |
class | ConstantEmission |
struct | CXXDefaultArgExprScope |
class | CXXDefaultInitExprScope |
The scope of a CXXDefaultInitExpr. More... | |
struct | DeferredDeactivateCleanup |
class | FieldConstructionScope |
A scope within which we are constructing the fields of an object which might use a CXXDefaultInitExpr. More... | |
class | FinallyInfo |
A class controlling the emission of a finally block. More... | |
class | InlinedInheritingConstructorScope |
struct | JumpDest |
A jump destination is an abstract label, branching to which may require a jump out through normal cleanups. More... | |
class | LexicalScope |
struct | LifetimeExtendedCleanupHeader |
Header for data within LifetimeExtendedCleanupStack. More... | |
struct | MultiVersionResolverOption |
struct | OMPBuilderCBHelpers |
class | OMPCancelStackRAII |
Controls insertion of cancellation exit blocks in worksharing constructs. More... | |
class | OMPLocalDeclMapRAII |
Save/restore original map of previously emitted local vars in case when we need to duplicate emission of the same code several times in the same function for OpenMP code. More... | |
class | OMPMapVars |
The class used to assign some variables some temporarily addresses. More... | |
class | OMPPrivateScope |
The scope used to remap some variables as private in the OpenMP loop body (or other captured region emitted without outlining), and to restore old vars back on exit. More... | |
struct | OMPTargetDataInfo |
class | OpaqueValueMapping |
An RAII object to set (and then clear) a mapping for an OpaqueValueExpr. More... | |
class | OpaqueValueMappingData |
A non-RAII class containing all the information about a bound opaque value. More... | |
class | ParamValue |
class | ParentLoopDirectiveForScanRegion |
Manages parent directive for scan directives. More... | |
class | PeepholeProtection |
An object which temporarily prevents a value from being destroyed by aggressive peephole optimizations that assume that all uses of a value have been realized in the IR. More... | |
struct | PrototypeWrapper |
class | RunCleanupsScope |
Enters a new scope for capturing cleanups, all of which will be executed once the scope is exited. More... | |
class | SanitizerScope |
RAII object to set/unset CodeGenFunction::IsSanitizerScope. More... | |
class | StmtExprEvaluation |
An RAII object to record that we're evaluating a statement expression. More... | |
struct | VlaSizePair |
struct | VPtr |
Struct with all information about dynamic [sub]class needed to set vptr. More... | |
Public Member Functions | |
void | InsertHelper (llvm::Instruction *I, const llvm::Twine &Name, llvm::BasicBlock::iterator InsertPt) const |
CGBuilder insert helper. | |
bool | isCoroutine () const |
bool | inSuspendBlock () const |
llvm::Function * | generateAwaitSuspendWrapper (Twine const &CoroName, Twine const &SuspendPointName, CoroutineSuspendExpr const &S) |
bool | hasLabelBeenSeenInCurrentScope () const |
Return true if a label was seen in the current scope. | |
llvm::Instruction * | getPostAllocaInsertPoint () |
Return PostAllocaInsertPt. | |
bool | checkIfFunctionMustProgress () |
Returns true if a function must make progress, which means the mustprogress attribute can be added. | |
bool | checkIfLoopMustProgress (const Expr *, bool HasEmptyBody) |
Returns true if a loop must make progress, which means the mustprogress attribute can be added. | |
llvm::BasicBlock * | EmitLandingPad () |
Emits a landing pad for the current EH stack. | |
llvm::BasicBlock * | getInvokeDestImpl () |
template<class T > | |
DominatingValue< T >::saved_type | saveValueInCond (T value) |
bool | isSEHTryScope () const |
Returns true inside SEH __try blocks. | |
bool | isCleanupPadScope () const |
Returns true while emitting a cleanuppad. | |
template<class T , class... As> | |
void | pushFullExprCleanup (CleanupKind kind, As... A) |
pushFullExprCleanup - Push a cleanup to be run at the end of the current full-expression. | |
template<class T , class... As> | |
void | pushCleanupAfterFullExpr (CleanupKind Kind, As... A) |
Queue a cleanup to be pushed after finishing the current full-expression, potentially with an active flag. | |
template<class T , class... As> | |
void | pushCleanupAfterFullExprWithActiveFlag (CleanupKind Kind, RawAddress ActiveFlag, As... A) |
template<class T , class... As> | |
void | pushCleanupAndDeferDeactivation (CleanupKind Kind, As... A) |
void | initFullExprCleanup () |
Set up the last cleanup that was pushed as a conditional full-expression cleanup. | |
void | initFullExprCleanupWithFlag (RawAddress ActiveFlag) |
RawAddress | createCleanupActiveFlag () |
void | PushDestructorCleanup (QualType T, Address Addr) |
PushDestructorCleanup - Push a cleanup to call the complete-object destructor of an object of the given type at the given address. | |
void | PushDestructorCleanup (const CXXDestructorDecl *Dtor, QualType T, Address Addr) |
PushDestructorCleanup - Push a cleanup to call the complete-object variant of the given destructor on the object at the given address. | |
void | PopCleanupBlock (bool FallThroughIsBranchThrough=false, bool ForDeactivation=false) |
PopCleanupBlock - Will pop the cleanup entry on the stack and process all branch fixups. | |
void | DeactivateCleanupBlock (EHScopeStack::stable_iterator Cleanup, llvm::Instruction *DominatingIP) |
DeactivateCleanupBlock - Deactivates the given cleanup block. | |
void | ActivateCleanupBlock (EHScopeStack::stable_iterator Cleanup, llvm::Instruction *DominatingIP) |
ActivateCleanupBlock - Activates an initially-inactive cleanup. | |
void | PopCleanupBlocks (EHScopeStack::stable_iterator OldCleanupStackSize, std::initializer_list< llvm::Value ** > ValuesToReload={}) |
Takes the old cleanup stack size and emits the cleanup blocks that have been added. | |
void | PopCleanupBlocks (EHScopeStack::stable_iterator OldCleanupStackSize, size_t OldLifetimeExtendedStackSize, std::initializer_list< llvm::Value ** > ValuesToReload={}) |
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. | |
void | ResolveBranchFixups (llvm::BasicBlock *Target) |
JumpDest | getJumpDestInCurrentScope (llvm::BasicBlock *Target) |
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. | |
JumpDest | getJumpDestInCurrentScope (StringRef Name=StringRef()) |
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. | |
void | EmitBranchThroughCleanup (JumpDest Dest) |
EmitBranchThroughCleanup - Emit a branch from the current insert block through the normal cleanup handling code (if any) and then on to. | |
bool | isObviouslyBranchWithoutCleanups (JumpDest Dest) const |
isObviouslyBranchWithoutCleanups - Return true if a branch to the specified destination obviously has no cleanups to run. | |
void | popCatchScope () |
popCatchScope - Pops the catch scope at the top of the EHScope stack, emitting any required code (other than the catch handlers themselves). | |
llvm::BasicBlock * | getEHResumeBlock (bool isCleanup) |
llvm::BasicBlock * | getEHDispatchBlock (EHScopeStack::stable_iterator scope) |
llvm::BasicBlock * | getFuncletEHDispatchBlock (EHScopeStack::stable_iterator scope) |
bool | isInConditionalBranch () const |
isInConditionalBranch - Return true if we're currently emitting one branch or the other of a conditional expression. | |
void | setBeforeOutermostConditional (llvm::Value *value, Address addr, CodeGenFunction &CGF) |
void | incrementProfileCounter (const Stmt *S, llvm::Value *StepV=nullptr) |
Increment the profiler's counter for the given statement by StepV . | |
bool | isMCDCCoverageEnabled () const |
void | maybeCreateMCDCCondBitmap () |
Allocate a temp value on the stack that MCDC can use to track condition results. | |
bool | isBinaryLogicalOp (const Expr *E) const |
void | maybeResetMCDCCondBitmap (const Expr *E) |
Zero-init the MCDC temp value. | |
void | maybeUpdateMCDCTestVectorBitmap (const Expr *E) |
Increment the profiler's counter for the given expression by StepV . | |
void | maybeUpdateMCDCCondBitmap (const Expr *E, llvm::Value *Val) |
Update the MCDC temp value with the condition's evaluated result. | |
uint64_t | getProfileCount (const Stmt *S) |
Get the profiler's count for the given statement. | |
void | setCurrentProfileCount (uint64_t Count) |
Set the profiler's current count. | |
uint64_t | getCurrentProfileCount () |
Get the profiler's current count. | |
CodeGenFunction (CodeGenModule &cgm, bool suppressNewContext=false) | |
~CodeGenFunction () | |
CodeGenTypes & | getTypes () const |
ASTContext & | getContext () const |
CGDebugInfo * | getDebugInfo () |
void | disableDebugInfo () |
void | enableDebugInfo () |
bool | shouldUseFusedARCCalls () |
const LangOptions & | getLangOpts () const |
Address | getExceptionSlot () |
Returns a pointer to the function's exception object and selector slot, which is assigned in every landing pad. | |
Address | getEHSelectorSlot () |
llvm::Value * | getExceptionFromSlot () |
Returns the contents of the function's exception object and selector slots. | |
llvm::Value * | getSelectorFromSlot () |
RawAddress | getNormalCleanupDestSlot () |
llvm::BasicBlock * | getUnreachableBlock () |
llvm::BasicBlock * | getInvokeDest () |
bool | currentFunctionUsesSEHTry () const |
const TargetInfo & | getTarget () const |
llvm::LLVMContext & | getLLVMContext () |
const TargetCodeGenInfo & | getTargetHooks () const |
void | pushIrregularPartialArrayCleanup (llvm::Value *arrayBegin, Address arrayEndPointer, QualType elementType, CharUnits elementAlignment, Destroyer *destroyer) |
void | pushRegularPartialArrayCleanup (llvm::Value *arrayBegin, llvm::Value *arrayEnd, QualType elementType, CharUnits elementAlignment, Destroyer *destroyer) |
void | pushDestroy (QualType::DestructionKind dtorKind, Address addr, QualType type) |
void | pushEHDestroy (QualType::DestructionKind dtorKind, Address addr, QualType type) |
void | pushDestroy (CleanupKind kind, Address addr, QualType type, Destroyer *destroyer, bool useEHCleanupForArray) |
void | pushDestroyAndDeferDeactivation (QualType::DestructionKind dtorKind, Address addr, QualType type) |
void | pushDestroyAndDeferDeactivation (CleanupKind cleanupKind, Address addr, QualType type, Destroyer *destroyer, bool useEHCleanupForArray) |
void | pushLifetimeExtendedDestroy (CleanupKind kind, Address addr, QualType type, Destroyer *destroyer, bool useEHCleanupForArray) |
void | pushCallObjectDeleteCleanup (const FunctionDecl *OperatorDelete, llvm::Value *CompletePtr, QualType ElementType) |
void | pushStackRestore (CleanupKind kind, Address SPMem) |
void | pushKmpcAllocFree (CleanupKind Kind, std::pair< llvm::Value *, llvm::Value * > AddrSizePair) |
void | emitDestroy (Address addr, QualType type, Destroyer *destroyer, bool useEHCleanupForArray) |
llvm::Function * | generateDestroyHelper (Address addr, QualType type, Destroyer *destroyer, bool useEHCleanupForArray, const VarDecl *VD) |
void | emitArrayDestroy (llvm::Value *begin, llvm::Value *end, QualType elementType, CharUnits elementAlign, Destroyer *destroyer, bool checkZeroLength, bool useEHCleanup) |
Destroyer * | getDestroyer (QualType::DestructionKind destructionKind) |
bool | needsEHCleanup (QualType::DestructionKind kind) |
Determines whether an EH cleanup is required to destroy a type with the given destruction kind. | |
CleanupKind | getCleanupKind (QualType::DestructionKind kind) |
void | GenerateObjCMethod (const ObjCMethodDecl *OMD) |
void | StartObjCMethod (const ObjCMethodDecl *MD, const ObjCContainerDecl *CD) |
void | GenerateObjCGetter (ObjCImplementationDecl *IMP, const ObjCPropertyImplDecl *PID) |
GenerateObjCGetter - Synthesize an Objective-C property getter function. | |
void | generateObjCGetterBody (const ObjCImplementationDecl *classImpl, const ObjCPropertyImplDecl *propImpl, const ObjCMethodDecl *GetterMothodDecl, llvm::Constant *AtomicHelperFn) |
void | GenerateObjCCtorDtorMethod (ObjCImplementationDecl *IMP, ObjCMethodDecl *MD, bool ctor) |
void | GenerateObjCSetter (ObjCImplementationDecl *IMP, const ObjCPropertyImplDecl *PID) |
GenerateObjCSetter - Synthesize an Objective-C property setter function for the given property. | |
void | generateObjCSetterBody (const ObjCImplementationDecl *classImpl, const ObjCPropertyImplDecl *propImpl, llvm::Constant *AtomicHelperFn) |
llvm::Value * | EmitBlockLiteral (const BlockExpr *) |
Emit block literal. | |
llvm::Function * | GenerateBlockFunction (GlobalDecl GD, const CGBlockInfo &Info, const DeclMapTy &ldm, bool IsLambdaConversionToBlock, bool BuildGlobalBlock) |
llvm::Constant * | GenerateCopyHelperFunction (const CGBlockInfo &blockInfo) |
llvm::Constant * | GenerateDestroyHelperFunction (const CGBlockInfo &blockInfo) |
llvm::Constant * | GenerateObjCAtomicSetterCopyHelperFunction (const ObjCPropertyImplDecl *PID) |
llvm::Constant * | GenerateObjCAtomicGetterCopyHelperFunction (const ObjCPropertyImplDecl *PID) |
llvm::Value * | EmitBlockCopyAndAutorelease (llvm::Value *Block, QualType Ty) |
void | BuildBlockRelease (llvm::Value *DeclPtr, BlockFieldFlags flags, bool CanThrow) |
void | emitByrefStructureInit (const AutoVarEmission &emission) |
void | enterByrefCleanup (CleanupKind Kind, Address Addr, BlockFieldFlags Flags, bool LoadBlockVarAddr, bool CanThrow) |
Enter a cleanup to destroy a __block variable. | |
void | setBlockContextParameter (const ImplicitParamDecl *D, unsigned argNum, llvm::Value *ptr) |
Address | LoadBlockStruct () |
Address | GetAddrOfBlockDecl (const VarDecl *var) |
Address | emitBlockByrefAddress (Address baseAddr, const VarDecl *V, bool followForward=true) |
BuildBlockByrefAddress - Computes the location of the data in a variable which is declared as __block. | |
Address | emitBlockByrefAddress (Address baseAddr, const BlockByrefInfo &info, bool followForward, const llvm::Twine &name) |
const BlockByrefInfo & | getBlockByrefInfo (const VarDecl *var) |
QualType | BuildFunctionArgList (GlobalDecl GD, FunctionArgList &Args) |
void | GenerateCode (GlobalDecl GD, llvm::Function *Fn, const CGFunctionInfo &FnInfo) |
void | markAsIgnoreThreadCheckingAtRuntime (llvm::Function *Fn) |
Annotate the function with an attribute that disables TSan checking at runtime. | |
void | StartFunction (GlobalDecl GD, QualType RetTy, llvm::Function *Fn, const CGFunctionInfo &FnInfo, const FunctionArgList &Args, SourceLocation Loc=SourceLocation(), SourceLocation StartLoc=SourceLocation()) |
Emit code for the start of a function. | |
void | EmitConstructorBody (FunctionArgList &Args) |
void | EmitDestructorBody (FunctionArgList &Args) |
void | emitImplicitAssignmentOperatorBody (FunctionArgList &Args) |
void | EmitFunctionBody (const Stmt *Body) |
void | EmitBlockWithFallThrough (llvm::BasicBlock *BB, const Stmt *S) |
void | EmitForwardingCallToLambda (const CXXMethodDecl *LambdaCallOperator, CallArgList &CallArgs, const CGFunctionInfo *CallOpFnInfo=nullptr, llvm::Constant *CallOpFn=nullptr) |
void | EmitLambdaBlockInvokeBody () |
void | EmitLambdaStaticInvokeBody (const CXXMethodDecl *MD) |
void | EmitLambdaDelegatingInvokeBody (const CXXMethodDecl *MD, CallArgList &CallArgs) |
void | EmitLambdaInAllocaImplFn (const CXXMethodDecl *CallOp, const CGFunctionInfo **ImplFnInfo, llvm::Function **ImplFn) |
void | EmitLambdaInAllocaCallOpBody (const CXXMethodDecl *MD) |
void | EmitLambdaVLACapture (const VariableArrayType *VAT, LValue LV) |
void | EmitAsanPrologueOrEpilogue (bool Prologue) |
llvm::DebugLoc | EmitReturnBlock () |
Emit the unified return block, trying to avoid its emission when possible. | |
void | FinishFunction (SourceLocation EndLoc=SourceLocation()) |
FinishFunction - Complete IR generation of the current function. | |
void | StartThunk (llvm::Function *Fn, GlobalDecl GD, const CGFunctionInfo &FnInfo, bool IsUnprototyped) |
void | EmitCallAndReturnForThunk (llvm::FunctionCallee Callee, const ThunkInfo *Thunk, bool IsUnprototyped) |
void | FinishThunk () |
void | EmitMustTailThunk (GlobalDecl GD, llvm::Value *AdjustedThisPtr, llvm::FunctionCallee Callee) |
Emit a musttail call for a thunk with a potentially adjusted this pointer. | |
void | generateThunk (llvm::Function *Fn, const CGFunctionInfo &FnInfo, GlobalDecl GD, const ThunkInfo &Thunk, bool IsUnprototyped) |
Generate a thunk for the given method. | |
llvm::Function * | GenerateVarArgsThunk (llvm::Function *Fn, const CGFunctionInfo &FnInfo, GlobalDecl GD, const ThunkInfo &Thunk) |
void | EmitCtorPrologue (const CXXConstructorDecl *CD, CXXCtorType Type, FunctionArgList &Args) |
void | EmitInitializerForField (FieldDecl *Field, LValue LHS, Expr *Init) |
void | InitializeVTablePointer (const VPtr &vptr) |
Initialize the vtable pointer of the given subobject. | |
VPtrsVector | getVTablePointers (const CXXRecordDecl *VTableClass) |
void | getVTablePointers (BaseSubobject Base, const CXXRecordDecl *NearestVBase, CharUnits OffsetFromNearestVBase, bool BaseIsNonVirtualPrimaryBase, const CXXRecordDecl *VTableClass, VisitedVirtualBasesSetTy &VBases, VPtrsVector &vptrs) |
void | InitializeVTablePointers (const CXXRecordDecl *ClassDecl) |
llvm::Value * | GetVTablePtr (Address This, llvm::Type *VTableTy, const CXXRecordDecl *VTableClass, VTableAuthMode AuthMode=VTableAuthMode::Authenticate) |
GetVTablePtr - Return the Value of the vtable pointer member pointed to by This. | |
void | EmitVTablePtrCheckForCast (QualType T, Address Derived, bool MayBeNull, CFITypeCheckKind TCK, SourceLocation Loc) |
Derived is the presumed address of an object of type T after a cast. | |
void | EmitVTablePtrCheckForCall (const CXXRecordDecl *RD, llvm::Value *VTable, CFITypeCheckKind TCK, SourceLocation Loc) |
EmitVTablePtrCheckForCall - Virtual method MD is being called via VTable. | |
void | EmitVTablePtrCheck (const CXXRecordDecl *RD, llvm::Value *VTable, CFITypeCheckKind TCK, SourceLocation Loc) |
EmitVTablePtrCheck - Emit a check that VTable is a valid virtual table for RD using llvm.type.test. | |
void | EmitTypeMetadataCodeForVCall (const CXXRecordDecl *RD, llvm::Value *VTable, SourceLocation Loc) |
If whole-program virtual table optimization is enabled, emit an assumption that VTable is a member of RD's type identifier. | |
bool | ShouldEmitVTableTypeCheckedLoad (const CXXRecordDecl *RD) |
Returns whether we should perform a type checked load when loading a virtual function for virtual calls to members of RD. | |
llvm::Value * | EmitVTableTypeCheckedLoad (const CXXRecordDecl *RD, llvm::Value *VTable, llvm::Type *VTableTy, uint64_t VTableByteOffset) |
Emit a type checked load from the given vtable. | |
void | EnterDtorCleanups (const CXXDestructorDecl *Dtor, CXXDtorType Type) |
EnterDtorCleanups - Enter the cleanups necessary to complete the given phase of destruction for a destructor. | |
bool | ShouldInstrumentFunction () |
ShouldInstrumentFunction - Return true if the current function should be instrumented with __cyg_profile_func_* calls. | |
bool | ShouldSkipSanitizerInstrumentation () |
ShouldSkipSanitizerInstrumentation - Return true if the current function should not be instrumented with sanitizers. | |
bool | ShouldXRayInstrumentFunction () const |
ShouldXRayInstrument - Return true if the current function should be instrumented with XRay nop sleds. | |
bool | AlwaysEmitXRayCustomEvents () const |
AlwaysEmitXRayCustomEvents - Return true if we must unconditionally emit XRay custom event handling calls. | |
bool | AlwaysEmitXRayTypedEvents () const |
AlwaysEmitXRayTypedEvents - Return true if clang must unconditionally emit XRay typed event handling calls. | |
llvm::ConstantInt * | getUBSanFunctionTypeHash (QualType T) const |
Return a type hash constant for a function instrumented by -fsanitize=function. | |
void | EmitFunctionProlog (const CGFunctionInfo &FI, llvm::Function *Fn, const FunctionArgList &Args) |
EmitFunctionProlog - Emit the target specific LLVM code to load the arguments for the given function. | |
void | EmitFunctionEpilog (const CGFunctionInfo &FI, bool EmitRetDbgLoc, SourceLocation EndLoc) |
EmitFunctionEpilog - Emit the target specific LLVM code to return the given temporary. | |
void | EmitReturnValueCheck (llvm::Value *RV) |
Emit a test that checks if the return value RV is nonnull. | |
void | EmitStartEHSpec (const Decl *D) |
EmitStartEHSpec - Emit the start of the exception spec. | |
void | EmitEndEHSpec (const Decl *D) |
EmitEndEHSpec - Emit the end of the exception spec. | |
llvm::BasicBlock * | getTerminateLandingPad () |
getTerminateLandingPad - Return a landing pad that just calls terminate. | |
llvm::BasicBlock * | getTerminateFunclet () |
getTerminateLandingPad - Return a cleanup funclet that just calls terminate. | |
llvm::BasicBlock * | getTerminateHandler () |
getTerminateHandler - Return a handler (not a landing pad, just a catch handler) that just calls terminate. | |
llvm::Type * | ConvertTypeForMem (QualType T) |
llvm::Type * | ConvertType (QualType T) |
llvm::Type * | convertTypeForLoadStore (QualType ASTTy, llvm::Type *LLVMTy=nullptr) |
llvm::Type * | ConvertType (const TypeDecl *T) |
llvm::Value * | LoadObjCSelf () |
LoadObjCSelf - Load the value of self. | |
QualType | TypeOfSelfObject () |
TypeOfSelfObject - Return type of object that this self represents. | |
llvm::BasicBlock * | createBasicBlock (const Twine &name="", llvm::Function *parent=nullptr, llvm::BasicBlock *before=nullptr) |
createBasicBlock - Create an LLVM basic block. | |
JumpDest | getJumpDestForLabel (const LabelDecl *S) |
getBasicBlockForLabel - Return the LLVM basicblock that the specified label maps to. | |
void | SimplifyForwardingBlocks (llvm::BasicBlock *BB) |
SimplifyForwardingBlocks - If the given basic block is only a branch to another basic block, simplify it. | |
void | EmitBlock (llvm::BasicBlock *BB, bool IsFinished=false) |
EmitBlock - Emit the given block. | |
void | EmitBlockAfterUses (llvm::BasicBlock *BB) |
EmitBlockAfterUses - Emit the given block somewhere hopefully near its uses, and leave the insertion point in it. | |
void | EmitBranch (llvm::BasicBlock *Block) |
EmitBranch - Emit a branch to the specified basic block from the current insert block, taking care to avoid creation of branches from dummy blocks. | |
bool | HaveInsertPoint () const |
HaveInsertPoint - True if an insertion point is defined. | |
void | EnsureInsertPoint () |
EnsureInsertPoint - Ensure that an insertion point is defined so that emitted IR has a place to go. | |
void | ErrorUnsupported (const Stmt *S, const char *Type) |
ErrorUnsupported - Print out an error that codegen doesn't support the specified stmt yet. | |
Address | mergeAddressesInConditionalExpr (Address LHS, Address RHS, llvm::BasicBlock *LHSBlock, llvm::BasicBlock *RHSBlock, llvm::BasicBlock *MergeBlock, QualType MergedType) |
Address | makeNaturalAddressForPointer (llvm::Value *Ptr, QualType T, CharUnits Alignment=CharUnits::Zero(), bool ForPointeeType=false, LValueBaseInfo *BaseInfo=nullptr, TBAAAccessInfo *TBAAInfo=nullptr, KnownNonNull_t IsKnownNonNull=NotKnownNonNull) |
Construct an address with the natural alignment of T. | |
LValue | MakeAddrLValue (Address Addr, QualType T, AlignmentSource Source=AlignmentSource::Type) |
LValue | MakeAddrLValue (Address Addr, QualType T, LValueBaseInfo BaseInfo, TBAAAccessInfo TBAAInfo) |
LValue | MakeAddrLValue (llvm::Value *V, QualType T, CharUnits Alignment, AlignmentSource Source=AlignmentSource::Type) |
LValue | MakeRawAddrLValue (llvm::Value *V, QualType T, CharUnits Alignment, AlignmentSource Source=AlignmentSource::Type) |
Same as MakeAddrLValue above except that the pointer is known to be unsigned. | |
LValue | MakeAddrLValueWithoutTBAA (Address Addr, QualType T, AlignmentSource Source=AlignmentSource::Type) |
LValue | MakeNaturalAlignPointeeAddrLValue (llvm::Value *V, QualType T) |
Given a value of type T* that may not be to a complete object, construct an l-value with the natural pointee alignment of T. | |
LValue | MakeNaturalAlignAddrLValue (llvm::Value *V, QualType T, KnownNonNull_t IsKnownNonNull=NotKnownNonNull) |
LValue | MakeNaturalAlignPointeeRawAddrLValue (llvm::Value *V, QualType T) |
Same as MakeNaturalAlignPointeeAddrLValue except that the pointer is known to be unsigned. | |
LValue | MakeNaturalAlignRawAddrLValue (llvm::Value *V, QualType T) |
Address | EmitLoadOfReference (LValue RefLVal, LValueBaseInfo *PointeeBaseInfo=nullptr, TBAAAccessInfo *PointeeTBAAInfo=nullptr) |
LValue | EmitLoadOfReferenceLValue (LValue RefLVal) |
LValue | EmitLoadOfReferenceLValue (Address RefAddr, QualType RefTy, AlignmentSource Source=AlignmentSource::Type) |
Address | EmitLoadOfPointer (Address Ptr, const PointerType *PtrTy, LValueBaseInfo *BaseInfo=nullptr, TBAAAccessInfo *TBAAInfo=nullptr) |
Load a pointer with type PtrTy stored at address Ptr . | |
LValue | EmitLoadOfPointerLValue (Address Ptr, const PointerType *PtrTy) |
llvm::AllocaInst * | CreateTempAlloca (llvm::Type *Ty, const Twine &Name="tmp", llvm::Value *ArraySize=nullptr) |
CreateTempAlloca - This creates an alloca and inserts it into the entry block if ArraySize is nullptr, otherwise inserts it at the current insertion point of the builder. | |
RawAddress | CreateTempAlloca (llvm::Type *Ty, CharUnits align, const Twine &Name="tmp", llvm::Value *ArraySize=nullptr, RawAddress *Alloca=nullptr) |
RawAddress | CreateTempAllocaWithoutCast (llvm::Type *Ty, CharUnits align, const Twine &Name="tmp", llvm::Value *ArraySize=nullptr) |
RawAddress | CreateDefaultAlignTempAlloca (llvm::Type *Ty, const Twine &Name="tmp") |
CreateDefaultAlignedTempAlloca - This creates an alloca with the default ABI alignment of the given LLVM type. | |
RawAddress | CreateIRTemp (QualType T, const Twine &Name="tmp") |
CreateIRTemp - Create a temporary IR object of the given type, with appropriate alignment. | |
RawAddress | CreateMemTemp (QualType T, const Twine &Name="tmp", RawAddress *Alloca=nullptr) |
CreateMemTemp - Create a temporary memory object of the given type, with appropriate alignmen and cast it to the default address space. | |
RawAddress | CreateMemTemp (QualType T, CharUnits Align, const Twine &Name="tmp", RawAddress *Alloca=nullptr) |
RawAddress | CreateMemTempWithoutCast (QualType T, const Twine &Name="tmp") |
CreateMemTemp - Create a temporary memory object of the given type, with appropriate alignmen without casting it to the default address space. | |
RawAddress | CreateMemTempWithoutCast (QualType T, CharUnits Align, const Twine &Name="tmp") |
AggValueSlot | CreateAggTemp (QualType T, const Twine &Name="tmp", RawAddress *Alloca=nullptr) |
CreateAggTemp - Create a temporary memory object for the given aggregate type. | |
llvm::Value * | EvaluateExprAsBool (const Expr *E) |
EvaluateExprAsBool - Perform the usual unary conversions on the specified expression and compare the result against zero, returning an Int1Ty value. | |
llvm::Value * | EmitWithOriginalRHSBitfieldAssignment (const BinaryOperator *E, llvm::Value **Previous, QualType *SrcType) |
Retrieve the implicit cast expression of the rhs in a binary operator expression by passing pointers to Value and QualType This is used for implicit bitfield conversion checks, which must compare with the value before potential truncation. | |
void | EmitBitfieldConversionCheck (llvm::Value *Src, QualType SrcType, llvm::Value *Dst, QualType DstType, const CGBitFieldInfo &Info, SourceLocation Loc) |
Emit a check that an [implicit] conversion of a bitfield. | |
void | EmitIgnoredExpr (const Expr *E) |
EmitIgnoredExpr - Emit an expression in a context which ignores the result. | |
RValue | EmitAnyExpr (const Expr *E, AggValueSlot aggSlot=AggValueSlot::ignored(), bool ignoreResult=false) |
EmitAnyExpr - Emit code to compute the specified expression which can have any type. | |
Address | EmitVAListRef (const Expr *E) |
Address | EmitMSVAListRef (const Expr *E) |
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. | |
RValue | EmitAnyExprToTemp (const Expr *E) |
EmitAnyExprToTemp - Similarly to EmitAnyExpr(), however, the result will always be accessible even if no aggregate location is provided. | |
void | EmitAnyExprToMem (const Expr *E, Address Location, Qualifiers Quals, bool IsInitializer) |
EmitAnyExprToMem - Emits the code necessary to evaluate an arbitrary expression into the given memory location. | |
void | EmitAnyExprToExn (const Expr *E, Address Addr) |
void | EmitExprAsInit (const Expr *init, const ValueDecl *D, LValue lvalue, bool capturedByInit) |
EmitExprAsInit - Emits the code necessary to initialize a location in memory with the given initializer. | |
bool | hasVolatileMember (QualType T) |
hasVolatileMember - returns true if aggregate type has a volatile member. | |
AggValueSlot::Overlap_t | getOverlapForReturnValue () |
Determine whether a return value slot may overlap some other object. | |
AggValueSlot::Overlap_t | getOverlapForFieldInit (const FieldDecl *FD) |
Determine whether a field initialization may overlap some other object. | |
AggValueSlot::Overlap_t | getOverlapForBaseInit (const CXXRecordDecl *RD, const CXXRecordDecl *BaseRD, bool IsVirtual) |
Determine whether a base class initialization may overlap some other object. | |
void | EmitAggregateAssign (LValue Dest, LValue Src, QualType EltTy) |
Emit an aggregate assignment. | |
void | EmitAggregateCopyCtor (LValue Dest, LValue Src, AggValueSlot::Overlap_t MayOverlap) |
void | EmitAggregateCopy (LValue Dest, LValue Src, QualType EltTy, AggValueSlot::Overlap_t MayOverlap, bool isVolatile=false) |
EmitAggregateCopy - Emit an aggregate copy. | |
Address | GetAddrOfLocalVar (const VarDecl *VD) |
GetAddrOfLocalVar - Return the address of a local variable. | |
LValue | getOrCreateOpaqueLValueMapping (const OpaqueValueExpr *e) |
Given an opaque value expression, return its LValue mapping if it exists, otherwise create one. | |
RValue | getOrCreateOpaqueRValueMapping (const OpaqueValueExpr *e) |
Given an opaque value expression, return its RValue mapping if it exists, otherwise create one. | |
llvm::Value * | getArrayInitIndex () |
Get the index of the current ArrayInitLoopExpr, if any. | |
llvm::BlockAddress * | GetAddrOfLabel (const LabelDecl *L) |
llvm::BasicBlock * | GetIndirectGotoBlock () |
void | EmitNullInitialization (Address DestPtr, QualType Ty) |
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. | |
llvm::Value * | EmitVAStartEnd (llvm::Value *ArgValue, bool IsStart) |
Emits a call to an LLVM variable-argument intrinsic, either llvm.va_start or llvm.va_end . | |
RValue | EmitVAArg (VAArgExpr *VE, Address &VAListAddr, AggValueSlot Slot=AggValueSlot::ignored()) |
Generate code to get an argument from the passed in pointer and update it accordingly. | |
llvm::Value * | emitArrayLength (const ArrayType *arrayType, QualType &baseType, Address &addr) |
emitArrayLength - Compute the length of an array, even if it's a VLA, and drill down to the base element type. | |
void | EmitVariablyModifiedType (QualType Ty) |
EmitVLASize - Capture all the sizes for the VLA expressions in the given variably-modified type and store them in the VLASizeMap. | |
VlaSizePair | getVLAElements1D (const VariableArrayType *vla) |
Return the number of elements for a single dimension for the given array type. | |
VlaSizePair | getVLAElements1D (QualType vla) |
VlaSizePair | getVLASize (const VariableArrayType *vla) |
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. | |
VlaSizePair | getVLASize (QualType vla) |
llvm::Value * | LoadCXXThis () |
LoadCXXThis - Load the value of 'this'. | |
Address | LoadCXXThisAddress () |
llvm::Value * | LoadCXXVTT () |
LoadCXXVTT - Load the VTT parameter to base constructors/destructors have virtual bases. | |
Address | GetAddressOfDirectBaseInCompleteClass (Address Value, const CXXRecordDecl *Derived, const CXXRecordDecl *Base, bool BaseIsVirtual) |
GetAddressOfBaseOfCompleteClass - Convert the given pointer to a complete class to the given direct base. | |
Address | GetAddressOfBaseClass (Address Value, const CXXRecordDecl *Derived, CastExpr::path_const_iterator PathBegin, CastExpr::path_const_iterator PathEnd, bool NullCheckValue, SourceLocation Loc) |
GetAddressOfBaseClass - This function will add the necessary delta to the load of 'this' and returns address of the base class. | |
Address | GetAddressOfDerivedClass (Address Value, const CXXRecordDecl *Derived, CastExpr::path_const_iterator PathBegin, CastExpr::path_const_iterator PathEnd, bool NullCheckValue) |
llvm::Value * | GetVTTParameter (GlobalDecl GD, bool ForVirtualBase, bool Delegating) |
GetVTTParameter - Return the VTT parameter that should be passed to a base constructor/destructor with virtual bases. | |
void | EmitDelegateCXXConstructorCall (const CXXConstructorDecl *Ctor, CXXCtorType CtorType, const FunctionArgList &Args, SourceLocation Loc) |
void | EmitDelegatingCXXConstructorCall (const CXXConstructorDecl *Ctor, const FunctionArgList &Args) |
void | EmitInlinedInheritingCXXConstructorCall (const CXXConstructorDecl *Ctor, CXXCtorType CtorType, bool ForVirtualBase, bool Delegating, CallArgList &Args) |
Emit a call to an inheriting constructor (that is, one that invokes a constructor inherited from a base class) by inlining its definition. | |
void | EmitInheritedCXXConstructorCall (const CXXConstructorDecl *D, bool ForVirtualBase, Address This, bool InheritedFromVBase, const CXXInheritedCtorInitExpr *E) |
Emit a call to a constructor inherited from a base class, passing the current constructor's arguments along unmodified (without even making a copy). | |
void | EmitCXXConstructorCall (const CXXConstructorDecl *D, CXXCtorType Type, bool ForVirtualBase, bool Delegating, AggValueSlot ThisAVS, const CXXConstructExpr *E) |
void | EmitCXXConstructorCall (const CXXConstructorDecl *D, CXXCtorType Type, bool ForVirtualBase, bool Delegating, Address This, CallArgList &Args, AggValueSlot::Overlap_t Overlap, SourceLocation Loc, bool NewPointerIsChecked) |
void | EmitVTableAssumptionLoads (const CXXRecordDecl *ClassDecl, Address This) |
Emit assumption load for all bases. | |
void | EmitVTableAssumptionLoad (const VPtr &vptr, Address This) |
Emit assumption that vptr load == global vtable. | |
void | EmitSynthesizedCXXCopyCtorCall (const CXXConstructorDecl *D, Address This, Address Src, const CXXConstructExpr *E) |
void | EmitCXXAggrConstructorCall (const CXXConstructorDecl *D, const ArrayType *ArrayTy, Address ArrayPtr, const CXXConstructExpr *E, bool NewPointerIsChecked, bool ZeroInitialization=false) |
void | EmitCXXAggrConstructorCall (const CXXConstructorDecl *D, llvm::Value *NumElements, Address ArrayPtr, const CXXConstructExpr *E, bool NewPointerIsChecked, bool ZeroInitialization=false) |
void | EmitCXXDestructorCall (const CXXDestructorDecl *D, CXXDtorType Type, bool ForVirtualBase, bool Delegating, Address This, QualType ThisTy) |
void | EmitNewArrayInitializer (const CXXNewExpr *E, QualType elementType, llvm::Type *ElementTy, Address NewPtr, llvm::Value *NumElements, llvm::Value *AllocSizeWithoutCookie) |
void | EmitCXXTemporary (const CXXTemporary *Temporary, QualType TempType, Address Ptr) |
void | EmitSehCppScopeBegin () |
void | EmitSehCppScopeEnd () |
void | EmitSehTryScopeBegin () |
void | EmitSehTryScopeEnd () |
llvm::Value * | EmitLifetimeStart (llvm::TypeSize Size, llvm::Value *Addr) |
void | EmitLifetimeEnd (llvm::Value *Size, llvm::Value *Addr) |
llvm::Value * | EmitCXXNewExpr (const CXXNewExpr *E) |
void | EmitCXXDeleteExpr (const CXXDeleteExpr *E) |
void | EmitDeleteCall (const FunctionDecl *DeleteFD, llvm::Value *Ptr, QualType DeleteTy, llvm::Value *NumElements=nullptr, CharUnits CookieSize=CharUnits()) |
RValue | EmitBuiltinNewDeleteCall (const FunctionProtoType *Type, const CallExpr *TheCallExpr, bool IsDelete) |
llvm::Value * | EmitCXXTypeidExpr (const CXXTypeidExpr *E) |
llvm::Value * | EmitDynamicCast (Address V, const CXXDynamicCastExpr *DCE) |
Address | EmitCXXUuidofExpr (const CXXUuidofExpr *E) |
bool | sanitizePerformTypeCheck () const |
Whether any type-checking sanitizers are enabled. | |
void | EmitTypeCheck (TypeCheckKind TCK, SourceLocation Loc, LValue LV, QualType Type, SanitizerSet SkippedChecks=SanitizerSet(), llvm::Value *ArraySize=nullptr) |
void | EmitTypeCheck (TypeCheckKind TCK, SourceLocation Loc, Address Addr, QualType Type, CharUnits Alignment=CharUnits::Zero(), SanitizerSet SkippedChecks=SanitizerSet(), llvm::Value *ArraySize=nullptr) |
void | EmitTypeCheck (TypeCheckKind TCK, SourceLocation Loc, llvm::Value *V, QualType Type, CharUnits Alignment=CharUnits::Zero(), SanitizerSet SkippedChecks=SanitizerSet(), llvm::Value *ArraySize=nullptr) |
Emit a check that V is the address of storage of the appropriate size and alignment for an object of type Type (or if ArraySize is provided, for an array of that bound). | |
void | EmitBoundsCheck (const Expr *E, const Expr *Base, llvm::Value *Index, QualType IndexType, bool Accessed) |
Emit a check that Base points into an array object, which we can access at index Index . | |
void | EmitBoundsCheckImpl (const Expr *E, llvm::Value *Bound, llvm::Value *Index, QualType IndexType, QualType IndexedType, bool Accessed) |
const FieldDecl * | FindFlexibleArrayMemberFieldAndOffset (ASTContext &Ctx, const RecordDecl *RD, const FieldDecl *FAMDecl, uint64_t &Offset) |
llvm::Value * | EmitLoadOfCountedByField (const Expr *Base, const FieldDecl *FAMDecl, const FieldDecl *CountDecl) |
Build an expression accessing the "counted_by" field. | |
llvm::Value * | EmitScalarPrePostIncDec (const UnaryOperator *E, LValue LV, bool isInc, bool isPre) |
ComplexPairTy | EmitComplexPrePostIncDec (const UnaryOperator *E, LValue LV, bool isInc, bool isPre) |
llvm::DebugLoc | SourceLocToDebugLoc (SourceLocation Location) |
Converts Location to a DebugLoc, if debug information is enabled. | |
unsigned | getDebugInfoFIndex (const RecordDecl *Rec, unsigned FieldIndex) |
Get the record field index as represented in debug info. | |
void | EmitDecl (const Decl &D) |
EmitDecl - Emit a declaration. | |
void | EmitVarDecl (const VarDecl &D) |
EmitVarDecl - Emit a local variable declaration. | |
void | EmitScalarInit (const Expr *init, const ValueDecl *D, LValue lvalue, bool capturedByInit) |
bool | isTrivialInitializer (const Expr *Init) |
Determine whether the given initializer is trivial in the sense that it requires no code to be generated. | |
void | EmitAutoVarDecl (const VarDecl &D) |
EmitAutoVarDecl - Emit an auto variable declaration. | |
AutoVarEmission | EmitAutoVarAlloca (const VarDecl &var) |
void | EmitAutoVarInit (const AutoVarEmission &emission) |
void | EmitAutoVarCleanups (const AutoVarEmission &emission) |
void | emitAutoVarTypeCleanup (const AutoVarEmission &emission, QualType::DestructionKind dtorKind) |
void | EmitAndRegisterVariableArrayDimensions (CGDebugInfo *DI, const VarDecl &D, bool EmitDebugInfo) |
Emits the alloca and debug information for the size expressions for each dimension of an array. | |
void | EmitStaticVarDecl (const VarDecl &D, llvm::GlobalValue::LinkageTypes Linkage) |
void | EmitParmDecl (const VarDecl &D, ParamValue Arg, unsigned ArgNo) |
EmitParmDecl - Emit a ParmVarDecl or an ImplicitParamDecl. | |
PeepholeProtection | protectFromPeepholes (RValue rvalue) |
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. | |
void | unprotectFromPeepholes (PeepholeProtection protection) |
void | emitAlignmentAssumptionCheck (llvm::Value *Ptr, QualType Ty, SourceLocation Loc, SourceLocation AssumptionLoc, llvm::Value *Alignment, llvm::Value *OffsetValue, llvm::Value *TheCheck, llvm::Instruction *Assumption) |
void | emitAlignmentAssumption (llvm::Value *PtrValue, QualType Ty, SourceLocation Loc, SourceLocation AssumptionLoc, llvm::Value *Alignment, llvm::Value *OffsetValue=nullptr) |
void | emitAlignmentAssumption (llvm::Value *PtrValue, const Expr *E, SourceLocation AssumptionLoc, llvm::Value *Alignment, llvm::Value *OffsetValue=nullptr) |
void | EmitStopPoint (const Stmt *S) |
EmitStopPoint - Emit a debug stoppoint if we are emitting debug info. | |
void | EmitStmt (const Stmt *S, ArrayRef< const Attr * > Attrs=std::nullopt) |
EmitStmt - Emit the code for the statement. | |
bool | EmitSimpleStmt (const Stmt *S, ArrayRef< const Attr * > Attrs) |
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. | |
Address | EmitCompoundStmt (const CompoundStmt &S, bool GetLast=false, AggValueSlot AVS=AggValueSlot::ignored()) |
Address | EmitCompoundStmtWithoutScope (const CompoundStmt &S, bool GetLast=false, AggValueSlot AVS=AggValueSlot::ignored()) |
void | EmitLabel (const LabelDecl *D) |
EmitLabel - Emit the block for the given label. | |
void | EmitLabelStmt (const LabelStmt &S) |
void | EmitAttributedStmt (const AttributedStmt &S) |
void | EmitGotoStmt (const GotoStmt &S) |
void | EmitIndirectGotoStmt (const IndirectGotoStmt &S) |
void | EmitIfStmt (const IfStmt &S) |
void | EmitWhileStmt (const WhileStmt &S, ArrayRef< const Attr * > Attrs=std::nullopt) |
void | EmitDoStmt (const DoStmt &S, ArrayRef< const Attr * > Attrs=std::nullopt) |
void | EmitForStmt (const ForStmt &S, ArrayRef< const Attr * > Attrs=std::nullopt) |
void | EmitReturnStmt (const ReturnStmt &S) |
void | EmitDeclStmt (const DeclStmt &S) |
void | EmitBreakStmt (const BreakStmt &S) |
void | EmitContinueStmt (const ContinueStmt &S) |
void | EmitSwitchStmt (const SwitchStmt &S) |
void | EmitDefaultStmt (const DefaultStmt &S, ArrayRef< const Attr * > Attrs) |
void | EmitCaseStmt (const CaseStmt &S, ArrayRef< const Attr * > Attrs) |
void | EmitCaseStmtRange (const CaseStmt &S, ArrayRef< const Attr * > Attrs) |
void | EmitAsmStmt (const AsmStmt &S) |
void | EmitObjCForCollectionStmt (const ObjCForCollectionStmt &S) |
void | EmitObjCAtTryStmt (const ObjCAtTryStmt &S) |
void | EmitObjCAtThrowStmt (const ObjCAtThrowStmt &S) |
void | EmitObjCAtSynchronizedStmt (const ObjCAtSynchronizedStmt &S) |
void | EmitObjCAutoreleasePoolStmt (const ObjCAutoreleasePoolStmt &S) |
void | EmitCoroutineBody (const CoroutineBodyStmt &S) |
void | EmitCoreturnStmt (const CoreturnStmt &S) |
RValue | EmitCoawaitExpr (const CoawaitExpr &E, AggValueSlot aggSlot=AggValueSlot::ignored(), bool ignoreResult=false) |
LValue | EmitCoawaitLValue (const CoawaitExpr *E) |
RValue | EmitCoyieldExpr (const CoyieldExpr &E, AggValueSlot aggSlot=AggValueSlot::ignored(), bool ignoreResult=false) |
LValue | EmitCoyieldLValue (const CoyieldExpr *E) |
RValue | EmitCoroutineIntrinsic (const CallExpr *E, unsigned int IID) |
void | EnterCXXTryStmt (const CXXTryStmt &S, bool IsFnTryBlock=false) |
void | ExitCXXTryStmt (const CXXTryStmt &S, bool IsFnTryBlock=false) |
void | EmitCXXTryStmt (const CXXTryStmt &S) |
void | EmitSEHTryStmt (const SEHTryStmt &S) |
void | EmitSEHLeaveStmt (const SEHLeaveStmt &S) |
void | EnterSEHTryStmt (const SEHTryStmt &S) |
void | ExitSEHTryStmt (const SEHTryStmt &S) |
void | VolatilizeTryBlocks (llvm::BasicBlock *BB, llvm::SmallPtrSet< llvm::BasicBlock *, 10 > &V) |
void | pushSEHCleanup (CleanupKind kind, llvm::Function *FinallyFunc) |
void | startOutlinedSEHHelper (CodeGenFunction &ParentCGF, bool IsFilter, const Stmt *OutlinedStmt) |
llvm::Function * | GenerateSEHFilterFunction (CodeGenFunction &ParentCGF, const SEHExceptStmt &Except) |
llvm::Function * | GenerateSEHFinallyFunction (CodeGenFunction &ParentCGF, const SEHFinallyStmt &Finally) |
void | EmitSEHExceptionCodeSave (CodeGenFunction &ParentCGF, llvm::Value *ParentFP, llvm::Value *EntryEBP) |
llvm::Value * | EmitSEHExceptionCode () |
llvm::Value * | EmitSEHExceptionInfo () |
llvm::Value * | EmitSEHAbnormalTermination () |
void | EmitSimpleOMPExecutableDirective (const OMPExecutableDirective &D) |
Emit simple code for OpenMP directives in Simd-only mode. | |
void | EmitCapturedLocals (CodeGenFunction &ParentCGF, const Stmt *OutlinedStmt, bool IsFilter) |
Scan the outlined statement for captures from the parent function. | |
Address | recoverAddrOfEscapedLocal (CodeGenFunction &ParentCGF, Address ParentVar, llvm::Value *ParentFP) |
Recovers the address of a local in a parent function. | |
void | EmitCXXForRangeStmt (const CXXForRangeStmt &S, ArrayRef< const Attr * > Attrs=std::nullopt) |
llvm::Value * | getTypeSize (QualType Ty) |
Returns calculated size of the specified type. | |
LValue | InitCapturedStruct (const CapturedStmt &S) |
llvm::Function * | EmitCapturedStmt (const CapturedStmt &S, CapturedRegionKind K) |
llvm::Function * | GenerateCapturedStmtFunction (const CapturedStmt &S) |
Address | GenerateCapturedStmtArgument (const CapturedStmt &S) |
llvm::Function * | GenerateOpenMPCapturedStmtFunction (const CapturedStmt &S, SourceLocation Loc) |
void | GenerateOpenMPCapturedVars (const CapturedStmt &S, SmallVectorImpl< llvm::Value * > &CapturedVars) |
void | emitOMPSimpleStore (LValue LVal, RValue RVal, QualType RValTy, SourceLocation Loc) |
void | EmitOMPAggregateAssign (Address DestAddr, Address SrcAddr, QualType OriginalType, const llvm::function_ref< void(Address, Address)> CopyGen) |
Perform element by element copying of arrays with type OriginalType from SrcAddr to DestAddr using copying procedure generated by CopyGen. | |
void | EmitOMPCopy (QualType OriginalType, Address DestAddr, Address SrcAddr, const VarDecl *DestVD, const VarDecl *SrcVD, const Expr *Copy) |
Emit proper copying of data from one variable to another. | |
std::pair< bool, RValue > | EmitOMPAtomicSimpleUpdateExpr (LValue X, RValue E, BinaryOperatorKind BO, bool IsXLHSInRHSPart, llvm::AtomicOrdering AO, SourceLocation Loc, const llvm::function_ref< RValue(RValue)> CommonGen) |
Emit atomic update code for constructs: X = X BO E or X = E BO E. | |
bool | EmitOMPFirstprivateClause (const OMPExecutableDirective &D, OMPPrivateScope &PrivateScope) |
void | EmitOMPPrivateClause (const OMPExecutableDirective &D, OMPPrivateScope &PrivateScope) |
void | EmitOMPUseDevicePtrClause (const OMPUseDevicePtrClause &C, OMPPrivateScope &PrivateScope, const llvm::DenseMap< const ValueDecl *, llvm::Value * > CaptureDeviceAddrMap) |
void | EmitOMPUseDeviceAddrClause (const OMPUseDeviceAddrClause &C, OMPPrivateScope &PrivateScope, const llvm::DenseMap< const ValueDecl *, llvm::Value * > CaptureDeviceAddrMap) |
bool | EmitOMPCopyinClause (const OMPExecutableDirective &D) |
Emit code for copyin clause in D directive. | |
bool | EmitOMPLastprivateClauseInit (const OMPExecutableDirective &D, OMPPrivateScope &PrivateScope) |
Emit initial code for lastprivate variables. | |
void | EmitOMPLastprivateClauseFinal (const OMPExecutableDirective &D, bool NoFinals, llvm::Value *IsLastIterCond=nullptr) |
Emit final copying of lastprivate values to original variables at the end of the worksharing or simd directive. | |
void | EmitOMPLinearClause (const OMPLoopDirective &D, CodeGenFunction::OMPPrivateScope &PrivateScope) |
Emit initial code for linear clauses. | |
void | EmitOMPLinearClauseFinal (const OMPLoopDirective &D, const llvm::function_ref< llvm::Value *(CodeGenFunction &)> CondGen) |
Emit final code for linear clauses. | |
void | EmitOMPReductionClauseInit (const OMPExecutableDirective &D, OMPPrivateScope &PrivateScope, bool ForInscan=false) |
Emit initial code for reduction variables. | |
void | EmitOMPReductionClauseFinal (const OMPExecutableDirective &D, const OpenMPDirectiveKind ReductionKind) |
Emit final update of reduction values to original variables at the end of the directive. | |
bool | EmitOMPLinearClauseInit (const OMPLoopDirective &D) |
Emit initial code for linear variables. | |
void | EmitOMPTaskBasedDirective (const OMPExecutableDirective &S, const OpenMPDirectiveKind CapturedRegion, const RegionCodeGenTy &BodyGen, const TaskGenTy &TaskGen, OMPTaskDataTy &Data) |
void | EmitOMPTargetTaskBasedDirective (const OMPExecutableDirective &S, const RegionCodeGenTy &BodyGen, OMPTargetDataInfo &InputInfo) |
void | processInReduction (const OMPExecutableDirective &S, OMPTaskDataTy &Data, CodeGenFunction &CGF, const CapturedStmt *CS, OMPPrivateScope &Scope) |
void | EmitOMPMetaDirective (const OMPMetaDirective &S) |
void | EmitOMPParallelDirective (const OMPParallelDirective &S) |
void | EmitOMPSimdDirective (const OMPSimdDirective &S) |
void | EmitOMPTileDirective (const OMPTileDirective &S) |
void | EmitOMPUnrollDirective (const OMPUnrollDirective &S) |
void | EmitOMPReverseDirective (const OMPReverseDirective &S) |
void | EmitOMPInterchangeDirective (const OMPInterchangeDirective &S) |
void | EmitOMPForDirective (const OMPForDirective &S) |
void | EmitOMPForSimdDirective (const OMPForSimdDirective &S) |
void | EmitOMPSectionsDirective (const OMPSectionsDirective &S) |
void | EmitOMPSectionDirective (const OMPSectionDirective &S) |
void | EmitOMPSingleDirective (const OMPSingleDirective &S) |
void | EmitOMPMasterDirective (const OMPMasterDirective &S) |
void | EmitOMPMaskedDirective (const OMPMaskedDirective &S) |
void | EmitOMPCriticalDirective (const OMPCriticalDirective &S) |
void | EmitOMPParallelForDirective (const OMPParallelForDirective &S) |
void | EmitOMPParallelForSimdDirective (const OMPParallelForSimdDirective &S) |
void | EmitOMPParallelSectionsDirective (const OMPParallelSectionsDirective &S) |
void | EmitOMPParallelMasterDirective (const OMPParallelMasterDirective &S) |
void | EmitOMPTaskDirective (const OMPTaskDirective &S) |
void | EmitOMPTaskyieldDirective (const OMPTaskyieldDirective &S) |
void | EmitOMPErrorDirective (const OMPErrorDirective &S) |
void | EmitOMPBarrierDirective (const OMPBarrierDirective &S) |
void | EmitOMPTaskwaitDirective (const OMPTaskwaitDirective &S) |
void | EmitOMPTaskgroupDirective (const OMPTaskgroupDirective &S) |
void | EmitOMPFlushDirective (const OMPFlushDirective &S) |
void | EmitOMPDepobjDirective (const OMPDepobjDirective &S) |
void | EmitOMPScanDirective (const OMPScanDirective &S) |
void | EmitOMPOrderedDirective (const OMPOrderedDirective &S) |
void | EmitOMPAtomicDirective (const OMPAtomicDirective &S) |
void | EmitOMPTargetDirective (const OMPTargetDirective &S) |
void | EmitOMPTargetDataDirective (const OMPTargetDataDirective &S) |
void | EmitOMPTargetEnterDataDirective (const OMPTargetEnterDataDirective &S) |
void | EmitOMPTargetExitDataDirective (const OMPTargetExitDataDirective &S) |
void | EmitOMPTargetUpdateDirective (const OMPTargetUpdateDirective &S) |
void | EmitOMPTargetParallelDirective (const OMPTargetParallelDirective &S) |
void | EmitOMPTargetParallelForDirective (const OMPTargetParallelForDirective &S) |
void | EmitOMPTeamsDirective (const OMPTeamsDirective &S) |
void | EmitOMPCancellationPointDirective (const OMPCancellationPointDirective &S) |
void | EmitOMPCancelDirective (const OMPCancelDirective &S) |
void | EmitOMPTaskLoopBasedDirective (const OMPLoopDirective &S) |
void | EmitOMPTaskLoopDirective (const OMPTaskLoopDirective &S) |
void | EmitOMPTaskLoopSimdDirective (const OMPTaskLoopSimdDirective &S) |
void | EmitOMPMasterTaskLoopDirective (const OMPMasterTaskLoopDirective &S) |
void | EmitOMPMasterTaskLoopSimdDirective (const OMPMasterTaskLoopSimdDirective &S) |
void | EmitOMPParallelMasterTaskLoopDirective (const OMPParallelMasterTaskLoopDirective &S) |
void | EmitOMPParallelMasterTaskLoopSimdDirective (const OMPParallelMasterTaskLoopSimdDirective &S) |
void | EmitOMPDistributeDirective (const OMPDistributeDirective &S) |
void | EmitOMPDistributeParallelForDirective (const OMPDistributeParallelForDirective &S) |
void | EmitOMPDistributeParallelForSimdDirective (const OMPDistributeParallelForSimdDirective &S) |
void | EmitOMPDistributeSimdDirective (const OMPDistributeSimdDirective &S) |
void | EmitOMPTargetParallelForSimdDirective (const OMPTargetParallelForSimdDirective &S) |
void | EmitOMPTargetSimdDirective (const OMPTargetSimdDirective &S) |
void | EmitOMPTeamsDistributeDirective (const OMPTeamsDistributeDirective &S) |
void | EmitOMPTeamsDistributeSimdDirective (const OMPTeamsDistributeSimdDirective &S) |
void | EmitOMPTeamsDistributeParallelForSimdDirective (const OMPTeamsDistributeParallelForSimdDirective &S) |
void | EmitOMPTeamsDistributeParallelForDirective (const OMPTeamsDistributeParallelForDirective &S) |
void | EmitOMPTargetTeamsDirective (const OMPTargetTeamsDirective &S) |
void | EmitOMPTargetTeamsDistributeDirective (const OMPTargetTeamsDistributeDirective &S) |
void | EmitOMPTargetTeamsDistributeParallelForDirective (const OMPTargetTeamsDistributeParallelForDirective &S) |
void | EmitOMPTargetTeamsDistributeParallelForSimdDirective (const OMPTargetTeamsDistributeParallelForSimdDirective &S) |
void | EmitOMPTargetTeamsDistributeSimdDirective (const OMPTargetTeamsDistributeSimdDirective &S) |
void | EmitOMPGenericLoopDirective (const OMPGenericLoopDirective &S) |
void | EmitOMPParallelGenericLoopDirective (const OMPLoopDirective &S) |
void | EmitOMPTargetParallelGenericLoopDirective (const OMPTargetParallelGenericLoopDirective &S) |
void | EmitOMPTargetTeamsGenericLoopDirective (const OMPTargetTeamsGenericLoopDirective &S) |
void | EmitOMPTeamsGenericLoopDirective (const OMPTeamsGenericLoopDirective &S) |
void | EmitOMPInteropDirective (const OMPInteropDirective &S) |
void | EmitOMPParallelMaskedDirective (const OMPParallelMaskedDirective &S) |
void | EmitOMPAssumeDirective (const OMPAssumeDirective &S) |
llvm::CanonicalLoopInfo * | EmitOMPCollapsedCanonicalLoopNest (const Stmt *S, int Depth) |
Emit the Stmt S and return its topmost canonical loop, if any. | |
void | EmitOMPCanonicalLoop (const OMPCanonicalLoop *S) |
Emit an OMPCanonicalLoop using the OpenMPIRBuilder. | |
void | EmitOMPInnerLoop (const OMPExecutableDirective &S, bool RequiresCleanup, const Expr *LoopCond, const Expr *IncExpr, const llvm::function_ref< void(CodeGenFunction &)> BodyGen, const llvm::function_ref< void(CodeGenFunction &)> PostIncGen) |
Emit inner loop of the worksharing/simd construct. | |
JumpDest | getOMPCancelDestination (OpenMPDirectiveKind Kind) |
void | EmitOMPPrivateLoopCounters (const OMPLoopDirective &S, OMPPrivateScope &LoopScope) |
Emit initial code for loop counters of loop-based directives. | |
void | EmitOMPLoopBody (const OMPLoopDirective &D, JumpDest LoopExit) |
Helper for the OpenMP loop directives. | |
bool | EmitOMPWorksharingLoop (const OMPLoopDirective &S, Expr *EUB, const CodeGenLoopBoundsTy &CodeGenLoopBounds, const CodeGenDispatchBoundsTy &CGDispatchBounds) |
Emit code for the worksharing loop-based directive. | |
void | EmitOMPDistributeLoop (const OMPLoopDirective &S, const CodeGenLoopTy &CodeGenLoop, Expr *IncExpr) |
Emit code for the distribute loop-based directive. | |
void | EmitOMPSimdInit (const OMPLoopDirective &D) |
Helpers for the OpenMP loop directives. | |
void | EmitOMPSimdFinal (const OMPLoopDirective &D, const llvm::function_ref< llvm::Value *(CodeGenFunction &)> CondGen) |
LValue | EmitOMPSharedLValue (const Expr *E) |
Emits the lvalue for the expression with possibly captured variable. | |
void | EmitOpenACCComputeConstruct (const OpenACCComputeConstruct &S) |
void | EmitOpenACCLoopConstruct (const OpenACCLoopConstruct &S) |
llvm::Value * | EmitNonNullRValueCheck (RValue RV, QualType T) |
Create a check that a scalar RValue is non-null. | |
RValue | GetUndefRValue (QualType Ty) |
GetUndefRValue - Get an appropriate 'undef' rvalue for the given type. | |
RValue | EmitUnsupportedRValue (const Expr *E, const char *Name) |
EmitUnsupportedRValue - Emit a dummy r-value using the type of E and issue an ErrorUnsupported style diagnostic (using the provided Name). | |
LValue | EmitUnsupportedLValue (const Expr *E, const char *Name) |
EmitUnsupportedLValue - Emit a dummy l-value using the type of E and issue an ErrorUnsupported style diagnostic (using the provided Name). | |
LValue | EmitLValue (const Expr *E, KnownNonNull_t IsKnownNonNull=NotKnownNonNull) |
EmitLValue - Emit code to compute a designator that specifies the location of the expression. | |
LValue | EmitCheckedLValue (const Expr *E, TypeCheckKind TCK) |
Same as EmitLValue but additionally we generate checking code to guard against undefined behavior. | |
RValue | convertTempToRValue (Address addr, QualType type, SourceLocation Loc) |
void | EmitAtomicInit (Expr *E, LValue lvalue) |
bool | LValueIsSuitableForInlineAtomic (LValue Src) |
RValue | EmitAtomicLoad (LValue LV, SourceLocation SL, AggValueSlot Slot=AggValueSlot::ignored()) |
RValue | EmitAtomicLoad (LValue lvalue, SourceLocation loc, llvm::AtomicOrdering AO, bool IsVolatile=false, AggValueSlot slot=AggValueSlot::ignored()) |
void | EmitAtomicStore (RValue rvalue, LValue lvalue, bool isInit) |
void | EmitAtomicStore (RValue rvalue, LValue lvalue, llvm::AtomicOrdering AO, bool IsVolatile, bool isInit) |
std::pair< RValue, llvm::Value * > | EmitAtomicCompareExchange (LValue Obj, RValue Expected, RValue Desired, SourceLocation Loc, llvm::AtomicOrdering Success=llvm::AtomicOrdering::SequentiallyConsistent, llvm::AtomicOrdering Failure=llvm::AtomicOrdering::SequentiallyConsistent, bool IsWeak=false, AggValueSlot Slot=AggValueSlot::ignored()) |
llvm::AtomicRMWInst * | emitAtomicRMWInst (llvm::AtomicRMWInst::BinOp Op, Address Addr, llvm::Value *Val, llvm::AtomicOrdering Order=llvm::AtomicOrdering::SequentiallyConsistent, llvm::SyncScope::ID SSID=llvm::SyncScope::System) |
Emit an atomicrmw instruction, and applying relevant metadata when applicable. | |
void | EmitAtomicUpdate (LValue LVal, llvm::AtomicOrdering AO, const llvm::function_ref< RValue(RValue)> &UpdateOp, bool IsVolatile) |
llvm::Value * | EmitToMemory (llvm::Value *Value, QualType Ty) |
EmitToMemory - Change a scalar value from its value representation to its in-memory representation. | |
llvm::Value * | EmitFromMemory (llvm::Value *Value, QualType Ty) |
EmitFromMemory - Change a scalar value from its memory representation to its value representation. | |
bool | EmitScalarRangeCheck (llvm::Value *Value, QualType Ty, SourceLocation Loc) |
Check if the scalar Value is within the valid range for the given type Ty . | |
llvm::Value * | EmitLoadOfScalar (Address Addr, bool Volatile, QualType Ty, SourceLocation Loc, AlignmentSource Source=AlignmentSource::Type, bool isNontemporal=false) |
EmitLoadOfScalar - Load a scalar value from an address, taking care to appropriately convert from the memory representation to the LLVM value representation. | |
llvm::Value * | EmitLoadOfScalar (Address Addr, bool Volatile, QualType Ty, SourceLocation Loc, LValueBaseInfo BaseInfo, TBAAAccessInfo TBAAInfo, bool isNontemporal=false) |
llvm::Value * | EmitLoadOfScalar (LValue lvalue, SourceLocation Loc) |
EmitLoadOfScalar - Load a scalar value from an address, taking care to appropriately convert from the memory representation to the LLVM value representation. | |
void | EmitStoreOfScalar (llvm::Value *Value, Address Addr, bool Volatile, QualType Ty, AlignmentSource Source=AlignmentSource::Type, bool isInit=false, bool isNontemporal=false) |
EmitStoreOfScalar - Store a scalar value to an address, taking care to appropriately convert from the memory representation to the LLVM value representation. | |
void | EmitStoreOfScalar (llvm::Value *Value, Address Addr, bool Volatile, QualType Ty, LValueBaseInfo BaseInfo, TBAAAccessInfo TBAAInfo, bool isInit=false, bool isNontemporal=false) |
void | EmitStoreOfScalar (llvm::Value *value, LValue lvalue, bool isInit=false) |
EmitStoreOfScalar - Store a scalar value to an address, taking care to appropriately convert from the memory representation to the LLVM value representation. | |
RValue | EmitLoadOfLValue (LValue V, SourceLocation Loc) |
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. | |
RValue | EmitLoadOfExtVectorElementLValue (LValue V) |
RValue | EmitLoadOfBitfieldLValue (LValue LV, SourceLocation Loc) |
RValue | EmitLoadOfGlobalRegLValue (LValue LV) |
RValue | EmitLoadOfAnyValue (LValue V, AggValueSlot Slot=AggValueSlot::ignored(), SourceLocation Loc={}) |
Like EmitLoadOfLValue but also handles complex and aggregate types. | |
void | EmitStoreThroughLValue (RValue Src, LValue Dst, bool isInit=false) |
EmitStoreThroughLValue - Store the specified rvalue into the specified lvalue, where both are guaranteed to the have the same type, and that type is 'Ty'. | |
void | EmitStoreThroughExtVectorComponentLValue (RValue Src, LValue Dst) |
void | EmitStoreThroughGlobalRegLValue (RValue Src, LValue Dst) |
void | EmitStoreThroughBitfieldLValue (RValue Src, LValue Dst, llvm::Value **Result=nullptr) |
EmitStoreThroughBitfieldLValue - Store Src into Dst with same constraints as EmitStoreThroughLValue. | |
LValue | EmitComplexAssignmentLValue (const BinaryOperator *E) |
Emit an l-value for an assignment (simple or compound) of complex type. | |
LValue | EmitComplexCompoundAssignmentLValue (const CompoundAssignOperator *E) |
LValue | EmitScalarCompoundAssignWithComplex (const CompoundAssignOperator *E, llvm::Value *&Result) |
LValue | EmitBinaryOperatorLValue (const BinaryOperator *E) |
LValue | EmitCompoundAssignmentLValue (const CompoundAssignOperator *E) |
LValue | EmitCallExprLValue (const CallExpr *E) |
LValue | EmitVAArgExprLValue (const VAArgExpr *E) |
LValue | EmitDeclRefLValue (const DeclRefExpr *E) |
LValue | EmitStringLiteralLValue (const StringLiteral *E) |
LValue | EmitObjCEncodeExprLValue (const ObjCEncodeExpr *E) |
LValue | EmitPredefinedLValue (const PredefinedExpr *E) |
LValue | EmitUnaryOpLValue (const UnaryOperator *E) |
LValue | EmitArraySubscriptExpr (const ArraySubscriptExpr *E, bool Accessed=false) |
LValue | EmitMatrixSubscriptExpr (const MatrixSubscriptExpr *E) |
LValue | EmitArraySectionExpr (const ArraySectionExpr *E, bool IsLowerBound=true) |
LValue | EmitExtVectorElementExpr (const ExtVectorElementExpr *E) |
LValue | EmitMemberExpr (const MemberExpr *E) |
LValue | EmitObjCIsaExpr (const ObjCIsaExpr *E) |
LValue | EmitCompoundLiteralLValue (const CompoundLiteralExpr *E) |
LValue | EmitInitListLValue (const InitListExpr *E) |
void | EmitIgnoredConditionalOperator (const AbstractConditionalOperator *E) |
LValue | EmitConditionalOperatorLValue (const AbstractConditionalOperator *E) |
LValue | EmitCastLValue (const CastExpr *E) |
LValue | EmitMaterializeTemporaryExpr (const MaterializeTemporaryExpr *E) |
LValue | EmitOpaqueValueLValue (const OpaqueValueExpr *e) |
Address | EmitExtVectorElementLValue (LValue V) |
RValue | EmitRValueForField (LValue LV, const FieldDecl *FD, SourceLocation Loc) |
Address | EmitArrayToPointerDecay (const Expr *Array, LValueBaseInfo *BaseInfo=nullptr, TBAAAccessInfo *TBAAInfo=nullptr) |
ConstantEmission | tryEmitAsConstant (DeclRefExpr *refExpr) |
ConstantEmission | tryEmitAsConstant (const MemberExpr *ME) |
llvm::Value * | emitScalarConstant (const ConstantEmission &Constant, Expr *E) |
RValue | EmitPseudoObjectRValue (const PseudoObjectExpr *e, AggValueSlot slot=AggValueSlot::ignored()) |
LValue | EmitPseudoObjectLValue (const PseudoObjectExpr *e) |
llvm::Value * | EmitIvarOffset (const ObjCInterfaceDecl *Interface, const ObjCIvarDecl *Ivar) |
llvm::Value * | EmitIvarOffsetAsPointerDiff (const ObjCInterfaceDecl *Interface, const ObjCIvarDecl *Ivar) |
LValue | EmitLValueForField (LValue Base, const FieldDecl *Field) |
LValue | EmitLValueForLambdaField (const FieldDecl *Field) |
LValue | EmitLValueForLambdaField (const FieldDecl *Field, llvm::Value *ThisValue) |
LValue | EmitLValueForFieldInitialization (LValue Base, const FieldDecl *Field) |
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. | |
LValue | EmitLValueForIvar (QualType ObjectTy, llvm::Value *Base, const ObjCIvarDecl *Ivar, unsigned CVRQualifiers) |
LValue | EmitCXXConstructLValue (const CXXConstructExpr *E) |
LValue | EmitCXXBindTemporaryLValue (const CXXBindTemporaryExpr *E) |
LValue | EmitCXXTypeidLValue (const CXXTypeidExpr *E) |
LValue | EmitCXXUuidofLValue (const CXXUuidofExpr *E) |
LValue | EmitObjCMessageExprLValue (const ObjCMessageExpr *E) |
LValue | EmitObjCIvarRefLValue (const ObjCIvarRefExpr *E) |
LValue | EmitStmtExprLValue (const StmtExpr *E) |
LValue | EmitPointerToDataMemberBinaryExpr (const BinaryOperator *E) |
LValue | EmitObjCSelectorLValue (const ObjCSelectorExpr *E) |
void | EmitDeclRefExprDbgValue (const DeclRefExpr *E, const APValue &Init) |
RValue | EmitCall (const CGFunctionInfo &CallInfo, const CGCallee &Callee, ReturnValueSlot ReturnValue, const CallArgList &Args, llvm::CallBase **callOrInvoke, bool IsMustTail, SourceLocation Loc, bool IsVirtualFunctionPointerThunk=false) |
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. | |
RValue | EmitCall (const CGFunctionInfo &CallInfo, const CGCallee &Callee, ReturnValueSlot ReturnValue, const CallArgList &Args, llvm::CallBase **callOrInvoke=nullptr, bool IsMustTail=false) |
RValue | EmitCall (QualType FnType, const CGCallee &Callee, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Value *Chain=nullptr) |
RValue | EmitCallExpr (const CallExpr *E, ReturnValueSlot ReturnValue=ReturnValueSlot()) |
RValue | EmitSimpleCallExpr (const CallExpr *E, ReturnValueSlot ReturnValue) |
CGCallee | EmitCallee (const Expr *E) |
void | checkTargetFeatures (const CallExpr *E, const FunctionDecl *TargetDecl) |
void | checkTargetFeatures (SourceLocation Loc, const FunctionDecl *TargetDecl) |
llvm::CallInst * | EmitRuntimeCall (llvm::FunctionCallee callee, const Twine &name="") |
llvm::CallInst * | EmitRuntimeCall (llvm::FunctionCallee callee, ArrayRef< llvm::Value * > args, const Twine &name="") |
llvm::CallInst * | EmitNounwindRuntimeCall (llvm::FunctionCallee callee, const Twine &name="") |
llvm::CallInst * | EmitNounwindRuntimeCall (llvm::FunctionCallee callee, ArrayRef< Address > args, const Twine &name="") |
llvm::CallInst * | EmitNounwindRuntimeCall (llvm::FunctionCallee callee, ArrayRef< llvm::Value * > args, const Twine &name="") |
SmallVector< llvm::OperandBundleDef, 1 > | getBundlesForFunclet (llvm::Value *Callee) |
llvm::CallBase * | EmitCallOrInvoke (llvm::FunctionCallee Callee, ArrayRef< llvm::Value * > Args, const Twine &Name="") |
llvm::CallBase * | EmitRuntimeCallOrInvoke (llvm::FunctionCallee callee, ArrayRef< llvm::Value * > args, const Twine &name="") |
llvm::CallBase * | EmitRuntimeCallOrInvoke (llvm::FunctionCallee callee, const Twine &name="") |
void | EmitNoreturnRuntimeCallOrInvoke (llvm::FunctionCallee callee, ArrayRef< llvm::Value * > args) |
CGCallee | BuildAppleKextVirtualCall (const CXXMethodDecl *MD, NestedNameSpecifier *Qual, llvm::Type *Ty) |
CGCallee | BuildAppleKextVirtualDestructorCall (const CXXDestructorDecl *DD, CXXDtorType Type, const CXXRecordDecl *RD) |
bool | isPointerKnownNonNull (const Expr *E) |
llvm::Value * | EmitPointerAuthBlendDiscriminator (llvm::Value *StorageAddress, llvm::Value *Discriminator) |
Create the discriminator from the storage address and the entity hash. | |
CGPointerAuthInfo | EmitPointerAuthInfo (const PointerAuthSchema &Schema, llvm::Value *StorageAddress, GlobalDecl SchemaDecl, QualType SchemaType) |
llvm::Value * | EmitPointerAuthSign (const CGPointerAuthInfo &Info, llvm::Value *Pointer) |
llvm::Value * | EmitPointerAuthAuth (const CGPointerAuthInfo &Info, llvm::Value *Pointer) |
llvm::Value * | emitPointerAuthResign (llvm::Value *Pointer, QualType PointerType, const CGPointerAuthInfo &CurAuthInfo, const CGPointerAuthInfo &NewAuthInfo, bool IsKnownNonNull) |
llvm::Value * | emitPointerAuthResignCall (llvm::Value *Pointer, const CGPointerAuthInfo &CurInfo, const CGPointerAuthInfo &NewInfo) |
void | EmitPointerAuthOperandBundle (const CGPointerAuthInfo &Info, SmallVectorImpl< llvm::OperandBundleDef > &Bundles) |
llvm::Value * | authPointerToPointerCast (llvm::Value *ResultPtr, QualType SourceType, QualType DestType) |
Address | authPointerToPointerCast (Address Ptr, QualType SourceType, QualType DestType) |
Address | getAsNaturalAddressOf (Address Addr, QualType PointeeTy) |
llvm::Value * | getAsNaturalPointerTo (Address Addr, QualType PointeeType) |
void | defaultInitNonTrivialCStructVar (LValue Dst) |
void | callCStructDefaultConstructor (LValue Dst) |
void | callCStructDestructor (LValue Dst) |
void | callCStructCopyConstructor (LValue Dst, LValue Src) |
void | callCStructMoveConstructor (LValue Dst, LValue Src) |
void | callCStructCopyAssignmentOperator (LValue Dst, LValue Src) |
void | callCStructMoveAssignmentOperator (LValue Dst, LValue Src) |
RValue | EmitCXXMemberOrOperatorCall (const CXXMethodDecl *Method, const CGCallee &Callee, ReturnValueSlot ReturnValue, llvm::Value *This, llvm::Value *ImplicitParam, QualType ImplicitParamTy, const CallExpr *E, CallArgList *RtlArgs) |
RValue | EmitCXXDestructorCall (GlobalDecl Dtor, const CGCallee &Callee, llvm::Value *This, QualType ThisTy, llvm::Value *ImplicitParam, QualType ImplicitParamTy, const CallExpr *E) |
RValue | EmitCXXMemberCallExpr (const CXXMemberCallExpr *E, ReturnValueSlot ReturnValue) |
RValue | EmitCXXMemberOrOperatorMemberCallExpr (const CallExpr *CE, const CXXMethodDecl *MD, ReturnValueSlot ReturnValue, bool HasQualifier, NestedNameSpecifier *Qualifier, bool IsArrow, const Expr *Base) |
Address | EmitCXXMemberDataPointerAddress (const Expr *E, Address base, llvm::Value *memberPtr, const MemberPointerType *memberPtrType, LValueBaseInfo *BaseInfo=nullptr, TBAAAccessInfo *TBAAInfo=nullptr) |
RValue | EmitCXXMemberPointerCallExpr (const CXXMemberCallExpr *E, ReturnValueSlot ReturnValue) |
RValue | EmitCXXOperatorMemberCallExpr (const CXXOperatorCallExpr *E, const CXXMethodDecl *MD, ReturnValueSlot ReturnValue) |
RValue | EmitCXXPseudoDestructorExpr (const CXXPseudoDestructorExpr *E) |
RValue | EmitCUDAKernelCallExpr (const CUDAKernelCallExpr *E, ReturnValueSlot ReturnValue) |
RValue | EmitNVPTXDevicePrintfCallExpr (const CallExpr *E) |
RValue | EmitAMDGPUDevicePrintfCallExpr (const CallExpr *E) |
RValue | EmitBuiltinExpr (const GlobalDecl GD, unsigned BuiltinID, const CallExpr *E, ReturnValueSlot ReturnValue) |
RValue | emitRotate (const CallExpr *E, bool IsRotateRight) |
RValue | emitBuiltinOSLogFormat (const CallExpr &E) |
Emit IR for __builtin_os_log_format. | |
RValue | EmitBuiltinIsAligned (const CallExpr *E) |
Emit IR for __builtin_is_aligned. | |
RValue | EmitBuiltinAlignTo (const CallExpr *E, bool AlignUp) |
Emit IR for __builtin_align_up/__builtin_align_down. | |
llvm::Function * | generateBuiltinOSLogHelperFunction (const analyze_os_log::OSLogBufferLayout &Layout, CharUnits BufferAlignment) |
RValue | EmitBlockCallExpr (const CallExpr *E, ReturnValueSlot ReturnValue) |
llvm::Value * | EmitTargetBuiltinExpr (unsigned BuiltinID, const CallExpr *E, ReturnValueSlot ReturnValue) |
EmitTargetBuiltinExpr - Emit the given builtin call. | |
llvm::Value * | EmitAArch64CompareBuiltinExpr (llvm::Value *Op, llvm::Type *Ty, const llvm::CmpInst::Predicate Fp, const llvm::CmpInst::Predicate Ip, const llvm::Twine &Name="") |
llvm::Value * | EmitARMBuiltinExpr (unsigned BuiltinID, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Triple::ArchType Arch) |
llvm::Value * | EmitARMMVEBuiltinExpr (unsigned BuiltinID, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Triple::ArchType Arch) |
llvm::Value * | EmitARMCDEBuiltinExpr (unsigned BuiltinID, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Triple::ArchType Arch) |
llvm::Value * | EmitCMSEClearRecord (llvm::Value *V, llvm::IntegerType *ITy, QualType RTy) |
llvm::Value * | EmitCMSEClearRecord (llvm::Value *V, llvm::ArrayType *ATy, QualType RTy) |
llvm::Value * | EmitCommonNeonBuiltinExpr (unsigned BuiltinID, unsigned LLVMIntrinsic, unsigned AltLLVMIntrinsic, const char *NameHint, unsigned Modifier, const CallExpr *E, SmallVectorImpl< llvm::Value * > &Ops, Address PtrOp0, Address PtrOp1, llvm::Triple::ArchType Arch) |
llvm::Function * | LookupNeonLLVMIntrinsic (unsigned IntrinsicID, unsigned Modifier, llvm::Type *ArgTy, const CallExpr *E) |
llvm::Value * | EmitNeonCall (llvm::Function *F, SmallVectorImpl< llvm::Value * > &O, const char *name, unsigned shift=0, bool rightshift=false) |
llvm::Value * | EmitNeonSplat (llvm::Value *V, llvm::Constant *Idx, const llvm::ElementCount &Count) |
llvm::Value * | EmitNeonSplat (llvm::Value *V, llvm::Constant *Idx) |
llvm::Value * | EmitNeonShiftVector (llvm::Value *V, llvm::Type *Ty, bool negateForRightShift) |
llvm::Value * | EmitNeonRShiftImm (llvm::Value *Vec, llvm::Value *Amt, llvm::Type *Ty, bool usgn, const char *name) |
llvm::Value * | vectorWrapScalar16 (llvm::Value *Op) |
llvm::Type * | SVEBuiltinMemEltTy (const SVETypeFlags &TypeFlags) |
SVEBuiltinMemEltTy - Returns the memory element type for this memory access builtin. | |
SmallVector< llvm::Type *, 2 > | getSVEOverloadTypes (const SVETypeFlags &TypeFlags, llvm::Type *ReturnType, ArrayRef< llvm::Value * > Ops) |
llvm::Type * | getEltType (const SVETypeFlags &TypeFlags) |
llvm::ScalableVectorType * | getSVEType (const SVETypeFlags &TypeFlags) |
llvm::ScalableVectorType * | getSVEPredType (const SVETypeFlags &TypeFlags) |
llvm::Value * | EmitSVETupleSetOrGet (const SVETypeFlags &TypeFlags, llvm::Type *ReturnType, ArrayRef< llvm::Value * > Ops) |
llvm::Value * | EmitSVETupleCreate (const SVETypeFlags &TypeFlags, llvm::Type *ReturnType, ArrayRef< llvm::Value * > Ops) |
llvm::Value * | EmitSVEAllTruePred (const SVETypeFlags &TypeFlags) |
llvm::Value * | EmitSVEDupX (llvm::Value *Scalar) |
llvm::Value * | EmitSVEDupX (llvm::Value *Scalar, llvm::Type *Ty) |
llvm::Value * | EmitSVEReinterpret (llvm::Value *Val, llvm::Type *Ty) |
llvm::Value * | EmitSVEPMull (const SVETypeFlags &TypeFlags, llvm::SmallVectorImpl< llvm::Value * > &Ops, unsigned BuiltinID) |
llvm::Value * | EmitSVEMovl (const SVETypeFlags &TypeFlags, llvm::ArrayRef< llvm::Value * > Ops, unsigned BuiltinID) |
llvm::Value * | EmitSVEPredicateCast (llvm::Value *Pred, llvm::ScalableVectorType *VTy) |
llvm::Value * | EmitSVEGatherLoad (const SVETypeFlags &TypeFlags, llvm::SmallVectorImpl< llvm::Value * > &Ops, unsigned IntID) |
llvm::Value * | EmitSVEScatterStore (const SVETypeFlags &TypeFlags, llvm::SmallVectorImpl< llvm::Value * > &Ops, unsigned IntID) |
llvm::Value * | EmitSVEMaskedLoad (const CallExpr *, llvm::Type *ReturnTy, SmallVectorImpl< llvm::Value * > &Ops, unsigned BuiltinID, bool IsZExtReturn) |
llvm::Value * | EmitSVEMaskedStore (const CallExpr *, SmallVectorImpl< llvm::Value * > &Ops, unsigned BuiltinID) |
llvm::Value * | EmitSVEPrefetchLoad (const SVETypeFlags &TypeFlags, SmallVectorImpl< llvm::Value * > &Ops, unsigned BuiltinID) |
llvm::Value * | EmitSVEGatherPrefetch (const SVETypeFlags &TypeFlags, SmallVectorImpl< llvm::Value * > &Ops, unsigned IntID) |
llvm::Value * | EmitSVEStructLoad (const SVETypeFlags &TypeFlags, SmallVectorImpl< llvm::Value * > &Ops, unsigned IntID) |
llvm::Value * | EmitSVEStructStore (const SVETypeFlags &TypeFlags, SmallVectorImpl< llvm::Value * > &Ops, unsigned IntID) |
llvm::Value * | FormSVEBuiltinResult (llvm::Value *Call) |
FormSVEBuiltinResult - Returns the struct of scalable vectors as a wider vector. | |
llvm::Value * | EmitAArch64SVEBuiltinExpr (unsigned BuiltinID, const CallExpr *E) |
llvm::Value * | EmitSMELd1St1 (const SVETypeFlags &TypeFlags, llvm::SmallVectorImpl< llvm::Value * > &Ops, unsigned IntID) |
llvm::Value * | EmitSMEReadWrite (const SVETypeFlags &TypeFlags, llvm::SmallVectorImpl< llvm::Value * > &Ops, unsigned IntID) |
llvm::Value * | EmitSMEZero (const SVETypeFlags &TypeFlags, llvm::SmallVectorImpl< llvm::Value * > &Ops, unsigned IntID) |
llvm::Value * | EmitSMELdrStr (const SVETypeFlags &TypeFlags, llvm::SmallVectorImpl< llvm::Value * > &Ops, unsigned IntID) |
void | GetAArch64SVEProcessedOperands (unsigned BuiltinID, const CallExpr *E, SmallVectorImpl< llvm::Value * > &Ops, SVETypeFlags TypeFlags) |
llvm::Value * | EmitAArch64SMEBuiltinExpr (unsigned BuiltinID, const CallExpr *E) |
llvm::Value * | EmitAArch64BuiltinExpr (unsigned BuiltinID, const CallExpr *E, llvm::Triple::ArchType Arch) |
llvm::Value * | EmitBPFBuiltinExpr (unsigned BuiltinID, const CallExpr *E) |
llvm::Value * | BuildVector (ArrayRef< llvm::Value * > Ops) |
llvm::Value * | EmitX86BuiltinExpr (unsigned BuiltinID, const CallExpr *E) |
llvm::Value * | EmitPPCBuiltinExpr (unsigned BuiltinID, const CallExpr *E) |
llvm::Value * | EmitAMDGPUBuiltinExpr (unsigned BuiltinID, const CallExpr *E) |
llvm::Value * | EmitHLSLBuiltinExpr (unsigned BuiltinID, const CallExpr *E) |
llvm::Value * | EmitScalarOrConstFoldImmArg (unsigned ICEArguments, unsigned Idx, const CallExpr *E) |
llvm::Value * | EmitSystemZBuiltinExpr (unsigned BuiltinID, const CallExpr *E) |
llvm::Value * | EmitNVPTXBuiltinExpr (unsigned BuiltinID, const CallExpr *E) |
llvm::Value * | EmitWebAssemblyBuiltinExpr (unsigned BuiltinID, const CallExpr *E) |
llvm::Value * | EmitHexagonBuiltinExpr (unsigned BuiltinID, const CallExpr *E) |
llvm::Value * | EmitRISCVBuiltinExpr (unsigned BuiltinID, const CallExpr *E, ReturnValueSlot ReturnValue) |
llvm::Value * | EmitRISCVCpuSupports (const CallExpr *E) |
llvm::Value * | EmitRISCVCpuSupports (ArrayRef< StringRef > FeaturesStrs) |
llvm::Value * | EmitRISCVCpuInit () |
void | AddAMDGPUFenceAddressSpaceMMRA (llvm::Instruction *Inst, const CallExpr *E) |
void | ProcessOrderScopeAMDGCN (llvm::Value *Order, llvm::Value *Scope, llvm::AtomicOrdering &AO, llvm::SyncScope::ID &SSID) |
llvm::Value * | EmitMSVCBuiltinExpr (MSVCIntrin BuiltinID, const CallExpr *E) |
llvm::Value * | EmitBuiltinAvailable (const VersionTuple &Version) |
llvm::Value * | EmitObjCProtocolExpr (const ObjCProtocolExpr *E) |
llvm::Value * | EmitObjCStringLiteral (const ObjCStringLiteral *E) |
llvm::Value * | EmitObjCBoxedExpr (const ObjCBoxedExpr *E) |
llvm::Value * | EmitObjCArrayLiteral (const ObjCArrayLiteral *E) |
llvm::Value * | EmitObjCDictionaryLiteral (const ObjCDictionaryLiteral *E) |
llvm::Value * | EmitObjCCollectionLiteral (const Expr *E, const ObjCMethodDecl *MethodWithObjects) |
llvm::Value * | EmitObjCSelectorExpr (const ObjCSelectorExpr *E) |
RValue | EmitObjCMessageExpr (const ObjCMessageExpr *E, ReturnValueSlot Return=ReturnValueSlot()) |
CleanupKind | getARCCleanupKind () |
Retrieves the default cleanup kind for an ARC cleanup. | |
void | EmitARCInitWeak (Address addr, llvm::Value *value) |
void | EmitARCDestroyWeak (Address addr) |
llvm::Value * | EmitARCLoadWeak (Address addr) |
llvm::Value * | EmitARCLoadWeakRetained (Address addr) |
llvm::Value * | EmitARCStoreWeak (Address addr, llvm::Value *value, bool ignored) |
void | emitARCCopyAssignWeak (QualType Ty, Address DstAddr, Address SrcAddr) |
void | emitARCMoveAssignWeak (QualType Ty, Address DstAddr, Address SrcAddr) |
void | EmitARCCopyWeak (Address dst, Address src) |
void | EmitARCMoveWeak (Address dst, Address src) |
llvm::Value * | EmitARCRetainAutorelease (QualType type, llvm::Value *value) |
llvm::Value * | EmitARCRetainAutoreleaseNonBlock (llvm::Value *value) |
llvm::Value * | EmitARCStoreStrong (LValue lvalue, llvm::Value *value, bool resultIgnored) |
llvm::Value * | EmitARCStoreStrongCall (Address addr, llvm::Value *value, bool resultIgnored) |
llvm::Value * | EmitARCRetain (QualType type, llvm::Value *value) |
llvm::Value * | EmitARCRetainNonBlock (llvm::Value *value) |
llvm::Value * | EmitARCRetainBlock (llvm::Value *value, bool mandatory) |
void | EmitARCDestroyStrong (Address addr, ARCPreciseLifetime_t precise) |
void | EmitARCRelease (llvm::Value *value, ARCPreciseLifetime_t precise) |
llvm::Value * | EmitARCAutorelease (llvm::Value *value) |
llvm::Value * | EmitARCAutoreleaseReturnValue (llvm::Value *value) |
llvm::Value * | EmitARCRetainAutoreleaseReturnValue (llvm::Value *value) |
llvm::Value * | EmitARCRetainAutoreleasedReturnValue (llvm::Value *value) |
llvm::Value * | EmitARCUnsafeClaimAutoreleasedReturnValue (llvm::Value *value) |
llvm::Value * | EmitObjCAutorelease (llvm::Value *value, llvm::Type *returnType) |
llvm::Value * | EmitObjCRetainNonBlock (llvm::Value *value, llvm::Type *returnType) |
void | EmitObjCRelease (llvm::Value *value, ARCPreciseLifetime_t precise) |
std::pair< LValue, llvm::Value * > | EmitARCStoreAutoreleasing (const BinaryOperator *e) |
std::pair< LValue, llvm::Value * > | EmitARCStoreStrong (const BinaryOperator *e, bool ignored) |
std::pair< LValue, llvm::Value * > | EmitARCStoreUnsafeUnretained (const BinaryOperator *e, bool ignored) |
llvm::Value * | EmitObjCAlloc (llvm::Value *value, llvm::Type *returnType) |
llvm::Value * | EmitObjCAllocWithZone (llvm::Value *value, llvm::Type *returnType) |
llvm::Value * | EmitObjCAllocInit (llvm::Value *value, llvm::Type *resultType) |
llvm::Value * | EmitObjCThrowOperand (const Expr *expr) |
llvm::Value * | EmitObjCConsumeObject (QualType T, llvm::Value *Ptr) |
llvm::Value * | EmitObjCExtendObjectLifetime (QualType T, llvm::Value *Ptr) |
llvm::Value * | EmitARCExtendBlockObject (const Expr *expr) |
llvm::Value * | EmitARCReclaimReturnedObject (const Expr *e, bool allowUnsafeClaim) |
llvm::Value * | EmitARCRetainScalarExpr (const Expr *expr) |
llvm::Value * | EmitARCRetainAutoreleaseScalarExpr (const Expr *expr) |
llvm::Value * | EmitARCUnsafeUnretainedScalarExpr (const Expr *expr) |
void | EmitARCIntrinsicUse (ArrayRef< llvm::Value * > values) |
void | EmitARCNoopIntrinsicUse (ArrayRef< llvm::Value * > values) |
void | EmitObjCAutoreleasePoolPop (llvm::Value *Ptr) |
llvm::Value * | EmitObjCAutoreleasePoolPush () |
llvm::Value * | EmitObjCMRRAutoreleasePoolPush () |
void | EmitObjCAutoreleasePoolCleanup (llvm::Value *Ptr) |
void | EmitObjCMRRAutoreleasePoolPop (llvm::Value *Ptr) |
RValue | EmitReferenceBindingToExpr (const Expr *E) |
Emits a reference binding to the passed in expression. | |
llvm::Value * | EmitScalarExpr (const Expr *E, bool IgnoreResultAssign=false) |
EmitScalarExpr - Emit the computation of the specified expression of LLVM scalar type, returning the result. | |
llvm::Value * | EmitScalarConversion (llvm::Value *Src, QualType SrcTy, QualType DstTy, SourceLocation Loc) |
Emit a conversion from the specified type to the specified destination type, both of which are LLVM scalar types. | |
llvm::Value * | EmitComplexToScalarConversion (ComplexPairTy Src, QualType SrcTy, QualType DstTy, SourceLocation Loc) |
Emit a conversion from the specified complex type to the specified destination type, where the destination type is an LLVM scalar type. | |
void | EmitAggExpr (const Expr *E, AggValueSlot AS) |
EmitAggExpr - Emit the computation of the specified expression of aggregate type. | |
LValue | EmitAggExprToLValue (const Expr *E) |
EmitAggExprToLValue - Emit the computation of the specified expression of aggregate type into a temporary LValue. | |
void | EmitAggFinalDestCopy (QualType Type, AggValueSlot Dest, const LValue &Src, ExprValueKind SrcKind) |
EmitAggFinalDestCopy - Emit copy of the specified aggregate into destination address. | |
void | CreateCoercedStore (llvm::Value *Src, Address Dst, llvm::TypeSize DstSize, bool DstIsVolatile) |
Create a store to. | |
void | EmitExtendGCLifetime (llvm::Value *object) |
EmitExtendGCLifetime - Given a pointer to an Objective-C object, make sure it survives garbage collection until this point. | |
ComplexPairTy | EmitComplexExpr (const Expr *E, bool IgnoreReal=false, bool IgnoreImag=false) |
EmitComplexExpr - Emit the computation of the specified expression of complex type, returning the result. | |
void | EmitComplexExprIntoLValue (const Expr *E, LValue dest, bool isInit) |
EmitComplexExprIntoLValue - Emit the given expression of complex type and place its result into the specified l-value. | |
void | EmitStoreOfComplex (ComplexPairTy V, LValue dest, bool isInit) |
EmitStoreOfComplex - Store a complex number into the specified l-value. | |
ComplexPairTy | EmitLoadOfComplex (LValue src, SourceLocation loc) |
EmitLoadOfComplex - Load a complex number from the specified l-value. | |
ComplexPairTy | EmitPromotedComplexExpr (const Expr *E, QualType PromotionType) |
llvm::Value * | EmitPromotedScalarExpr (const Expr *E, QualType PromotionType) |
ComplexPairTy | EmitPromotedValue (ComplexPairTy result, QualType PromotionType) |
ComplexPairTy | EmitUnPromotedValue (ComplexPairTy result, QualType PromotionType) |
Address | emitAddrOfRealComponent (Address complex, QualType complexType) |
Address | emitAddrOfImagComponent (Address complex, QualType complexType) |
llvm::GlobalVariable * | AddInitializerToStaticVarDecl (const VarDecl &D, llvm::GlobalVariable *GV) |
AddInitializerToStaticVarDecl - Add the initializer for 'D' to the global variable that has already been created for it. | |
void | EmitInvariantStart (llvm::Constant *Addr, CharUnits Size) |
void | EmitCXXGlobalVarDeclInit (const VarDecl &D, llvm::GlobalVariable *GV, bool PerformInit) |
EmitCXXGlobalVarDeclInit - Create the initializer for a C++ variable with global storage. | |
llvm::Constant * | createAtExitStub (const VarDecl &VD, llvm::FunctionCallee Dtor, llvm::Constant *Addr) |
llvm::Function * | createTLSAtExitStub (const VarDecl &VD, llvm::FunctionCallee Dtor, llvm::Constant *Addr, llvm::FunctionCallee &AtExit) |
void | registerGlobalDtorWithAtExit (const VarDecl &D, llvm::FunctionCallee fn, llvm::Constant *addr) |
Call atexit() with a function that passes the given argument to the given function. | |
void | registerGlobalDtorWithLLVM (const VarDecl &D, llvm::FunctionCallee fn, llvm::Constant *addr) |
Registers the dtor using 'llvm.global_dtors' for platforms that do not support an 'atexit()' function. | |
void | registerGlobalDtorWithAtExit (llvm::Constant *dtorStub) |
Call atexit() with function dtorStub. | |
llvm::Value * | unregisterGlobalDtorWithUnAtExit (llvm::Constant *dtorStub) |
Call unatexit() with function dtorStub. | |
void | EmitCXXGuardedInit (const VarDecl &D, llvm::GlobalVariable *DeclPtr, bool PerformInit) |
Emit code in this function to perform a guarded variable initialization. | |
void | EmitCXXGuardedInitBranch (llvm::Value *NeedsInit, llvm::BasicBlock *InitBlock, llvm::BasicBlock *NoInitBlock, GuardKind Kind, const VarDecl *D) |
Emit a branch to select whether or not to perform guarded initialization. | |
void | GenerateCXXGlobalInitFunc (llvm::Function *Fn, ArrayRef< llvm::Function * > CXXThreadLocals, ConstantAddress Guard=ConstantAddress::invalid()) |
GenerateCXXGlobalInitFunc - Generates code for initializing global variables. | |
void | GenerateCXXGlobalCleanUpFunc (llvm::Function *Fn, ArrayRef< std::tuple< llvm::FunctionType *, llvm::WeakTrackingVH, llvm::Constant * > > DtorsOrStermFinalizers) |
GenerateCXXGlobalCleanUpFunc - Generates code for cleaning up global variables. | |
void | GenerateCXXGlobalVarDeclInitFunc (llvm::Function *Fn, const VarDecl *D, llvm::GlobalVariable *Addr, bool PerformInit) |
void | EmitCXXConstructExpr (const CXXConstructExpr *E, AggValueSlot Dest) |
void | EmitSynthesizedCXXCopyCtor (Address Dest, Address Src, const Expr *Exp) |
void | EmitCXXThrowExpr (const CXXThrowExpr *E, bool KeepInsertionPoint=true) |
RValue | EmitAtomicExpr (AtomicExpr *E) |
llvm::Value * | EmitAnnotationCall (llvm::Function *AnnotationFn, llvm::Value *AnnotatedVal, StringRef AnnotationStr, SourceLocation Location, const AnnotateAttr *Attr) |
Emit an annotation call (intrinsic). | |
void | EmitVarAnnotations (const VarDecl *D, llvm::Value *V) |
Emit local annotations for the local variable V, declared by D. | |
Address | EmitFieldAnnotations (const FieldDecl *D, Address V) |
Emit field annotations for the given field & value. | |
bool | ConstantFoldsToSimpleInteger (const Expr *Cond, bool &Result, bool AllowLabels=false) |
ConstantFoldsToSimpleInteger - If the specified expression does not fold to a constant, or if it does but contains a label, return false. | |
bool | ConstantFoldsToSimpleInteger (const Expr *Cond, llvm::APSInt &Result, bool AllowLabels=false) |
ConstantFoldsToSimpleInteger - If the specified expression does not fold to a constant, or if it does but contains a label, return false. | |
void | EmitBranchToCounterBlock (const Expr *Cond, BinaryOperator::Opcode LOp, llvm::BasicBlock *TrueBlock, llvm::BasicBlock *FalseBlock, uint64_t TrueCount=0, Stmt::Likelihood LH=Stmt::LH_None, const Expr *CntrIdx=nullptr) |
EmitBranchToCounterBlock - Emit a conditional branch to a new block that increments a profile counter based on the semantics of the given logical operator opcode. | |
void | EmitBranchOnBoolExpr (const Expr *Cond, llvm::BasicBlock *TrueBlock, llvm::BasicBlock *FalseBlock, uint64_t TrueCount, Stmt::Likelihood LH=Stmt::LH_None, const Expr *ConditionalOp=nullptr) |
EmitBranchOnBoolExpr - Emit a branch on a boolean condition (e.g. | |
void | EmitNullabilityCheck (LValue LHS, llvm::Value *RHS, SourceLocation Loc) |
Given an assignment *LHS = RHS , emit a test that checks if RHS is nonnull, if LHS is marked _Nonnull. | |
llvm::Value * | EmitCheckedInBoundsGEP (llvm::Type *ElemTy, llvm::Value *Ptr, ArrayRef< llvm::Value * > IdxList, bool SignedIndices, bool IsSubtraction, SourceLocation Loc, const Twine &Name="") |
Same as IRBuilder::CreateInBoundsGEP, but additionally emits a check to detect undefined behavior when the pointer overflow sanitizer is enabled. | |
Address | EmitCheckedInBoundsGEP (Address Addr, ArrayRef< llvm::Value * > IdxList, llvm::Type *elementType, bool SignedIndices, bool IsSubtraction, SourceLocation Loc, CharUnits Align, const Twine &Name="") |
llvm::Value * | EmitCheckedArgForBuiltin (const Expr *E, BuiltinCheckKind Kind) |
Emits an argument for a call to a builtin. | |
llvm::Constant * | EmitCheckTypeDescriptor (QualType T) |
Emit a description of a type in a format suitable for passing to a runtime sanitizer handler. | |
llvm::Value * | EmitCheckValue (llvm::Value *V) |
Convert a value into a format suitable for passing to a runtime sanitizer handler. | |
llvm::Constant * | EmitCheckSourceLocation (SourceLocation Loc) |
Emit a description of a source location in a format suitable for passing to a runtime sanitizer handler. | |
void | EmitKCFIOperandBundle (const CGCallee &Callee, SmallVectorImpl< llvm::OperandBundleDef > &Bundles) |
void | EmitCheck (ArrayRef< std::pair< llvm::Value *, SanitizerMask > > Checked, SanitizerHandler Check, ArrayRef< llvm::Constant * > StaticArgs, ArrayRef< llvm::Value * > DynamicArgs) |
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. | |
void | EmitCfiSlowPathCheck (SanitizerMask Kind, llvm::Value *Cond, llvm::ConstantInt *TypeId, llvm::Value *Ptr, ArrayRef< llvm::Constant * > StaticArgs) |
Emit a slow path cross-DSO CFI check which calls __cfi_slowpath if Cond if false. | |
void | EmitUnreachable (SourceLocation Loc) |
Emit a reached-unreachable diagnostic if Loc is valid and runtime checking is enabled. | |
void | EmitTrapCheck (llvm::Value *Checked, SanitizerHandler CheckHandlerID) |
Create a basic block that will call the trap intrinsic, and emit a conditional branch to it, for the -ftrapv checks. | |
llvm::CallInst * | EmitTrapCall (llvm::Intrinsic::ID IntrID) |
Emit a call to trap or debugtrap and attach function attribute "trap-func-name" if specified. | |
void | EmitCfiCheckStub () |
Emit a stub for the cross-DSO CFI check function. | |
void | EmitCfiCheckFail () |
Emit a cross-DSO CFI failure handling function. | |
void | EmitNonNullArgCheck (RValue RV, QualType ArgType, SourceLocation ArgLoc, AbstractCallee AC, unsigned ParmNum) |
Create a check for a function parameter that may potentially be declared as non-null. | |
void | EmitNonNullArgCheck (Address Addr, QualType ArgType, SourceLocation ArgLoc, AbstractCallee AC, unsigned ParmNum) |
void | EmitCallArg (CallArgList &args, const Expr *E, QualType ArgType) |
EmitCallArg - Emit a single call argument. | |
void | EmitDelegateCallArg (CallArgList &args, const VarDecl *param, SourceLocation loc) |
EmitDelegateCallArg - We are performing a delegate call; that is, the current function is delegating to another one. | |
void | SetFPAccuracy (llvm::Value *Val, float Accuracy) |
SetFPAccuracy - Set the minimum required accuracy of the given floating point operation, expressed as the maximum relative error in ulp. | |
void | SetSqrtFPAccuracy (llvm::Value *Val) |
Set the minimum required accuracy of the given sqrt operation based on CodeGenOpts. | |
void | SetDivFPAccuracy (llvm::Value *Val) |
Set the minimum required accuracy of the given sqrt operation based on CodeGenOpts. | |
void | SetFastMathFlags (FPOptions FPFeatures) |
Set the codegen fast-math flags. | |
llvm::Value * | emitBoolVecConversion (llvm::Value *SrcVec, unsigned NumElementsDst, const llvm::Twine &Name="") |
template<typename CallType > | |
CallType * | addControlledConvergenceToken (CallType *Input) |
void | EmitCallArgs (CallArgList &Args, PrototypeWrapper Prototype, llvm::iterator_range< CallExpr::const_arg_iterator > ArgRange, AbstractCallee AC=AbstractCallee(), unsigned ParamsToSkip=0, EvaluationOrder Order=EvaluationOrder::Default) |
Address | EmitPointerWithAlignment (const Expr *Addr, LValueBaseInfo *BaseInfo=nullptr, TBAAAccessInfo *TBAAInfo=nullptr, KnownNonNull_t IsKnownNonNull=NotKnownNonNull) |
EmitPointerWithAlignment - Given an expression with a pointer type, emit the value and compute our best estimate of the alignment of the pointee. | |
llvm::Value * | LoadPassedObjectSize (const Expr *E, QualType EltTy) |
If E references a parameter with pass_object_size info or a constant array size modifier, emit the object size divided by the size of EltTy . | |
void | EmitSanitizerStatReport (llvm::SanitizerStatKind SSK) |
void | EmitMultiVersionResolver (llvm::Function *Resolver, ArrayRef< MultiVersionResolverOption > Options) |
void | EmitX86MultiVersionResolver (llvm::Function *Resolver, ArrayRef< MultiVersionResolverOption > Options) |
void | EmitAArch64MultiVersionResolver (llvm::Function *Resolver, ArrayRef< MultiVersionResolverOption > Options) |
Public Member Functions inherited from clang::CodeGen::CodeGenTypeCache | |
CharUnits | getIntSize () const |
CharUnits | getIntAlign () const |
CharUnits | getSizeSize () const |
CharUnits | getSizeAlign () const |
CharUnits | getPointerSize () const |
CharUnits | getPointerAlign () const |
llvm::CallingConv::ID | getRuntimeCC () const |
LangAS | getASTAllocaAddressSpace () const |
Static Public Member Functions | |
static bool | cxxDestructorCanThrow (QualType T) |
Check if T is a C++ class that has a destructor that can throw. | |
static bool | IsConstructorDelegationValid (const CXXConstructorDecl *Ctor) |
static TypeEvaluationKind | getEvaluationKind (QualType T) |
getEvaluationKind - Return the TypeEvaluationKind of QualType T . | |
static bool | hasScalarEvaluationKind (QualType T) |
static bool | hasAggregateEvaluationKind (QualType T) |
static unsigned | getAccessedFieldNo (unsigned Idx, const llvm::Constant *Elts) |
getAccessedFieldNo - Given an encoded value and a result number, return the input field number being accessed. | |
static bool | IsWrappedCXXThis (const Expr *E) |
Check if E is a C++ "this" pointer wrapped in value-preserving casts. | |
static bool | ShouldNullCheckClassCastValue (const CastExpr *Cast) |
static bool | isNullPointerAllowed (TypeCheckKind TCK) |
Determine whether the pointer type check TCK permits null pointers. | |
static bool | isVptrCheckRequired (TypeCheckKind TCK, QualType Ty) |
Determine whether the pointer type check TCK requires a vptr check. | |
static void | EmitOMPTargetDeviceFunction (CodeGenModule &CGM, StringRef ParentName, const OMPTargetDirective &S) |
Emit device code for the target directive. | |
static void | EmitOMPTargetParallelDeviceFunction (CodeGenModule &CGM, StringRef ParentName, const OMPTargetParallelDirective &S) |
static void | EmitOMPTargetParallelForDeviceFunction (CodeGenModule &CGM, StringRef ParentName, const OMPTargetParallelForDirective &S) |
Emit device code for the target parallel for directive. | |
static void | EmitOMPTargetParallelForSimdDeviceFunction (CodeGenModule &CGM, StringRef ParentName, const OMPTargetParallelForSimdDirective &S) |
Emit device code for the target parallel for simd directive. | |
static void | EmitOMPTargetTeamsDeviceFunction (CodeGenModule &CGM, StringRef ParentName, const OMPTargetTeamsDirective &S) |
Emit device code for the target teams directive. | |
static void | EmitOMPTargetTeamsDistributeDeviceFunction (CodeGenModule &CGM, StringRef ParentName, const OMPTargetTeamsDistributeDirective &S) |
Emit device code for the target teams distribute directive. | |
static void | EmitOMPTargetTeamsDistributeSimdDeviceFunction (CodeGenModule &CGM, StringRef ParentName, const OMPTargetTeamsDistributeSimdDirective &S) |
Emit device code for the target teams distribute simd directive. | |
static void | EmitOMPTargetSimdDeviceFunction (CodeGenModule &CGM, StringRef ParentName, const OMPTargetSimdDirective &S) |
Emit device code for the target simd directive. | |
static void | EmitOMPTargetTeamsDistributeParallelForSimdDeviceFunction (CodeGenModule &CGM, StringRef ParentName, const OMPTargetTeamsDistributeParallelForSimdDirective &S) |
Emit device code for the target teams distribute parallel for simd directive. | |
static void | EmitOMPTargetTeamsGenericLoopDeviceFunction (CodeGenModule &CGM, StringRef ParentName, const OMPTargetTeamsGenericLoopDirective &S) |
Emit device code for the target teams loop directive. | |
static void | EmitOMPTargetParallelGenericLoopDeviceFunction (CodeGenModule &CGM, StringRef ParentName, const OMPTargetParallelGenericLoopDirective &S) |
Emit device code for the target parallel loop directive. | |
static void | EmitOMPTargetTeamsDistributeParallelForDeviceFunction (CodeGenModule &CGM, StringRef ParentName, const OMPTargetTeamsDistributeParallelForDirective &S) |
static std::string | getNonTrivialCopyConstructorStr (QualType QT, CharUnits Alignment, bool IsVolatile, ASTContext &Ctx) |
static std::string | getNonTrivialDestructorStr (QualType QT, CharUnits Alignment, bool IsVolatile, ASTContext &Ctx) |
static bool | ContainsLabel (const Stmt *S, bool IgnoreCaseStmts=false) |
ContainsLabel - Return true if the statement contains a label in it. | |
static bool | containsBreak (const Stmt *S) |
containsBreak - Return true if the statement contains a break out of it. | |
static bool | mightAddDeclToScope (const Stmt *S) |
Determine if the given statement might introduce a declaration into the current scope, by being a (possibly-labelled) DeclStmt. | |
static const Expr * | stripCond (const Expr *C) |
Ignore parentheses and logical-NOT to track conditions consistently. | |
static bool | isInstrumentedCondition (const Expr *C) |
isInstrumentedCondition - Determine whether the given condition is an instrumentable condition (i.e. | |
Public Attributes | |
CodeGenModule & | CGM |
const TargetInfo & | Target |
CodeGenFunction * | ParentCGF = nullptr |
LoopInfoStack | LoopStack |
CGBuilderTy | Builder |
VarBypassDetector | Bypasses |
SmallVector< llvm::CanonicalLoopInfo *, 4 > | OMPLoopNestStack |
List of recently emitted OMPCanonicalLoops. | |
SmallVector< const BinaryOperator *, 16 > | MCDCLogOpStack |
Stack to track the Logical Operator recursion nest for MC/DC. | |
SmallVector< llvm::IntrinsicInst *, 4 > | ConvergenceTokenStack |
Stack to track the controlled convergence tokens. | |
int | ExpectedOMPLoopDepth = 0 |
Number of nested loop to be consumed by the last surrounding loop-associated directive. | |
const Decl * | CurFuncDecl = nullptr |
CurFuncDecl - Holds the Decl for the current outermost non-closure context. | |
const Decl * | CurCodeDecl = nullptr |
CurCodeDecl - This is the inner-most code context, which includes blocks. | |
const CGFunctionInfo * | CurFnInfo = nullptr |
QualType | FnRetTy |
llvm::Function * | CurFn = nullptr |
llvm::SmallVector< const ParmVarDecl *, 4 > | FnArgs |
Save Parameter Decl for coroutine. | |
CGCoroInfo | CurCoro |
AwaitSuspendWrapperInfo | CurAwaitSuspendWrapper |
GlobalDecl | CurGD |
CurGD - The GlobalDecl for the current function being compiled. | |
EHScopeStack::stable_iterator | PrologueCleanupDepth |
PrologueCleanupDepth - The cleanup depth enclosing all the cleanups associated with the parameters. | |
JumpDest | ReturnBlock |
ReturnBlock - Unified return block. | |
Address | ReturnValue = Address::invalid() |
ReturnValue - The temporary alloca to hold the return value. | |
Address | ReturnValuePointer = Address::invalid() |
ReturnValuePointer - The temporary alloca to hold a pointer to sret. | |
const Expr * | RetExpr = nullptr |
If a return statement is being visited, this holds the return statment's result expression. | |
llvm::AssertingVH< llvm::Instruction > | AllocaInsertPt |
AllocaInsertPoint - This is an instruction in the entry block before which we prefer to insert allocas. | |
CGCapturedStmtInfo * | CapturedStmtInfo = nullptr |
SanitizerSet | SanOpts |
Sanitizers enabled for this function. | |
bool | IsSanitizerScope = false |
True if CodeGen currently emits code implementing sanitizer checks. | |
bool | CurFuncIsThunk = false |
In C++, whether we are code generating a thunk. | |
bool | AutoreleaseResult = false |
In ARC, whether we should autorelease the return value. | |
bool | SawAsmBlock = false |
Whether we processed a Microsoft-style asm block during CodeGen. | |
GlobalDecl | CurSEHParent |
bool | IsOutlinedSEHHelper = false |
True if the current function is an outlined SEH helper. | |
bool | IsInPreservedAIRegion = false |
True if CodeGen currently emits code inside presereved access index region. | |
bool | InNoMergeAttributedStmt = false |
True if the current statement has nomerge attribute. | |
bool | InNoInlineAttributedStmt = false |
True if the current statement has noinline attribute. | |
bool | InAlwaysInlineAttributedStmt = false |
True if the current statement has always_inline attribute. | |
bool | InNoConvergentAttributedStmt = false |
True if the current statement has noconvergent attribute. | |
const CallExpr * | MustTailCall = nullptr |
const CodeGen::CGBlockInfo * | BlockInfo = nullptr |
llvm::Value * | BlockPointer = nullptr |
llvm::DenseMap< const ValueDecl *, FieldDecl * > | LambdaCaptureFields |
FieldDecl * | LambdaThisCaptureField = nullptr |
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. | |
EHScopeStack | EHStack |
llvm::SmallVector< char, 256 > | LifetimeExtendedCleanupStack |
llvm::SmallVector< DeferredDeactivateCleanup > | DeferredDeactivationCleanupStack |
llvm::SmallVector< const JumpDest *, 2 > | SEHTryEpilogueStack |
llvm::Instruction * | CurrentFuncletPad = nullptr |
RawAddress | NormalCleanupDest = RawAddress::invalid() |
i32s containing the indexes of the cleanup destinations. | |
unsigned | NextCleanupDestIndex = 1 |
llvm::BasicBlock * | EHResumeBlock = nullptr |
EHResumeBlock - Unified block containing a call to llvm.eh.resume. | |
llvm::Value * | ExceptionSlot = nullptr |
The exception slot. | |
llvm::AllocaInst * | EHSelectorSlot = nullptr |
The selector slot. | |
SmallVector< Address, 1 > | SEHCodeSlotStack |
A stack of exception code slots. | |
llvm::Value * | SEHInfo = nullptr |
Value returned by __exception_info intrinsic. | |
const OMPExecutableDirective * | OMPParentLoopDirectiveForScan = nullptr |
Parent loop-based directive for scan directive. | |
llvm::BasicBlock * | OMPBeforeScanBlock = nullptr |
llvm::BasicBlock * | OMPAfterScanBlock = nullptr |
llvm::BasicBlock * | OMPScanExitBlock = nullptr |
llvm::BasicBlock * | OMPScanDispatch = nullptr |
bool | OMPFirstScanLoop = false |
FPOptions | CurFPFeatures |
SmallVector< llvm::Value *, 8 > | ObjCEHValueStack |
ObjCEHValueStack - Stack of Objective-C exception values, used for rethrows. | |
EHScopeStack::stable_iterator | CurrentCleanupScopeDepth |
CurrentSourceLocExprScope | CurSourceLocExprScope |
Source location information about the default argument or member initializer expression we're evaluating, if any. | |
Public Attributes inherited from clang::CodeGen::CodeGenTypeCache | |
llvm::Type * | VoidTy |
void | |
llvm::IntegerType * | Int8Ty |
i8, i16, i32, and i64 | |
llvm::IntegerType * | Int16Ty |
llvm::IntegerType * | Int32Ty |
llvm::IntegerType * | Int64Ty |
llvm::Type * | HalfTy |
half, bfloat, float, double | |
llvm::Type * | BFloatTy |
llvm::Type * | FloatTy |
llvm::Type * | DoubleTy |
llvm::IntegerType * | IntTy |
int | |
llvm::IntegerType * | CharTy |
char | |
union { | |
llvm::IntegerType * IntPtrTy | |
llvm::IntegerType * SizeTy | |
llvm::IntegerType * PtrDiffTy | |
}; | |
intptr_t, size_t, and ptrdiff_t, which we assume are the same size. | |
union { | |
llvm::PointerType * UnqualPtrTy | |
llvm::PointerType * VoidPtrTy | |
llvm::PointerType * Int8PtrTy | |
llvm::PointerType * VoidPtrPtrTy | |
llvm::PointerType * Int8PtrPtrTy | |
}; | |
void*, void** in the target's default address space (often 0) | |
union { | |
llvm::PointerType * AllocaVoidPtrTy | |
llvm::PointerType * AllocaInt8PtrTy | |
}; | |
void* in alloca address space | |
union { | |
llvm::PointerType * GlobalsVoidPtrTy | |
llvm::PointerType * GlobalsInt8PtrTy | |
}; | |
void* in default globals address space | |
llvm::PointerType * | ConstGlobalsPtrTy |
void* in the address space for constant globals | |
union { | |
unsigned char IntSizeInBytes | |
unsigned char IntAlignInBytes | |
}; | |
The size and alignment of the builtin C type 'int'. | |
unsigned char | PointerWidthInBits |
The width of a pointer into the generic address space. | |
union { | |
unsigned char PointerAlignInBytes | |
unsigned char PointerSizeInBytes | |
}; | |
The size and alignment of a pointer into the generic address space. | |
union { | |
unsigned char SizeSizeInBytes | |
unsigned char SizeAlignInBytes | |
}; | |
The size and alignment of size_t. | |
LangAS | ASTAllocaAddressSpace |
llvm::CallingConv::ID | RuntimeCC |
Static Public Attributes | |
static Destroyer | destroyCXXObject |
static Destroyer | destroyARCStrongImprecise |
static Destroyer | destroyARCStrongPrecise |
static Destroyer | destroyARCWeak |
static Destroyer | emitARCIntrinsicUse |
static Destroyer | destroyNonTrivialCStruct |
Friends | |
class | CGCXXABI |
CodeGenFunction - This class organizes the per-function state that is used while generating LLVM code.
Definition at line 256 of file CodeGenFunction.h.
typedef llvm::function_ref<std::pair<llvm::Value *, llvm::Value *>( CodeGenFunction &, const OMPExecutableDirective &S, Address LB, Address UB)> clang::CodeGen::CodeGenFunction::CodeGenDispatchBoundsTy |
Definition at line 341 of file CodeGenFunction.h.
typedef llvm::function_ref<std::pair<LValue, LValue>( CodeGenFunction &, const OMPExecutableDirective &S)> clang::CodeGen::CodeGenFunction::CodeGenLoopBoundsTy |
Definition at line 335 of file CodeGenFunction.h.
typedef llvm::function_ref<void(CodeGenFunction &, const OMPLoopDirective &, JumpDest)> clang::CodeGen::CodeGenFunction::CodeGenLoopTy |
Definition at line 327 of file CodeGenFunction.h.
typedef llvm::function_ref<void(CodeGenFunction &, SourceLocation, const unsigned, const bool)> clang::CodeGen::CodeGenFunction::CodeGenOrderedTy |
Definition at line 330 of file CodeGenFunction.h.
typedef std::pair<llvm::Value *, llvm::Value *> clang::CodeGen::CodeGenFunction::ComplexPairTy |
Definition at line 292 of file CodeGenFunction.h.
typedef llvm::DenseMap<const Decl *, Address> clang::CodeGen::CodeGenFunction::DeclMapTy |
Definition at line 1082 of file CodeGenFunction.h.
typedef void clang::CodeGen::CodeGenFunction::Destroyer(CodeGenFunction &CGF, Address addr, QualType ty) |
Definition at line 2190 of file CodeGenFunction.h.
using clang::CodeGen::CodeGenFunction::SourceLocExprScopeGuard = CurrentSourceLocExprScope::SourceLocExprScopeGuard |
Definition at line 1748 of file CodeGenFunction.h.
typedef void clang::CodeGen::CodeGenFunction::SpecialInitFn(CodeGenFunction &Init, const VarDecl &D, llvm::Value *Address) |
Definition at line 3342 of file CodeGenFunction.h.
typedef const llvm::function_ref<void(CodeGenFunction & , llvm::Function * , const OMPTaskDataTy & )> clang::CodeGen::CodeGenFunction::TaskGenTy |
Definition at line 3790 of file CodeGenFunction.h.
typedef llvm::SmallPtrSet<const CXXRecordDecl *, 4> clang::CodeGen::CodeGenFunction::VisitedVirtualBasesSetTy |
Definition at line 2448 of file CodeGenFunction.h.
Definition at line 2446 of file CodeGenFunction.h.
anonymous enum |
An enumeration which makes it easier to specify whether or not an operation is a subtraction.
Enumerator | |
---|---|
NotSubtraction | |
IsSubtraction |
Definition at line 5050 of file CodeGenFunction.h.
Specifies which type of sanitizer check to apply when handling a particular builtin.
Enumerator | |
---|---|
BCK_CTZPassedZero | |
BCK_CLZPassedZero |
Definition at line 5071 of file CodeGenFunction.h.
Enumerator | |
---|---|
CFITCK_VCall | |
CFITCK_NVCall | |
CFITCK_DerivedCast | |
CFITCK_UnrelatedCast | |
CFITCK_ICall | |
CFITCK_NVMFCall | |
CFITCK_VMFCall |
Definition at line 2474 of file CodeGenFunction.h.
|
strong |
Definition at line 5250 of file CodeGenFunction.h.
Enumerator | |
---|---|
EVK_RValue | |
EVK_NonRValue |
Definition at line 4844 of file CodeGenFunction.h.
|
strong |
Enumerator | |
---|---|
VariableGuard | |
TlsGuard |
Definition at line 4932 of file CodeGenFunction.h.
Situations in which we might emit a check for the suitability of a pointer or glvalue.
Needs to be kept in sync with ubsan_handlers.cpp in compiler-rt.
Definition at line 3219 of file CodeGenFunction.h.
|
strong |
Enumerator | |
---|---|
Authenticate | |
MustTrap | |
UnsafeUbsanStrip |
Definition at line 2462 of file CodeGenFunction.h.
clang::CodeGen::CodeGenFunction::CodeGenFunction | ( | CodeGenModule & | cgm, |
bool | suppressNewContext = false |
||
) |
clang::CodeGen::CodeGenFunction::~CodeGenFunction | ( | ) |
void clang::CodeGen::CodeGenFunction::ActivateCleanupBlock | ( | EHScopeStack::stable_iterator | Cleanup, |
llvm::Instruction * | DominatingIP | ||
) |
ActivateCleanupBlock - Activates an initially-inactive cleanup.
Cannot be used to resurrect a deactivated cleanup.
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. |
void clang::CodeGen::CodeGenFunction::AddAMDGPUFenceAddressSpaceMMRA | ( | llvm::Instruction * | Inst, |
const CallExpr * | E | ||
) |
|
inline |
Definition at line 5166 of file CodeGenFunction.h.
References ConvergenceTokenStack.
llvm::GlobalVariable * clang::CodeGen::CodeGenFunction::AddInitializerToStaticVarDecl | ( | const VarDecl & | D, |
llvm::GlobalVariable * | GV | ||
) |
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.
bool clang::CodeGen::CodeGenFunction::AlwaysEmitXRayCustomEvents | ( | ) | const |
AlwaysEmitXRayCustomEvents - Return true if we must unconditionally emit XRay custom event handling calls.
bool clang::CodeGen::CodeGenFunction::AlwaysEmitXRayTypedEvents | ( | ) | const |
AlwaysEmitXRayTypedEvents - Return true if clang must unconditionally emit XRay typed event handling calls.
Address clang::CodeGen::CodeGenFunction::authPointerToPointerCast | ( | Address | Ptr, |
QualType | SourceType, | ||
QualType | DestType | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::authPointerToPointerCast | ( | llvm::Value * | ResultPtr, |
QualType | SourceType, | ||
QualType | DestType | ||
) |
Referenced by EmitPointerWithAlignment().
CGCallee clang::CodeGen::CodeGenFunction::BuildAppleKextVirtualCall | ( | const CXXMethodDecl * | MD, |
NestedNameSpecifier * | Qual, | ||
llvm::Type * | Ty | ||
) |
CGCallee clang::CodeGen::CodeGenFunction::BuildAppleKextVirtualDestructorCall | ( | const CXXDestructorDecl * | DD, |
CXXDtorType | Type, | ||
const CXXRecordDecl * | RD | ||
) |
void clang::CodeGen::CodeGenFunction::BuildBlockRelease | ( | llvm::Value * | DeclPtr, |
BlockFieldFlags | flags, | ||
bool | CanThrow | ||
) |
QualType clang::CodeGen::CodeGenFunction::BuildFunctionArgList | ( | GlobalDecl | GD, |
FunctionArgList & | Args | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::BuildVector | ( | ArrayRef< llvm::Value * > | Ops | ) |
void clang::CodeGen::CodeGenFunction::callCStructDefaultConstructor | ( | LValue | Dst | ) |
void clang::CodeGen::CodeGenFunction::callCStructDestructor | ( | LValue | Dst | ) |
|
inline |
Returns true if a function must make progress, which means the mustprogress attribute can be added.
Definition at line 624 of file CodeGenFunction.h.
References CGM, clang::CodeGen::CodeGenModule::getCodeGenOpts(), getLangOpts(), and clang::CodeGenOptions::Never.
Returns true if a loop must make progress, which means the mustprogress attribute can be added.
HasConstantCond
indicates whether the branch condition is a known constant.
void clang::CodeGen::CodeGenFunction::checkTargetFeatures | ( | const CallExpr * | E, |
const FunctionDecl * | TargetDecl | ||
) |
void clang::CodeGen::CodeGenFunction::checkTargetFeatures | ( | SourceLocation | Loc, |
const FunctionDecl * | TargetDecl | ||
) |
bool clang::CodeGen::CodeGenFunction::ConstantFoldsToSimpleInteger | ( | const Expr * | Cond, |
bool & | Result, | ||
bool | AllowLabels = false |
||
) |
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.
Referenced by emitCommonOMPTargetDirective(), clang::CodeGen::CGOpenMPRuntime::emitIfClause(), and emitOMPSimdRegion().
bool clang::CodeGen::CodeGenFunction::ConstantFoldsToSimpleInteger | ( | const Expr * | Cond, |
llvm::APSInt & | Result, | ||
bool | AllowLabels = false |
||
) |
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.
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.
Referenced by CollectStatementsForCase().
|
static |
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.
Referenced by CollectStatementsForCase(), and FindCaseStatementsForValue().
RValue clang::CodeGen::CodeGenFunction::convertTempToRValue | ( | Address | addr, |
QualType | type, | ||
SourceLocation | Loc | ||
) |
|
inline |
Definition at line 2584 of file CodeGenFunction.h.
References ConvertType(), getContext(), and clang::T.
llvm::Type * clang::CodeGen::CodeGenFunction::ConvertType | ( | QualType | T | ) |
Referenced by AdjustObjCObjectType(), ConvertType(), emitArgumentDemotion(), EmitAtomicDecrementValue(), EmitAtomicIncrementValue(), emitCmdValueForGetterSetterBody(), EmitCommonNeonSISDBuiltinExpr(), EmitDynamicCastToNull(), emitFrexpBuiltin(), emitMaybeConstrainedFPToIntRoundBuiltin(), emitOMPArraySectionBase(), EmitPointerWithAlignment(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), emitWritebackArg(), getItaniumDynamicCastFn(), MakeAtomicCmpXchgValue(), performTypeAdjustment(), tryEmitSpecializedAllocInit(), and tryGenerateSpecializedMessageSend().
llvm::Type * clang::CodeGen::CodeGenFunction::convertTypeForLoadStore | ( | QualType | ASTTy, |
llvm::Type * | LLVMTy = nullptr |
||
) |
llvm::Type * clang::CodeGen::CodeGenFunction::ConvertTypeForMem | ( | QualType | T | ) |
Referenced by castValueToType(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitLastprivateConditional(), complexTempStructure(), createPlaceholderSlot(), emitAddrOfVarFromArray(), emitArraySubscriptGEP(), clang::CodeGen::ReductionCodeGen::emitCleanups(), EmitDeclDestroy(), emitDependData(), clang::CodeGen::CGOpenMPRuntime::emitDepobjDependClause(), clang::CodeGen::CGOpenMPRuntime::emitDestroyClause(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalInit(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalUpdate(), emitOMPArraySectionBase(), emitPartialArrayDestroy(), emitPointerArithmetic(), EmitPointerWithAlignment(), emitPrivatesInit(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceInitFunction(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), clang::CodeGen::CGOpenMPRuntimeGPU::emitReduction(), clang::CodeGen::CGOpenMPRuntime::emitSingleRegion(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), clang::CodeGen::CGOpenMPRuntime::emitUpdateClause(), clang::CodeGen::EmitVAArgInstr(), clang::CodeGen::emitVoidPtrVAArg(), emitWritebackArg(), EmitX86_64VAArgFromMemory(), clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntimeGPU::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntime::getAddrOfArtificialThreadPrivate(), clang::CodeGen::CGOpenMPRuntime::getDepobjElements(), clang::CodeGen::getVAListElementType(), InitCatchParam(), loadToBegin(), makeNaturalAddressForPointer(), makeNaturalAlignAddrLValue(), MakeRawAddrLValue(), and PerformReturnAdjustment().
|
inline |
CreateAggTemp - Create a temporary memory object for the given aggregate type.
Definition at line 2870 of file CodeGenFunction.h.
References CreateMemTemp(), clang::CodeGen::AggValueSlot::DoesNotNeedGCBarriers, clang::CodeGen::AggValueSlot::DoesNotOverlap, clang::CodeGen::AggValueSlot::forAddr(), clang::CodeGen::AggValueSlot::IsNotAliased, clang::CodeGen::AggValueSlot::IsNotDestructed, and clang::T.
llvm::Constant * clang::CodeGen::CodeGenFunction::createAtExitStub | ( | const VarDecl & | VD, |
llvm::FunctionCallee | Dtor, | ||
llvm::Constant * | Addr | ||
) |
Referenced by emitGlobalDtorWithTLRegDtor().
|
inline |
createBasicBlock - Create an LLVM basic block.
Definition at line 2607 of file CodeGenFunction.h.
References getLLVMContext().
Referenced by clang::CodeGen::CGOpenMPRuntime::checkAndEmitSharedLastprivateConditional(), CreateNormalEntry(), clang::CodeGen::CatchRetScope::Emit(), emitAtomicCmpXchg(), emitAtomicCmpXchgFailureSet(), EmitAtomicOp(), clang::CodeGen::CGOpenMPRuntime::emitBarrierCall(), clang::CodeGen::CGOpenMPRuntime::emitCancellationPointCall(), emitCatchDispatchBlock(), EmitCleanup(), clang::CodeGen::CGOpenMPRuntimeGPU::emitCriticalRegion(), clang::CodeGen::CGCUDARuntime::EmitCUDAKernelCallExpr(), emitDynamicTlsInitialization(), emitFilterDispatchBlock(), clang::CodeGen::CGOpenMPRuntime::emitIfClause(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalUpdate(), emitNonZeroVLAInit(), EmitOMPAggregateInit(), EmitOMPAggregateReduction(), emitOMPSimdRegion(), emitPostUpdateForReductionClause(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), EmitSehScope(), emitSuspendExpression(), clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), EmitTypeidFromVTable(), clang::CodeGen::CGOpenMPRuntime::emitUDMapperArrayInitOrDel(), clang::CodeGen::CGOpenMPRuntime::emitUpdateClause(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), emitWasmCatchPadBlock(), emitWriteback(), emitWritebackArg(), EnsureInsertPoint(), clang::CodeGen::CodeGenFunction::FinallyInfo::enter(), getJumpDestInCurrentScope(), getUnreachableBlock(), and PerformReturnAdjustment().
RawAddress clang::CodeGen::CodeGenFunction::createCleanupActiveFlag | ( | ) |
Referenced by initFullExprCleanup(), and pushCleanupAfterFullExpr().
void clang::CodeGen::CodeGenFunction::CreateCoercedStore | ( | llvm::Value * | Src, |
Address | Dst, | ||
llvm::TypeSize | DstSize, | ||
bool | DstIsVolatile | ||
) |
Create a store to.
RawAddress clang::CodeGen::CodeGenFunction::CreateDefaultAlignTempAlloca | ( | llvm::Type * | Ty, |
const Twine & | Name = "tmp" |
||
) |
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.
Referenced by clang::CodeGen::CGOpenMPRuntime::emitParallelCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitParallelCall(), and clang::CodeGen::CGOpenMPRuntimeGPU::emitTeamsCall().
RawAddress clang::CodeGen::CodeGenFunction::CreateIRTemp | ( | QualType | T, |
const Twine & | Name = "tmp" |
||
) |
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.
Referenced by maybeCreateMCDCCondBitmap().
RawAddress clang::CodeGen::CodeGenFunction::CreateMemTemp | ( | QualType | T, |
CharUnits | Align, | ||
const Twine & | Name = "tmp" , |
||
RawAddress * | Alloca = nullptr |
||
) |
RawAddress clang::CodeGen::CodeGenFunction::CreateMemTemp | ( | QualType | T, |
const Twine & | Name = "tmp" , |
||
RawAddress * | Alloca = nullptr |
||
) |
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 Alloca
if it is not nullptr.
Referenced by castToBase(), castValueToType(), CreateAggTemp(), createReferenceTemporary(), createSectionLVal(), clang::CodeGen::CGOpenMPRuntimeGPU::emitCriticalRegion(), clang::CodeGen::CGOpenMPRuntime::emitDependClause(), clang::CodeGen::CGOpenMPRuntime::emitDepobjDependClause(), clang::CodeGen::CGOpenMPRuntime::emitDepobjElementsSizes(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), EmitDoacrossOrdered(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalInit(), emitPreCond(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), clang::CodeGen::CGOpenMPRuntime::emitSingleRegion(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionInit(), clang::CodeGen::CGOpenMPRuntime::emitThreadIDAddress(), clang::CodeGen::EmitVAArgInstr(), EmitValToTemp(), clang::CodeGen::CGOpenMPRuntimeGPU::getParameterAddress(), clang::CodeGen::CallArg::getRValue(), and clang::CodeGen::CodeGenFunction::OMPMapVars::setVarAddr().
RawAddress clang::CodeGen::CodeGenFunction::CreateMemTempWithoutCast | ( | QualType | T, |
CharUnits | Align, | ||
const Twine & | Name = "tmp" |
||
) |
RawAddress clang::CodeGen::CodeGenFunction::CreateMemTempWithoutCast | ( | QualType | T, |
const Twine & | Name = "tmp" |
||
) |
CreateMemTemp - Create a temporary memory object of the given type, with appropriate alignmen without casting it to the default address space.
RawAddress clang::CodeGen::CodeGenFunction::CreateTempAlloca | ( | llvm::Type * | Ty, |
CharUnits | align, | ||
const Twine & | Name = "tmp" , |
||
llvm::Value * | ArraySize = nullptr , |
||
RawAddress * | Alloca = nullptr |
||
) |
llvm::AllocaInst * clang::CodeGen::CodeGenFunction::CreateTempAlloca | ( | llvm::Type * | Ty, |
const Twine & | Name = "tmp" , |
||
llvm::Value * | ArraySize = nullptr |
||
) |
CreateTempAlloca - This creates an alloca and inserts it into the entry block if 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.
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 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.
Referenced by CreateTempAllocaForCoercion(), emitSuspendExpression(), emitWritebackArg(), clang::CodeGen::CodeGenFunction::FinallyInfo::enter(), InitCatchParam(), clang::CodeGen::DominatingLLVMValue::save(), and SetupCleanupBlockActivation().
RawAddress clang::CodeGen::CodeGenFunction::CreateTempAllocaWithoutCast | ( | llvm::Type * | Ty, |
CharUnits | align, | ||
const Twine & | Name = "tmp" , |
||
llvm::Value * | ArraySize = nullptr |
||
) |
llvm::Function * clang::CodeGen::CodeGenFunction::createTLSAtExitStub | ( | const VarDecl & | VD, |
llvm::FunctionCallee | Dtor, | ||
llvm::Constant * | Addr, | ||
llvm::FunctionCallee & | AtExit | ||
) |
|
inline |
Definition at line 2178 of file CodeGenFunction.h.
References CurSEHParent.
Referenced by findDominatingStoreToReturnValue().
Check if T
is a C++ class that has a destructor that can throw.
Referenced by getBlockCaptureStr(), and pushCaptureCleanup().
void clang::CodeGen::CodeGenFunction::DeactivateCleanupBlock | ( | EHScopeStack::stable_iterator | Cleanup, |
llvm::Instruction * | DominatingIP | ||
) |
DeactivateCleanupBlock - Deactivates the given cleanup block.
The block cannot be reactivated. Pops it if it's the top of the stack.
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. |
Referenced by deactivateArgCleanupsBeforeCall(), and clang::CodeGen::CodeGenFunction::CleanupDeactivationScope::ForceDeactivate().
void clang::CodeGen::CodeGenFunction::defaultInitNonTrivialCStructVar | ( | LValue | Dst | ) |
|
inline |
Definition at line 2144 of file CodeGenFunction.h.
llvm::Value * clang::CodeGen::CodeGenFunction::EmitAArch64BuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E, | ||
llvm::Triple::ArchType | Arch | ||
) |
Referenced by EmitTargetArchBuiltinExpr().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitAArch64CompareBuiltinExpr | ( | llvm::Value * | Op, |
llvm::Type * | Ty, | ||
const llvm::CmpInst::Predicate | Fp, | ||
const llvm::CmpInst::Predicate | Ip, | ||
const llvm::Twine & | Name = "" |
||
) |
void clang::CodeGen::CodeGenFunction::EmitAArch64MultiVersionResolver | ( | llvm::Function * | Resolver, |
ArrayRef< MultiVersionResolverOption > | Options | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitAArch64SMEBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitAArch64SVEBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E | ||
) |
Address clang::CodeGen::CodeGenFunction::emitAddrOfImagComponent | ( | Address | complex, |
QualType | complexType | ||
) |
Address clang::CodeGen::CodeGenFunction::emitAddrOfRealComponent | ( | Address | complex, |
QualType | complexType | ||
) |
void clang::CodeGen::CodeGenFunction::EmitAggExpr | ( | const Expr * | E, |
AggValueSlot | AS | ||
) |
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.
Referenced by EmitBaseInitializer(), EmitDeclInit(), emitPseudoObjectExpr(), InitCatchParam(), and StoreAnyExprIntoOneUnit().
EmitAggExprToLValue - Emit the computation of the specified expression of aggregate type into a temporary LValue.
void clang::CodeGen::CodeGenFunction::EmitAggFinalDestCopy | ( | QualType | Type, |
AggValueSlot | Dest, | ||
const LValue & | Src, | ||
ExprValueKind | SrcKind | ||
) |
EmitAggFinalDestCopy - Emit copy of the specified aggregate into destination address.
|
inline |
Emit an aggregate assignment.
Definition at line 2963 of file CodeGenFunction.h.
References EmitAggregateCopy(), hasVolatileMember(), and clang::CodeGen::AggValueSlot::MayOverlap.
Referenced by emitPrivatesInit().
void clang::CodeGen::CodeGenFunction::EmitAggregateCopy | ( | LValue | Dest, |
LValue | Src, | ||
QualType | EltTy, | ||
AggValueSlot::Overlap_t | MayOverlap, | ||
bool | isVolatile = false |
||
) |
EmitAggregateCopy - Emit an aggregate copy.
isVolatile | true iff either the source or the destination is volatile. |
MayOverlap | Whether the tail padding of the destination might be occupied by some other object. More efficient code can often be generated if not. |
Referenced by clang::CodeGen::CallArg::copyInto(), EmitAggregateAssign(), EmitAggregateCopyCtor(), EmitMemberInitializer(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), clang::CodeGen::CallArg::getRValue(), and InitCatchParam().
|
inline |
Definition at line 2968 of file CodeGenFunction.h.
References EmitAggregateCopy(), and clang::CodeGen::LValue::getType().
void clang::CodeGen::CodeGenFunction::emitAlignmentAssumption | ( | llvm::Value * | PtrValue, |
const Expr * | E, | ||
SourceLocation | AssumptionLoc, | ||
llvm::Value * | Alignment, | ||
llvm::Value * | OffsetValue = nullptr |
||
) |
void clang::CodeGen::CodeGenFunction::emitAlignmentAssumption | ( | llvm::Value * | PtrValue, |
QualType | Ty, | ||
SourceLocation | Loc, | ||
SourceLocation | AssumptionLoc, | ||
llvm::Value * | Alignment, | ||
llvm::Value * | OffsetValue = nullptr |
||
) |
Referenced by emitAlignedClause().
void clang::CodeGen::CodeGenFunction::emitAlignmentAssumptionCheck | ( | llvm::Value * | Ptr, |
QualType | Ty, | ||
SourceLocation | Loc, | ||
SourceLocation | AssumptionLoc, | ||
llvm::Value * | Alignment, | ||
llvm::Value * | OffsetValue, | ||
llvm::Value * | TheCheck, | ||
llvm::Instruction * | Assumption | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitAMDGPUBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E | ||
) |
Referenced by EmitTargetArchBuiltinExpr().
void clang::CodeGen::CodeGenFunction::EmitAndRegisterVariableArrayDimensions | ( | CGDebugInfo * | DI, |
const VarDecl & | D, | ||
bool | EmitDebugInfo | ||
) |
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.
llvm::Value * clang::CodeGen::CodeGenFunction::EmitAnnotationCall | ( | llvm::Function * | AnnotationFn, |
llvm::Value * | AnnotatedVal, | ||
StringRef | AnnotationStr, | ||
SourceLocation | Location, | ||
const AnnotateAttr * | Attr | ||
) |
Emit an annotation call (intrinsic).
RValue clang::CodeGen::CodeGenFunction::EmitAnyExpr | ( | const Expr * | E, |
AggValueSlot | aggSlot = AggValueSlot::ignored() , |
||
bool | ignoreResult = false |
||
) |
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.
ignoreResult | True if the resulting value isn't used. |
Referenced by clang::CodeGen::CodeGenFunction::OpaqueValueMappingData::bind(), emitOMPAtomicCaptureExpr(), emitOMPAtomicUpdateExpr(), emitOMPAtomicWriteExpr(), emitPseudoObjectExpr(), emitSimdlenSafelenClause(), and emitSuspendExpression().
void clang::CodeGen::CodeGenFunction::EmitAnyExprToMem | ( | const Expr * | E, |
Address | Location, | ||
Qualifiers | Quals, | ||
bool | IsInitializer | ||
) |
EmitAnyExprToMem - Emits the code necessary to evaluate an arbitrary expression into the given memory location.
Referenced by emitCombinerOrInitializer(), clang::CodeGen::ReductionCodeGen::emitInitialization(), emitInitWithReductionInitializer(), EmitOMPAggregateInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskLoopCall(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), and EmitValToTemp().
EmitAnyExprToTemp - Similarly to EmitAnyExpr(), however, the result will always be accessible even if no aggregate location is provided.
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCAutorelease | ( | llvm::Value * | value | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCAutoreleaseReturnValue | ( | llvm::Value * | value | ) |
Referenced by emitAutoreleaseOfResult().
void clang::CodeGen::CodeGenFunction::emitARCCopyAssignWeak | ( | QualType | Ty, |
Address | DstAddr, | ||
Address | SrcAddr | ||
) |
Referenced by tryEmitARCCopyWeakInit().
void clang::CodeGen::CodeGenFunction::EmitARCDestroyStrong | ( | Address | addr, |
ARCPreciseLifetime_t | precise | ||
) |
Referenced by EmitObjectDelete().
void clang::CodeGen::CodeGenFunction::EmitARCDestroyWeak | ( | Address | addr | ) |
Referenced by EmitObjectDelete().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCExtendBlockObject | ( | const Expr * | expr | ) |
void clang::CodeGen::CodeGenFunction::EmitARCInitWeak | ( | Address | addr, |
llvm::Value * | value | ||
) |
Referenced by clang::CodeGen::CGObjCRuntime::EmitInitOfCatchParam(), and InitCatchParam().
void clang::CodeGen::CodeGenFunction::EmitARCIntrinsicUse | ( | ArrayRef< llvm::Value * > | values | ) |
Referenced by emitWriteback().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCLoadWeak | ( | Address | addr | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCLoadWeakRetained | ( | Address | addr | ) |
Referenced by tryEmitARCRetainLoadOfScalar().
void clang::CodeGen::CodeGenFunction::emitARCMoveAssignWeak | ( | QualType | Ty, |
Address | DstAddr, | ||
Address | SrcAddr | ||
) |
Referenced by tryEmitARCCopyWeakInit().
void clang::CodeGen::CodeGenFunction::EmitARCNoopIntrinsicUse | ( | ArrayRef< llvm::Value * > | values | ) |
Referenced by emitOptimizedARCReturnCall().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCReclaimReturnedObject | ( | const Expr * | e, |
bool | allowUnsafeClaim | ||
) |
void clang::CodeGen::CodeGenFunction::EmitARCRelease | ( | llvm::Value * | value, |
ARCPreciseLifetime_t | precise | ||
) |
Referenced by clang::CodeGen::CGObjCRuntime::destroyCalleeDestroyedArguments(), and emitWriteback().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCRetain | ( | QualType | type, |
llvm::Value * | value | ||
) |
Referenced by emitARCRetainLoadOfScalar().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCRetainAutorelease | ( | QualType | type, |
llvm::Value * | value | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCRetainAutoreleasedReturnValue | ( | llvm::Value * | value | ) |
Referenced by emitARCRetainCallResult().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCRetainAutoreleaseNonBlock | ( | llvm::Value * | value | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCRetainAutoreleaseReturnValue | ( | llvm::Value * | value | ) |
Referenced by tryEmitFusedAutoreleaseOfResult().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCRetainAutoreleaseScalarExpr | ( | const Expr * | expr | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCRetainBlock | ( | llvm::Value * | value, |
bool | mandatory | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCRetainNonBlock | ( | llvm::Value * | value | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCRetainScalarExpr | ( | const Expr * | expr | ) |
Referenced by clang::CodeGen::CGObjCRuntime::EmitAtSynchronizedStmt().
std::pair< LValue, llvm::Value * > clang::CodeGen::CodeGenFunction::EmitARCStoreAutoreleasing | ( | const BinaryOperator * | e | ) |
std::pair< LValue, llvm::Value * > clang::CodeGen::CodeGenFunction::EmitARCStoreStrong | ( | const BinaryOperator * | e, |
bool | ignored | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCStoreStrong | ( | LValue | lvalue, |
llvm::Value * | value, | ||
bool | resultIgnored | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCStoreStrongCall | ( | Address | addr, |
llvm::Value * | value, | ||
bool | resultIgnored | ||
) |
Referenced by destroyARCStrongWithStore().
std::pair< LValue, llvm::Value * > clang::CodeGen::CodeGenFunction::EmitARCStoreUnsafeUnretained | ( | const BinaryOperator * | e, |
bool | ignored | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCStoreWeak | ( | Address | addr, |
llvm::Value * | value, | ||
bool | ignored | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCUnsafeClaimAutoreleasedReturnValue | ( | llvm::Value * | value | ) |
Referenced by emitARCUnsafeClaimCallResult().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARCUnsafeUnretainedScalarExpr | ( | const Expr * | expr | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARMBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E, | ||
ReturnValueSlot | ReturnValue, | ||
llvm::Triple::ArchType | Arch | ||
) |
Referenced by EmitTargetArchBuiltinExpr().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARMCDEBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E, | ||
ReturnValueSlot | ReturnValue, | ||
llvm::Triple::ArchType | Arch | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitARMMVEBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E, | ||
ReturnValueSlot | ReturnValue, | ||
llvm::Triple::ArchType | Arch | ||
) |
void clang::CodeGen::CodeGenFunction::emitArrayDestroy | ( | llvm::Value * | begin, |
llvm::Value * | end, | ||
QualType | elementType, | ||
CharUnits | elementAlign, | ||
Destroyer * | destroyer, | ||
bool | checkZeroLength, | ||
bool | useEHCleanup | ||
) |
Referenced by EmitArrayDelete(), and emitPartialArrayDestroy().
llvm::Value * clang::CodeGen::CodeGenFunction::emitArrayLength | ( | const ArrayType * | arrayType, |
QualType & | baseType, | ||
Address & | addr | ||
) |
emitArrayLength - Compute the length of an array, even if it's a VLA, and drill down to the base element type.
Referenced by EmitOMPAggregateInit(), and EmitOMPAggregateReduction().
LValue clang::CodeGen::CodeGenFunction::EmitArraySectionExpr | ( | const ArraySectionExpr * | E, |
bool | IsLowerBound = true |
||
) |
Referenced by emitOMPArraySectionBase(), and getPointerAndSize().
LValue clang::CodeGen::CodeGenFunction::EmitArraySubscriptExpr | ( | const ArraySubscriptExpr * | E, |
bool | Accessed = false |
||
) |
Address clang::CodeGen::CodeGenFunction::EmitArrayToPointerDecay | ( | const Expr * | Array, |
LValueBaseInfo * | BaseInfo = nullptr , |
||
TBAAAccessInfo * | TBAAInfo = nullptr |
||
) |
Referenced by EmitPointerWithAlignment().
void clang::CodeGen::CodeGenFunction::EmitAsanPrologueOrEpilogue | ( | bool | Prologue | ) |
void clang::CodeGen::CodeGenFunction::EmitAsmStmt | ( | const AsmStmt & | S | ) |
std::pair< RValue, llvm::Value * > clang::CodeGen::CodeGenFunction::EmitAtomicCompareExchange | ( | LValue | Obj, |
RValue | Expected, | ||
RValue | Desired, | ||
SourceLocation | Loc, | ||
llvm::AtomicOrdering | Success = llvm::AtomicOrdering::SequentiallyConsistent , |
||
llvm::AtomicOrdering | Failure = llvm::AtomicOrdering::SequentiallyConsistent , |
||
bool | IsWeak = false , |
||
AggValueSlot | Slot = AggValueSlot::ignored() |
||
) |
RValue clang::CodeGen::CodeGenFunction::EmitAtomicExpr | ( | AtomicExpr * | E | ) |
RValue clang::CodeGen::CodeGenFunction::EmitAtomicLoad | ( | LValue | LV, |
SourceLocation | SL, | ||
AggValueSlot | Slot = AggValueSlot::ignored() |
||
) |
Referenced by emitSimpleAtomicLoad().
RValue clang::CodeGen::CodeGenFunction::EmitAtomicLoad | ( | LValue | lvalue, |
SourceLocation | loc, | ||
llvm::AtomicOrdering | AO, | ||
bool | IsVolatile = false , |
||
AggValueSlot | slot = AggValueSlot::ignored() |
||
) |
llvm::AtomicRMWInst * clang::CodeGen::CodeGenFunction::emitAtomicRMWInst | ( | llvm::AtomicRMWInst::BinOp | Op, |
Address | Addr, | ||
llvm::Value * | Val, | ||
llvm::AtomicOrdering | Order = llvm::AtomicOrdering::SequentiallyConsistent , |
||
llvm::SyncScope::ID | SSID = llvm::SyncScope::System |
||
) |
Emit an atomicrmw instruction, and applying relevant metadata when applicable.
Referenced by EmitAtomicOp(), and emitOMPAtomicRMW().
void clang::CodeGen::CodeGenFunction::EmitAtomicStore | ( | RValue | rvalue, |
LValue | lvalue, | ||
llvm::AtomicOrdering | AO, | ||
bool | IsVolatile, | ||
bool | isInit | ||
) |
void clang::CodeGen::CodeGenFunction::EmitAtomicUpdate | ( | LValue | LVal, |
llvm::AtomicOrdering | AO, | ||
const llvm::function_ref< RValue(RValue)> & | UpdateOp, | ||
bool | IsVolatile | ||
) |
void clang::CodeGen::CodeGenFunction::EmitAttributedStmt | ( | const AttributedStmt & | S | ) |
AutoVarEmission clang::CodeGen::CodeGenFunction::EmitAutoVarAlloca | ( | const VarDecl & | var | ) |
void clang::CodeGen::CodeGenFunction::EmitAutoVarCleanups | ( | const AutoVarEmission & | emission | ) |
void clang::CodeGen::CodeGenFunction::EmitAutoVarDecl | ( | const VarDecl & | D | ) |
EmitAutoVarDecl - Emit an auto variable declaration.
This function can be called with a null (unreachable) insert point.
Referenced by clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt().
void clang::CodeGen::CodeGenFunction::EmitAutoVarInit | ( | const AutoVarEmission & | emission | ) |
void clang::CodeGen::CodeGenFunction::emitAutoVarTypeCleanup | ( | const AutoVarEmission & | emission, |
QualType::DestructionKind | dtorKind | ||
) |
LValue clang::CodeGen::CodeGenFunction::EmitBinaryOperatorLValue | ( | const BinaryOperator * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitBitfieldConversionCheck | ( | llvm::Value * | Src, |
QualType | SrcType, | ||
llvm::Value * | Dst, | ||
QualType | DstType, | ||
const CGBitFieldInfo & | Info, | ||
SourceLocation | Loc | ||
) |
Emit a check that an [implicit] conversion of a bitfield.
It is not UB, so we use the value after conversion.
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.
Referenced by clang::CodeGen::CGOpenMPRuntime::checkAndEmitSharedLastprivateConditional(), clang::CodeGen::CatchRetScope::Emit(), clang::CodeGen::CGOpenMPRuntime::emitBarrierCall(), clang::CodeGen::CGOpenMPRuntime::emitCancellationPointCall(), emitCatchDispatchBlock(), EmitCleanup(), clang::CodeGen::CGOpenMPRuntimeGPU::emitCriticalRegion(), clang::CodeGen::CGCUDARuntime::EmitCUDAKernelCallExpr(), emitFilterDispatchBlock(), clang::CodeGen::CGOpenMPRuntime::emitIfClause(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalUpdate(), emitNonZeroVLAInit(), EmitObjectDelete(), EmitOMPAggregateInit(), EmitOMPAggregateReduction(), emitOMPSimdRegion(), emitPostUpdateForReductionClause(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), EmitSehScope(), emitSuspendExpression(), clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), EmitTypeidFromVTable(), clang::CodeGen::CGOpenMPRuntime::emitUDMapperArrayInitOrDel(), clang::CodeGen::CGOpenMPRuntime::emitUpdateClause(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), emitWasmCatchPadBlock(), emitWriteback(), emitWritebackArg(), EnsureInsertPoint(), clang::CodeGen::CodeGenFunction::FinallyInfo::exit(), and PerformReturnAdjustment().
void clang::CodeGen::CodeGenFunction::EmitBlockAfterUses | ( | llvm::BasicBlock * | BB | ) |
EmitBlockAfterUses - Emit the given block somewhere hopefully near its uses, and leave the insertion point in it.
Referenced by emitCatchDispatchBlock(), emitCatchPadBlock(), emitFilterDispatchBlock(), and emitWasmCatchPadBlock().
Address clang::CodeGen::CodeGenFunction::emitBlockByrefAddress | ( | Address | baseAddr, |
const BlockByrefInfo & | info, | ||
bool | followForward, | ||
const llvm::Twine & | name | ||
) |
Address clang::CodeGen::CodeGenFunction::emitBlockByrefAddress | ( | Address | baseAddr, |
const VarDecl * | V, | ||
bool | followForward = true |
||
) |
BuildBlockByrefAddress - Computes the location of the data in a variable which is declared as __block.
Referenced by drillIntoBlockVariable(), generateByrefCopyHelper(), generateByrefDisposeHelper(), and clang::CodeGen::CodeGenFunction::AutoVarEmission::getObjectAddress().
RValue clang::CodeGen::CodeGenFunction::EmitBlockCallExpr | ( | const CallExpr * | E, |
ReturnValueSlot | ReturnValue | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitBlockCopyAndAutorelease | ( | llvm::Value * | Block, |
QualType | Ty | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitBlockLiteral | ( | const BlockExpr * | ) |
Emit block literal.
void clang::CodeGen::CodeGenFunction::EmitBlockWithFallThrough | ( | llvm::BasicBlock * | BB, |
const Stmt * | S | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::emitBoolVecConversion | ( | llvm::Value * | SrcVec, |
unsigned | NumElementsDst, | ||
const llvm::Twine & | Name = "" |
||
) |
void clang::CodeGen::CodeGenFunction::EmitBoundsCheck | ( | const Expr * | E, |
const Expr * | Base, | ||
llvm::Value * | Index, | ||
QualType | IndexType, | ||
bool | Accessed | ||
) |
Emit a check that Base
points into an array object, which we can access at index Index
.
Accessed
should be false
if we this expression is used as an lvalue, for instance in "&Arr[Idx]".
Referenced by emitPointerArithmetic().
void clang::CodeGen::CodeGenFunction::EmitBoundsCheckImpl | ( | const Expr * | E, |
llvm::Value * | Bound, | ||
llvm::Value * | Index, | ||
QualType | IndexType, | ||
QualType | IndexedType, | ||
bool | Accessed | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitBPFBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E | ||
) |
Referenced by EmitTargetArchBuiltinExpr().
void clang::CodeGen::CodeGenFunction::EmitBranch | ( | llvm::BasicBlock * | Block | ) |
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.
Referenced by clang::CodeGen::CGOpenMPRuntimeGPU::emitCriticalRegion(), clang::CodeGen::CGCUDARuntime::EmitCUDAKernelCallExpr(), clang::CodeGen::CGOpenMPRuntime::emitIfClause(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalUpdate(), emitOMPSimdRegion(), and clang::CodeGen::CGOpenMPRuntime::emitReduction().
void clang::CodeGen::CodeGenFunction::EmitBranchOnBoolExpr | ( | const Expr * | Cond, |
llvm::BasicBlock * | TrueBlock, | ||
llvm::BasicBlock * | FalseBlock, | ||
uint64_t | TrueCount, | ||
Stmt::Likelihood | LH = Stmt::LH_None , |
||
const Expr * | ConditionalOp = nullptr |
||
) |
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.
Referenced by clang::CodeGen::CGCUDARuntime::EmitCUDAKernelCallExpr(), clang::CodeGen::CGOpenMPRuntime::emitIfClause(), emitPreCond(), and emitSuspendExpression().
void clang::CodeGen::CodeGenFunction::EmitBranchThroughCleanup | ( | JumpDest | Dest | ) |
EmitBranchThroughCleanup - Emit a branch from the current insert block through the normal cleanup handling code (if any) and then on to.
Referenced by clang::CodeGen::CGOpenMPRuntime::emitBarrierCall(), clang::CodeGen::CGOpenMPRuntime::emitCancellationPointCall(), emitSuspendExpression(), clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), clang::CodeGen::CodeGenFunction::FinallyInfo::exit(), and clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::FinalizeOMPRegion().
void clang::CodeGen::CodeGenFunction::EmitBranchToCounterBlock | ( | const Expr * | Cond, |
BinaryOperator::Opcode | LOp, | ||
llvm::BasicBlock * | TrueBlock, | ||
llvm::BasicBlock * | FalseBlock, | ||
uint64_t | TrueCount = 0 , |
||
Stmt::Likelihood | LH = Stmt::LH_None , |
||
const Expr * | CntrIdx = nullptr |
||
) |
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.
void clang::CodeGen::CodeGenFunction::EmitBreakStmt | ( | const BreakStmt & | S | ) |
Emit IR for __builtin_align_up/__builtin_align_down.
llvm::Value * clang::CodeGen::CodeGenFunction::EmitBuiltinAvailable | ( | const VersionTuple & | Version | ) |
RValue clang::CodeGen::CodeGenFunction::EmitBuiltinExpr | ( | const GlobalDecl | GD, |
unsigned | BuiltinID, | ||
const CallExpr * | E, | ||
ReturnValueSlot | ReturnValue | ||
) |
Emit IR for __builtin_is_aligned.
RValue clang::CodeGen::CodeGenFunction::EmitBuiltinNewDeleteCall | ( | const FunctionProtoType * | Type, |
const CallExpr * | TheCallExpr, | ||
bool | IsDelete | ||
) |
Emit IR for __builtin_os_log_format.
void clang::CodeGen::CodeGenFunction::emitByrefStructureInit | ( | const AutoVarEmission & | emission | ) |
RValue clang::CodeGen::CodeGenFunction::EmitCall | ( | const CGFunctionInfo & | CallInfo, |
const CGCallee & | Callee, | ||
ReturnValueSlot | ReturnValue, | ||
const CallArgList & | Args, | ||
llvm::CallBase ** | callOrInvoke, | ||
bool | IsMustTail, | ||
SourceLocation | Loc, | ||
bool | IsVirtualFunctionPointerThunk = false |
||
) |
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.
Referenced by emitAtomicLibcall(), EmitCall(), emitCPPObjectAtomicGetterCall(), emitCPPObjectAtomicSetterCall(), emitLibraryCall(), EmitNewDeleteCall(), emitStructGetterCall(), and emitStructSetterCall().
|
inline |
Definition at line 4386 of file CodeGenFunction.h.
References EmitCall(), and ReturnValue.
RValue clang::CodeGen::CodeGenFunction::EmitCall | ( | QualType | FnType, |
const CGCallee & | Callee, | ||
const CallExpr * | E, | ||
ReturnValueSlot | ReturnValue, | ||
llvm::Value * | Chain = nullptr |
||
) |
void clang::CodeGen::CodeGenFunction::EmitCallAndReturnForThunk | ( | llvm::FunctionCallee | Callee, |
const ThunkInfo * | Thunk, | ||
bool | IsUnprototyped | ||
) |
void clang::CodeGen::CodeGenFunction::EmitCallArg | ( | CallArgList & | args, |
const Expr * | E, | ||
QualType | ArgType | ||
) |
EmitCallArg - Emit a single call argument.
void clang::CodeGen::CodeGenFunction::EmitCallArgs | ( | CallArgList & | Args, |
PrototypeWrapper | Prototype, | ||
llvm::iterator_range< CallExpr::const_arg_iterator > | ArgRange, | ||
AbstractCallee | AC = AbstractCallee() , |
||
unsigned | ParamsToSkip = 0 , |
||
EvaluationOrder | Order = EvaluationOrder::Default |
||
) |
Referenced by commonEmitCXXMemberOrOperatorCall().
RValue clang::CodeGen::CodeGenFunction::EmitCallExpr | ( | const CallExpr * | E, |
ReturnValueSlot | ReturnValue = ReturnValueSlot() |
||
) |
llvm::CallBase * clang::CodeGen::CodeGenFunction::EmitCallOrInvoke | ( | llvm::FunctionCallee | Callee, |
ArrayRef< llvm::Value * > | Args, | ||
const Twine & | Name = "" |
||
) |
Referenced by emitObjCValueOperation(), and emitSuspendExpression().
void clang::CodeGen::CodeGenFunction::EmitCapturedLocals | ( | CodeGenFunction & | ParentCGF, |
const Stmt * | OutlinedStmt, | ||
bool | IsFilter | ||
) |
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.
llvm::Function * clang::CodeGen::CodeGenFunction::EmitCapturedStmt | ( | const CapturedStmt & | S, |
CapturedRegionKind | K | ||
) |
void clang::CodeGen::CodeGenFunction::EmitCaseStmt | ( | const CaseStmt & | S, |
ArrayRef< const Attr * > | Attrs | ||
) |
void clang::CodeGen::CodeGenFunction::EmitCaseStmtRange | ( | const CaseStmt & | S, |
ArrayRef< const Attr * > | Attrs | ||
) |
void clang::CodeGen::CodeGenFunction::EmitCfiCheckFail | ( | ) |
Emit a cross-DSO CFI failure handling function.
Referenced by clang::CodeGen::CodeGenModule::Release().
void clang::CodeGen::CodeGenFunction::EmitCfiCheckStub | ( | ) |
Emit a stub for the cross-DSO CFI check function.
Referenced by clang::CodeGen::CodeGenModule::Release().
void clang::CodeGen::CodeGenFunction::EmitCfiSlowPathCheck | ( | SanitizerMask | Kind, |
llvm::Value * | Cond, | ||
llvm::ConstantInt * | TypeId, | ||
llvm::Value * | Ptr, | ||
ArrayRef< llvm::Constant * > | StaticArgs | ||
) |
Emit a slow path cross-DSO CFI check which calls __cfi_slowpath if Cond if false.
void clang::CodeGen::CodeGenFunction::EmitCheck | ( | ArrayRef< std::pair< llvm::Value *, SanitizerMask > > | Checked, |
SanitizerHandler | Check, | ||
ArrayRef< llvm::Constant * > | StaticArgs, | ||
ArrayRef< llvm::Value * > | DynamicArgs | ||
) |
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.
Referenced by EmitOverflowCheckedAbs().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitCheckedArgForBuiltin | ( | const Expr * | E, |
BuiltinCheckKind | Kind | ||
) |
Emits an argument for a call to a builtin.
If the builtin sanitizer is enabled, a runtime check specified by Kind
is also emitted.
Address clang::CodeGen::CodeGenFunction::EmitCheckedInBoundsGEP | ( | Address | Addr, |
ArrayRef< llvm::Value * > | IdxList, | ||
llvm::Type * | elementType, | ||
bool | SignedIndices, | ||
bool | IsSubtraction, | ||
SourceLocation | Loc, | ||
CharUnits | Align, | ||
const Twine & | Name = "" |
||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitCheckedInBoundsGEP | ( | llvm::Type * | ElemTy, |
llvm::Value * | Ptr, | ||
ArrayRef< llvm::Value * > | IdxList, | ||
bool | SignedIndices, | ||
bool | IsSubtraction, | ||
SourceLocation | Loc, | ||
const Twine & | Name = "" |
||
) |
Same as IRBuilder::CreateInBoundsGEP, but additionally emits a check to detect undefined behavior when the pointer overflow sanitizer is enabled.
SignedIndices
indicates whether any of the GEP indices are signed. IsSubtraction
indicates whether the expression used to form the GEP is a subtraction.
Referenced by emitArraySubscriptGEP(), emitPointerArithmetic(), and clang::CodeGen::CGOpenMPRuntime::emitTaskReductionInit().
LValue clang::CodeGen::CodeGenFunction::EmitCheckedLValue | ( | const Expr * | E, |
TypeCheckKind | TCK | ||
) |
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.
llvm::Constant * clang::CodeGen::CodeGenFunction::EmitCheckSourceLocation | ( | SourceLocation | Loc | ) |
Emit a description of a source location in a format suitable for passing to a runtime sanitizer handler.
Referenced by EmitOverflowCheckedAbs().
llvm::Constant * clang::CodeGen::CodeGenFunction::EmitCheckTypeDescriptor | ( | QualType | T | ) |
Emit a description of a type in a format suitable for passing to a runtime sanitizer handler.
Referenced by EmitOverflowCheckedAbs().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitCheckValue | ( | llvm::Value * | V | ) |
Convert a value into a format suitable for passing to a runtime sanitizer handler.
llvm::Value * clang::CodeGen::CodeGenFunction::EmitCMSEClearRecord | ( | llvm::Value * | V, |
llvm::ArrayType * | ATy, | ||
QualType | RTy | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitCMSEClearRecord | ( | llvm::Value * | V, |
llvm::IntegerType * | ITy, | ||
QualType | RTy | ||
) |
RValue clang::CodeGen::CodeGenFunction::EmitCoawaitExpr | ( | const CoawaitExpr & | E, |
AggValueSlot | aggSlot = AggValueSlot::ignored() , |
||
bool | ignoreResult = false |
||
) |
LValue clang::CodeGen::CodeGenFunction::EmitCoawaitLValue | ( | const CoawaitExpr * | E | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitCommonNeonBuiltinExpr | ( | unsigned | BuiltinID, |
unsigned | LLVMIntrinsic, | ||
unsigned | AltLLVMIntrinsic, | ||
const char * | NameHint, | ||
unsigned | Modifier, | ||
const CallExpr * | E, | ||
SmallVectorImpl< llvm::Value * > & | Ops, | ||
Address | PtrOp0, | ||
Address | PtrOp1, | ||
llvm::Triple::ArchType | Arch | ||
) |
LValue clang::CodeGen::CodeGenFunction::EmitComplexAssignmentLValue | ( | const BinaryOperator * | E | ) |
Emit an l-value for an assignment (simple or compound) of complex type.
LValue clang::CodeGen::CodeGenFunction::EmitComplexCompoundAssignmentLValue | ( | const CompoundAssignOperator * | E | ) |
ComplexPairTy clang::CodeGen::CodeGenFunction::EmitComplexExpr | ( | const Expr * | E, |
bool | IgnoreReal = false , |
||
bool | IgnoreImag = false |
||
) |
EmitComplexExpr - Emit the computation of the specified expression of complex type, returning the result.
void clang::CodeGen::CodeGenFunction::EmitComplexExprIntoLValue | ( | const Expr * | E, |
LValue | dest, | ||
bool | isInit | ||
) |
EmitComplexExprIntoLValue - Emit the given expression of complex type and place its result into the specified l-value.
Referenced by EmitDeclInit(), and StoreAnyExprIntoOneUnit().
ComplexPairTy clang::CodeGen::CodeGenFunction::EmitComplexPrePostIncDec | ( | const UnaryOperator * | E, |
LValue | LV, | ||
bool | isInc, | ||
bool | isPre | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitComplexToScalarConversion | ( | ComplexPairTy | Src, |
QualType | SrcTy, | ||
QualType | DstTy, | ||
SourceLocation | Loc | ||
) |
Emit a conversion from the specified complex type to the specified destination type, where the destination type is an LLVM scalar type.
Referenced by convertToScalarValue().
LValue clang::CodeGen::CodeGenFunction::EmitCompoundAssignmentLValue | ( | const CompoundAssignOperator * | E | ) |
LValue clang::CodeGen::CodeGenFunction::EmitCompoundLiteralLValue | ( | const CompoundLiteralExpr * | E | ) |
Address clang::CodeGen::CodeGenFunction::EmitCompoundStmt | ( | const CompoundStmt & | S, |
bool | GetLast = false , |
||
AggValueSlot | AVS = AggValueSlot::ignored() |
||
) |
Address clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope | ( | const CompoundStmt & | S, |
bool | GetLast = false , |
||
AggValueSlot | AVS = AggValueSlot::ignored() |
||
) |
LValue clang::CodeGen::CodeGenFunction::EmitConditionalOperatorLValue | ( | const AbstractConditionalOperator * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitConstructorBody | ( | FunctionArgList & | Args | ) |
void clang::CodeGen::CodeGenFunction::EmitContinueStmt | ( | const ContinueStmt & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitCoreturnStmt | ( | const CoreturnStmt & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitCoroutineBody | ( | const CoroutineBodyStmt & | S | ) |
RValue clang::CodeGen::CodeGenFunction::EmitCoroutineIntrinsic | ( | const CallExpr * | E, |
unsigned int | IID | ||
) |
RValue clang::CodeGen::CodeGenFunction::EmitCoyieldExpr | ( | const CoyieldExpr & | E, |
AggValueSlot | aggSlot = AggValueSlot::ignored() , |
||
bool | ignoreResult = false |
||
) |
LValue clang::CodeGen::CodeGenFunction::EmitCoyieldLValue | ( | const CoyieldExpr * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitCtorPrologue | ( | const CXXConstructorDecl * | CD, |
CXXCtorType | Type, | ||
FunctionArgList & | Args | ||
) |
RValue clang::CodeGen::CodeGenFunction::EmitCUDAKernelCallExpr | ( | const CUDAKernelCallExpr * | E, |
ReturnValueSlot | ReturnValue | ||
) |
void clang::CodeGen::CodeGenFunction::EmitCXXAggrConstructorCall | ( | const CXXConstructorDecl * | D, |
const ArrayType * | ArrayTy, | ||
Address | ArrayPtr, | ||
const CXXConstructExpr * | E, | ||
bool | NewPointerIsChecked, | ||
bool | ZeroInitialization = false |
||
) |
void clang::CodeGen::CodeGenFunction::EmitCXXAggrConstructorCall | ( | const CXXConstructorDecl * | D, |
llvm::Value * | NumElements, | ||
Address | ArrayPtr, | ||
const CXXConstructExpr * | E, | ||
bool | NewPointerIsChecked, | ||
bool | ZeroInitialization = false |
||
) |
LValue clang::CodeGen::CodeGenFunction::EmitCXXBindTemporaryLValue | ( | const CXXBindTemporaryExpr * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitCXXConstructExpr | ( | const CXXConstructExpr * | E, |
AggValueSlot | Dest | ||
) |
LValue clang::CodeGen::CodeGenFunction::EmitCXXConstructLValue | ( | const CXXConstructExpr * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall | ( | const CXXConstructorDecl * | D, |
CXXCtorType | Type, | ||
bool | ForVirtualBase, | ||
bool | Delegating, | ||
Address | This, | ||
CallArgList & | Args, | ||
AggValueSlot::Overlap_t | Overlap, | ||
SourceLocation | Loc, | ||
bool | NewPointerIsChecked | ||
) |
void clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall | ( | const CXXConstructorDecl * | D, |
CXXCtorType | Type, | ||
bool | ForVirtualBase, | ||
bool | Delegating, | ||
AggValueSlot | ThisAVS, | ||
const CXXConstructExpr * | E | ||
) |
void clang::CodeGen::CodeGenFunction::EmitCXXDeleteExpr | ( | const CXXDeleteExpr * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitCXXDestructorCall | ( | const CXXDestructorDecl * | D, |
CXXDtorType | Type, | ||
bool | ForVirtualBase, | ||
bool | Delegating, | ||
Address | This, | ||
QualType | ThisTy | ||
) |
Referenced by EmitObjectDelete().
RValue clang::CodeGen::CodeGenFunction::EmitCXXDestructorCall | ( | GlobalDecl | Dtor, |
const CGCallee & | Callee, | ||
llvm::Value * | This, | ||
QualType | ThisTy, | ||
llvm::Value * | ImplicitParam, | ||
QualType | ImplicitParamTy, | ||
const CallExpr * | E | ||
) |
void clang::CodeGen::CodeGenFunction::EmitCXXForRangeStmt | ( | const CXXForRangeStmt & | S, |
ArrayRef< const Attr * > | Attrs = std::nullopt |
||
) |
void clang::CodeGen::CodeGenFunction::EmitCXXGlobalVarDeclInit | ( | const VarDecl & | D, |
llvm::GlobalVariable * | GV, | ||
bool | PerformInit | ||
) |
EmitCXXGlobalVarDeclInit - Create the initializer for a C++ variable with global storage.
void clang::CodeGen::CodeGenFunction::EmitCXXGuardedInit | ( | const VarDecl & | D, |
llvm::GlobalVariable * | DeclPtr, | ||
bool | PerformInit | ||
) |
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.
void clang::CodeGen::CodeGenFunction::EmitCXXGuardedInitBranch | ( | llvm::Value * | NeedsInit, |
llvm::BasicBlock * | InitBlock, | ||
llvm::BasicBlock * | NoInitBlock, | ||
GuardKind | Kind, | ||
const VarDecl * | D | ||
) |
Emit a branch to select whether or not to perform guarded initialization.
RValue clang::CodeGen::CodeGenFunction::EmitCXXMemberCallExpr | ( | const CXXMemberCallExpr * | E, |
ReturnValueSlot | ReturnValue | ||
) |
Address clang::CodeGen::CodeGenFunction::EmitCXXMemberDataPointerAddress | ( | const Expr * | E, |
Address | base, | ||
llvm::Value * | memberPtr, | ||
const MemberPointerType * | memberPtrType, | ||
LValueBaseInfo * | BaseInfo = nullptr , |
||
TBAAAccessInfo * | TBAAInfo = nullptr |
||
) |
RValue clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorCall | ( | const CXXMethodDecl * | Method, |
const CGCallee & | Callee, | ||
ReturnValueSlot | ReturnValue, | ||
llvm::Value * | This, | ||
llvm::Value * | ImplicitParam, | ||
QualType | ImplicitParamTy, | ||
const CallExpr * | E, | ||
CallArgList * | RtlArgs | ||
) |
RValue clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr | ( | const CallExpr * | CE, |
const CXXMethodDecl * | MD, | ||
ReturnValueSlot | ReturnValue, | ||
bool | HasQualifier, | ||
NestedNameSpecifier * | Qualifier, | ||
bool | IsArrow, | ||
const Expr * | Base | ||
) |
RValue clang::CodeGen::CodeGenFunction::EmitCXXMemberPointerCallExpr | ( | const CXXMemberCallExpr * | E, |
ReturnValueSlot | ReturnValue | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitCXXNewExpr | ( | const CXXNewExpr * | E | ) |
RValue clang::CodeGen::CodeGenFunction::EmitCXXOperatorMemberCallExpr | ( | const CXXOperatorCallExpr * | E, |
const CXXMethodDecl * | MD, | ||
ReturnValueSlot | ReturnValue | ||
) |
RValue clang::CodeGen::CodeGenFunction::EmitCXXPseudoDestructorExpr | ( | const CXXPseudoDestructorExpr * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitCXXTemporary | ( | const CXXTemporary * | Temporary, |
QualType | TempType, | ||
Address | Ptr | ||
) |
void clang::CodeGen::CodeGenFunction::EmitCXXThrowExpr | ( | const CXXThrowExpr * | E, |
bool | KeepInsertionPoint = true |
||
) |
Referenced by EmitLValueOrThrowExpression().
void clang::CodeGen::CodeGenFunction::EmitCXXTryStmt | ( | const CXXTryStmt & | S | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitCXXTypeidExpr | ( | const CXXTypeidExpr * | E | ) |
LValue clang::CodeGen::CodeGenFunction::EmitCXXTypeidLValue | ( | const CXXTypeidExpr * | E | ) |
Address clang::CodeGen::CodeGenFunction::EmitCXXUuidofExpr | ( | const CXXUuidofExpr * | E | ) |
LValue clang::CodeGen::CodeGenFunction::EmitCXXUuidofLValue | ( | const CXXUuidofExpr * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitDecl | ( | const Decl & | D | ) |
EmitDecl - Emit a declaration.
This function can be called with a null (unreachable) insert point.
void clang::CodeGen::CodeGenFunction::EmitDeclRefExprDbgValue | ( | const DeclRefExpr * | E, |
const APValue & | Init | ||
) |
LValue clang::CodeGen::CodeGenFunction::EmitDeclRefLValue | ( | const DeclRefExpr * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitDeclStmt | ( | const DeclStmt & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitDefaultStmt | ( | const DefaultStmt & | S, |
ArrayRef< const Attr * > | Attrs | ||
) |
void clang::CodeGen::CodeGenFunction::EmitDelegateCallArg | ( | CallArgList & | args, |
const VarDecl * | param, | ||
SourceLocation | loc | ||
) |
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.
void clang::CodeGen::CodeGenFunction::EmitDelegateCXXConstructorCall | ( | const CXXConstructorDecl * | Ctor, |
CXXCtorType | CtorType, | ||
const FunctionArgList & | Args, | ||
SourceLocation | Loc | ||
) |
void clang::CodeGen::CodeGenFunction::EmitDelegatingCXXConstructorCall | ( | const CXXConstructorDecl * | Ctor, |
const FunctionArgList & | Args | ||
) |
void clang::CodeGen::CodeGenFunction::EmitDeleteCall | ( | const FunctionDecl * | DeleteFD, |
llvm::Value * | Ptr, | ||
QualType | DeleteTy, | ||
llvm::Value * | NumElements = nullptr , |
||
CharUnits | CookieSize = CharUnits() |
||
) |
Referenced by EmitDestroyingObjectDelete().
void clang::CodeGen::CodeGenFunction::EmitDestructorBody | ( | FunctionArgList & | Args | ) |
void clang::CodeGen::CodeGenFunction::EmitDoStmt | ( | const DoStmt & | S, |
ArrayRef< const Attr * > | Attrs = std::nullopt |
||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitDynamicCast | ( | Address | V, |
const CXXDynamicCastExpr * | DCE | ||
) |
void clang::CodeGen::CodeGenFunction::EmitEndEHSpec | ( | const Decl * | D | ) |
EmitEndEHSpec - Emit the end of the exception spec.
void clang::CodeGen::CodeGenFunction::EmitExprAsInit | ( | const Expr * | init, |
const ValueDecl * | D, | ||
LValue | lvalue, | ||
bool | capturedByInit | ||
) |
EmitExprAsInit - Emits the code necessary to initialize a location in memory with the given initializer.
Referenced by emitPrivatesInit().
void clang::CodeGen::CodeGenFunction::EmitExtendGCLifetime | ( | llvm::Value * | object | ) |
EmitExtendGCLifetime - Given a pointer to an Objective-C object, make sure it survives garbage collection until this point.
LValue clang::CodeGen::CodeGenFunction::EmitExtVectorElementExpr | ( | const ExtVectorElementExpr * | E | ) |
Emit field annotations for the given field & value.
Returns the annotation result.
void clang::CodeGen::CodeGenFunction::EmitForStmt | ( | const ForStmt & | S, |
ArrayRef< const Attr * > | Attrs = std::nullopt |
||
) |
void clang::CodeGen::CodeGenFunction::EmitForwardingCallToLambda | ( | const CXXMethodDecl * | LambdaCallOperator, |
CallArgList & | CallArgs, | ||
const CGFunctionInfo * | CallOpFnInfo = nullptr , |
||
llvm::Constant * | CallOpFn = nullptr |
||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitFromMemory | ( | llvm::Value * | Value, |
QualType | Ty | ||
) |
EmitFromMemory - Change a scalar value from its memory representation to its value representation.
Referenced by EmitFromInt().
void clang::CodeGen::CodeGenFunction::EmitFunctionBody | ( | const Stmt * | Body | ) |
void clang::CodeGen::CodeGenFunction::EmitFunctionEpilog | ( | const CGFunctionInfo & | FI, |
bool | EmitRetDbgLoc, | ||
SourceLocation | EndLoc | ||
) |
EmitFunctionEpilog - Emit the target specific LLVM code to return the given temporary.
void clang::CodeGen::CodeGenFunction::EmitFunctionProlog | ( | const CGFunctionInfo & | FI, |
llvm::Function * | Fn, | ||
const FunctionArgList & | Args | ||
) |
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.
void clang::CodeGen::CodeGenFunction::EmitGotoStmt | ( | const GotoStmt & | S | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitHexagonBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E | ||
) |
Referenced by EmitTargetArchBuiltinExpr().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitHLSLBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E | ||
) |
void clang::CodeGen::CodeGenFunction::EmitIfStmt | ( | const IfStmt & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitIgnoredConditionalOperator | ( | const AbstractConditionalOperator * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitIgnoredExpr | ( | const Expr * | E | ) |
EmitIgnoredExpr - Emit an expression in a context which ignores the result.
Referenced by emitCombinerOrInitializer(), emitInitWithReductionInitializer(), emitOMPSimdRegion(), emitPostUpdateForReductionClause(), emitPreCond(), emitPseudoObjectExpr(), and emitReductionCombiner().
void clang::CodeGen::CodeGenFunction::emitImplicitAssignmentOperatorBody | ( | FunctionArgList & | Args | ) |
void clang::CodeGen::CodeGenFunction::EmitIndirectGotoStmt | ( | const IndirectGotoStmt & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitInheritedCXXConstructorCall | ( | const CXXConstructorDecl * | D, |
bool | ForVirtualBase, | ||
Address | This, | ||
bool | InheritedFromVBase, | ||
const CXXInheritedCtorInitExpr * | E | ||
) |
Emit a call to a constructor inherited from a base class, passing the current constructor's arguments along unmodified (without even making a copy).
void clang::CodeGen::CodeGenFunction::EmitInitializerForField | ( | FieldDecl * | Field, |
LValue | LHS, | ||
Expr * | Init | ||
) |
Referenced by EmitMemberInitializer().
LValue clang::CodeGen::CodeGenFunction::EmitInitListLValue | ( | const InitListExpr * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitInlinedInheritingCXXConstructorCall | ( | const CXXConstructorDecl * | Ctor, |
CXXCtorType | CtorType, | ||
bool | ForVirtualBase, | ||
bool | Delegating, | ||
CallArgList & | Args | ||
) |
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).
void clang::CodeGen::CodeGenFunction::EmitInvariantStart | ( | llvm::Constant * | Addr, |
CharUnits | Size | ||
) |
Referenced by EmitDeclInvariant().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitIvarOffset | ( | const ObjCInterfaceDecl * | Interface, |
const ObjCIvarDecl * | Ivar | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitIvarOffsetAsPointerDiff | ( | const ObjCInterfaceDecl * | Interface, |
const ObjCIvarDecl * | Ivar | ||
) |
void clang::CodeGen::CodeGenFunction::EmitKCFIOperandBundle | ( | const CGCallee & | Callee, |
SmallVectorImpl< llvm::OperandBundleDef > & | Bundles | ||
) |
void clang::CodeGen::CodeGenFunction::EmitLabel | ( | const LabelDecl * | D | ) |
EmitLabel - Emit the block for the given label.
It is legal to call this function even if there is no current insertion point.
void clang::CodeGen::CodeGenFunction::EmitLabelStmt | ( | const LabelStmt & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitLambdaBlockInvokeBody | ( | ) |
void clang::CodeGen::CodeGenFunction::EmitLambdaDelegatingInvokeBody | ( | const CXXMethodDecl * | MD, |
CallArgList & | CallArgs | ||
) |
void clang::CodeGen::CodeGenFunction::EmitLambdaInAllocaCallOpBody | ( | const CXXMethodDecl * | MD | ) |
void clang::CodeGen::CodeGenFunction::EmitLambdaInAllocaImplFn | ( | const CXXMethodDecl * | CallOp, |
const CGFunctionInfo ** | ImplFnInfo, | ||
llvm::Function ** | ImplFn | ||
) |
void clang::CodeGen::CodeGenFunction::EmitLambdaStaticInvokeBody | ( | const CXXMethodDecl * | MD | ) |
|
inline |
Definition at line 2394 of file CodeGenFunction.h.
References EmitStoreThroughLValue(), clang::CodeGen::RValue::get(), and clang::VariableArrayType::getSizeExpr().
llvm::BasicBlock * clang::CodeGen::CodeGenFunction::EmitLandingPad | ( | ) |
Emits a landing pad for the current EH stack.
void clang::CodeGen::CodeGenFunction::EmitLifetimeEnd | ( | llvm::Value * | Size, |
llvm::Value * | Addr | ||
) |
Referenced by clang::CodeGen::CodeGenFunction::CallLifetimeEnd::Emit().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitLifetimeStart | ( | llvm::TypeSize | Size, |
llvm::Value * | Addr | ||
) |
RValue clang::CodeGen::CodeGenFunction::EmitLoadOfAnyValue | ( | LValue | V, |
AggValueSlot | Slot = AggValueSlot::ignored() , |
||
SourceLocation | Loc = {} |
||
) |
Like EmitLoadOfLValue but also handles complex and aggregate types.
Referenced by clang::CodeGen::DefaultABIInfo::EmitVAArg(), PNaClABIInfo::EmitVAArg(), and clang::CodeGen::emitVoidPtrVAArg().
RValue clang::CodeGen::CodeGenFunction::EmitLoadOfBitfieldLValue | ( | LValue | LV, |
SourceLocation | Loc | ||
) |
ComplexPairTy clang::CodeGen::CodeGenFunction::EmitLoadOfComplex | ( | LValue | src, |
SourceLocation | loc | ||
) |
EmitLoadOfComplex - Load a complex number from the specified l-value.
Referenced by emitInitWithReductionInitializer(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalUpdate(), and InitCatchParam().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitLoadOfCountedByField | ( | const Expr * | Base, |
const FieldDecl * | FAMDecl, | ||
const FieldDecl * | CountDecl | ||
) |
Build an expression accessing the "counted_by" field.
RValue clang::CodeGen::CodeGenFunction::EmitLoadOfLValue | ( | LValue | V, |
SourceLocation | Loc | ||
) |
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.
Referenced by EmitAtomicUpdateValue(), emitInitWithReductionInitializer(), emitSimpleAtomicLoad(), emitWritebackArg(), and tryEmitARCRetainLoadOfScalar().
Address clang::CodeGen::CodeGenFunction::EmitLoadOfPointer | ( | Address | Ptr, |
const PointerType * | PtrTy, | ||
LValueBaseInfo * | BaseInfo = nullptr , |
||
TBAAAccessInfo * | TBAAInfo = nullptr |
||
) |
Load a pointer with type PtrTy
stored at address Ptr
.
Note that PtrTy
is the type of the loaded pointer, not the addresses it is loaded from.
Referenced by emitDeclTargetVarDeclLValue(), emitOutlinedFunctionPrologue(), emitReduceCombFunction(), emitReduceFiniFunction(), and emitReduceInitFunction().
LValue clang::CodeGen::CodeGenFunction::EmitLoadOfPointerLValue | ( | Address | Ptr, |
const PointerType * | PtrTy | ||
) |
Address clang::CodeGen::CodeGenFunction::EmitLoadOfReference | ( | LValue | RefLVal, |
LValueBaseInfo * | PointeeBaseInfo = nullptr , |
||
TBAAAccessInfo * | PointeeTBAAInfo = nullptr |
||
) |
Referenced by emitOutlinedFunctionPrologue().
|
inline |
Definition at line 2751 of file CodeGenFunction.h.
References CGM, EmitLoadOfReferenceLValue(), clang::CodeGen::CodeGenModule::getTBAAAccessInfo(), and MakeAddrLValue().
|
inline |
EmitLoadOfScalar - Load a scalar value from an address, taking care to appropriately convert from the memory representation to the LLVM value representation.
Definition at line 4192 of file CodeGenFunction.h.
References CGM, EmitLoadOfScalar(), clang::CodeGen::CodeGenModule::getTBAAAccessInfo(), and Loc.
Referenced by castValueToType(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitSharedLastprivateConditional(), clang::CodeGen::CGOpenMPRuntimeGPU::emitCriticalRegion(), emitDependData(), clang::CodeGen::CGOpenMPRuntime::emitDepobjElements(), clang::CodeGen::CGOpenMPRuntime::emitDepobjElementsSizes(), emitDistributeParallelForDispatchBounds(), emitDistributeParallelForInnerBounds(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalFinalUpdate(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalUpdate(), EmitLoadOfMatrixLValue(), EmitLoadOfScalar(), EmitNontemporalLoad(), emitOutlinedFunctionPrologue(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceFiniFunction(), emitReduceInitFunction(), emitTaskDupFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskLoopCall(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsFini(), emitWriteback(), clang::CodeGen::CGOpenMPRuntime::getDepobjElements(), clang::CodeGen::CGOpenMPRuntimeGPU::getParameterAddress(), clang::CodeGen::CGOpenMPRuntime::getThreadID(), and InitCatchParam().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitLoadOfScalar | ( | Address | Addr, |
bool | Volatile, | ||
QualType | Ty, | ||
SourceLocation | Loc, | ||
LValueBaseInfo | BaseInfo, | ||
TBAAAccessInfo | TBAAInfo, | ||
bool | isNontemporal = false |
||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitLoadOfScalar | ( | LValue | lvalue, |
SourceLocation | Loc | ||
) |
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.
LValue clang::CodeGen::CodeGenFunction::EmitLValue | ( | const Expr * | E, |
KnownNonNull_t | IsKnownNonNull = NotKnownNonNull |
||
) |
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.
Referenced by clang::CodeGen::ReductionCodeGen::adjustPrivateAddress(), clang::CodeGen::CodeGenFunction::OpaqueValueMappingData::bind(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitLastprivateConditional(), emitCPPObjectAtomicSetterCall(), clang::CodeGen::CGOpenMPRuntime::emitDepobjElements(), clang::CodeGen::CGOpenMPRuntime::emitDepobjElementsSizes(), emitDistributeParallelForDistributeInnerBoundParams(), emitDistributeParallelForInnerBounds(), EmitLValueOrThrowExpression(), emitOMPAtomicCaptureExpr(), emitOMPAtomicCompareExpr(), emitOMPAtomicReadExpr(), emitOMPAtomicUpdateExpr(), emitOMPAtomicWriteExpr(), EmitOMPHelperVar(), emitOMPSimdRegion(), EmitPointerWithAlignment(), emitPrivatesInit(), emitPseudoObjectExpr(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), emitScanBasedDirectiveFinals(), clang::CodeGen::CGOpenMPRuntime::emitSingleRegion(), emitStructSetterCall(), emitSuspendExpression(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), EmitTypeidFromVTable(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsFini(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsInit(), emitWritebackArg(), getPointerAndSize(), tryEmitARCCopyWeakInit(), and tryEmitARCRetainLoadOfScalar().
Referenced by clang::CodeGen::CGOpenMPRuntime::checkAndEmitLastprivateConditional(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitSharedLastprivateConditional(), emitDependData(), clang::CodeGen::CGOpenMPRuntime::emitDepobjDependClause(), emitDestructorsFunction(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalInit(), emitPrivatesInit(), emitProxyTaskFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskCall(), emitTaskDupFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskLoopCall(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionInit(), clang::CodeGen::CGOpenMPRuntime::emitUpdateClause(), and clang::CodeGen::CGOpenMPRuntime::getDepobjElements().
LValue clang::CodeGen::CodeGenFunction::EmitLValueForFieldInitialization | ( | LValue | Base, |
const FieldDecl * | Field | ||
) |
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.
Referenced by clang::CodeGen::CGOpenMPRuntimeGPU::adjustTargetSpecificDataForLambdas(), EmitLValueForAnyFieldInitialization(), and EmitMemberInitializer().
LValue clang::CodeGen::CodeGenFunction::EmitLValueForIvar | ( | QualType | ObjectTy, |
llvm::Value * | Base, | ||
const ObjCIvarDecl * | Ivar, | ||
unsigned | CVRQualifiers | ||
) |
Referenced by EmitCapturedFieldLValue().
LValue clang::CodeGen::CodeGenFunction::EmitLValueForLambdaField | ( | const FieldDecl * | Field, |
llvm::Value * | ThisValue | ||
) |
LValue clang::CodeGen::CodeGenFunction::EmitMaterializeTemporaryExpr | ( | const MaterializeTemporaryExpr * | E | ) |
LValue clang::CodeGen::CodeGenFunction::EmitMatrixSubscriptExpr | ( | const MatrixSubscriptExpr * | E | ) |
LValue clang::CodeGen::CodeGenFunction::EmitMemberExpr | ( | const MemberExpr * | E | ) |
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.
llvm::Value * clang::CodeGen::CodeGenFunction::EmitMSVCBuiltinExpr | ( | MSVCIntrin | BuiltinID, |
const CallExpr * | E | ||
) |
void clang::CodeGen::CodeGenFunction::EmitMultiVersionResolver | ( | llvm::Function * | Resolver, |
ArrayRef< MultiVersionResolverOption > | Options | ||
) |
void clang::CodeGen::CodeGenFunction::EmitMustTailThunk | ( | GlobalDecl | GD, |
llvm::Value * | AdjustedThisPtr, | ||
llvm::FunctionCallee | Callee | ||
) |
Emit a musttail call for a thunk with a potentially adjusted this pointer.
llvm::Value * clang::CodeGen::CodeGenFunction::EmitNeonCall | ( | llvm::Function * | F, |
SmallVectorImpl< llvm::Value * > & | O, | ||
const char * | name, | ||
unsigned | shift = 0 , |
||
bool | rightshift = false |
||
) |
Referenced by EmitAArch64TblBuiltinExpr(), EmitCommonNeonSISDBuiltinExpr(), and packTBLDVectorList().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitNeonRShiftImm | ( | llvm::Value * | Vec, |
llvm::Value * | Amt, | ||
llvm::Type * | Ty, | ||
bool | usgn, | ||
const char * | name | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitNeonShiftVector | ( | llvm::Value * | V, |
llvm::Type * | Ty, | ||
bool | negateForRightShift | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitNeonSplat | ( | llvm::Value * | V, |
llvm::Constant * | Idx | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitNeonSplat | ( | llvm::Value * | V, |
llvm::Constant * | Idx, | ||
const llvm::ElementCount & | Count | ||
) |
void clang::CodeGen::CodeGenFunction::EmitNewArrayInitializer | ( | const CXXNewExpr * | E, |
QualType | elementType, | ||
llvm::Type * | ElementTy, | ||
Address | NewPtr, | ||
llvm::Value * | NumElements, | ||
llvm::Value * | AllocSizeWithoutCookie | ||
) |
Referenced by EmitNewInitializer().
void clang::CodeGen::CodeGenFunction::EmitNonNullArgCheck | ( | Address | Addr, |
QualType | ArgType, | ||
SourceLocation | ArgLoc, | ||
AbstractCallee | AC, | ||
unsigned | ParmNum | ||
) |
void clang::CodeGen::CodeGenFunction::EmitNonNullArgCheck | ( | RValue | RV, |
QualType | ArgType, | ||
SourceLocation | ArgLoc, | ||
AbstractCallee | AC, | ||
unsigned | ParmNum | ||
) |
Create a check for a function parameter that may potentially be declared as non-null.
Create a check that a scalar RValue is non-null.
void clang::CodeGen::CodeGenFunction::EmitNoreturnRuntimeCallOrInvoke | ( | llvm::FunctionCallee | callee, |
ArrayRef< llvm::Value * > | args | ||
) |
llvm::CallInst * clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall | ( | llvm::FunctionCallee | callee, |
ArrayRef< Address > | args, | ||
const Twine & | name = "" |
||
) |
llvm::CallInst * clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall | ( | llvm::FunctionCallee | callee, |
ArrayRef< llvm::Value * > | args, | ||
const Twine & | name = "" |
||
) |
llvm::CallInst * clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall | ( | llvm::FunctionCallee | callee, |
const Twine & | name = "" |
||
) |
Referenced by CallBeginCatch(), emitARCCopyOperation(), emitARCLoadOperation(), emitARCStoreOperation(), emitARCValueOperation(), clang::CodeGen::CGOpenMPRuntime::emitCall(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::EmitCaptureStmt(), emitCheckHandlerCall(), emitGlobalDtorWithCXAAtExit(), emitGlobalDtorWithTLRegDtor(), emitIsPlatformVersionAtLeast(), emitSuspendExpression(), clang::CodeGen::CGCXXABI::emitTerminateForUnexpectedException(), clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), clang::CodeGen::CodeGenFunction::FinallyInfo::exit(), and InitCatchParam().
void clang::CodeGen::CodeGenFunction::EmitNullabilityCheck | ( | LValue | LHS, |
llvm::Value * | RHS, | ||
SourceLocation | Loc | ||
) |
Given an assignment *LHS = RHS
, emit a test that checks if RHS
is nonnull, if LHS
is marked _Nonnull.
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.
Referenced by clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskLoopCall(), and clang::CodeGen::CGOpenMPRuntime::emitTaskReductionInit().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitNVPTXBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E | ||
) |
Referenced by EmitTargetArchBuiltinExpr().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCAlloc | ( | llvm::Value * | value, |
llvm::Type * | returnType | ||
) |
Referenced by tryGenerateSpecializedMessageSend().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCAllocInit | ( | llvm::Value * | value, |
llvm::Type * | resultType | ||
) |
Referenced by tryEmitSpecializedAllocInit().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCAllocWithZone | ( | llvm::Value * | value, |
llvm::Type * | returnType | ||
) |
Referenced by tryGenerateSpecializedMessageSend().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCArrayLiteral | ( | const ObjCArrayLiteral * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitObjCAtSynchronizedStmt | ( | const ObjCAtSynchronizedStmt & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitObjCAtThrowStmt | ( | const ObjCAtThrowStmt & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitObjCAtTryStmt | ( | const ObjCAtTryStmt & | S | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCAutorelease | ( | llvm::Value * | value, |
llvm::Type * | returnType | ||
) |
Referenced by tryGenerateSpecializedMessageSend().
void clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolCleanup | ( | llvm::Value * | Ptr | ) |
void clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolPop | ( | llvm::Value * | Ptr | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolPush | ( | ) |
void clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolStmt | ( | const ObjCAutoreleasePoolStmt & | S | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCBoxedExpr | ( | const ObjCBoxedExpr * | E | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCCollectionLiteral | ( | const Expr * | E, |
const ObjCMethodDecl * | MethodWithObjects | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCConsumeObject | ( | QualType | T, |
llvm::Value * | Ptr | ||
) |
Referenced by clang::CodeGen::CGObjCRuntime::EmitAtSynchronizedStmt().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCDictionaryLiteral | ( | const ObjCDictionaryLiteral * | E | ) |
LValue clang::CodeGen::CodeGenFunction::EmitObjCEncodeExprLValue | ( | const ObjCEncodeExpr * | E | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCExtendObjectLifetime | ( | QualType | T, |
llvm::Value * | Ptr | ||
) |
void clang::CodeGen::CodeGenFunction::EmitObjCForCollectionStmt | ( | const ObjCForCollectionStmt & | S | ) |
LValue clang::CodeGen::CodeGenFunction::EmitObjCIsaExpr | ( | const ObjCIsaExpr * | E | ) |
LValue clang::CodeGen::CodeGenFunction::EmitObjCIvarRefLValue | ( | const ObjCIvarRefExpr * | E | ) |
RValue clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr | ( | const ObjCMessageExpr * | E, |
ReturnValueSlot | Return = ReturnValueSlot() |
||
) |
LValue clang::CodeGen::CodeGenFunction::EmitObjCMessageExprLValue | ( | const ObjCMessageExpr * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitObjCMRRAutoreleasePoolPop | ( | llvm::Value * | Ptr | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCMRRAutoreleasePoolPush | ( | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCProtocolExpr | ( | const ObjCProtocolExpr * | E | ) |
void clang::CodeGen::CodeGenFunction::EmitObjCRelease | ( | llvm::Value * | value, |
ARCPreciseLifetime_t | precise | ||
) |
Referenced by tryGenerateSpecializedMessageSend().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCRetainNonBlock | ( | llvm::Value * | value, |
llvm::Type * | returnType | ||
) |
Referenced by tryGenerateSpecializedMessageSend().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCSelectorExpr | ( | const ObjCSelectorExpr * | E | ) |
LValue clang::CodeGen::CodeGenFunction::EmitObjCSelectorLValue | ( | const ObjCSelectorExpr * | E | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCStringLiteral | ( | const ObjCStringLiteral * | E | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitObjCThrowOperand | ( | const Expr * | expr | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPAggregateAssign | ( | Address | DestAddr, |
Address | SrcAddr, | ||
QualType | OriginalType, | ||
const llvm::function_ref< void(Address, Address)> | CopyGen | ||
) |
Perform element by element copying of arrays with type OriginalType from SrcAddr to DestAddr using copying procedure generated by CopyGen.
DestAddr | Address of the destination array. |
SrcAddr | Address of the source array. |
OriginalType | Type of destination and source arrays. |
CopyGen | Copying procedure that copies value of single array element to another single array element. |
Referenced by emitPrivatesInit().
void clang::CodeGen::CodeGenFunction::EmitOMPAssumeDirective | ( | const OMPAssumeDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPAtomicDirective | ( | const OMPAtomicDirective & | S | ) |
std::pair< bool, RValue > clang::CodeGen::CodeGenFunction::EmitOMPAtomicSimpleUpdateExpr | ( | LValue | X, |
RValue | E, | ||
BinaryOperatorKind | BO, | ||
bool | IsXLHSInRHSPart, | ||
llvm::AtomicOrdering | AO, | ||
SourceLocation | Loc, | ||
const llvm::function_ref< RValue(RValue)> | CommonGen | ||
) |
Emit atomic update code for constructs: X = X BO E or X = E BO E.
X | Value to be updated. |
E | Update value. |
BO | Binary operation for update operation. |
IsXLHSInRHSPart | true if X is LHS in RHS part of the update expression, false otherwise. |
AO | Atomic ordering of the generated atomic instructions. |
CommonGen | Code generator for complex expressions that cannot be expressed through atomicrmw instruction. |
Referenced by emitOMPAtomicCaptureExpr(), and emitOMPAtomicUpdateExpr().
void clang::CodeGen::CodeGenFunction::EmitOMPBarrierDirective | ( | const OMPBarrierDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPCancelDirective | ( | const OMPCancelDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPCancellationPointDirective | ( | const OMPCancellationPointDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPCanonicalLoop | ( | const OMPCanonicalLoop * | S | ) |
Emit an OMPCanonicalLoop using the OpenMPIRBuilder.
llvm::CanonicalLoopInfo * clang::CodeGen::CodeGenFunction::EmitOMPCollapsedCanonicalLoopNest | ( | const Stmt * | S, |
int | Depth | ||
) |
Emit the Stmt S
and return its topmost canonical loop, if any.
TODO: The 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.
Referenced by emitOMPForDirective().
void clang::CodeGen::CodeGenFunction::EmitOMPCopy | ( | QualType | OriginalType, |
Address | DestAddr, | ||
Address | SrcAddr, | ||
const VarDecl * | DestVD, | ||
const VarDecl * | SrcVD, | ||
const Expr * | Copy | ||
) |
Emit proper copying of data from one variable to another.
OriginalType | Original type of the copied variables. |
DestAddr | Destination address. |
SrcAddr | Source address. |
DestVD | Destination variable used in CopyExpr (for arrays, has type of the base array element). |
SrcVD | Source variable used in CopyExpr (for arrays, has type of the base array element). |
Copy | Actual copygin expression for copying data from SrcVD to DestVD. |
Referenced by emitCopyprivateCopyFunction(), and emitScanBasedDirectiveFinals().
bool clang::CodeGen::CodeGenFunction::EmitOMPCopyinClause | ( | const OMPExecutableDirective & | D | ) |
Emit code for copyin clause in D directive.
The next code is generated at the start of outlined functions for directives:
D | OpenMP directive possibly with 'copyin' clause(s). |
Referenced by emitOMPCopyinClause().
void clang::CodeGen::CodeGenFunction::EmitOMPCriticalDirective | ( | const OMPCriticalDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPDepobjDirective | ( | const OMPDepobjDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPDistributeDirective | ( | const OMPDistributeDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPDistributeLoop | ( | const OMPLoopDirective & | S, |
const CodeGenLoopTy & | CodeGenLoop, | ||
Expr * | IncExpr | ||
) |
Emit code for the distribute loop-based directive.
Referenced by emitOMPDistributeDirective(), emitTargetTeamsDistributeParallelForRegion(), emitTargetTeamsDistributeParallelForSimdRegion(), emitTargetTeamsDistributeRegion(), emitTargetTeamsDistributeSimdRegion(), emitTargetTeamsGenericLoopRegionAsDistribute(), and emitTargetTeamsGenericLoopRegionAsParallel().
void clang::CodeGen::CodeGenFunction::EmitOMPDistributeParallelForDirective | ( | const OMPDistributeParallelForDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPDistributeParallelForSimdDirective | ( | const OMPDistributeParallelForSimdDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPDistributeSimdDirective | ( | const OMPDistributeSimdDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPErrorDirective | ( | const OMPErrorDirective & | S | ) |
bool clang::CodeGen::CodeGenFunction::EmitOMPFirstprivateClause | ( | const OMPExecutableDirective & | D, |
OMPPrivateScope & | PrivateScope | ||
) |
Referenced by emitTargetParallelRegion(), emitTargetRegion(), and emitTargetTeamsRegion().
void clang::CodeGen::CodeGenFunction::EmitOMPFlushDirective | ( | const OMPFlushDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPForDirective | ( | const OMPForDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPForSimdDirective | ( | const OMPForSimdDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPGenericLoopDirective | ( | const OMPGenericLoopDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPInnerLoop | ( | const OMPExecutableDirective & | S, |
bool | RequiresCleanup, | ||
const Expr * | LoopCond, | ||
const Expr * | IncExpr, | ||
const llvm::function_ref< void(CodeGenFunction &)> | BodyGen, | ||
const llvm::function_ref< void(CodeGenFunction &)> | PostIncGen | ||
) |
Emit inner loop of the worksharing/simd construct.
S | Directive, for which the inner loop must be emitted. |
RequiresCleanup | true, if directive has some associated private variables. |
LoopCond | Bollean condition for loop continuation. |
IncExpr | Increment expression for loop control variable. |
BodyGen | Generator for the inner body of the inner loop. |
PostIncGen | Genrator for post-increment code (required for ordered loop directvies). |
Referenced by emitOMPSimdRegion().
void clang::CodeGen::CodeGenFunction::EmitOMPInterchangeDirective | ( | const OMPInterchangeDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPInteropDirective | ( | const OMPInteropDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPLastprivateClauseFinal | ( | const OMPExecutableDirective & | D, |
bool | NoFinals, | ||
llvm::Value * | IsLastIterCond = nullptr |
||
) |
Emit final copying of lastprivate values to original variables at the end of the worksharing or simd directive.
D | Directive that has at least one 'lastprivate' directives. |
IsLastIterCond | 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. |
Referenced by emitOMPSimdRegion().
bool clang::CodeGen::CodeGenFunction::EmitOMPLastprivateClauseInit | ( | const OMPExecutableDirective & | D, |
OMPPrivateScope & | PrivateScope | ||
) |
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.
D | Directive that may have 'lastprivate' directives. |
PrivateScope | Private scope for capturing lastprivate variables for proper codegen in internal captured statement. |
Referenced by emitOMPSimdRegion().
void clang::CodeGen::CodeGenFunction::EmitOMPLinearClause | ( | const OMPLoopDirective & | D, |
CodeGenFunction::OMPPrivateScope & | PrivateScope | ||
) |
Emit initial code for linear clauses.
Referenced by emitOMPSimdRegion().
void clang::CodeGen::CodeGenFunction::EmitOMPLinearClauseFinal | ( | const OMPLoopDirective & | D, |
const llvm::function_ref< llvm::Value *(CodeGenFunction &)> | CondGen | ||
) |
Emit final code for linear clauses.
CondGen | Optional conditional code for final part of codegen for linear clause. |
Referenced by emitOMPSimdRegion().
bool clang::CodeGen::CodeGenFunction::EmitOMPLinearClauseInit | ( | const OMPLoopDirective & | D | ) |
Emit initial code for linear variables.
Creates private copies and initializes them with the values according to OpenMP standard.
D | Directive (possibly) with the 'linear' clause. |
Referenced by emitOMPSimdRegion().
void clang::CodeGen::CodeGenFunction::EmitOMPLoopBody | ( | const OMPLoopDirective & | D, |
JumpDest | LoopExit | ||
) |
Helper for the OpenMP loop directives.
Referenced by emitOMPLoopBodyWithStopPoint().
void clang::CodeGen::CodeGenFunction::EmitOMPMaskedDirective | ( | const OMPMaskedDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPMasterDirective | ( | const OMPMasterDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPMasterTaskLoopDirective | ( | const OMPMasterTaskLoopDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPMasterTaskLoopSimdDirective | ( | const OMPMasterTaskLoopSimdDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPMetaDirective | ( | const OMPMetaDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPOrderedDirective | ( | const OMPOrderedDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPParallelDirective | ( | const OMPParallelDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPParallelForDirective | ( | const OMPParallelForDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPParallelForSimdDirective | ( | const OMPParallelForSimdDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPParallelGenericLoopDirective | ( | const OMPLoopDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPParallelMaskedDirective | ( | const OMPParallelMaskedDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPParallelMasterDirective | ( | const OMPParallelMasterDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPParallelMasterTaskLoopDirective | ( | const OMPParallelMasterTaskLoopDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPParallelMasterTaskLoopSimdDirective | ( | const OMPParallelMasterTaskLoopSimdDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPParallelSectionsDirective | ( | const OMPParallelSectionsDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPPrivateClause | ( | const OMPExecutableDirective & | D, |
OMPPrivateScope & | PrivateScope | ||
) |
Referenced by emitOMPSimdRegion(), emitTargetParallelRegion(), emitTargetRegion(), and emitTargetTeamsRegion().
void clang::CodeGen::CodeGenFunction::EmitOMPPrivateLoopCounters | ( | const OMPLoopDirective & | S, |
OMPPrivateScope & | LoopScope | ||
) |
Emit initial code for loop counters of loop-based directives.
Referenced by emitOMPSimdRegion(), and emitPreCond().
void clang::CodeGen::CodeGenFunction::EmitOMPReductionClauseFinal | ( | const OMPExecutableDirective & | D, |
const OpenMPDirectiveKind | ReductionKind | ||
) |
Emit final update of reduction values to original variables at the end of the directive.
D | Directive that has at least one 'reduction' directives. |
ReductionKind | The kind of reduction to perform. |
Referenced by emitOMPSimdRegion(), emitTargetParallelRegion(), emitTargetTeamsDistributeParallelForRegion(), emitTargetTeamsDistributeParallelForSimdRegion(), emitTargetTeamsDistributeRegion(), emitTargetTeamsDistributeSimdRegion(), emitTargetTeamsGenericLoopRegionAsDistribute(), emitTargetTeamsGenericLoopRegionAsParallel(), and emitTargetTeamsRegion().
void clang::CodeGen::CodeGenFunction::EmitOMPReductionClauseInit | ( | const OMPExecutableDirective & | D, |
OMPPrivateScope & | PrivateScope, | ||
bool | ForInscan = false |
||
) |
Emit initial code for reduction variables.
Creates reduction copies and initializes them with the values according to OpenMP standard.
D | Directive (possibly) with the 'reduction' clause. |
PrivateScope | Private scope for capturing reduction variables for proper codegen in internal captured statement. |
Referenced by emitOMPSimdRegion(), emitTargetParallelRegion(), emitTargetTeamsDistributeParallelForRegion(), emitTargetTeamsDistributeParallelForSimdRegion(), emitTargetTeamsDistributeRegion(), emitTargetTeamsDistributeSimdRegion(), emitTargetTeamsGenericLoopRegionAsDistribute(), emitTargetTeamsGenericLoopRegionAsParallel(), and emitTargetTeamsRegion().
void clang::CodeGen::CodeGenFunction::EmitOMPReverseDirective | ( | const OMPReverseDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPScanDirective | ( | const OMPScanDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPSectionDirective | ( | const OMPSectionDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPSectionsDirective | ( | const OMPSectionsDirective & | S | ) |
Emits the lvalue for the expression with possibly captured variable.
void clang::CodeGen::CodeGenFunction::EmitOMPSimdDirective | ( | const OMPSimdDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPSimdFinal | ( | const OMPLoopDirective & | D, |
const llvm::function_ref< llvm::Value *(CodeGenFunction &)> | CondGen | ||
) |
Referenced by emitOMPSimdRegion().
void clang::CodeGen::CodeGenFunction::EmitOMPSimdInit | ( | const OMPLoopDirective & | D | ) |
Helpers for the OpenMP loop directives.
Referenced by emitOMPSimdRegion().
void clang::CodeGen::CodeGenFunction::emitOMPSimpleStore | ( | LValue | LVal, |
RValue | RVal, | ||
QualType | RValTy, | ||
SourceLocation | Loc | ||
) |
Referenced by emitOMPAtomicCaptureExpr(), and emitOMPAtomicReadExpr().
void clang::CodeGen::CodeGenFunction::EmitOMPSingleDirective | ( | const OMPSingleDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTargetDataDirective | ( | const OMPTargetDataDirective & | S | ) |
|
static |
Emit device code for the target directive.
Referenced by clang::CodeGen::CGOpenMPRuntime::scanForTargetRegionsFunctions().
void clang::CodeGen::CodeGenFunction::EmitOMPTargetDirective | ( | const OMPTargetDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTargetEnterDataDirective | ( | const OMPTargetEnterDataDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTargetExitDataDirective | ( | const OMPTargetExitDataDirective & | S | ) |
|
static |
void clang::CodeGen::CodeGenFunction::EmitOMPTargetParallelDirective | ( | const OMPTargetParallelDirective & | S | ) |
|
static |
Emit device code for the target parallel for directive.
Referenced by clang::CodeGen::CGOpenMPRuntime::scanForTargetRegionsFunctions().
void clang::CodeGen::CodeGenFunction::EmitOMPTargetParallelForDirective | ( | const OMPTargetParallelForDirective & | S | ) |
|
static |
Emit device code for the target parallel for simd directive.
Referenced by clang::CodeGen::CGOpenMPRuntime::scanForTargetRegionsFunctions().
void clang::CodeGen::CodeGenFunction::EmitOMPTargetParallelForSimdDirective | ( | const OMPTargetParallelForSimdDirective & | S | ) |
|
static |
Emit device code for the target parallel loop directive.
Referenced by clang::CodeGen::CGOpenMPRuntime::scanForTargetRegionsFunctions().
void clang::CodeGen::CodeGenFunction::EmitOMPTargetParallelGenericLoopDirective | ( | const OMPTargetParallelGenericLoopDirective & | S | ) |
|
static |
Emit device code for the target simd directive.
Referenced by clang::CodeGen::CGOpenMPRuntime::scanForTargetRegionsFunctions().
void clang::CodeGen::CodeGenFunction::EmitOMPTargetSimdDirective | ( | const OMPTargetSimdDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTargetTaskBasedDirective | ( | const OMPExecutableDirective & | S, |
const RegionCodeGenTy & | BodyGen, | ||
OMPTargetDataInfo & | InputInfo | ||
) |
|
static |
Emit device code for the target teams directive.
Referenced by clang::CodeGen::CGOpenMPRuntime::scanForTargetRegionsFunctions().
void clang::CodeGen::CodeGenFunction::EmitOMPTargetTeamsDirective | ( | const OMPTargetTeamsDirective & | S | ) |
|
static |
Emit device code for the target teams distribute directive.
Referenced by clang::CodeGen::CGOpenMPRuntime::scanForTargetRegionsFunctions().
void clang::CodeGen::CodeGenFunction::EmitOMPTargetTeamsDistributeDirective | ( | const OMPTargetTeamsDistributeDirective & | S | ) |
|
static |
void clang::CodeGen::CodeGenFunction::EmitOMPTargetTeamsDistributeParallelForDirective | ( | const OMPTargetTeamsDistributeParallelForDirective & | S | ) |
|
static |
Emit device code for the target teams distribute parallel for simd directive.
Referenced by clang::CodeGen::CGOpenMPRuntime::scanForTargetRegionsFunctions().
void clang::CodeGen::CodeGenFunction::EmitOMPTargetTeamsDistributeParallelForSimdDirective | ( | const OMPTargetTeamsDistributeParallelForSimdDirective & | S | ) |
|
static |
Emit device code for the target teams distribute simd directive.
Referenced by clang::CodeGen::CGOpenMPRuntime::scanForTargetRegionsFunctions().
void clang::CodeGen::CodeGenFunction::EmitOMPTargetTeamsDistributeSimdDirective | ( | const OMPTargetTeamsDistributeSimdDirective & | S | ) |
|
static |
Emit device code for the target teams loop directive.
Referenced by clang::CodeGen::CGOpenMPRuntime::scanForTargetRegionsFunctions().
void clang::CodeGen::CodeGenFunction::EmitOMPTargetTeamsGenericLoopDirective | ( | const OMPTargetTeamsGenericLoopDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTargetUpdateDirective | ( | const OMPTargetUpdateDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTaskBasedDirective | ( | const OMPExecutableDirective & | S, |
const OpenMPDirectiveKind | CapturedRegion, | ||
const RegionCodeGenTy & | BodyGen, | ||
const TaskGenTy & | TaskGen, | ||
OMPTaskDataTy & | Data | ||
) |
void clang::CodeGen::CodeGenFunction::EmitOMPTaskDirective | ( | const OMPTaskDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTaskgroupDirective | ( | const OMPTaskgroupDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTaskLoopBasedDirective | ( | const OMPLoopDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTaskLoopDirective | ( | const OMPTaskLoopDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTaskLoopSimdDirective | ( | const OMPTaskLoopSimdDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTaskwaitDirective | ( | const OMPTaskwaitDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTaskyieldDirective | ( | const OMPTaskyieldDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTeamsDirective | ( | const OMPTeamsDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTeamsDistributeDirective | ( | const OMPTeamsDistributeDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTeamsDistributeParallelForDirective | ( | const OMPTeamsDistributeParallelForDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTeamsDistributeParallelForSimdDirective | ( | const OMPTeamsDistributeParallelForSimdDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTeamsDistributeSimdDirective | ( | const OMPTeamsDistributeSimdDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTeamsGenericLoopDirective | ( | const OMPTeamsGenericLoopDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPTileDirective | ( | const OMPTileDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPUnrollDirective | ( | const OMPUnrollDirective & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitOMPUseDeviceAddrClause | ( | const OMPUseDeviceAddrClause & | C, |
OMPPrivateScope & | PrivateScope, | ||
const llvm::DenseMap< const ValueDecl *, llvm::Value * > | CaptureDeviceAddrMap | ||
) |
void clang::CodeGen::CodeGenFunction::EmitOMPUseDevicePtrClause | ( | const OMPUseDevicePtrClause & | C, |
OMPPrivateScope & | PrivateScope, | ||
const llvm::DenseMap< const ValueDecl *, llvm::Value * > | CaptureDeviceAddrMap | ||
) |
bool clang::CodeGen::CodeGenFunction::EmitOMPWorksharingLoop | ( | const OMPLoopDirective & | S, |
Expr * | EUB, | ||
const CodeGenLoopBoundsTy & | CodeGenLoopBounds, | ||
const CodeGenDispatchBoundsTy & | CGDispatchBounds | ||
) |
Emit code for the worksharing loop-based directive.
Referenced by emitInnerParallelForWhenCombined(), emitTargetParallelForRegion(), emitTargetParallelForSimdRegion(), emitTargetParallelGenericLoopRegion(), and emitWorksharingDirective().
LValue clang::CodeGen::CodeGenFunction::EmitOpaqueValueLValue | ( | const OpaqueValueExpr * | e | ) |
|
inline |
Definition at line 4073 of file CodeGenFunction.h.
References EmitStmt().
|
inline |
Definition at line 4080 of file CodeGenFunction.h.
References EmitStmt().
void clang::CodeGen::CodeGenFunction::EmitParmDecl | ( | const VarDecl & | D, |
ParamValue | Arg, | ||
unsigned | ArgNo | ||
) |
EmitParmDecl - Emit a ParmVarDecl or an ImplicitParamDecl.
llvm::Value * clang::CodeGen::CodeGenFunction::EmitPointerAuthAuth | ( | const CGPointerAuthInfo & | Info, |
llvm::Value * | Pointer | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitPointerAuthBlendDiscriminator | ( | llvm::Value * | StorageAddress, |
llvm::Value * | Discriminator | ||
) |
Create the discriminator from the storage address and the entity hash.
Referenced by clang::CodeGen::CodeGenModule::getVTablePointerAuthInfo().
CGPointerAuthInfo clang::CodeGen::CodeGenFunction::EmitPointerAuthInfo | ( | const PointerAuthSchema & | Schema, |
llvm::Value * | StorageAddress, | ||
GlobalDecl | SchemaDecl, | ||
QualType | SchemaType | ||
) |
Referenced by BuildAppleKextVirtualCall().
void clang::CodeGen::CodeGenFunction::EmitPointerAuthOperandBundle | ( | const CGPointerAuthInfo & | Info, |
SmallVectorImpl< llvm::OperandBundleDef > & | Bundles | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::emitPointerAuthResign | ( | llvm::Value * | Pointer, |
QualType | PointerType, | ||
const CGPointerAuthInfo & | CurAuthInfo, | ||
const CGPointerAuthInfo & | NewAuthInfo, | ||
bool | IsKnownNonNull | ||
) |
Referenced by clang::CodeGen::Address::getResignedAddress().
llvm::Value * clang::CodeGen::CodeGenFunction::emitPointerAuthResignCall | ( | llvm::Value * | Pointer, |
const CGPointerAuthInfo & | CurInfo, | ||
const CGPointerAuthInfo & | NewInfo | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitPointerAuthSign | ( | const CGPointerAuthInfo & | Info, |
llvm::Value * | Pointer | ||
) |
LValue clang::CodeGen::CodeGenFunction::EmitPointerToDataMemberBinaryExpr | ( | const BinaryOperator * | E | ) |
Address clang::CodeGen::CodeGenFunction::EmitPointerWithAlignment | ( | const Expr * | Addr, |
LValueBaseInfo * | BaseInfo = nullptr , |
||
TBAAAccessInfo * | TBAAInfo = nullptr , |
||
KnownNonNull_t | IsKnownNonNull = NotKnownNonNull |
||
) |
EmitPointerWithAlignment - Given an expression with a pointer type, emit the value and compute our best estimate of the alignment of the pointee.
BaseInfo | - 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. |
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.
Referenced by CheckAtomicAlignment(), EmitAtomicCmpXchg128ForMSIntrin(), EmitCheckedMixedSignMultiply(), EmitCheckedUnsignedMultiplySignedResult(), EmitNontemporalLoad(), EmitNontemporalStore(), emitOMPArraySectionBase(), EmitPointerWithAlignment(), EmitSystemZIntrinsicWithCC(), and emitWritebackArg().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitPPCBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E | ||
) |
Referenced by EmitTargetArchBuiltinExpr().
LValue clang::CodeGen::CodeGenFunction::EmitPredefinedLValue | ( | const PredefinedExpr * | E | ) |
ComplexPairTy clang::CodeGen::CodeGenFunction::EmitPromotedComplexExpr | ( | const Expr * | E, |
QualType | PromotionType | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitPromotedScalarExpr | ( | const Expr * | E, |
QualType | PromotionType | ||
) |
ComplexPairTy clang::CodeGen::CodeGenFunction::EmitPromotedValue | ( | ComplexPairTy | result, |
QualType | PromotionType | ||
) |
LValue clang::CodeGen::CodeGenFunction::EmitPseudoObjectLValue | ( | const PseudoObjectExpr * | e | ) |
RValue clang::CodeGen::CodeGenFunction::EmitPseudoObjectRValue | ( | const PseudoObjectExpr * | e, |
AggValueSlot | slot = AggValueSlot::ignored() |
||
) |
Emits a reference binding to the passed in expression.
llvm::DebugLoc clang::CodeGen::CodeGenFunction::EmitReturnBlock | ( | ) |
Emit the unified return block, trying to avoid its emission when possible.
void clang::CodeGen::CodeGenFunction::EmitReturnStmt | ( | const ReturnStmt & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitReturnValueCheck | ( | llvm::Value * | RV | ) |
Emit a test that checks if the return value RV
is nonnull.
llvm::Value * clang::CodeGen::CodeGenFunction::EmitRISCVBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E, | ||
ReturnValueSlot | ReturnValue | ||
) |
Referenced by EmitTargetArchBuiltinExpr().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitRISCVCpuInit | ( | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitRISCVCpuSupports | ( | ArrayRef< StringRef > | FeaturesStrs | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitRISCVCpuSupports | ( | const CallExpr * | E | ) |
llvm::CallInst * clang::CodeGen::CodeGenFunction::EmitRuntimeCall | ( | llvm::FunctionCallee | callee, |
ArrayRef< llvm::Value * > | args, | ||
const Twine & | name = "" |
||
) |
llvm::CallInst * clang::CodeGen::CodeGenFunction::EmitRuntimeCall | ( | llvm::FunctionCallee | callee, |
const Twine & | name = "" |
||
) |
Referenced by clang::CodeGen::CodeGenModule::createOpenCLIntToSamplerConversion(), clang::CodeGen::CGOpenMPRuntime::emitBarrierCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitBarrierCall(), clang::CodeGen::CGOpenMPRuntime::emitCall(), clang::CodeGen::CGOpenMPRuntime::emitCancellationPointCall(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::EmitCaptureStmt(), clang::CodeGen::CGOpenMPRuntimeGPU::emitCriticalRegion(), clang::CodeGen::CGOpenMPRuntime::emitDepobjDependClause(), clang::CodeGen::CGOpenMPRuntime::emitDestroyClause(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), EmitDoacrossOrdered(), clang::CodeGen::CGOpenMPRuntime::emitErrorCall(), emitFilterDispatchBlock(), clang::CodeGen::CGOpenMPRuntime::emitFlush(), clang::CodeGen::CGOpenMPRuntime::emitForDispatchDeinit(), clang::CodeGen::CGOpenMPRuntime::emitForDispatchInit(), clang::CodeGen::CGOpenMPRuntime::emitForNext(), clang::CodeGen::CGOpenMPRuntime::emitForOrderedIterationEnd(), clang::CodeGen::CGOpenMPRuntime::emitForStaticFinish(), emitForStaticInitCall(), clang::CodeGen::CGOpenMPRuntime::emitNumTeamsClause(), clang::CodeGen::CGOpenMPRuntime::emitNumThreadsClause(), clang::CodeGen::CGOpenMPRuntime::emitParallelCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitParallelCall(), EmitPointerAuthCommon(), clang::CodeGen::CGOpenMPRuntime::emitProcBindClause(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), clang::CodeGen::CGOpenMPRuntime::emitSingleRegion(), EmitStrip(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataStandAloneCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskLoopCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionFini(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskwaitCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskyieldCall(), clang::CodeGen::CGOpenMPRuntime::emitTeamsCall(), clang::CodeGen::CGOpenMPRuntime::emitThreadLimitClause(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarInit(), clang::CodeGen::CGOpenMPRuntime::emitUDMapperArrayInitOrDel(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsFini(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsInit(), clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntime::getAddrOfArtificialThreadPrivate(), clang::CodeGen::CGOpenMPRuntime::getAddrOfThreadPrivate(), clang::CodeGen::CGOpenMPRuntimeGPU::getGPUThreadID(), clang::CodeGen::CGOpenMPRuntimeGPU::getKmpcAllocShared(), clang::CodeGen::CGOpenMPRuntimeGPU::getKmpcFreeShared(), and clang::CodeGen::CGOpenMPRuntime::getTaskReductionItem().
llvm::CallBase * clang::CodeGen::CodeGenFunction::EmitRuntimeCallOrInvoke | ( | llvm::FunctionCallee | callee, |
ArrayRef< llvm::Value * > | args, | ||
const Twine & | name = "" |
||
) |
Referenced by EmitMSVCRTSetJmp(), and emitRTtypeidCall().
llvm::CallBase * clang::CodeGen::CodeGenFunction::EmitRuntimeCallOrInvoke | ( | llvm::FunctionCallee | callee, |
const Twine & | name = "" |
||
) |
RValue clang::CodeGen::CodeGenFunction::EmitRValueForField | ( | LValue | LV, |
const FieldDecl * | FD, | ||
SourceLocation | Loc | ||
) |
void clang::CodeGen::CodeGenFunction::EmitSanitizerStatReport | ( | llvm::SanitizerStatKind | SSK | ) |
LValue clang::CodeGen::CodeGenFunction::EmitScalarCompoundAssignWithComplex | ( | const CompoundAssignOperator * | E, |
llvm::Value *& | Result | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::emitScalarConstant | ( | const ConstantEmission & | Constant, |
Expr * | E | ||
) |
Referenced by tryEmitARCRetainLoadOfScalar().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitScalarConversion | ( | llvm::Value * | Src, |
QualType | SrcTy, | ||
QualType | DstTy, | ||
SourceLocation | Loc | ||
) |
Emit a conversion from the specified type to the specified destination type, both of which are LLVM scalar types.
Referenced by castValueFromUintptr(), convertToComplexValue(), convertToScalarValue(), emitDistributeParallelForInnerBounds(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), EmitDoacrossOrdered(), clang::CodeGen::CGOpenMPRuntime::emitForNext(), emitOMPAtomicCompareExpr(), emitRestoreIP(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsFini(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsInit(), getAllocatorVal(), clang::CodeGen::CGOpenMPRuntimeGPU::getDefaultDistScheduleAndChunk(), and getPointerAndSize().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitScalarExpr | ( | const Expr * | E, |
bool | IgnoreResultAssign = false |
||
) |
EmitScalarExpr - Emit the computation of the specified expression of LLVM scalar type, returning the result.
Referenced by emitAlignedClause(), emitARCRetainCallResult(), emitARCUnsafeClaimCallResult(), EmitAtomicCmpXchg128ForMSIntrin(), EmitAtomicCmpXchgForMSIntrin(), clang::CodeGen::CGObjCRuntime::EmitAtSynchronizedStmt(), EmitBinaryAtomicPost(), emitBinaryExpMaybeConstrainedFPBuiltin(), emitBinaryMaybeConstrainedFPBuiltin(), EmitBitTestIntrinsic(), emitBuiltinWithOneOverloadedType(), EmitCheckedMixedSignMultiply(), EmitCheckedUnsignedMultiplySignedResult(), emitClauseForBareTargetDirective(), emitCommonOMPParallelDirective(), emitCommonOMPTargetDirective(), clang::CodeGen::CGOpenMPRuntime::emitCriticalRegion(), EmitCXXNewAllocSize(), EmitDeclInit(), clang::CodeGen::CGOpenMPRuntime::emitDependClause(), clang::CodeGen::CGOpenMPRuntime::emitDepobjDependClause(), emitDeviceID(), emitDispatchForLoopBounds(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), EmitDoacrossOrdered(), emitDynCGGroupMem(), emitFPIntBuiltin(), emitFrexpBuiltin(), EmitISOVolatileLoad(), EmitISOVolatileStore(), clang::CodeGen::CGOpenMPRuntime::emitMaskedRegion(), emitMaybeConstrainedFPToIntRoundBuiltin(), EmitMSVCRTSetJmp(), EmitNontemporalStore(), clang::CodeGen::CGOpenMPRuntime::emitNumTeamsClause(), clang::CodeGen::CGOpenMPRuntime::emitNumTeamsForTargetDirective(), clang::CodeGen::CGOpenMPRuntime::emitNumThreadsForTargetDirective(), emitOMPAtomicCompareExpr(), emitOMPForDirective(), clang::CodeGen::CGOpenCLRuntime::emitOpenCLEnqueuedBlock(), EmitOverflowCheckedAbs(), EmitPointerWithAlignment(), emitPPCLoadReserveIntrinsic(), emitRestoreIP(), EmitSpecialRegisterBuiltin(), EmitSystemZIntrinsicWithCC(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataCalls(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataStandAloneCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), emitTernaryMaybeConstrainedFPBuiltin(), clang::CodeGen::CGOpenMPRuntime::emitThreadLimitClause(), emitUnaryMaybeConstrainedFPBuiltin(), emitWorksharingDirective(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddressOfLocalVariable(), GetAlignedMapping(), getAllocatorVal(), getPointerAndSize(), MakeAtomicCmpXchgValue(), MakeBinaryAtomicValue(), tryEmitARCRetainLoadOfScalar(), and tryEmitSpecializedAllocInit().
void clang::CodeGen::CodeGenFunction::EmitScalarInit | ( | const Expr * | init, |
const ValueDecl * | D, | ||
LValue | lvalue, | ||
bool | capturedByInit | ||
) |
Referenced by EmitDeclInit(), and StoreAnyExprIntoOneUnit().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitScalarOrConstFoldImmArg | ( | unsigned | ICEArguments, |
unsigned | Idx, | ||
const CallExpr * | E | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitScalarPrePostIncDec | ( | const UnaryOperator * | E, |
LValue | LV, | ||
bool | isInc, | ||
bool | isPre | ||
) |
bool clang::CodeGen::CodeGenFunction::EmitScalarRangeCheck | ( | llvm::Value * | Value, |
QualType | Ty, | ||
SourceLocation | Loc | ||
) |
Check if the scalar Value
is within the valid range for the given type Ty
.
Returns true if a check is needed (even if the range is unknown).
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSEHAbnormalTermination | ( | ) |
void clang::CodeGen::CodeGenFunction::EmitSehCppScopeBegin | ( | ) |
void clang::CodeGen::CodeGenFunction::EmitSehCppScopeEnd | ( | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSEHExceptionCode | ( | ) |
void clang::CodeGen::CodeGenFunction::EmitSEHExceptionCodeSave | ( | CodeGenFunction & | ParentCGF, |
llvm::Value * | ParentFP, | ||
llvm::Value * | EntryEBP | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSEHExceptionInfo | ( | ) |
void clang::CodeGen::CodeGenFunction::EmitSEHLeaveStmt | ( | const SEHLeaveStmt & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitSehTryScopeBegin | ( | ) |
void clang::CodeGen::CodeGenFunction::EmitSehTryScopeEnd | ( | ) |
void clang::CodeGen::CodeGenFunction::EmitSEHTryStmt | ( | const SEHTryStmt & | S | ) |
RValue clang::CodeGen::CodeGenFunction::EmitSimpleCallExpr | ( | const CallExpr * | E, |
ReturnValueSlot | ReturnValue | ||
) |
Referenced by clang::CodeGen::CGCUDARuntime::EmitCUDAKernelCallExpr().
void clang::CodeGen::CodeGenFunction::EmitSimpleOMPExecutableDirective | ( | const OMPExecutableDirective & | D | ) |
Emit simple code for OpenMP directives in Simd-only mode.
bool clang::CodeGen::CodeGenFunction::EmitSimpleStmt | ( | const Stmt * | S, |
ArrayRef< const Attr * > | Attrs | ||
) |
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.
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSMELd1St1 | ( | const SVETypeFlags & | TypeFlags, |
llvm::SmallVectorImpl< llvm::Value * > & | Ops, | ||
unsigned | IntID | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSMELdrStr | ( | const SVETypeFlags & | TypeFlags, |
llvm::SmallVectorImpl< llvm::Value * > & | Ops, | ||
unsigned | IntID | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSMEReadWrite | ( | const SVETypeFlags & | TypeFlags, |
llvm::SmallVectorImpl< llvm::Value * > & | Ops, | ||
unsigned | IntID | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSMEZero | ( | const SVETypeFlags & | TypeFlags, |
llvm::SmallVectorImpl< llvm::Value * > & | Ops, | ||
unsigned | IntID | ||
) |
void clang::CodeGen::CodeGenFunction::EmitStartEHSpec | ( | const Decl * | D | ) |
EmitStartEHSpec - Emit the start of the exception spec.
void clang::CodeGen::CodeGenFunction::EmitStaticVarDecl | ( | const VarDecl & | D, |
llvm::GlobalValue::LinkageTypes | Linkage | ||
) |
Referenced by clang::CodeGen::CGOpenCLRuntime::EmitWorkGroupLocalVarDecl().
void clang::CodeGen::CodeGenFunction::EmitStmt | ( | const Stmt * | S, |
ArrayRef< const Attr * > | Attrs = std::nullopt |
||
) |
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.
Referenced by clang::CodeGen::CGObjCRuntime::EmitAtSynchronizedStmt(), clang::CodeGen::CodeGenFunction::CGCapturedStmtInfo::EmitBody(), emitBody(), emitBodyAndFallthrough(), emitCommonOMPTargetDirective(), emitMasked(), emitMaster(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::EmitOMPInlinedRegionBody(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::EmitOMPOutlinedRegionBody(), EmitOpenACCComputeConstruct(), EmitOpenACCLoopConstruct(), emitSuspendExpression(), emitTargetParallelRegion(), emitTargetRegion(), emitTargetTeamsRegion(), and clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt().
void clang::CodeGen::CodeGenFunction::EmitStopPoint | ( | const Stmt * | S | ) |
EmitStopPoint - Emit a debug stoppoint if we are emitting debug info.
Referenced by emitOMPLoopBodyWithStopPoint().
void clang::CodeGen::CodeGenFunction::EmitStoreOfComplex | ( | ComplexPairTy | V, |
LValue | dest, | ||
bool | isInit | ||
) |
EmitStoreOfComplex - Store a complex number into the specified l-value.
Referenced by clang::CodeGen::CallArg::copyInto(), EmitAtomicUpdateValue(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalUpdate(), and InitCatchParam().
|
inline |
EmitStoreOfScalar - Store a scalar value to an address, taking care to appropriately convert from the memory representation to the LLVM value representation.
Definition at line 4214 of file CodeGenFunction.h.
References CGM, EmitStoreOfScalar(), and clang::CodeGen::CodeGenModule::getTBAAAccessInfo().
Referenced by clang::CodeGen::CGOpenMPRuntimeGPU::adjustTargetSpecificDataForLambdas(), castValueToType(), clang::CodeGen::CallArg::copyInto(), emitAtomicCmpXchg(), clang::CodeGen::CGOpenMPRuntimeGPU::emitCriticalRegion(), clang::CodeGen::CGOpenMPRuntime::emitDependClause(), emitDependData(), clang::CodeGen::CGOpenMPRuntime::emitDepobjDependClause(), clang::CodeGen::CGOpenMPRuntime::emitDepobjElements(), clang::CodeGen::CGOpenMPRuntime::emitDepobjElementsSizes(), emitDistributeParallelForInnerBounds(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), EmitDoacrossOrdered(), emitFrexpBuiltin(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalFinalUpdate(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalInit(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalUpdate(), EmitNontemporalStore(), clang::CodeGen::CGOpenMPRuntimeGPU::emitParallelCall(), EmitStoreOfMatrixScalar(), EmitStoreOfScalar(), clang::CodeGen::CGOpenMPRuntime::emitTaskCall(), emitTaskDupFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskLoopCall(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionInit(), clang::CodeGen::CGOpenMPRuntime::emitThreadIDAddress(), clang::CodeGen::CGOpenMPRuntime::emitUpdateClause(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsInit(), emitWriteback(), clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntimeGPU::getParameterAddress(), InitCatchParam(), and tryEmitARCRetainLoadOfScalar().
void clang::CodeGen::CodeGenFunction::EmitStoreOfScalar | ( | llvm::Value * | Value, |
Address | Addr, | ||
bool | Volatile, | ||
QualType | Ty, | ||
LValueBaseInfo | BaseInfo, | ||
TBAAAccessInfo | TBAAInfo, | ||
bool | isInit = false , |
||
bool | isNontemporal = false |
||
) |
void clang::CodeGen::CodeGenFunction::EmitStoreOfScalar | ( | llvm::Value * | value, |
LValue | lvalue, | ||
bool | isInit = false |
||
) |
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.
void clang::CodeGen::CodeGenFunction::EmitStoreThroughBitfieldLValue | ( | RValue | Src, |
LValue | Dst, | ||
llvm::Value ** | Result = nullptr |
||
) |
EmitStoreThroughBitfieldLValue - Store Src into Dst with same constraints as EmitStoreThroughLValue.
Result | [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 clang::CodeGen::CodeGenFunction::EmitStoreThroughExtVectorComponentLValue | ( | RValue | Src, |
LValue | Dst | ||
) |
Referenced by emitSimpleAtomicStore().
void clang::CodeGen::CodeGenFunction::EmitStoreThroughLValue | ( | RValue | Src, |
LValue | Dst, | ||
bool | isInit = false |
||
) |
EmitStoreThroughLValue - Store the specified rvalue into the specified lvalue, where both are guaranteed to the have the same type, and that type is 'Ty'.
Referenced by createSectionLVal(), EmitAsmStores(), EmitAtomicUpdateValue(), EmitLambdaVLACapture(), emitProxyTaskFunction(), and emitWriteback().
LValue clang::CodeGen::CodeGenFunction::EmitStringLiteralLValue | ( | const StringLiteral * | E | ) |
Referenced by clang::CodeGen::CGOpenMPRuntime::emitErrorCall().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEAllTruePred | ( | const SVETypeFlags & | TypeFlags | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEDupX | ( | llvm::Value * | Scalar | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEDupX | ( | llvm::Value * | Scalar, |
llvm::Type * | Ty | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEGatherLoad | ( | const SVETypeFlags & | TypeFlags, |
llvm::SmallVectorImpl< llvm::Value * > & | Ops, | ||
unsigned | IntID | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEGatherPrefetch | ( | const SVETypeFlags & | TypeFlags, |
SmallVectorImpl< llvm::Value * > & | Ops, | ||
unsigned | IntID | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEMaskedLoad | ( | const CallExpr * | , |
llvm::Type * | ReturnTy, | ||
SmallVectorImpl< llvm::Value * > & | Ops, | ||
unsigned | BuiltinID, | ||
bool | IsZExtReturn | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEMaskedStore | ( | const CallExpr * | , |
SmallVectorImpl< llvm::Value * > & | Ops, | ||
unsigned | BuiltinID | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEMovl | ( | const SVETypeFlags & | TypeFlags, |
llvm::ArrayRef< llvm::Value * > | Ops, | ||
unsigned | BuiltinID | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEPMull | ( | const SVETypeFlags & | TypeFlags, |
llvm::SmallVectorImpl< llvm::Value * > & | Ops, | ||
unsigned | BuiltinID | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEPredicateCast | ( | llvm::Value * | Pred, |
llvm::ScalableVectorType * | VTy | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEPrefetchLoad | ( | const SVETypeFlags & | TypeFlags, |
SmallVectorImpl< llvm::Value * > & | Ops, | ||
unsigned | BuiltinID | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEReinterpret | ( | llvm::Value * | Val, |
llvm::Type * | Ty | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEScatterStore | ( | const SVETypeFlags & | TypeFlags, |
llvm::SmallVectorImpl< llvm::Value * > & | Ops, | ||
unsigned | IntID | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEStructLoad | ( | const SVETypeFlags & | TypeFlags, |
SmallVectorImpl< llvm::Value * > & | Ops, | ||
unsigned | IntID | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVEStructStore | ( | const SVETypeFlags & | TypeFlags, |
SmallVectorImpl< llvm::Value * > & | Ops, | ||
unsigned | IntID | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVETupleCreate | ( | const SVETypeFlags & | TypeFlags, |
llvm::Type * | ReturnType, | ||
ArrayRef< llvm::Value * > | Ops | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSVETupleSetOrGet | ( | const SVETypeFlags & | TypeFlags, |
llvm::Type * | ReturnType, | ||
ArrayRef< llvm::Value * > | Ops | ||
) |
void clang::CodeGen::CodeGenFunction::EmitSwitchStmt | ( | const SwitchStmt & | S | ) |
void clang::CodeGen::CodeGenFunction::EmitSynthesizedCXXCopyCtor | ( | Address | Dest, |
Address | Src, | ||
const Expr * | Exp | ||
) |
void clang::CodeGen::CodeGenFunction::EmitSynthesizedCXXCopyCtorCall | ( | const CXXConstructorDecl * | D, |
Address | This, | ||
Address | Src, | ||
const CXXConstructExpr * | E | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitSystemZBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E | ||
) |
Referenced by EmitTargetArchBuiltinExpr().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitTargetBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E, | ||
ReturnValueSlot | ReturnValue | ||
) |
EmitTargetBuiltinExpr - Emit the given builtin call.
Returns 0 if the call is unhandled by the current target.
llvm::Value * clang::CodeGen::CodeGenFunction::EmitToMemory | ( | llvm::Value * | Value, |
QualType | Ty | ||
) |
EmitToMemory - Change a scalar value from its value representation to its in-memory representation.
Referenced by EmitCheckedMixedSignMultiply(), EmitCheckedUnsignedMultiplySignedResult(), EmitNontemporalStore(), and EmitToInt().
llvm::CallInst * clang::CodeGen::CodeGenFunction::EmitTrapCall | ( | llvm::Intrinsic::ID | IntrID | ) |
Emit a call to trap or debugtrap and attach function attribute "trap-func-name" if specified.
void clang::CodeGen::CodeGenFunction::EmitTrapCheck | ( | llvm::Value * | Checked, |
SanitizerHandler | CheckHandlerID | ||
) |
Create a basic block that will call the trap intrinsic, and emit a conditional branch to it, for the -ftrapv checks.
Referenced by EmitOverflowCheckedAbs().
|
inline |
Definition at line 3274 of file CodeGenFunction.h.
References clang::CodeGen::Address::emitRawPointer(), EmitTypeCheck(), Loc, and sanitizePerformTypeCheck().
void clang::CodeGen::CodeGenFunction::EmitTypeCheck | ( | TypeCheckKind | TCK, |
SourceLocation | Loc, | ||
llvm::Value * | V, | ||
QualType | Type, | ||
CharUnits | Alignment = CharUnits::Zero() , |
||
SanitizerSet | SkippedChecks = SanitizerSet() , |
||
llvm::Value * | ArraySize = nullptr |
||
) |
Emit a check that V
is the address of storage of the appropriate size and alignment for an object of type Type
(or if ArraySize is provided, for an array of that bound).
|
inline |
Definition at line 3265 of file CodeGenFunction.h.
References clang::CodeGen::LValue::emitRawPointer(), EmitTypeCheck(), clang::CodeGen::LValue::getAlignment(), Loc, and sanitizePerformTypeCheck().
Referenced by EmitObjectDelete(), EmitTypeCheck(), and EmitTypeidFromVTable().
void clang::CodeGen::CodeGenFunction::EmitTypeMetadataCodeForVCall | ( | const CXXRecordDecl * | RD, |
llvm::Value * | VTable, | ||
SourceLocation | Loc | ||
) |
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.
LValue clang::CodeGen::CodeGenFunction::EmitUnaryOpLValue | ( | const UnaryOperator * | E | ) |
ComplexPairTy clang::CodeGen::CodeGenFunction::EmitUnPromotedValue | ( | ComplexPairTy | result, |
QualType | PromotionType | ||
) |
void clang::CodeGen::CodeGenFunction::EmitUnreachable | ( | SourceLocation | Loc | ) |
Emit a reached-unreachable diagnostic if Loc
is valid and runtime checking is enabled.
Otherwise, just emit an unreachable instruction.
EmitUnsupportedLValue - Emit a dummy l-value using the type of E and issue an ErrorUnsupported style diagnostic (using the provided Name).
EmitUnsupportedRValue - Emit a dummy r-value using the type of E and issue an ErrorUnsupported style diagnostic (using the provided Name).
RValue clang::CodeGen::CodeGenFunction::EmitVAArg | ( | VAArgExpr * | VE, |
Address & | VAListAddr, | ||
AggValueSlot | Slot = AggValueSlot::ignored() |
||
) |
void clang::CodeGen::CodeGenFunction::EmitVarAnnotations | ( | const VarDecl * | D, |
llvm::Value * | V | ||
) |
Emit local annotations for the local variable V, declared by D.
void clang::CodeGen::CodeGenFunction::EmitVarDecl | ( | const VarDecl & | D | ) |
EmitVarDecl - Emit a local variable declaration.
This function can be called with a null (unreachable) insert point.
Referenced by clang::CodeGen::CGOpenMPRuntime::emitDependClause(), EmitOMPHelperVar(), emitOMPSimdRegion(), emitScanBasedDirectiveDecls(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), getNumThreads(), and clang::CodeGen::CGOpenMPRuntime::getNumThreadsExprForTargetDirective().
void clang::CodeGen::CodeGenFunction::EmitVariablyModifiedType | ( | QualType | Ty | ) |
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.
Referenced by clang::CodeGen::ReductionCodeGen::emitAggregateType(), clang::CodeGen::CodeGenModule::EmitExplicitCastExprType(), and clang::CodeGen::CGOpenMPRuntime::emitReductionFunction().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitVAStartEnd | ( | llvm::Value * | ArgValue, |
bool | IsStart | ||
) |
Emits a call to an LLVM variable-argument intrinsic, either llvm.va_start
or llvm.va_end
.
ArgValue | A reference to the va_list as emitted by either EmitVAListRef or EmitMSVAListRef . |
IsStart | If true , emits a call to llvm.va_start ; otherwise, calls llvm.va_end . |
Emit assumption that vptr load == global vtable.
void clang::CodeGen::CodeGenFunction::EmitVTableAssumptionLoads | ( | const CXXRecordDecl * | ClassDecl, |
Address | This | ||
) |
Emit assumption load for all bases.
Requires to be called only on most-derived class and not under construction of the object.
void clang::CodeGen::CodeGenFunction::EmitVTablePtrCheck | ( | const CXXRecordDecl * | RD, |
llvm::Value * | VTable, | ||
CFITypeCheckKind | TCK, | ||
SourceLocation | Loc | ||
) |
EmitVTablePtrCheck - Emit a check that VTable is a valid virtual table for RD using llvm.type.test.
void clang::CodeGen::CodeGenFunction::EmitVTablePtrCheckForCall | ( | const CXXRecordDecl * | RD, |
llvm::Value * | VTable, | ||
CFITypeCheckKind | TCK, | ||
SourceLocation | Loc | ||
) |
EmitVTablePtrCheckForCall - Virtual method MD is being called via VTable.
If vptr CFI is enabled, emit a check that VTable is valid.
void clang::CodeGen::CodeGenFunction::EmitVTablePtrCheckForCast | ( | QualType | T, |
Address | Derived, | ||
bool | MayBeNull, | ||
CFITypeCheckKind | TCK, | ||
SourceLocation | Loc | ||
) |
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.
Referenced by EmitPointerWithAlignment().
llvm::Value * clang::CodeGen::CodeGenFunction::EmitVTableTypeCheckedLoad | ( | const CXXRecordDecl * | RD, |
llvm::Value * | VTable, | ||
llvm::Type * | VTableTy, | ||
uint64_t | VTableByteOffset | ||
) |
Emit a type checked load from the given vtable.
llvm::Value * clang::CodeGen::CodeGenFunction::EmitWebAssemblyBuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E | ||
) |
Referenced by EmitTargetArchBuiltinExpr().
void clang::CodeGen::CodeGenFunction::EmitWhileStmt | ( | const WhileStmt & | S, |
ArrayRef< const Attr * > | Attrs = std::nullopt |
||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitWithOriginalRHSBitfieldAssignment | ( | const BinaryOperator * | E, |
llvm::Value ** | Previous, | ||
QualType * | SrcType | ||
) |
llvm::Value * clang::CodeGen::CodeGenFunction::EmitX86BuiltinExpr | ( | unsigned | BuiltinID, |
const CallExpr * | E | ||
) |
Referenced by EmitTargetArchBuiltinExpr().
void clang::CodeGen::CodeGenFunction::EmitX86MultiVersionResolver | ( | llvm::Function * | Resolver, |
ArrayRef< MultiVersionResolverOption > | Options | ||
) |
|
inline |
Definition at line 2145 of file CodeGenFunction.h.
|
inline |
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.
Definition at line 2656 of file CodeGenFunction.h.
References createBasicBlock(), EmitBlock(), and HaveInsertPoint().
Referenced by emitTargetRegion(), and clang::CodeGen::CodeGenFunction::StmtExprEvaluation::~StmtExprEvaluation().
void clang::CodeGen::CodeGenFunction::enterByrefCleanup | ( | CleanupKind | Kind, |
Address | Addr, | ||
BlockFieldFlags | Flags, | ||
bool | LoadBlockVarAddr, | ||
bool | CanThrow | ||
) |
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.
Kind | Cleanup kind. |
Addr | When LoadBlockVarAddr is false, the address of the __block structure that will be passed to _Block_object_dispose. When LoadBlockVarAddr is true, the address of the field of the block structure that holds the address of the __block structure. |
Flags | The flag that will be passed to _Block_object_dispose. |
LoadBlockVarAddr | Indicates whether we need to emit a load from Addr to get the address of the __block structure. |
Referenced by pushCaptureCleanup().
void clang::CodeGen::CodeGenFunction::EnterCXXTryStmt | ( | const CXXTryStmt & | S, |
bool | IsFnTryBlock = false |
||
) |
Referenced by emitSuspendExpression().
void clang::CodeGen::CodeGenFunction::EnterDtorCleanups | ( | const CXXDestructorDecl * | Dtor, |
CXXDtorType | Type | ||
) |
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.
void clang::CodeGen::CodeGenFunction::EnterSEHTryStmt | ( | const SEHTryStmt & | S | ) |
void clang::CodeGen::CodeGenFunction::ErrorUnsupported | ( | const Stmt * | S, |
const char * | Type | ||
) |
ErrorUnsupported - Print out an error that codegen doesn't support the specified stmt yet.
llvm::Value * clang::CodeGen::CodeGenFunction::EvaluateExprAsBool | ( | const Expr * | E | ) |
EvaluateExprAsBool - Perform the usual unary conversions on the specified expression and compare the result against zero, returning an Int1Ty value.
Referenced by clang::CodeGen::CGOpenMPRuntimeGPU::emitParallelCall(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataCalls(), clang::CodeGen::CGOpenMPRuntime::emitTaskLoopCall(), getNumThreads(), and clang::CodeGen::CGOpenMPRuntime::getNumThreadsExprForTargetDirective().
void clang::CodeGen::CodeGenFunction::ExitCXXTryStmt | ( | const CXXTryStmt & | S, |
bool | IsFnTryBlock = false |
||
) |
Referenced by emitSuspendExpression().
void clang::CodeGen::CodeGenFunction::ExitSEHTryStmt | ( | const SEHTryStmt & | S | ) |
const FieldDecl * clang::CodeGen::CodeGenFunction::FindFlexibleArrayMemberFieldAndOffset | ( | ASTContext & | Ctx, |
const RecordDecl * | RD, | ||
const FieldDecl * | FAMDecl, | ||
uint64_t & | Offset | ||
) |
void clang::CodeGen::CodeGenFunction::FinishFunction | ( | SourceLocation | EndLoc = SourceLocation() | ) |
FinishFunction - Complete IR generation of the current function.
It is legal to call this function even if there is no current insertion point.
Referenced by emitCombinerOrInitializer(), emitCopyprivateCopyFunction(), emitDestructorsFunction(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceFiniFunction(), emitReduceInitFunction(), clang::CodeGen::CGOpenMPRuntime::emitReductionFunction(), emitTaskDupFunction(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), generateByrefCopyHelper(), and generateByrefDisposeHelper().
void clang::CodeGen::CodeGenFunction::FinishThunk | ( | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::FormSVEBuiltinResult | ( | llvm::Value * | Call | ) |
FormSVEBuiltinResult - Returns the struct of scalable vectors as a wider vector.
It extracts the scalable vector from the struct and inserts into the wider vector. This avoids the error when allocating space in llvm for struct of scalable vectors if a function returns struct.
llvm::Function * clang::CodeGen::CodeGenFunction::generateAwaitSuspendWrapper | ( | Twine const & | CoroName, |
Twine const & | SuspendPointName, | ||
CoroutineSuspendExpr const & | S | ||
) |
Referenced by emitSuspendExpression().
llvm::Function * clang::CodeGen::CodeGenFunction::GenerateBlockFunction | ( | GlobalDecl | GD, |
const CGBlockInfo & | Info, | ||
const DeclMapTy & | ldm, | ||
bool | IsLambdaConversionToBlock, | ||
bool | BuildGlobalBlock | ||
) |
Referenced by clang::CodeGen::CodeGenModule::GetAddrOfGlobalBlock().
llvm::Function * clang::CodeGen::CodeGenFunction::generateBuiltinOSLogHelperFunction | ( | const analyze_os_log::OSLogBufferLayout & | Layout, |
CharUnits | BufferAlignment | ||
) |
Address clang::CodeGen::CodeGenFunction::GenerateCapturedStmtArgument | ( | const CapturedStmt & | S | ) |
llvm::Function * clang::CodeGen::CodeGenFunction::GenerateCapturedStmtFunction | ( | const CapturedStmt & | S | ) |
Referenced by emitCapturedStmtFunc().
void clang::CodeGen::CodeGenFunction::GenerateCode | ( | GlobalDecl | GD, |
llvm::Function * | Fn, | ||
const CGFunctionInfo & | FnInfo | ||
) |
Referenced by clang::CodeGen::CodeGenModule::codegenCXXStructor().
llvm::Constant * clang::CodeGen::CodeGenFunction::GenerateCopyHelperFunction | ( | const CGBlockInfo & | blockInfo | ) |
Referenced by buildCopyHelper().
void clang::CodeGen::CodeGenFunction::GenerateCXXGlobalCleanUpFunc | ( | llvm::Function * | Fn, |
ArrayRef< std::tuple< llvm::FunctionType *, llvm::WeakTrackingVH, llvm::Constant * > > | DtorsOrStermFinalizers | ||
) |
GenerateCXXGlobalCleanUpFunc - Generates code for cleaning up global variables.
void clang::CodeGen::CodeGenFunction::GenerateCXXGlobalInitFunc | ( | llvm::Function * | Fn, |
ArrayRef< llvm::Function * > | CXXThreadLocals, | ||
ConstantAddress | Guard = ConstantAddress::invalid() |
||
) |
GenerateCXXGlobalInitFunc - Generates code for initializing global variables.
void clang::CodeGen::CodeGenFunction::GenerateCXXGlobalVarDeclInitFunc | ( | llvm::Function * | Fn, |
const VarDecl * | D, | ||
llvm::GlobalVariable * | Addr, | ||
bool | PerformInit | ||
) |
llvm::Function * clang::CodeGen::CodeGenFunction::generateDestroyHelper | ( | Address | addr, |
QualType | type, | ||
Destroyer * | destroyer, | ||
bool | useEHCleanupForArray, | ||
const VarDecl * | VD | ||
) |
Referenced by EmitDeclDestroy(), and pushTemporaryCleanup().
llvm::Constant * clang::CodeGen::CodeGenFunction::GenerateDestroyHelperFunction | ( | const CGBlockInfo & | blockInfo | ) |
Referenced by buildDisposeHelper().
llvm::Constant * clang::CodeGen::CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction | ( | const ObjCPropertyImplDecl * | PID | ) |
llvm::Constant * clang::CodeGen::CodeGenFunction::GenerateObjCAtomicSetterCopyHelperFunction | ( | const ObjCPropertyImplDecl * | PID | ) |
void clang::CodeGen::CodeGenFunction::GenerateObjCCtorDtorMethod | ( | ObjCImplementationDecl * | IMP, |
ObjCMethodDecl * | MD, | ||
bool | ctor | ||
) |
void clang::CodeGen::CodeGenFunction::GenerateObjCGetter | ( | ObjCImplementationDecl * | IMP, |
const ObjCPropertyImplDecl * | PID | ||
) |
GenerateObjCGetter - Synthesize an Objective-C property getter function.
void clang::CodeGen::CodeGenFunction::generateObjCGetterBody | ( | const ObjCImplementationDecl * | classImpl, |
const ObjCPropertyImplDecl * | propImpl, | ||
const ObjCMethodDecl * | GetterMothodDecl, | ||
llvm::Constant * | AtomicHelperFn | ||
) |
void clang::CodeGen::CodeGenFunction::GenerateObjCMethod | ( | const ObjCMethodDecl * | OMD | ) |
Referenced by clang::CodeGen::CodeGenModule::EmitTopLevelDecl().
void clang::CodeGen::CodeGenFunction::GenerateObjCSetter | ( | ObjCImplementationDecl * | IMP, |
const ObjCPropertyImplDecl * | PID | ||
) |
GenerateObjCSetter - Synthesize an Objective-C property setter function for the given property.
void clang::CodeGen::CodeGenFunction::generateObjCSetterBody | ( | const ObjCImplementationDecl * | classImpl, |
const ObjCPropertyImplDecl * | propImpl, | ||
llvm::Constant * | AtomicHelperFn | ||
) |
llvm::Function * clang::CodeGen::CodeGenFunction::GenerateOpenMPCapturedStmtFunction | ( | const CapturedStmt & | S, |
SourceLocation | Loc | ||
) |
void clang::CodeGen::CodeGenFunction::GenerateOpenMPCapturedVars | ( | const CapturedStmt & | S, |
SmallVectorImpl< llvm::Value * > & | CapturedVars | ||
) |
llvm::Function * clang::CodeGen::CodeGenFunction::GenerateSEHFilterFunction | ( | CodeGenFunction & | ParentCGF, |
const SEHExceptStmt & | Except | ||
) |
llvm::Function * clang::CodeGen::CodeGenFunction::GenerateSEHFinallyFunction | ( | CodeGenFunction & | ParentCGF, |
const SEHFinallyStmt & | Finally | ||
) |
void clang::CodeGen::CodeGenFunction::generateThunk | ( | llvm::Function * | Fn, |
const CGFunctionInfo & | FnInfo, | ||
GlobalDecl | GD, | ||
const ThunkInfo & | Thunk, | ||
bool | IsUnprototyped | ||
) |
Generate a thunk for the given method.
llvm::Function * clang::CodeGen::CodeGenFunction::GenerateVarArgsThunk | ( | llvm::Function * | Fn, |
const CGFunctionInfo & | FnInfo, | ||
GlobalDecl | GD, | ||
const ThunkInfo & | Thunk | ||
) |
void clang::CodeGen::CodeGenFunction::GetAArch64SVEProcessedOperands | ( | unsigned | BuiltinID, |
const CallExpr * | E, | ||
SmallVectorImpl< llvm::Value * > & | Ops, | ||
SVETypeFlags | TypeFlags | ||
) |
|
static |
getAccessedFieldNo - Given an encoded value and a result number, return the input field number being accessed.
Address clang::CodeGen::CodeGenFunction::GetAddressOfBaseClass | ( | Address | Value, |
const CXXRecordDecl * | Derived, | ||
CastExpr::path_const_iterator | PathBegin, | ||
CastExpr::path_const_iterator | PathEnd, | ||
bool | NullCheckValue, | ||
SourceLocation | Loc | ||
) |
GetAddressOfBaseClass - This function will add the necessary delta to the load of 'this' and returns address of the base class.
Referenced by EmitPointerWithAlignment().
Address clang::CodeGen::CodeGenFunction::GetAddressOfDerivedClass | ( | Address | Value, |
const CXXRecordDecl * | Derived, | ||
CastExpr::path_const_iterator | PathBegin, | ||
CastExpr::path_const_iterator | PathEnd, | ||
bool | NullCheckValue | ||
) |
Address clang::CodeGen::CodeGenFunction::GetAddressOfDirectBaseInCompleteClass | ( | Address | Value, |
const CXXRecordDecl * | Derived, | ||
const CXXRecordDecl * | Base, | ||
bool | BaseIsVirtual | ||
) |
GetAddressOfBaseOfCompleteClass - Convert the given pointer to a complete class to the given direct base.
Referenced by EmitBaseInitializer().
llvm::BlockAddress * clang::CodeGen::CodeGenFunction::GetAddrOfLabel | ( | const LabelDecl * | L | ) |
GetAddrOfLocalVar - Return the address of a local variable.
Definition at line 2985 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CGOpenMPRuntimeGPU::adjustTargetSpecificDataForLambdas(), clang::CodeGen::CGObjCRuntime::canMessageReceiverBeNull(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitSharedLastprivateConditional(), emitCmdValueForGetterSetterBody(), emitCombinerOrInitializer(), emitCopyprivateCopyFunction(), clang::CodeGen::CGOpenMPRuntime::emitDependClause(), emitDestructorsFunction(), clang::CodeGen::CGObjCRuntime::EmitInitOfCatchParam(), EmitMemberInitializer(), EmitOMPAggregateReduction(), emitOutlinedFunctionPrologue(), emitPrivatesInit(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceFiniFunction(), emitReduceInitFunction(), clang::CodeGen::CGOpenMPRuntimeGPU::emitReduction(), clang::CodeGen::CGOpenMPRuntime::emitReductionFunction(), emitTaskDupFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), generateByrefCopyHelper(), generateByrefDisposeHelper(), clang::CodeGen::CGOpenMPRuntime::getParameterAddress(), clang::CodeGen::CGOpenMPRuntimeGPU::getParameterAddress(), clang::CodeGen::CGCXXABI::loadIncomingCXXThis(), mapParam(), and tryRemoveRetainOfSelf().
|
inline |
Retrieves the default cleanup kind for an ARC cleanup.
Except under -fobjc-arc-eh, ARC cleanups are normal-only.
Definition at line 4734 of file CodeGenFunction.h.
References CGM, clang::CodeGen::CodeGenModule::getCodeGenOpts(), clang::CodeGen::NormalAndEHCleanup, and clang::CodeGen::NormalCleanup.
Referenced by EmitAutoVarWithLifetime(), and pushTemporaryCleanup().
|
inline |
Get the index of the current ArrayInitLoopExpr, if any.
Definition at line 3001 of file CodeGenFunction.h.
Referenced by clang::CodeGen::LValue::emitResignedPointer(), and getAsNaturalPointerTo().
|
inline |
Definition at line 4474 of file CodeGenFunction.h.
References getAsNaturalAddressOf(), and clang::CodeGen::Address::getBasePointer().
Referenced by clang::CodeGen::CGCXXABI::EmitLoadOfMemberFunctionPointer().
const BlockByrefInfo & clang::CodeGen::CodeGenFunction::getBlockByrefInfo | ( | const VarDecl * | var | ) |
SmallVector< llvm::OperandBundleDef, 1 > clang::CodeGen::CodeGenFunction::getBundlesForFunclet | ( | llvm::Value * | Callee | ) |
Referenced by emitAutoreleasedReturnValueMarker(), and EmitSehScope().
|
inline |
Definition at line 2253 of file CodeGenFunction.h.
References needsEHCleanup(), clang::CodeGen::NormalAndEHCleanup, and clang::CodeGen::NormalCleanup.
Referenced by emitCXXDestructMethod(), and pushCaptureCleanup().
|
inline |
Definition at line 2138 of file CodeGenFunction.h.
References CGM, and clang::CodeGen::CodeGenModule::getContext().
Referenced by clang::CodeGen::CGCXXABI::buildThisParam(), canEmitDelegateCallArgs(), canEmitSpuriousReferenceToVariable(), CanSkipVTablePointerInitialization(), castToBase(), castValueFromUintptr(), castValueToType(), CheckAggExprForMemSetUse(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitLastprivateConditional(), CheckAtomicAlignment(), ConvertType(), createReferenceTemporary(), EmitAArch64TblBuiltinExpr(), emitAddrOfFieldStorage(), emitAddrOfVarFromArray(), emitAddrOfZeroSizeField(), clang::CodeGen::ReductionCodeGen::emitAggregateType(), emitAlignedClause(), EmitArrayDelete(), emitArraySubscriptGEP(), EmitAsmStores(), EmitAtomicCmpXchg128ForMSIntrin(), EmitAtomicCmpXchgForMSIntrin(), EmitBaseInitializer(), EmitBinaryAtomicPost(), emitBody(), emitCmdValueForGetterSetterBody(), emitCPPObjectAtomicGetterCall(), emitCPPObjectAtomicSetterCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitCriticalRegion(), EmitCXXNewAllocSize(), EmitDeclDestroy(), EmitDeclInit(), EmitDeclInvariant(), emitDeclTargetVarDeclLValue(), clang::CodeGen::CGOpenMPRuntime::emitDepobjElementsSizes(), EmitDirectCallee(), emitDispatchForLoopBounds(), clang::CodeGen::CGOpenMPRuntime::emitForNext(), EmitFunctionDeclLValue(), EmitGlobalVarDeclLValue(), clang::CodeGen::ReductionCodeGen::emitInitialization(), EmitISOVolatileLoad(), EmitISOVolatileStore(), emitLibraryCall(), clang::CodeGen::CGCXXABI::EmitLoadOfMemberFunctionPointer(), emitMappingInformation(), EmitMemberInitializer(), emitNonZeroVLAInit(), EmitNullBaseClassInitialization(), EmitOMPAggregateInit(), EmitOMPAggregateReduction(), emitOMPAtomicRMW(), clang::CodeGen::CGOpenMPRuntimeGPU::emitParallelCall(), emitPartialArrayDestroy(), emitPointerArithmetic(), emitPrivatesInit(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), clang::CodeGen::CGOpenMPRuntime::emitReductionFunction(), emitStructGetterCall(), emitStructSetterCall(), emitSuspendExpression(), emitTargetTeamsLoopCodegenStatus(), clang::CodeGen::CGOpenMPRuntime::emitTaskLoopCall(), clang::CodeGen::CGOpenMPRuntime::emitThreadIDAddress(), clang::CodeGen::CGOpenMPRuntime::emitUpdateLocation(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsFini(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsInit(), clang::CodeGen::EmitVAArgInstr(), clang::CodeGen::CGObjCRuntime::EmitValueForIvarAtOffset(), EmitX86_64VAArgFromMemory(), EmitX86BitTestIntrinsic(), clang::CodeGen::CGCXXABI::ErrorUnsupportedABI(), generateByrefCopyHelper(), generateByrefDisposeHelper(), GetAlignedMapping(), getAllocatorVal(), getArrayIndexingBound(), getCaptureFieldType(), clang::CodeGen::CGOpenMPRuntimeGPU::getDefaultDistScheduleAndChunk(), clang::CodeGen::CGOpenMPRuntime::getDefaultScheduleAndChunk(), clang::CodeGen::CGOpenMPRuntimeGPU::getDefaultScheduleAndChunk(), getFieldOffsetInBits(), getIdentStringFromSourceLocation(), getItaniumDynamicCastFn(), GetNumNonZeroBytesInInit(), clang::CodeGen::CGOpenMPRuntime::getNumTeamsExprForTargetDirective(), getNumThreads(), clang::CodeGen::CGOpenMPRuntime::getNumThreadsExprForTargetDirective(), getPointerAndSize(), getRangeForType(), clang::CodeGen::getVAListElementType(), isCheapEnoughToEvaluateUnconditionally(), isSimpleZero(), loadToBegin(), MakeAddrLValue(), MakeAddrLValueWithoutTBAA(), MakeAtomicCmpXchgValue(), MakeBinaryAtomicValue(), MakeRawAddrLValue(), maybeCreateMCDCCondBitmap(), performTypeAdjustment(), and tryToConvertMemberExprToDeclRefExpr().
|
inline |
Get the profiler's current count.
This is generally the count for the most recently incremented counter.
Definition at line 1699 of file CodeGenFunction.h.
|
inline |
Definition at line 2139 of file CodeGenFunction.h.
Referenced by clang::CodeGen::ApplyDebugLocation::ApplyDebugLocation(), clang::CodeGen::ApplyInlineDebugLocation::ApplyInlineDebugLocation(), emitArraySubscriptGEP(), emitPreserveStructAccess(), IsPreserveAIArrayBase(), clang::CodeGen::CodeGenFunction::LexicalScope::LexicalScope(), clang::CodeGen::ApplyInlineDebugLocation::~ApplyInlineDebugLocation(), and clang::CodeGen::CodeGenFunction::LexicalScope::~LexicalScope().
unsigned clang::CodeGen::CodeGenFunction::getDebugInfoFIndex | ( | const RecordDecl * | Rec, |
unsigned | FieldIndex | ||
) |
Get the record field index as represented in debug info.
Referenced by emitPreserveStructAccess().
Destroyer * clang::CodeGen::CodeGenFunction::getDestroyer | ( | QualType::DestructionKind | destructionKind | ) |
llvm::BasicBlock * clang::CodeGen::CodeGenFunction::getEHDispatchBlock | ( | EHScopeStack::stable_iterator | scope | ) |
Referenced by emitCatchDispatchBlock(), emitCatchPadBlock(), and emitWasmCatchPadBlock().
llvm::BasicBlock * clang::CodeGen::CodeGenFunction::getEHResumeBlock | ( | bool | isCleanup | ) |
Referenced by emitFilterDispatchBlock().
Address clang::CodeGen::CodeGenFunction::getEHSelectorSlot | ( | ) |
llvm::Type * clang::CodeGen::CodeGenFunction::getEltType | ( | const SVETypeFlags & | TypeFlags | ) |
|
static |
getEvaluationKind - Return the TypeEvaluationKind of QualType T
.
Referenced by convertToComplexValue(), convertToType(), EmitDeclInit(), emitInitWithReductionInitializer(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalUpdate(), clang::CodeGen::CGOpenMPRuntimeGPU::emitReduction(), hasAggregateEvaluationKind(), hasScalarEvaluationKind(), InitCatchParam(), and StoreAnyExprIntoOneUnit().
llvm::Value * clang::CodeGen::CodeGenFunction::getExceptionFromSlot | ( | ) |
Returns the contents of the function's exception object and selector slots.
Referenced by emitFilterDispatchBlock(), clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), clang::CodeGen::CodeGenFunction::FinallyInfo::exit(), and InitCatchParam().
Address clang::CodeGen::CodeGenFunction::getExceptionSlot | ( | ) |
Returns a pointer to the function's exception object and selector slot, which is assigned in every landing pad.
Referenced by clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), and emitWasmCatchPadBlock().
llvm::BasicBlock * clang::CodeGen::CodeGenFunction::getFuncletEHDispatchBlock | ( | EHScopeStack::stable_iterator | scope | ) |
llvm::BasicBlock * clang::CodeGen::CodeGenFunction::GetIndirectGotoBlock | ( | ) |
|
inline |
Definition at line 2173 of file CodeGenFunction.h.
References EHStack, getInvokeDestImpl(), and clang::CodeGen::EHScopeStack::requiresLandingPad().
Referenced by EmitSehScope().
llvm::BasicBlock * clang::CodeGen::CodeGenFunction::getInvokeDestImpl | ( | ) |
Referenced by getInvokeDest().
getBasicBlockForLabel - Return the LLVM basicblock that the specified label maps to.
|
inline |
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.
Definition at line 1248 of file CodeGenFunction.h.
References EHStack, clang::CodeGen::EHScopeStack::getInnermostNormalCleanup(), and NextCleanupDestIndex.
Referenced by clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), clang::CodeGen::CodeGenFunction::FinallyInfo::enter(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::FinalizeOMPRegion(), getJumpDestInCurrentScope(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::InlinedRegionBodyRAII::InlinedRegionBodyRAII(), and clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::OutlinedRegionBodyRAII::OutlinedRegionBodyRAII().
|
inline |
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.
Definition at line 1257 of file CodeGenFunction.h.
References createBasicBlock(), and getJumpDestInCurrentScope().
|
inline |
Definition at line 2151 of file CodeGenFunction.h.
References CGM, and clang::CodeGen::CodeGenModule::getLangOpts().
Referenced by canEmitSpuriousReferenceToVariable(), clang::CodeGen::CodeGenFunction::CGFPOptionsRAII::CGFPOptionsRAII(), CheckAggExprForMemSetUse(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitLastprivateConditional(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitSharedLastprivateConditional(), checkForLastprivateConditionalUpdate(), checkIfFunctionMustProgress(), clang::CodeGen::CGObjCRuntime::EmitAtSynchronizedStmt(), emitCommonSimdLoop(), EmitGlobalVarDeclLValue(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalFinalUpdate(), clang::CodeGen::CGOpenMPRuntime::emitNumTeamsForTargetDirective(), emitPointerArithmetic(), EmitTargetArchBuiltinExpr(), clang::CodeGen::CGOpenMPRuntime::getNumThreadsExprForTargetDirective(), getRangeForType(), clang::CodeGen::CGOpenMPRuntime::getThreadID(), initializeAlloca(), needsEHCleanup(), pushCaptureCleanup(), pushTemporaryCleanup(), tryEmitARCRetainLoadOfScalar(), tryEmitSpecializedAllocInit(), and UpdateAsmCallInst().
|
inline |
Definition at line 2181 of file CodeGenFunction.h.
References CGM, and clang::CodeGen::CodeGenModule::getLLVMContext().
Referenced by createBasicBlock(), clang::CodeGen::TargetCodeGenInfo::createEnqueuedBlockKernel(), createPlaceholderSlot(), emitAlignedClause(), EmitAsmStores(), EmitAtomicCmpXchg128ForMSIntrin(), emitAtomicLibcall(), EmitAtomicOp(), emitAutoreleasedReturnValueMarker(), EmitBinaryAtomicPost(), emitCatchPadBlock(), emitCheckHandlerCall(), emitGlobalDtorWithCXAAtExit(), EmitISOVolatileLoad(), clang::CodeGen::CGCXXABI::EmitMemberDataPointerAddress(), EmitMSVCRTSetJmp(), emitPPCLoadReserveIntrinsic(), clang::CodeGen::CGObjCRuntime::EmitValueForIvarAtOffset(), clang::CodeGen::emitVoidPtrVAArg(), emitWasmCatchPadBlock(), EmitX86BitTestIntrinsic(), EmitX86CvtF16ToFloatExpr(), EmitX86MaskedCompareResult(), getAsmSrcLocInfo(), getItaniumDynamicCastFn(), clang::CodeGen::CGOpenMPRuntimeGPU::getParameterAddress(), getUnreachableBlock(), MakeAtomicCmpXchgValue(), MakeBinaryAtomicValue(), and UpdateAsmCallInst().
|
static |
Referenced by getBlockCaptureStr().
|
static |
Referenced by getBlockCaptureStr().
RawAddress clang::CodeGen::CodeGenFunction::getNormalCleanupDestSlot | ( | ) |
Referenced by ResolveAllBranchFixups(), and TransitionToCleanupSwitch().
JumpDest clang::CodeGen::CodeGenFunction::getOMPCancelDestination | ( | OpenMPDirectiveKind | Kind | ) |
LValue clang::CodeGen::CodeGenFunction::getOrCreateOpaqueLValueMapping | ( | const OpaqueValueExpr * | e | ) |
Given an opaque value expression, return its LValue mapping if it exists, otherwise create one.
Referenced by emitSuspendExpression().
RValue clang::CodeGen::CodeGenFunction::getOrCreateOpaqueRValueMapping | ( | const OpaqueValueExpr * | e | ) |
Given an opaque value expression, return its RValue mapping if it exists, otherwise create one.
AggValueSlot::Overlap_t clang::CodeGen::CodeGenFunction::getOverlapForBaseInit | ( | const CXXRecordDecl * | RD, |
const CXXRecordDecl * | BaseRD, | ||
bool | IsVirtual | ||
) |
Determine whether a base class initialization may overlap some other object.
Referenced by EmitBaseInitializer().
AggValueSlot::Overlap_t clang::CodeGen::CodeGenFunction::getOverlapForFieldInit | ( | const FieldDecl * | FD | ) |
Determine whether a field initialization may overlap some other object.
Referenced by EmitMemberInitializer().
|
inline |
Determine whether a return value slot may overlap some other object.
Definition at line 2946 of file CodeGenFunction.h.
References clang::CodeGen::AggValueSlot::DoesNotOverlap.
|
inline |
Return PostAllocaInsertPt.
If it is not yet created, then insert it immediately after AllocaInsertPt.
Definition at line 445 of file CodeGenFunction.h.
References AllocaInsertPt.
|
inline |
Get the profiler's count for the given statement.
Definition at line 1688 of file CodeGenFunction.h.
Referenced by emitOMPSimdRegion().
llvm::Value * clang::CodeGen::CodeGenFunction::getSelectorFromSlot | ( | ) |
Referenced by emitCatchDispatchBlock(), and emitFilterDispatchBlock().
SmallVector< llvm::Type *, 2 > clang::CodeGen::CodeGenFunction::getSVEOverloadTypes | ( | const SVETypeFlags & | TypeFlags, |
llvm::Type * | ReturnType, | ||
ArrayRef< llvm::Value * > | Ops | ||
) |
llvm::ScalableVectorType * clang::CodeGen::CodeGenFunction::getSVEPredType | ( | const SVETypeFlags & | TypeFlags | ) |
llvm::ScalableVectorType * clang::CodeGen::CodeGenFunction::getSVEType | ( | const SVETypeFlags & | TypeFlags | ) |
|
inline |
Definition at line 2180 of file CodeGenFunction.h.
References Target.
Referenced by ARMMVEVectorReinterpret(), canEmitDelegateCallArgs(), EmitBitTestIntrinsic(), emitGlobalDtorWithCXAAtExit(), EmitMSVCRTSetJmp(), emitPPCLoadReserveIntrinsic(), clang::CodeGen::CGOpenMPRuntimeGPU::emitReduction(), EmitSignBit(), EmitTargetArchBuiltinExpr(), EmitX86BitTestIntrinsic(), getAsmSrcLocInfo(), GetNumNonZeroBytesInInit(), and wrapWithBPFPreserveStaticOffset().
|
inline |
Definition at line 2182 of file CodeGenFunction.h.
References CGM, and clang::CodeGen::CodeGenModule::getTargetCodeGenInfo().
Referenced by createReferenceTemporary(), EmitAsmStores(), EmitAtomicOp(), emitCatchDispatchBlock(), clang::CodeGen::CGOpenCLRuntime::emitOpenCLEnqueuedBlock(), and tryUseTestFPKind().
llvm::BasicBlock * clang::CodeGen::CodeGenFunction::getTerminateFunclet | ( | ) |
getTerminateLandingPad - Return a cleanup funclet that just calls terminate.
llvm::BasicBlock * clang::CodeGen::CodeGenFunction::getTerminateHandler | ( | ) |
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.
llvm::BasicBlock * clang::CodeGen::CodeGenFunction::getTerminateLandingPad | ( | ) |
getTerminateLandingPad - Return a landing pad that just calls terminate.
|
inline |
Definition at line 2137 of file CodeGenFunction.h.
References CGM, and clang::CodeGen::CodeGenModule::getTypes().
Referenced by commonEmitCXXMemberOrOperatorCall(), clang::CodeGen::TargetCodeGenInfo::createEnqueuedBlockKernel(), emitCPPObjectAtomicGetterCall(), emitCPPObjectAtomicSetterCall(), emitGlobalDtorWithCXAAtExit(), EmitGlobalVarDeclLValue(), emitStructGetterCall(), emitStructSetterCall(), GetNumNonZeroBytesInInit(), clang::CodeGen::CGOpenMPRuntimeGPU::getParameterAddress(), and isSimpleZero().
llvm::Value * clang::CodeGen::CodeGenFunction::getTypeSize | ( | QualType | Ty | ) |
Returns calculated size of the specified type.
Referenced by clang::CodeGen::ReductionCodeGen::emitAggregateType(), clang::CodeGen::CGOpenMPRuntime::emitDepobjElements(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), clang::CodeGen::CGOpenMPRuntime::emitSingleRegion(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), genMapInfoForCaptures(), clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntime::getAddrOfArtificialThreadPrivate(), clang::CodeGen::CGOpenMPRuntimeGPU::getKmpcAllocShared(), and getPointerAndSize().
llvm::ConstantInt * clang::CodeGen::CodeGenFunction::getUBSanFunctionTypeHash | ( | QualType | T | ) | const |
Return a type hash constant for a function instrumented by -fsanitize=function.
GetUndefRValue - Get an appropriate 'undef' rvalue for the given type.
|
inline |
Definition at line 2165 of file CodeGenFunction.h.
References createBasicBlock(), and getLLVMContext().
Referenced by destroyOptimisticNormalEntry(), and clang::CodeGen::CodeGenFunction::FinallyInfo::enter().
VlaSizePair clang::CodeGen::CodeGenFunction::getVLAElements1D | ( | const VariableArrayType * | vla | ) |
Return the number of elements for a single dimension for the given array type.
VlaSizePair clang::CodeGen::CodeGenFunction::getVLAElements1D | ( | QualType | vla | ) |
VlaSizePair clang::CodeGen::CodeGenFunction::getVLASize | ( | const VariableArrayType * | vla | ) |
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.
Referenced by emitPointerArithmetic(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), and getArrayIndexingBound().
VlaSizePair clang::CodeGen::CodeGenFunction::getVLASize | ( | QualType | vla | ) |
void clang::CodeGen::CodeGenFunction::getVTablePointers | ( | BaseSubobject | Base, |
const CXXRecordDecl * | NearestVBase, | ||
CharUnits | OffsetFromNearestVBase, | ||
bool | BaseIsNonVirtualPrimaryBase, | ||
const CXXRecordDecl * | VTableClass, | ||
VisitedVirtualBasesSetTy & | VBases, | ||
VPtrsVector & | vptrs | ||
) |
VPtrsVector clang::CodeGen::CodeGenFunction::getVTablePointers | ( | const CXXRecordDecl * | VTableClass | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::GetVTablePtr | ( | Address | This, |
llvm::Type * | VTableTy, | ||
const CXXRecordDecl * | VTableClass, | ||
VTableAuthMode | AuthMode = VTableAuthMode::Authenticate |
||
) |
GetVTablePtr - Return the Value of the vtable pointer member pointed to by This.
Referenced by performTypeAdjustment().
llvm::Value * clang::CodeGen::CodeGenFunction::GetVTTParameter | ( | GlobalDecl | GD, |
bool | ForVirtualBase, | ||
bool | Delegating | ||
) |
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.
Definition at line 2602 of file CodeGenFunction.h.
References getEvaluationKind(), clang::T, and clang::CodeGen::TEK_Aggregate.
Referenced by emitPseudoObjectExpr(), clang::CodeGen::CGCXXABI::EmitReturnFromThunk(), and clang::CodeGen::CodeGenFunction::OpaqueValueMappingData::shouldBindAsLValue().
|
inline |
Return true if a label was seen in the current scope.
Definition at line 421 of file CodeGenFunction.h.
References clang::CodeGen::CodeGenFunction::LexicalScope::hasLabels().
Definition at line 2598 of file CodeGenFunction.h.
References getEvaluationKind(), clang::T, and clang::CodeGen::TEK_Scalar.
Referenced by convertToScalarValue(), and clang::CodeGen::isAggregateTypeForABI().
hasVolatileMember - returns true if aggregate type has a volatile member.
Definition at line 2937 of file CodeGenFunction.h.
References clang::Type::getAs(), clang::RecordDecl::hasVolatileMember(), and clang::T.
Referenced by EmitAggregateAssign().
|
inline |
HaveInsertPoint - True if an insertion point is defined.
If not, this indicates that the current code being emitted is unreachable.
Definition at line 2648 of file CodeGenFunction.h.
References Builder.
Referenced by clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::OMPAllocateCleanupTy::Emit(), emitAlignedClause(), clang::CodeGen::CGOpenMPRuntime::emitBarrierCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitBarrierCall(), clang::CodeGen::CGOpenMPRuntime::emitCancelCall(), clang::CodeGen::CGOpenMPRuntime::emitCancellationPointCall(), EmitCleanup(), clang::CodeGen::CGOpenMPRuntime::emitCriticalRegion(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), clang::CodeGen::CGOpenMPRuntime::emitFlush(), clang::CodeGen::CGOpenMPRuntime::emitForDispatchDeinit(), clang::CodeGen::CGOpenMPRuntime::emitForDispatchInit(), clang::CodeGen::CGOpenMPRuntime::emitForOrderedIterationEnd(), clang::CodeGen::CGOpenMPRuntime::emitForStaticFinish(), emitForStaticInitCall(), clang::CodeGen::CGOpenMPRuntime::emitInlinedDirective(), clang::CodeGen::CGOpenMPRuntime::emitMaskedRegion(), clang::CodeGen::CGOpenMPRuntime::emitMasterRegion(), clang::CodeGen::CGOpenMPRuntime::emitNumTeamsClause(), clang::CodeGen::CGOpenMPRuntime::emitNumThreadsClause(), clang::CodeGen::CGOpenMPRuntime::emitOrderedRegion(), clang::CodeGen::CGOpenMPRuntime::emitParallelCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitParallelCall(), emitPostUpdateForReductionClause(), emitPreCond(), clang::CodeGen::CGOpenMPRuntime::emitProcBindClause(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), clang::CodeGen::CGOpenMPRuntimeGPU::emitReduction(), emitSimdlenSafelenClause(), clang::CodeGen::CGOpenMPRuntime::emitSingleRegion(), clang::CodeGen::CGOpenMPRuntime::emitTargetCall(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataCalls(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataStandAloneCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskgroupRegion(), clang::CodeGen::CGOpenMPRuntime::emitTaskLoopCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskwaitCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskyieldCall(), clang::CodeGen::CGOpenMPRuntime::emitTeamsCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitTeamsCall(), EnsureInsertPoint(), and clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable().
|
inline |
Increment the profiler's counter for the given statement by StepV
.
If StepV
is null, the default increment is 1.
Definition at line 1631 of file CodeGenFunction.h.
References Builder, CGM, clang::CodeGen::ApplyDebugLocation::CreateArtificial(), CurFn, clang::CodeGen::CodeGenModule::getCodeGenOpts(), and clang::CodeGenOptions::hasProfileClangInstr().
Referenced by clang::CodeGen::CodeGenFunction::CGCapturedStmtInfo::EmitBody(), and emitOMPSimdRegion().
LValue clang::CodeGen::CodeGenFunction::InitCapturedStruct | ( | const CapturedStmt & | S | ) |
Referenced by emitCapturedStmtFunc().
|
inline |
Set up the last cleanup that was pushed as a conditional full-expression cleanup.
Definition at line 922 of file CodeGenFunction.h.
References createCleanupActiveFlag(), and initFullExprCleanupWithFlag().
Referenced by EnterNewDeleteCleanup(), and pushFullExprCleanup().
void clang::CodeGen::CodeGenFunction::initFullExprCleanupWithFlag | ( | RawAddress | ActiveFlag | ) |
Referenced by initFullExprCleanup().
void clang::CodeGen::CodeGenFunction::InitializeVTablePointer | ( | const VPtr & | vptr | ) |
Initialize the vtable pointer of the given subobject.
void clang::CodeGen::CodeGenFunction::InitializeVTablePointers | ( | const CXXRecordDecl * | ClassDecl | ) |
Referenced by EmitBaseInitializer().
void clang::CodeGen::CodeGenFunction::InsertHelper | ( | llvm::Instruction * | I, |
const llvm::Twine & | Name, | ||
llvm::BasicBlock::iterator | InsertPt | ||
) | const |
CGBuilder insert helper.
This function is called after an instruction is created using Builder.
|
inline |
Definition at line 375 of file CodeGenFunction.h.
References CurCoro, clang::CodeGen::CodeGenFunction::CGCoroInfo::InSuspendBlock, and isCoroutine().
Definition at line 1657 of file CodeGenFunction.h.
References E, and clang::BinaryOperator::isLogicalOp().
Referenced by maybeResetMCDCCondBitmap(), and maybeUpdateMCDCTestVectorBitmap().
|
inline |
Returns true while emitting a cleanuppad.
Definition at line 845 of file CodeGenFunction.h.
References CurrentFuncletPad.
|
static |
Referenced by clang::CodeGen::CodeGenPGO::assignRegionCounters().
|
inline |
Definition at line 371 of file CodeGenFunction.h.
References CurCoro, and clang::CodeGen::CodeGenFunction::CGCoroInfo::Data.
Referenced by inSuspendBlock().
|
inline |
isInConditionalBranch - Return true if we're currently emitting one branch or the other of a conditional expression.
Definition at line 1310 of file CodeGenFunction.h.
Referenced by EnterNewDeleteCleanup(), pushCleanupAfterFullExpr(), pushFullExprCleanup(), setBeforeOutermostConditional(), and SetupCleanupBlockActivation().
isInstrumentedCondition - Determine whether the given condition is an instrumentable condition (i.e.
no "&&" or "||").
|
inline |
Definition at line 1641 of file CodeGenFunction.h.
References CGM, CurFn, clang::CodeGen::CodeGenModule::getCodeGenOpts(), and clang::CodeGenOptions::hasProfileClangInstr().
Referenced by maybeCreateMCDCCondBitmap(), maybeResetMCDCCondBitmap(), maybeUpdateMCDCCondBitmap(), and maybeUpdateMCDCTestVectorBitmap().
|
static |
Determine whether the pointer type check TCK
permits null pointers.
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.
|
inline |
Returns true inside SEH __try blocks.
Definition at line 842 of file CodeGenFunction.h.
References SEHTryEpilogueStack.
Determine whether the given initializer is trivial in the sense that it requires no code to be generated.
Referenced by AllTrivialInitializers(), checkInitIsRequired(), emitCombinerOrInitializer(), clang::CodeGen::ReductionCodeGen::emitInitialization(), and emitPrivatesInit().
|
static |
Determine whether the pointer type check TCK
requires a vptr check.
Check if E
is a C++ "this" pointer wrapped in value-preserving casts.
Address clang::CodeGen::CodeGenFunction::LoadBlockStruct | ( | ) |
|
inline |
LoadCXXThis - Load the value of 'this'.
This function is only valid while generating code for an C++ member function.
Definition at line 3070 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CGOpenMPRuntimeGPU::adjustTargetSpecificDataForLambdas(), and EmitMemberInitializer().
Address clang::CodeGen::CodeGenFunction::LoadCXXThisAddress | ( | ) |
Referenced by EmitBaseInitializer().
|
inline |
LoadCXXVTT - Load the VTT parameter to base constructors/destructors have virtual bases.
Definition at line 3080 of file CodeGenFunction.h.
llvm::Value * clang::CodeGen::CodeGenFunction::LoadObjCSelf | ( | ) |
LoadObjCSelf - Load the value of self.
This function is only valid while generating code for an Objective-C method.
Referenced by emitCPPObjectAtomicGetterCall(), emitCPPObjectAtomicSetterCall(), emitCXXDestructMethod(), emitStructGetterCall(), and emitStructSetterCall().
llvm::Value * clang::CodeGen::CodeGenFunction::LoadPassedObjectSize | ( | const Expr * | E, |
QualType | EltTy | ||
) |
If E
references a parameter with pass_object_size info or a constant array size modifier, emit the object size divided by the size of EltTy
.
Otherwise return null.
Referenced by getArrayIndexingBound().
llvm::Function * clang::CodeGen::CodeGenFunction::LookupNeonLLVMIntrinsic | ( | unsigned | IntrinsicID, |
unsigned | Modifier, | ||
llvm::Type * | ArgTy, | ||
const CallExpr * | E | ||
) |
Referenced by EmitCommonNeonSISDBuiltinExpr().
|
inline |
Definition at line 2700 of file CodeGenFunction.h.
References CGM, clang::CodeGen::CodeGenModule::getTBAAAccessInfo(), MakeAddrLValue(), and clang::T.
Referenced by clang::CodeGen::CGOpenMPRuntimeGPU::adjustTargetSpecificDataForLambdas(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitLastprivateConditional(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitSharedLastprivateConditional(), clang::CodeGen::CallArg::copyInto(), createSectionLVal(), EmitAsmStores(), emitAtomicCmpXchg(), EmitAtomicUpdateValue(), clang::CodeGen::CGOpenMPRuntimeGPU::emitCriticalRegion(), EmitDeclInit(), clang::CodeGen::CGOpenMPRuntime::emitDependClause(), emitDependData(), clang::CodeGen::CGOpenMPRuntime::emitDepobjDependClause(), clang::CodeGen::CGOpenMPRuntime::emitDepobjElementsSizes(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), EmitFunctionDeclLValue(), EmitGlobalVarDeclLValue(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalInit(), EmitLoadOfReferenceLValue(), EmitNontemporalLoad(), EmitNontemporalStore(), emitOutlinedFunctionPrologue(), emitPrivatesInit(), emitProxyTaskFunction(), emitPseudoObjectExpr(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntime::emitThreadIDAddress(), EmitThreadPrivateVarDeclLValue(), clang::CodeGen::CGOpenMPRuntime::emitUpdateClause(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsInit(), clang::CodeGen::DefaultABIInfo::EmitVAArg(), PNaClABIInfo::EmitVAArg(), clang::CodeGen::emitVoidPtrVAArg(), emitWritebackArg(), clang::CodeGen::CGOpenMPRuntime::getDepobjElements(), clang::CodeGen::CallArg::getRValue(), InitCatchParam(), loadToBegin(), MakeAddrLValue(), makeNaturalAlignAddrLValue(), and StoreAnyExprIntoOneUnit().
|
inline |
Definition at line 2706 of file CodeGenFunction.h.
References getContext(), clang::CodeGen::LValue::MakeAddr(), and clang::T.
|
inline |
Definition at line 2711 of file CodeGenFunction.h.
References CGM, clang::CodeGen::CodeGenModule::getTBAAAccessInfo(), MakeAddrLValue(), makeNaturalAddressForPointer(), clang::T, and V.
|
inline |
Definition at line 2727 of file CodeGenFunction.h.
References getContext(), clang::CodeGen::LValue::MakeAddr(), and clang::T.
|
inline |
Construct an address with the natural alignment of T.
If a pointer to T is expected to be signed, the pointer passed to this function must have been signed, and the returned Address will have the pointer authentication information needed to authenticate the signed pointer.
Definition at line 2687 of file CodeGenFunction.h.
References CGM, ConvertTypeForMem(), clang::CodeGen::CodeGenModule::getNaturalTypeAlignment(), clang::CodeGen::CodeGenModule::getPointerAuthInfoForPointeeType(), and clang::T.
Referenced by EmitPointerWithAlignment(), clang::CodeGen::CGCXXABI::getThisAddress(), MakeAddrLValue(), and makeNaturalAlignAddrLValue().
LValue clang::CodeGen::CodeGenFunction::MakeNaturalAlignAddrLValue | ( | llvm::Value * | V, |
QualType | T, | ||
KnownNonNull_t | IsKnownNonNull = NotKnownNonNull |
||
) |
LValue clang::CodeGen::CodeGenFunction::MakeNaturalAlignPointeeAddrLValue | ( | llvm::Value * | V, |
QualType | T | ||
) |
Given a value of type T* that may not be to a complete object, construct an l-value with the natural pointee alignment of T.
Referenced by EmitMemberInitializer().
LValue clang::CodeGen::CodeGenFunction::MakeNaturalAlignPointeeRawAddrLValue | ( | llvm::Value * | V, |
QualType | T | ||
) |
Same as MakeNaturalAlignPointeeAddrLValue except that the pointer is known to be unsigned.
|
inline |
Same as MakeAddrLValue above except that the pointer is known to be unsigned.
Definition at line 2719 of file CodeGenFunction.h.
References CGM, ConvertTypeForMem(), getContext(), clang::CodeGen::CodeGenModule::getTBAAAccessInfo(), clang::CodeGen::LValue::MakeAddr(), clang::T, and V.
Referenced by clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalFinalUpdate(), and clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalUpdate().
void clang::CodeGen::CodeGenFunction::markAsIgnoreThreadCheckingAtRuntime | ( | llvm::Function * | Fn | ) |
Annotate the function with an attribute that disables TSan checking at runtime.
|
inline |
Allocate a temp value on the stack that MCDC can use to track condition results.
Definition at line 1649 of file CodeGenFunction.h.
References Builder, CreateIRTemp(), getContext(), and isMCDCCoverageEnabled().
|
inline |
Zero-init the MCDC temp value.
Definition at line 1663 of file CodeGenFunction.h.
References Builder, E, isBinaryLogicalOp(), and isMCDCCoverageEnabled().
|
inline |
Update the MCDC temp value with the condition's evaluated result.
Definition at line 1680 of file CodeGenFunction.h.
References Builder, E, and isMCDCCoverageEnabled().
|
inline |
Increment the profiler's counter for the given expression by StepV
.
If StepV
is null, the default increment is 1.
Definition at line 1672 of file CodeGenFunction.h.
References Builder, E, isBinaryLogicalOp(), and isMCDCCoverageEnabled().
Determine if the given statement might introduce a declaration into the current scope, by being a (possibly-labelled) DeclStmt.
Referenced by CollectStatementsForCase().
|
inline |
Determines whether an EH cleanup is required to destroy a type with the given destruction kind.
Definition at line 2238 of file CodeGenFunction.h.
References CGM, clang::QualType::DK_cxx_destructor, clang::QualType::DK_none, clang::QualType::DK_nontrivial_c_struct, clang::QualType::DK_objc_strong_lifetime, clang::QualType::DK_objc_weak_lifetime, clang::CodeGen::CodeGenModule::getCodeGenOpts(), and getLangOpts().
Referenced by EmitArrayDelete(), EmitDeclDestroy(), EmitMemberInitializer(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), getCleanupKind(), and pushCaptureCleanup().
void clang::CodeGen::CodeGenFunction::popCatchScope | ( | ) |
popCatchScope - Pops the catch scope at the top of the EHScope stack, emitting any required code (other than the catch handlers themselves).
Referenced by clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), and clang::CodeGen::CodeGenFunction::FinallyInfo::exit().
void clang::CodeGen::CodeGenFunction::PopCleanupBlock | ( | bool | FallThroughIsBranchThrough = false , |
bool | ForDeactivation = false |
||
) |
PopCleanupBlock - Will pop the cleanup entry on the stack and process all branch fixups.
Referenced by EmitArrayDelete(), EmitObjectDelete(), and clang::CodeGen::CodeGenFunction::FinallyInfo::exit().
void clang::CodeGen::CodeGenFunction::PopCleanupBlocks | ( | EHScopeStack::stable_iterator | OldCleanupStackSize, |
size_t | OldLifetimeExtendedStackSize, | ||
std::initializer_list< llvm::Value ** > | ValuesToReload = {} |
||
) |
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.
void clang::CodeGen::CodeGenFunction::PopCleanupBlocks | ( | EHScopeStack::stable_iterator | OldCleanupStackSize, |
std::initializer_list< llvm::Value ** > | ValuesToReload = {} |
||
) |
Takes the old cleanup stack size and emits the cleanup blocks that have been added.
void clang::CodeGen::CodeGenFunction::processInReduction | ( | const OMPExecutableDirective & | S, |
OMPTaskDataTy & | Data, | ||
CodeGenFunction & | CGF, | ||
const CapturedStmt * | CS, | ||
OMPPrivateScope & | Scope | ||
) |
void clang::CodeGen::CodeGenFunction::ProcessOrderScopeAMDGCN | ( | llvm::Value * | Order, |
llvm::Value * | Scope, | ||
llvm::AtomicOrdering & | AO, | ||
llvm::SyncScope::ID & | SSID | ||
) |
PeepholeProtection clang::CodeGen::CodeGenFunction::protectFromPeepholes | ( | RValue | rvalue | ) |
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.
Referenced by clang::CodeGen::CodeGenFunction::OpaqueValueMappingData::bind().
void clang::CodeGen::CodeGenFunction::pushCallObjectDeleteCleanup | ( | const FunctionDecl * | OperatorDelete, |
llvm::Value * | CompletePtr, | ||
QualType | ElementType | ||
) |
|
inline |
Queue a cleanup to be pushed after finishing the current full-expression, potentially with an active flag.
Definition at line 871 of file CodeGenFunction.h.
References createCleanupActiveFlag(), clang::CodeGen::RawAddress::invalid(), isInConditionalBranch(), saveValueInCond(), and clang::T.
|
inline |
Definition at line 888 of file CodeGenFunction.h.
References clang::CodeGen::CodeGenFunction::LifetimeExtendedCleanupHeader::IsConditional, clang::CodeGen::RawAddress::isValid(), LifetimeExtendedCleanupStack, OldSize, clang::CodeGen::CodeGenFunction::LifetimeExtendedCleanupHeader::Size, and clang::T.
|
inline |
Definition at line 911 of file CodeGenFunction.h.
References Builder, clang::CodeGen::CGBuilderTy::CreateFlagLoad(), DeferredDeactivationCleanupStack, EHStack, clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::EHScopeStack::stable_begin(), and clang::T.
void clang::CodeGen::CodeGenFunction::pushDestroy | ( | CleanupKind | kind, |
Address | addr, | ||
QualType | type, | ||
Destroyer * | destroyer, | ||
bool | useEHCleanupForArray | ||
) |
void clang::CodeGen::CodeGenFunction::pushDestroy | ( | QualType::DestructionKind | dtorKind, |
Address | addr, | ||
QualType | type | ||
) |
void clang::CodeGen::CodeGenFunction::pushDestroyAndDeferDeactivation | ( | CleanupKind | cleanupKind, |
Address | addr, | ||
QualType | type, | ||
Destroyer * | destroyer, | ||
bool | useEHCleanupForArray | ||
) |
void clang::CodeGen::CodeGenFunction::pushDestroyAndDeferDeactivation | ( | QualType::DestructionKind | dtorKind, |
Address | addr, | ||
QualType | type | ||
) |
void clang::CodeGen::CodeGenFunction::PushDestructorCleanup | ( | const CXXDestructorDecl * | Dtor, |
QualType | T, | ||
Address | Addr | ||
) |
PushDestructorCleanup - Push a cleanup to call the complete-object variant of the given destructor on the object at the given address.
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.
void clang::CodeGen::CodeGenFunction::pushEHDestroy | ( | QualType::DestructionKind | dtorKind, |
Address | addr, | ||
QualType | type | ||
) |
Referenced by EmitMemberInitializer().
|
inline |
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.
Definition at line 853 of file CodeGenFunction.h.
References EHStack, initFullExprCleanup(), isInConditionalBranch(), clang::CodeGen::EHScopeStack::pushCleanupTuple(), saveValueInCond(), and clang::T.
void clang::CodeGen::CodeGenFunction::pushIrregularPartialArrayCleanup | ( | llvm::Value * | arrayBegin, |
Address | arrayEndPointer, | ||
QualType | elementType, | ||
CharUnits | elementAlignment, | ||
Destroyer * | destroyer | ||
) |
void clang::CodeGen::CodeGenFunction::pushKmpcAllocFree | ( | CleanupKind | Kind, |
std::pair< llvm::Value *, llvm::Value * > | AddrSizePair | ||
) |
void clang::CodeGen::CodeGenFunction::pushLifetimeExtendedDestroy | ( | CleanupKind | kind, |
Address | addr, | ||
QualType | type, | ||
Destroyer * | destroyer, | ||
bool | useEHCleanupForArray | ||
) |
Referenced by pushTemporaryCleanup().
void clang::CodeGen::CodeGenFunction::pushRegularPartialArrayCleanup | ( | llvm::Value * | arrayBegin, |
llvm::Value * | arrayEnd, | ||
QualType | elementType, | ||
CharUnits | elementAlignment, | ||
Destroyer * | destroyer | ||
) |
void clang::CodeGen::CodeGenFunction::pushSEHCleanup | ( | CleanupKind | kind, |
llvm::Function * | FinallyFunc | ||
) |
Referenced by clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt().
void clang::CodeGen::CodeGenFunction::pushStackRestore | ( | CleanupKind | kind, |
Address | SPMem | ||
) |
Address clang::CodeGen::CodeGenFunction::recoverAddrOfEscapedLocal | ( | CodeGenFunction & | ParentCGF, |
Address | ParentVar, | ||
llvm::Value * | ParentFP | ||
) |
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.
void clang::CodeGen::CodeGenFunction::registerGlobalDtorWithAtExit | ( | const VarDecl & | D, |
llvm::FunctionCallee | fn, | ||
llvm::Constant * | addr | ||
) |
Call atexit() with a function that passes the given argument to the given function.
void clang::CodeGen::CodeGenFunction::registerGlobalDtorWithAtExit | ( | llvm::Constant * | dtorStub | ) |
Call atexit() with function dtorStub.
void clang::CodeGen::CodeGenFunction::registerGlobalDtorWithLLVM | ( | const VarDecl & | D, |
llvm::FunctionCallee | fn, | ||
llvm::Constant * | addr | ||
) |
Registers the dtor using 'llvm.global_dtors' for platforms that do not support an 'atexit()' function.
void clang::CodeGen::CodeGenFunction::ResolveBranchFixups | ( | llvm::BasicBlock * | Target | ) |
bool clang::CodeGen::CodeGenFunction::sanitizePerformTypeCheck | ( | ) | const |
Whether any type-checking sanitizers are enabled.
If false
, calls to EmitTypeCheck can be skipped.
Referenced by EmitTypeCheck().
|
inline |
Definition at line 793 of file CodeGenFunction.h.
References clang::CodeGen::InvariantValue< T >::save().
Referenced by pushCleanupAfterFullExpr(), and pushFullExprCleanup().
|
inline |
Definition at line 1312 of file CodeGenFunction.h.
References clang::CodeGen::Address::emitRawPointer(), clang::CodeGen::Address::getAlignment(), clang::CharUnits::getAsAlign(), clang::CodeGen::CodeGenFunction::ConditionalEvaluation::getStartingBlock(), and isInConditionalBranch().
Referenced by SetupCleanupBlockActivation().
void clang::CodeGen::CodeGenFunction::setBlockContextParameter | ( | const ImplicitParamDecl * | D, |
unsigned | argNum, | ||
llvm::Value * | ptr | ||
) |
|
inline |
Set the profiler's current count.
Definition at line 1693 of file CodeGenFunction.h.
void clang::CodeGen::CodeGenFunction::SetDivFPAccuracy | ( | llvm::Value * | Val | ) |
Set the minimum required accuracy of the given sqrt operation based on CodeGenOpts.
void clang::CodeGen::CodeGenFunction::SetFastMathFlags | ( | FPOptions | FPFeatures | ) |
Set the codegen fast-math flags.
void clang::CodeGen::CodeGenFunction::SetFPAccuracy | ( | llvm::Value * | Val, |
float | Accuracy | ||
) |
SetFPAccuracy - Set the minimum required accuracy of the given floating point operation, expressed as the maximum relative error in ulp.
void clang::CodeGen::CodeGenFunction::SetSqrtFPAccuracy | ( | llvm::Value * | Val | ) |
Set the minimum required accuracy of the given sqrt operation based on CodeGenOpts.
bool clang::CodeGen::CodeGenFunction::ShouldEmitVTableTypeCheckedLoad | ( | const CXXRecordDecl * | RD | ) |
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.
bool clang::CodeGen::CodeGenFunction::ShouldInstrumentFunction | ( | ) |
ShouldInstrumentFunction - Return true if the current function should be instrumented with __cyg_profile_func_* calls.
|
static |
Referenced by EmitPointerWithAlignment().
bool clang::CodeGen::CodeGenFunction::ShouldSkipSanitizerInstrumentation | ( | ) |
ShouldSkipSanitizerInstrumentation - Return true if the current function should not be instrumented with sanitizers.
|
inline |
Definition at line 2147 of file CodeGenFunction.h.
References CGM, and clang::CodeGen::CodeGenModule::getCodeGenOpts().
Referenced by emitAutoreleaseOfResult().
bool clang::CodeGen::CodeGenFunction::ShouldXRayInstrumentFunction | ( | ) | const |
ShouldXRayInstrument - Return true if the current function should be instrumented with XRay nop sleds.
void clang::CodeGen::CodeGenFunction::SimplifyForwardingBlocks | ( | llvm::BasicBlock * | BB | ) |
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.
llvm::DebugLoc clang::CodeGen::CodeGenFunction::SourceLocToDebugLoc | ( | SourceLocation | Location | ) |
Converts Location to a DebugLoc, if debug information is enabled.
Referenced by clang::CodeGen::CGOpenMPRuntimeGPU::emitReduction().
void clang::CodeGen::CodeGenFunction::StartFunction | ( | GlobalDecl | GD, |
QualType | RetTy, | ||
llvm::Function * | Fn, | ||
const CGFunctionInfo & | FnInfo, | ||
const FunctionArgList & | Args, | ||
SourceLocation | Loc = SourceLocation() , |
||
SourceLocation | StartLoc = SourceLocation() |
||
) |
Emit code for the start of a function.
Loc | The location to be associated with the function. |
StartLoc | The location of the function body. |
Referenced by emitCombinerOrInitializer(), emitCopyprivateCopyFunction(), emitDestructorsFunction(), emitOutlinedFunctionPrologue(), emitProxyTaskFunction(), emitReduceCombFunction(), emitReduceFiniFunction(), emitReduceInitFunction(), clang::CodeGen::CGOpenMPRuntime::emitReductionFunction(), emitTaskDupFunction(), emitTaskPrivateMappingFunction(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), generateByrefCopyHelper(), and generateByrefDisposeHelper().
void clang::CodeGen::CodeGenFunction::StartObjCMethod | ( | const ObjCMethodDecl * | MD, |
const ObjCContainerDecl * | CD | ||
) |
void clang::CodeGen::CodeGenFunction::startOutlinedSEHHelper | ( | CodeGenFunction & | ParentCGF, |
bool | IsFilter, | ||
const Stmt * | OutlinedStmt | ||
) |
Referenced by clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt().
void clang::CodeGen::CodeGenFunction::StartThunk | ( | llvm::Function * | Fn, |
GlobalDecl | GD, | ||
const CGFunctionInfo & | FnInfo, | ||
bool | IsUnprototyped | ||
) |
Ignore parentheses and logical-NOT to track conditions consistently.
Referenced by clang::CodeGen::CodeGenPGO::emitMCDCCondBitmapUpdate().
llvm::Type * clang::CodeGen::CodeGenFunction::SVEBuiltinMemEltTy | ( | const SVETypeFlags & | TypeFlags | ) |
SVEBuiltinMemEltTy - Returns the memory element type for this memory access builtin.
Only required if it can't be inferred from the base pointer operand.
ConstantEmission clang::CodeGen::CodeGenFunction::tryEmitAsConstant | ( | const MemberExpr * | ME | ) |
ConstantEmission clang::CodeGen::CodeGenFunction::tryEmitAsConstant | ( | DeclRefExpr * | refExpr | ) |
Referenced by tryEmitARCRetainLoadOfScalar().
QualType clang::CodeGen::CodeGenFunction::TypeOfSelfObject | ( | ) |
TypeOfSelfObject - Return type of object that this self represents.
Referenced by emitCPPObjectAtomicGetterCall(), emitCPPObjectAtomicSetterCall(), emitStructGetterCall(), and emitStructSetterCall().
void clang::CodeGen::CodeGenFunction::unprotectFromPeepholes | ( | PeepholeProtection | protection | ) |
llvm::Value * clang::CodeGen::CodeGenFunction::unregisterGlobalDtorWithUnAtExit | ( | llvm::Constant * | dtorStub | ) |
Call unatexit() with function dtorStub.
llvm::Value * clang::CodeGen::CodeGenFunction::vectorWrapScalar16 | ( | llvm::Value * | Op | ) |
void clang::CodeGen::CodeGenFunction::VolatilizeTryBlocks | ( | llvm::BasicBlock * | BB, |
llvm::SmallPtrSet< llvm::BasicBlock *, 10 > & | V | ||
) |
|
friend |
Definition at line 260 of file CodeGenFunction.h.
llvm::AssertingVH<llvm::Instruction> clang::CodeGen::CodeGenFunction::AllocaInsertPt |
AllocaInsertPoint - This is an instruction in the entry block before which we prefer to insert allocas.
Definition at line 429 of file CodeGenFunction.h.
Referenced by emitOffloadingArraysAndArgs(), emitOMPForDirective(), clang::CodeGen::CGOpenMPRuntimeGPU::emitReduction(), emitTargetCallKernelLaunch(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataCalls(), getPostAllocaInsertPoint(), clang::CodeGen::CGOpenMPRuntime::getThreadID(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::InlinedRegionBodyRAII::InlinedRegionBodyRAII(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::OutlinedRegionBodyRAII::OutlinedRegionBodyRAII(), clang::CodeGen::CGOpenMPRuntime::setLocThreadIdInsertPt(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::InlinedRegionBodyRAII::~InlinedRegionBodyRAII(), and clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::OutlinedRegionBodyRAII::~OutlinedRegionBodyRAII().
In ARC, whether we should autorelease the return value.
Definition at line 590 of file CodeGenFunction.h.
const CodeGen::CGBlockInfo* clang::CodeGen::CodeGenFunction::BlockInfo = nullptr |
Definition at line 645 of file CodeGenFunction.h.
Referenced by getCaptureFieldType().
llvm::Value* clang::CodeGen::CodeGenFunction::BlockPointer = nullptr |
Definition at line 646 of file CodeGenFunction.h.
CGBuilderTy clang::CodeGen::CodeGenFunction::Builder |
Definition at line 294 of file CodeGenFunction.h.
Referenced by AdjustObjCObjectType(), clang::CodeGen::ReductionCodeGen::adjustPrivateAddress(), clang::CodeGen::CallArgList::allocateArgumentMemory(), clang::CodeGen::ApplyDebugLocation::ApplyDebugLocation(), clang::CodeGen::ApplyInlineDebugLocation::ApplyInlineDebugLocation(), ApplyNonVirtualAndVirtualOffset(), BuildAppleKextVirtualCall(), castToBase(), castValueToType(), CheckAggExprForMemSetUse(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitLastprivateConditional(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitSharedLastprivateConditional(), CoerceIntOrPtrToIntOrPtr(), complexTempStructure(), CreateCoercedLoad(), clang::CodeGen::TargetCodeGenInfo::createEnqueuedBlockKernel(), CreateMultiVersionResolverReturn(), createPlaceholderSlot(), clang::CodeGen::CatchRetScope::Emit(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::OMPAllocateCleanupTy::Emit(), EmitAArch64TblBuiltinExpr(), EmitAbs(), emitAddressAtOffset(), emitAddrOfFieldStorage(), emitAddrOfVarFromArray(), emitAddrOfZeroSizeField(), clang::CodeGen::ReductionCodeGen::emitAggregateType(), EmitAMDGCNBallotForExec(), emitARCCopyOperation(), emitARCOperationAfterCall(), emitARCStoreOperation(), emitARCValueOperation(), emitArgumentDemotion(), EmitArrayDelete(), emitArraySubscriptGEP(), EmitAsmStores(), emitAtomicCmpXchg(), EmitAtomicCmpXchg128ForMSIntrin(), emitAtomicCmpXchgFailureSet(), EmitAtomicCmpXchgForMSIntrin(), EmitAtomicDecrementValue(), EmitAtomicIncrementValue(), EmitAtomicOp(), clang::CodeGen::CGObjCRuntime::EmitAtSynchronizedStmt(), emitAutoreleasedReturnValueMarker(), clang::CodeGen::CGOpenMPRuntime::emitBarrierCall(), EmitBinaryAtomicPost(), emitBinaryExpMaybeConstrainedFPBuiltin(), emitBinaryMaybeConstrainedFPBuiltin(), EmitBitTestIntrinsic(), emitBodyAndFallthrough(), emitBuiltinWithOneOverloadedType(), emitCallMaybeConstrainedFPBuiltin(), clang::CodeGen::CGOpenMPRuntime::emitCancellationPointCall(), emitCapturedStmtCall(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::EmitCaptureStmt(), emitCatchDispatchBlock(), emitCatchPadBlock(), EmitCheckedMixedSignMultiply(), EmitCheckedUnsignedMultiplySignedResult(), emitCheckHandlerCall(), emitClauseForBareTargetDirective(), EmitCleanup(), emitCmdValueForGetterSetterBody(), EmitCommonNeonSISDBuiltinExpr(), emitCommonOMPTargetDirective(), emitCopyprivateCopyFunction(), clang::CodeGen::CGOpenMPRuntime::emitCriticalRegion(), clang::CodeGen::CGOpenMPRuntimeGPU::emitCriticalRegion(), EmitCXXNewAllocSize(), clang::CodeGen::CGOpenMPRuntime::emitDependClause(), emitDependData(), clang::CodeGen::CGOpenMPRuntime::emitDepobjDependClause(), clang::CodeGen::CGOpenMPRuntime::emitDepobjElements(), clang::CodeGen::CGOpenMPRuntime::emitDepobjElementsSizes(), clang::CodeGen::CGOpenMPRuntime::emitDestroyClause(), emitDeviceID(), emitDispatchForLoopBounds(), emitDistributeParallelForDistributeInnerBoundParams(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), EmitDoacrossOrdered(), EmitDynamicCastToNull(), emitDynamicTlsInitialization(), emitDynamicTlsInitializationCall(), emitDynCGGroupMem(), clang::CodeGen::CGOpenMPRuntime::emitErrorCall(), EmitFAbs(), emitFilterDispatchBlock(), clang::CodeGen::CGOpenMPRuntime::emitFlush(), clang::CodeGen::CGOpenMPRuntime::emitForDispatchInit(), emitForStaticInitCall(), emitFPIntBuiltin(), emitFrexpBuiltin(), EmitFromInt(), EmitGlobalVarDeclLValue(), EmitHipStdParUnsupportedAsm(), EmitHipStdParUnsupportedBuiltin(), clang::CodeGen::CGObjCRuntime::EmitInitOfCatchParam(), EmitISOVolatileLoad(), EmitISOVolatileStore(), emitIsPlatformVersionAtLeast(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalUpdate(), emitLibraryCall(), EmitllvmFAbs(), emitMaybeConstrainedFPToIntRoundBuiltin(), EmitMemberInitializer(), clang::CodeGen::CGCXXABI::EmitMemberPointerComparison(), clang::CodeGen::CGCXXABI::EmitMemberPointerIsNotNull(), clang::CodeGen::emitMergePHI(), EmitMSVCRTSetJmp(), emitNonZeroVLAInit(), EmitNullBaseClassInitialization(), clang::CodeGen::CGOpenMPRuntime::emitNumTeamsClause(), clang::CodeGen::CGOpenMPRuntime::emitNumTeamsForTargetDirective(), clang::CodeGen::CGOpenMPRuntime::emitNumThreadsClause(), clang::CodeGen::CGOpenMPRuntime::emitNumThreadsForTargetDirective(), emitObjCValueOperation(), emitOffloadingArraysAndArgs(), EmitOMPAggregateInit(), EmitOMPAggregateReduction(), emitOMPArraySectionBase(), emitOMPAtomicCompareExpr(), emitOMPAtomicRMW(), emitOMPForDirective(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::EmitOMPInlinedRegionBody(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::EmitOMPOutlinedRegionBody(), clang::CodeGen::CGOpenMPRuntimeGPU::emitOutlinedFunctionCall(), EmitOverflowCheckedAbs(), EmitOverflowIntrinsic(), clang::CodeGen::CGOpenMPRuntime::emitParallelCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitParallelCall(), emitPartialArrayDestroy(), emitPointerArithmetic(), EmitPointerAuthCommon(), EmitPointerWithAlignment(), emitPostUpdateForReductionClause(), emitPPCLoadReserveIntrinsic(), emitPreserveStructAccess(), emitPrivatesInit(), emitProxyTaskFunction(), emitRangedBuiltin(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), clang::CodeGen::CGOpenMPRuntimeGPU::emitReduction(), clang::CodeGen::CGOpenMPRuntime::emitReductionFunction(), emitRestoreIP(), clang::CodeGen::emitRoundPointerUpToAlignment(), EmitScalarFMAExpr(), emitScanBasedDirective(), emitScanBasedDirectiveDecls(), emitScanBasedDirectiveFinals(), EmitSehScope(), EmitSignBit(), clang::CodeGen::CGOpenMPRuntime::emitSingleRegion(), EmitSpecialRegisterBuiltin(), EmitStrip(), emitStructGetterCall(), emitStructSetterCall(), emitSuspendExpression(), EmitSystemZIntrinsicWithCC(), emitTargetCallFallback(), emitTargetCallKernelLaunch(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataCalls(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataStandAloneCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskLoopCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionFini(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionFixups(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskwaitCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskyieldCall(), clang::CodeGen::CGOpenMPRuntime::emitTeamsCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitTeamsCall(), emitTernaryMaybeConstrainedFPBuiltin(), clang::CodeGen::CGOpenMPRuntime::emitThreadLimitClause(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarInit(), emitTlsGuardCheck(), EmitToInt(), clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), EmitTypeidFromVTable(), clang::CodeGen::CGOpenMPRuntime::emitUDMapperArrayInitOrDel(), emitUnaryMaybeConstrainedFPBuiltin(), clang::CodeGen::CGOpenMPRuntime::emitUpdateClause(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsFini(), clang::CodeGen::CGOpenMPRuntime::emitUsesAllocatorsInit(), clang::CodeGen::EmitVAArgInstr(), clang::CodeGen::CGObjCRuntime::EmitValueForIvarAtOffset(), clang::CodeGen::emitVoidPtrDirectVAArg(), clang::CodeGen::emitVoidPtrVAArg(), emitWasmCatchPadBlock(), emitWriteback(), emitWritebackArg(), EmitX86_64VAArgFromMemory(), EmitX86BitTestIntrinsic(), EmitX86CompressExpand(), EmitX86CompressStore(), EmitX86ConvertIntToFp(), EmitX86CvtF16ToFloatExpr(), EmitX86ExpandLoad(), EmitX86FMAExpr(), EmitX86FunnelShift(), EmitX86MaskedCompare(), EmitX86MaskedCompareResult(), EmitX86MaskedLoad(), EmitX86MaskedStore(), EmitX86MaskLogic(), EmitX86Muldq(), EmitX86ScalarSelect(), EmitX86Select(), EmitX86SExtMask(), EmitX86Ternlog(), EmitX86vpcom(), clang::CodeGen::CodeGenFunction::FinallyInfo::enter(), EnterStructPointerForCoercedAccess(), clang::CodeGen::CodeGenFunction::FinallyInfo::exit(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::FinalizeOMPRegion(), findDominatingStoreToReturnValue(), forConstantArrayExpansion(), clang::CodeGen::CallArgList::freeArgumentMemory(), generateByrefCopyHelper(), generateByrefDisposeHelper(), clang::CodeGen::CodeGenModule::GenKernelArgMetadata(), genMapInfoForCaptures(), clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntimeGPU::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntime::getAddrOfArtificialThreadPrivate(), clang::CodeGen::CGOpenMPRuntime::getAddrOfThreadPrivate(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddrOfThreadPrivate(), GetAlignedMapping(), getArrayIndexingBound(), clang::CodeGen::getCXXDestructorImplicitParam(), clang::CodeGen::CGOpenMPRuntime::getDepobjElements(), getGEPIndicesToField(), clang::CodeGen::CGOpenMPRuntimeGPU::getGPUNumThreads(), clang::CodeGen::CGOpenMPRuntimeGPU::getKmpcAllocShared(), getMaskVecValue(), clang::CodeGen::CGOpenMPRuntimeGPU::getParameterAddress(), getPointerAndSize(), clang::CodeGen::Address::getResignedAddress(), clang::CodeGen::CGOpenMPRuntime::getTaskReductionItem(), clang::CodeGen::CGOpenMPRuntime::getThreadID(), clang::CodeGen::CodeGenModule::getVTablePointerAuthInfo(), HaveInsertPoint(), incrementProfileCounter(), InitCatchParam(), initializeAlloca(), clang::CodeGen::CodeGenFunction::LexicalScope::LexicalScope(), clang::CodeGen::CGCXXABI::loadIncomingCXXThis(), MakeAtomicCmpXchgValue(), MakeBinaryAtomicValue(), maybeCreateMCDCCondBitmap(), maybeResetMCDCCondBitmap(), maybeUpdateMCDCCondBitmap(), maybeUpdateMCDCTestVectorBitmap(), mergeAddressesInConditionalExpr(), packTBLDVectorList(), clang::CodeGen::TargetCodeGenInfo::performAddrSpaceCast(), PerformReturnAdjustment(), performTypeAdjustment(), PPC_initDwarfEHRegSizeTable(), pushCleanupAndDeferDeactivation(), clang::CodeGen::CGCXXABI::ReadArrayCookie(), ResolveAllBranchFixups(), clang::CodeGen::DominatingLLVMValue::restore(), clang::CodeGen::DominatingLLVMValue::save(), clang::CodeGen::CGOpenMPRuntime::setLocThreadIdInsertPt(), SetupCleanupBlockActivation(), clang::CodeGen::CodeGenFunction::OMPMapVars::setVarAddr(), SimplifyCleanupEntry(), tryEmitFusedAutoreleaseOfResult(), tryRemoveRetainOfSelf(), tryUseTestFPKind(), UpdateAsmCallInst(), wrapWithBPFPreserveStaticOffset(), clang::CodeGen::ApplyDebugLocation::~ApplyDebugLocation(), clang::CodeGen::ApplyInlineDebugLocation::~ApplyInlineDebugLocation(), and clang::CodeGen::CodeGenFunction::LexicalScope::~LexicalScope().
VarBypassDetector clang::CodeGen::CodeGenFunction::Bypasses |
Definition at line 298 of file CodeGenFunction.h.
CGCapturedStmtInfo* clang::CodeGen::CodeGenFunction::CapturedStmtInfo = nullptr |
Definition at line 530 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CGOpenMPRuntimeGPU::adjustTargetSpecificDataForLambdas(), clang::CodeGen::CodeGenFunction::CGCapturedStmtRAII::CGCapturedStmtRAII(), clang::CodeGen::CGOpenMPRuntime::emitBarrierCall(), clang::CodeGen::CGOpenMPRuntime::emitCancelCall(), clang::CodeGen::CGOpenMPRuntime::emitCancellationPointCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitFunctionProlog(), clang::CodeGen::CGOpenMPRuntime::emitInlinedDirective(), emitOutlinedOrderedFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskwaitCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskyieldCall(), clang::CodeGen::CGOpenMPRuntime::emitThreadIDAddress(), clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntime::getThreadID(), and clang::CodeGen::CodeGenFunction::CGCapturedStmtRAII::~CGCapturedStmtRAII().
CodeGenModule& clang::CodeGen::CodeGenFunction::CGM |
Definition at line 286 of file CodeGenFunction.h.
Referenced by AddVariableConstraints(), ApplyNonVirtualAndVirtualOffset(), ARMMVEVectorReinterpret(), BuildAppleKextVirtualCall(), buildFMulAdd(), CalculateCookiePadding(), CallBeginCatch(), callSpecialFunction(), canEmitDelegateCallArgs(), canEmitSpuriousReferenceToVariable(), CheckAtomicAlignment(), checkForLastprivateConditionalUpdate(), checkIfFunctionMustProgress(), CoerceIntOrPtrToIntOrPtr(), commonEmitCXXMemberOrOperatorCall(), complexTempStructure(), CreateCoercedLoad(), createCoroData(), clang::CodeGen::TargetCodeGenInfo::createEnqueuedBlockKernel(), createReferenceTemporary(), CreateTempAllocaForCoercion(), EmitAArch64TblBuiltinExpr(), emitAddrOfFieldStorage(), EmitAMDGCNBallotForExec(), emitARCCopyOperation(), emitARCLoadOperation(), emitARCStoreOperation(), emitARCValueOperation(), EmitArrayDelete(), EmitAsmStores(), emitAtomicLibcall(), EmitAtomicOp(), emitAutoreleasedReturnValueMarker(), clang::CodeGen::CGOpenMPRuntime::emitBarrierCall(), EmitBaseInitializer(), emitBinaryExpMaybeConstrainedFPBuiltin(), emitBinaryMaybeConstrainedFPBuiltin(), emitBuiltinWithOneOverloadedType(), emitCallMaybeConstrainedFPBuiltin(), emitCapturedStmtFunc(), emitCatchDispatchBlock(), emitCheckHandlerCall(), emitCommonOMPParallelDirective(), emitCommonOMPTargetDirective(), emitCommonOMPTeamsDirective(), emitCommonSimdLoop(), EmitCompare(), emitCPPObjectAtomicGetterCall(), emitCPPObjectAtomicSetterCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitCriticalRegion(), EmitCXXNewAllocSize(), EmitDeclDestroy(), EmitDeclInit(), emitDeclTargetVarDeclLValue(), emitDependData(), EmitDestroyingObjectDelete(), EmitDirectCallee(), EmitDynamicCastToNull(), emitDynamicTlsInitialization(), emitDynamicTlsInitializationCall(), EmitFAbs(), emitFilterDispatchBlock(), clang::CodeGen::CGOpenMPRuntime::emitFlush(), emitForStaticInitCall(), emitFPIntBuiltin(), emitFrexpBuiltin(), EmitFunctionDeclLValue(), clang::CodeGen::CGOpenMPRuntimeGPU::emitFunctionProlog(), emitGlobalDtorWithCXAAtExit(), emitGlobalDtorWithTLRegDtor(), EmitGlobalVarDeclLValue(), EmitHipStdParUnsupportedAsm(), EmitHipStdParUnsupportedBuiltin(), emitInitWithReductionInitializer(), emitIsPlatformVersionAtLeast(), emitLibraryCall(), EmitllvmFAbs(), EmitLoadOfReferenceLValue(), EmitLoadOfScalar(), emitMasked(), emitMaster(), emitMaybeConstrainedFPToIntRoundBuiltin(), EmitMemberInitializer(), EmitMSVCRTSetJmp(), EmitNewDeleteCall(), EmitNullBaseClassInitialization(), clang::CodeGen::CGOpenMPRuntime::emitNumTeamsClause(), emitObjCValueOperation(), EmitObjectDelete(), emitOffloadingArraysAndArgs(), emitOMPArraySectionBase(), emitOMPAtomicCaptureExpr(), emitOMPAtomicCompareExpr(), emitOMPAtomicReadExpr(), emitOMPAtomicRMW(), emitOMPAtomicUpdateExpr(), emitOMPAtomicWriteExpr(), emitOMPCopyinClause(), emitOMPDistributeDirective(), emitOMPForDirective(), emitOMPSimdDirective(), emitOMPSimdRegion(), emitOptimizedARCReturnCall(), emitOutlinedFunctionPrologue(), emitOutlinedOrderedFunction(), EmitOverflowIntrinsic(), clang::CodeGen::CGOpenMPRuntime::emitParallelCall(), emitPointerArithmetic(), EmitPointerAuthCommon(), EmitPointerWithAlignment(), emitPreserveStructAccess(), emitRangedBuiltin(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), emitReductionCombiner(), emitRestoreIP(), emitRTtypeidCall(), EmitScalarFMAExpr(), EmitSignBit(), EmitSpecialRegisterBuiltin(), EmitStoreOfScalar(), EmitStrip(), emitStructGetterCall(), emitStructSetterCall(), emitSuspendExpression(), EmitSystemZIntrinsicWithCC(), clang::CodeGen::CGOpenMPRuntime::emitTargetDataCalls(), emitTargetParallelRegion(), emitTargetRegion(), emitTargetTeamsDistributeParallelForRegion(), emitTargetTeamsDistributeParallelForSimdRegion(), emitTargetTeamsDistributeRegion(), emitTargetTeamsDistributeSimdRegion(), emitTargetTeamsGenericLoopRegionAsDistribute(), emitTargetTeamsGenericLoopRegionAsParallel(), emitTargetTeamsLoopCodegenStatus(), emitTargetTeamsRegion(), clang::CodeGen::CGOpenMPRuntime::emitTaskwaitCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskyieldCall(), clang::CodeGen::CGOpenMPRuntimeGPU::emitTeamsOutlinedFunction(), clang::CodeGen::CGCXXABI::emitTerminateForUnexpectedException(), emitTernaryMaybeConstrainedFPBuiltin(), clang::CodeGen::CGOpenMPRuntime::emitThreadLimitClause(), EmitThreadPrivateVarDeclLValue(), EmitTypeidFromVTable(), emitUnaryMaybeConstrainedFPBuiltin(), clang::CodeGen::CGObjCRuntime::EmitValueForIvarAtOffset(), clang::CodeGen::emitVoidPtrDirectVAArg(), clang::CodeGen::emitVoidPtrVAArg(), emitWasmCatchPadBlock(), emitWorksharingDirective(), emitWritebackArg(), EmitX86CompressExpand(), EmitX86CompressStore(), EmitX86ConvertIntToFp(), EmitX86CvtF16ToFloatExpr(), EmitX86ExpandLoad(), EmitX86FMAExpr(), EmitX86FunnelShift(), EmitX86Ternlog(), EnterStructPointerForCoercedAccess(), clang::CodeGen::CGCXXABI::ErrorUnsupportedABI(), generateByrefCopyHelper(), generateByrefDisposeHelper(), genMapInfo(), clang::CodeGen::EHPersonality::get(), clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddressOfLocalVariable(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddrOfThreadPrivate(), getAllocatorVal(), getARCCleanupKind(), getAsmSrcLocInfo(), getBadCastFn(), getBadTypeidFn(), getContext(), clang::CodeGen::CGOpenMPRuntimeGPU::getDefaultDistScheduleAndChunk(), getGEPIndicesToField(), clang::CodeGen::CGOpenMPRuntimeGPU::getGPUNumThreads(), getItaniumDynamicCastFn(), getLangOpts(), getLLVMContext(), getPrologueSignature(), getTargetHooks(), getTypes(), incrementProfileCounter(), InitCatchParam(), initializeAlloca(), isMCDCCoverageEnabled(), isProvablyNonNull(), loadToBegin(), MakeAddrLValue(), makeNaturalAddressForPointer(), makeNaturalAlignAddrLValue(), MakeRawAddrLValue(), needsEHCleanup(), packTBLDVectorList(), clang::CodeGen::TargetCodeGenInfo::performAddrSpaceCast(), PerformReturnAdjustment(), performTypeAdjustment(), clang::CodeGen::CGCallee::prepareConcreteCallee(), pushTemporaryCleanup(), clang::CodeGen::DominatingLLVMValue::save(), shouldUseFusedARCCalls(), tryEmitFusedAutoreleaseOfResult(), tryEmitSpecializedAllocInit(), tryGenerateSpecializedMessageSend(), tryRemoveRetainOfSelf(), tryUseTestFPKind(), and wrapWithBPFPreserveStaticOffset().
SmallVector<llvm::IntrinsicInst *, 4> clang::CodeGen::CodeGenFunction::ConvergenceTokenStack |
Stack to track the controlled convergence tokens.
Definition at line 318 of file CodeGenFunction.h.
Referenced by addControlledConvergenceToken().
AwaitSuspendWrapperInfo clang::CodeGen::CodeGenFunction::CurAwaitSuspendWrapper |
Definition at line 385 of file CodeGenFunction.h.
const Decl* clang::CodeGen::CodeGenFunction::CurCodeDecl = nullptr |
CurCodeDecl - This is the inner-most code context, which includes blocks.
Definition at line 352 of file CodeGenFunction.h.
Referenced by canEmitSpuriousReferenceToVariable(), clang::CodeGen::CGObjCRuntime::canMessageReceiverBeNull(), emitPrivatesInit(), clang::CodeGen::CGCXXABI::ErrorUnsupportedABI(), clang::CodeGen::EHPersonality::get(), clang::CodeGen::getCXXDestructorImplicitParam(), clang::CodeGen::CodeGenFunction::InlinedInheritingConstructorScope::InlinedInheritingConstructorScope(), and tryRemoveRetainOfSelf().
CGCoroInfo clang::CodeGen::CodeGenFunction::CurCoro |
Definition at line 369 of file CodeGenFunction.h.
Referenced by createCoroData(), emitSuspendExpression(), inSuspendBlock(), and isCoroutine().
llvm::Function* clang::CodeGen::CodeGenFunction::CurFn = nullptr |
Definition at line 355 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CGOpenMPRuntime::checkAndEmitLastprivateConditional(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitSharedLastprivateConditional(), clang::CodeGen::CGOpenMPRuntime::clearLocThreadIdInsertPt(), emitAtomicCmpXchg(), emitAtomicCmpXchgFailureSet(), EmitAtomicOp(), EmitDirectCallee(), emitDynamicTlsInitialization(), clang::CodeGen::CGOpenMPRuntimeGPU::emitFunctionProlog(), EmitIfUsed(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalInit(), clang::CodeGen::CGOpenMPRuntime::emitReduction(), clang::CodeGen::CGOpenMPRuntimeGPU::emitReduction(), emitSuspendExpression(), clang::CodeGen::CGOpenMPRuntimeGPU::emitTeamsOutlinedFunction(), clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedReduction(), clang::CodeGen::CGOpenMPRuntime::functionFinished(), clang::CodeGen::CGOpenMPRuntimeGPU::functionFinished(), clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntimeGPU::getAddressOfLocalVariable(), clang::CodeGen::getCXXDestructorImplicitParam(), clang::CodeGen::CGOpenMPRuntime::getOutlinedHelperName(), clang::CodeGen::CGOpenMPRuntime::getThreadID(), incrementProfileCounter(), clang::CodeGen::CGOpenMPRuntimeGPU::isDelayedVariableLengthDecl(), clang::CodeGen::CGOpenMPRuntime::isLocalVarInUntiedTask(), isMCDCCoverageEnabled(), clang::CodeGen::CGOpenMPRuntime::setLocThreadIdInsertPt(), and clang::CodeGen::CGOpenMPRuntime::UntiedTaskLocalDeclsRAII::UntiedTaskLocalDeclsRAII().
const CGFunctionInfo* clang::CodeGen::CodeGenFunction::CurFnInfo = nullptr |
Definition at line 353 of file CodeGenFunction.h.
FPOptions clang::CodeGen::CodeGenFunction::CurFPFeatures |
Definition at line 811 of file CodeGenFunction.h.
const Decl* clang::CodeGen::CodeGenFunction::CurFuncDecl = nullptr |
CurFuncDecl - Holds the Decl for the current outermost non-closure context.
Definition at line 350 of file CodeGenFunction.h.
Referenced by computeBlockInfo(), emitCommonOMPTargetDirective(), clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), clang::CodeGen::CGOpenMPRuntime::emitUpdateLocation(), clang::CodeGen::getCXXDestructorImplicitParam(), getIdentStringFromSourceLocation(), and clang::CodeGen::CodeGenFunction::InlinedInheritingConstructorScope::InlinedInheritingConstructorScope().
In C++, whether we are code generating a thunk.
This controls whether we should emit cleanups.
Definition at line 587 of file CodeGenFunction.h.
GlobalDecl clang::CodeGen::CodeGenFunction::CurGD |
CurGD - The GlobalDecl for the current function being compiled.
Definition at line 399 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CGCXXABI::buildThisParam(), EmitMemberInitializer(), and clang::CodeGen::CodeGenFunction::InlinedInheritingConstructorScope::InlinedInheritingConstructorScope().
EHScopeStack::stable_iterator clang::CodeGen::CodeGenFunction::CurrentCleanupScopeDepth |
Definition at line 1026 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CodeGenFunction::RunCleanupsScope::RunCleanupsScope().
llvm::Instruction* clang::CodeGen::CodeGenFunction::CurrentFuncletPad = nullptr |
Definition at line 704 of file CodeGenFunction.h.
Referenced by emitCatchPadBlock(), EmitSehScope(), clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), emitWasmCatchPadBlock(), getBundlesForCoroEnd(), and isCleanupPadScope().
GlobalDecl clang::CodeGen::CodeGenFunction::CurSEHParent |
Definition at line 596 of file CodeGenFunction.h.
Referenced by currentFunctionUsesSEHTry(), clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), and clang::CodeGen::EHPersonality::get().
CurrentSourceLocExprScope clang::CodeGen::CodeGenFunction::CurSourceLocExprScope |
Source location information about the default argument or member initializer expression we're evaluating, if any.
Definition at line 1747 of file CodeGenFunction.h.
llvm::SmallVector<DeferredDeactivateCleanup> clang::CodeGen::CodeGenFunction::DeferredDeactivationCleanupStack |
Definition at line 670 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CodeGenFunction::CleanupDeactivationScope::ForceDeactivate(), and pushCleanupAndDeferDeactivation().
|
static |
Definition at line 4799 of file CodeGenFunction.h.
Referenced by EmitAutoVarWithLifetime(), pushCaptureCleanup(), and pushTemporaryCleanup().
|
static |
Definition at line 4800 of file CodeGenFunction.h.
Referenced by EmitAutoVarWithLifetime(), and pushTemporaryCleanup().
|
static |
Definition at line 4801 of file CodeGenFunction.h.
Referenced by EmitAutoVarWithLifetime(), and pushTemporaryCleanup().
|
static |
Definition at line 3180 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CGObjCRuntime::destroyCalleeDestroyedArguments(), and pushTemporaryCleanup().
|
static |
Definition at line 4803 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CGObjCRuntime::destroyCalleeDestroyedArguments().
llvm::BasicBlock* clang::CodeGen::CodeGenFunction::EHResumeBlock = nullptr |
EHResumeBlock - Unified block containing a call to llvm.eh.resume.
Definition at line 743 of file CodeGenFunction.h.
llvm::AllocaInst* clang::CodeGen::CodeGenFunction::EHSelectorSlot = nullptr |
The selector slot.
Under the MandatoryCleanup model, all landing pads write the current selector value into this alloca.
Definition at line 751 of file CodeGenFunction.h.
EHScopeStack clang::CodeGen::CodeGenFunction::EHStack |
Definition at line 655 of file CodeGenFunction.h.
Referenced by CallBeginCatch(), EmitArrayDelete(), clang::CodeGen::CGObjCRuntime::EmitAtSynchronizedStmt(), EmitBaseInitializer(), emitCXXDestructMethod(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), clang::CodeGen::CGOpenMPRuntimeGPU::emitFunctionProlog(), EmitObjectDelete(), clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt(), clang::CodeGen::CodeGenFunction::FinallyInfo::enter(), EnterNewDeleteCleanup(), clang::CodeGen::CodeGenFunction::FinallyInfo::exit(), clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddressOfLocalVariable(), getInvokeDest(), getJumpDestInCurrentScope(), clang::CodeGen::CGOpenMPRuntime::getThreadID(), InitCatchParam(), clang::CodeGen::RegionCodeGenTy::operator()(), pushCleanupAndDeferDeactivation(), pushFullExprCleanup(), clang::CodeGen::CodeGenFunction::RunCleanupsScope::requiresCleanups(), clang::CodeGen::CodeGenFunction::LexicalScope::rescopeLabels(), ResolveAllBranchFixups(), clang::CodeGen::CodeGenFunction::RunCleanupsScope::RunCleanupsScope(), and SetupCleanupBlockActivation().
|
static |
Definition at line 4802 of file CodeGenFunction.h.
llvm::Value* clang::CodeGen::CodeGenFunction::ExceptionSlot = nullptr |
The exception slot.
All landing pads write the current exception pointer into this alloca.
Definition at line 747 of file CodeGenFunction.h.
int clang::CodeGen::CodeGenFunction::ExpectedOMPLoopDepth = 0 |
Number of nested loop to be consumed by the last surrounding loop-associated directive.
Definition at line 322 of file CodeGenFunction.h.
llvm::SmallVector<const ParmVarDecl *, 4> clang::CodeGen::CodeGenFunction::FnArgs |
Save Parameter Decl for coroutine.
Definition at line 358 of file CodeGenFunction.h.
QualType clang::CodeGen::CodeGenFunction::FnRetTy |
Definition at line 354 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CodeGenFunction::InlinedInheritingConstructorScope::InlinedInheritingConstructorScope().
True if the current statement has always_inline attribute.
Definition at line 613 of file CodeGenFunction.h.
True if the current statement has noconvergent attribute.
Definition at line 616 of file CodeGenFunction.h.
True if the current statement has noinline attribute.
Definition at line 610 of file CodeGenFunction.h.
True if the current statement has nomerge attribute.
Definition at line 607 of file CodeGenFunction.h.
True if CodeGen currently emits code inside presereved access index region.
Definition at line 604 of file CodeGenFunction.h.
Referenced by emitArraySubscriptGEP().
True if the current function is an outlined SEH helper.
This can be a finally block or filter expression.
Definition at line 600 of file CodeGenFunction.h.
True if CodeGen currently emits code implementing sanitizer checks.
Definition at line 575 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CodeGenFunction::SanitizerScope::SanitizerScope().
Definition at line 648 of file CodeGenFunction.h.
Referenced by emitPrivatesInit(), and getCaptureFieldType().
FieldDecl* clang::CodeGen::CodeGenFunction::LambdaThisCaptureField = nullptr |
Definition at line 649 of file CodeGenFunction.h.
llvm::SmallVector<char, 256> clang::CodeGen::CodeGenFunction::LifetimeExtendedCleanupStack |
Definition at line 656 of file CodeGenFunction.h.
Referenced by pushCleanupAfterFullExprWithActiveFlag(), and clang::CodeGen::CodeGenFunction::RunCleanupsScope::RunCleanupsScope().
LoopInfoStack clang::CodeGen::CodeGenFunction::LoopStack |
Definition at line 293 of file CodeGenFunction.h.
Referenced by emitCommonSimdLoop(), and emitSimdlenSafelenClause().
SmallVector<const BinaryOperator *, 16> clang::CodeGen::CodeGenFunction::MCDCLogOpStack |
Stack to track the Logical Operator recursion nest for MC/DC.
Definition at line 315 of file CodeGenFunction.h.
const CallExpr* clang::CodeGen::CodeGenFunction::MustTailCall = nullptr |
Definition at line 620 of file CodeGenFunction.h.
unsigned clang::CodeGen::CodeGenFunction::NextCleanupDestIndex = 1 |
Definition at line 740 of file CodeGenFunction.h.
Referenced by getJumpDestInCurrentScope().
RawAddress clang::CodeGen::CodeGenFunction::NormalCleanupDest = RawAddress::invalid() |
i32s containing the indexes of the cleanup destinations.
Definition at line 738 of file CodeGenFunction.h.
Referenced by destroyOptimisticNormalEntry().
llvm::DenseMap<const VarDecl *, llvm::Value *> clang::CodeGen::CodeGenFunction::NRVOFlags |
A mapping from NRVO variables to the flags used to indicate when the NRVO has been applied to this variable.
Definition at line 653 of file CodeGenFunction.h.
SmallVector<llvm::Value*, 8> clang::CodeGen::CodeGenFunction::ObjCEHValueStack |
ObjCEHValueStack - Stack of Objective-C exception values, used for rethrows.
Definition at line 816 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CGObjCRuntime::EmitTryCatchStmt().
llvm::BasicBlock* clang::CodeGen::CodeGenFunction::OMPAfterScanBlock = nullptr |
Definition at line 769 of file CodeGenFunction.h.
llvm::BasicBlock* clang::CodeGen::CodeGenFunction::OMPBeforeScanBlock = nullptr |
Definition at line 768 of file CodeGenFunction.h.
Definition at line 772 of file CodeGenFunction.h.
Referenced by emitOMPSimdDirective(), and emitScanBasedDirective().
SmallVector<llvm::CanonicalLoopInfo *, 4> clang::CodeGen::CodeGenFunction::OMPLoopNestStack |
List of recently emitted OMPCanonicalLoops.
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.
Definition at line 312 of file CodeGenFunction.h.
const OMPExecutableDirective* clang::CodeGen::CodeGenFunction::OMPParentLoopDirectiveForScan = nullptr |
Parent loop-based directive for scan directive.
Definition at line 767 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CodeGenFunction::ParentLoopDirectiveForScanRegion::ParentLoopDirectiveForScanRegion(), and clang::CodeGen::CodeGenFunction::ParentLoopDirectiveForScanRegion::~ParentLoopDirectiveForScanRegion().
llvm::BasicBlock* clang::CodeGen::CodeGenFunction::OMPScanDispatch = nullptr |
Definition at line 771 of file CodeGenFunction.h.
llvm::BasicBlock* clang::CodeGen::CodeGenFunction::OMPScanExitBlock = nullptr |
Definition at line 770 of file CodeGenFunction.h.
CodeGenFunction* clang::CodeGen::CodeGenFunction::ParentCGF = nullptr |
Definition at line 290 of file CodeGenFunction.h.
Referenced by emitCapturedStmtCall(), and emitCapturedStmtFunc().
EHScopeStack::stable_iterator clang::CodeGen::CodeGenFunction::PrologueCleanupDepth |
PrologueCleanupDepth - The cleanup depth enclosing all the cleanups associated with the parameters.
Definition at line 403 of file CodeGenFunction.h.
const Expr* clang::CodeGen::CodeGenFunction::RetExpr = nullptr |
If a return statement is being visited, this holds the return statment's result expression.
Definition at line 418 of file CodeGenFunction.h.
JumpDest clang::CodeGen::CodeGenFunction::ReturnBlock |
ReturnBlock - Unified return block.
Definition at line 406 of file CodeGenFunction.h.
Referenced by clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::OutlinedRegionBodyRAII::OutlinedRegionBodyRAII(), and clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::OutlinedRegionBodyRAII::~OutlinedRegionBodyRAII().
Address clang::CodeGen::CodeGenFunction::ReturnValue = Address::invalid() |
ReturnValue - The temporary alloca to hold the return value.
This is invalid iff the function has no return value.
Definition at line 410 of file CodeGenFunction.h.
Referenced by EmitCall(), emitProxyTaskFunction(), emitStructGetterCall(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), findDominatingStoreToReturnValue(), and clang::CodeGen::CodeGenFunction::InlinedInheritingConstructorScope::InlinedInheritingConstructorScope().
Address clang::CodeGen::CodeGenFunction::ReturnValuePointer = Address::invalid() |
ReturnValuePointer - The temporary alloca to hold a pointer to sret.
This is invalid if sret is not in use.
Definition at line 414 of file CodeGenFunction.h.
SanitizerSet clang::CodeGen::CodeGenFunction::SanOpts |
Sanitizers enabled for this function.
Definition at line 572 of file CodeGenFunction.h.
Referenced by emitPointerArithmetic(), and EmitPointerWithAlignment().
Whether we processed a Microsoft-style asm block during CodeGen.
These can potentially set the return value.
Definition at line 594 of file CodeGenFunction.h.
SmallVector<Address, 1> clang::CodeGen::CodeGenFunction::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.
Definition at line 756 of file CodeGenFunction.h.
llvm::Value* clang::CodeGen::CodeGenFunction::SEHInfo = nullptr |
Value returned by __exception_info intrinsic.
Definition at line 759 of file CodeGenFunction.h.
llvm::SmallVector<const JumpDest *, 2> clang::CodeGen::CodeGenFunction::SEHTryEpilogueStack |
Definition at line 702 of file CodeGenFunction.h.
Referenced by isSEHTryScope().
const TargetInfo& clang::CodeGen::CodeGenFunction::Target |
Definition at line 287 of file CodeGenFunction.h.
Referenced by getTarget().