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