• Home
  • Raw
  • Download

Lines Matching refs:CGF

74   void emitVirtualObjectDelete(CodeGenFunction &CGF, const CXXDeleteExpr *DE,
78 void emitRethrow(CodeGenFunction &CGF, bool isNoReturn) override;
79 void emitThrow(CodeGenFunction &CGF, const CXXThrowExpr *E) override;
81 void emitBeginCatch(CodeGenFunction &CGF, const CXXCatchStmt *C) override;
91 void EmitBadTypeidCall(CodeGenFunction &CGF) override;
92 llvm::Value *EmitTypeid(CodeGenFunction &CGF, QualType SrcRecordTy,
99 llvm::Value *EmitDynamicCastCall(CodeGenFunction &CGF, llvm::Value *Value,
104 llvm::Value *EmitDynamicCastToVoid(CodeGenFunction &CGF, llvm::Value *Value,
108 bool EmitBadCastCall(CodeGenFunction &CGF) override;
111 GetVirtualBaseClassOffset(CodeGenFunction &CGF, llvm::Value *This,
116 EmitCtorCompleteObjectHandler(CodeGenFunction &CGF,
119 void initializeHiddenVirtualInheritanceMembers(CodeGenFunction &CGF,
186 adjustThisArgumentForVirtualFunctionCall(CodeGenFunction &CGF, GlobalDecl GD,
190 void addImplicitStructorParams(CodeGenFunction &CGF, QualType &ResTy,
194 CodeGenFunction &CGF, GlobalDecl GD, llvm::Value *This) override;
196 void EmitInstanceFunctionProlog(CodeGenFunction &CGF) override;
198 unsigned addImplicitConstructorArgs(CodeGenFunction &CGF,
204 void EmitDestructorCall(CodeGenFunction &CGF, const CXXDestructorDecl *DD,
212 CodeGenFunction &CGF, const CXXRecordDecl *VTableClass,
223 llvm::Value *getVirtualFunctionPointer(CodeGenFunction &CGF, GlobalDecl GD,
227 llvm::Value *EmitVirtualDestructorCall(CodeGenFunction &CGF,
233 void adjustCallArgsForDestructorThunk(CodeGenFunction &CGF, GlobalDecl GD, in adjustCallArgsForDestructorThunk() argument
237 CallArgs.add(RValue::get(getStructorImplicitParamValue(CGF)), in adjustCallArgsForDestructorThunk()
266 llvm::Value *performThisAdjustment(CodeGenFunction &CGF, llvm::Value *This,
269 llvm::Value *performReturnAdjustment(CodeGenFunction &CGF, llvm::Value *Ret,
280 LValue EmitThreadLocalVarDeclLValue(CodeGenFunction &CGF, const VarDecl *VD,
283 void EmitGuardedInit(CodeGenFunction &CGF, const VarDecl &D,
286 void registerGlobalDtor(CodeGenFunction &CGF, const VarDecl &D,
316 llvm::Value *InitializeArrayCookie(CodeGenFunction &CGF,
321 llvm::Value *readArrayCookieImpl(CodeGenFunction &CGF,
466 llvm::Value *GetVBaseOffsetFromVBPtr(CodeGenFunction &CGF,
472 llvm::Value *GetVBaseOffsetFromVBPtr(CodeGenFunction &CGF, in GetVBaseOffsetFromVBPtr() argument
480 return GetVBaseOffsetFromVBPtr(CGF, Base, VBPOffset, VBTOffset, VBPtr); in GetVBaseOffsetFromVBPtr()
484 performBaseAdjustment(CodeGenFunction &CGF, llvm::Value *Value,
489 llvm::Value *AdjustVirtualBase(CodeGenFunction &CGF, const Expr *E,
509 void EmitVBPtrStores(CodeGenFunction &CGF, const CXXRecordDecl *RD);
547 llvm::Value *EmitMemberPointerComparison(CodeGenFunction &CGF,
553 llvm::Value *EmitMemberPointerIsNotNull(CodeGenFunction &CGF,
558 EmitMemberDataPointerAddress(CodeGenFunction &CGF, const Expr *E,
562 llvm::Value *EmitMemberPointerConversion(CodeGenFunction &CGF,
570 EmitLoadOfMemberFunctionPointer(CodeGenFunction &CGF, const Expr *E,
767 void MicrosoftCXXABI::emitVirtualObjectDelete(CodeGenFunction &CGF, in emitVirtualObjectDelete() argument
777 EmitVirtualDestructorCall(CGF, Dtor, DtorType, Ptr, /*CE=*/nullptr); in emitVirtualObjectDelete()
779 CGF.EmitDeleteCall(DE->getOperatorDelete(), MDThis, ElementType); in emitVirtualObjectDelete()
782 void MicrosoftCXXABI::emitRethrow(CodeGenFunction &CGF, bool isNoReturn) { in emitRethrow() argument
788 CGF.EmitNoreturnRuntimeCallOrInvoke(Fn, Args); in emitRethrow()
790 CGF.EmitRuntimeCallOrInvoke(Fn, Args); in emitRethrow()
796 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
797 CGF.EmitNounwindRuntimeCall( in Emit()
798 CGF.CGM.getIntrinsic(llvm::Intrinsic::eh_endcatch)); in Emit()
803 void MicrosoftCXXABI::emitBeginCatch(CodeGenFunction &CGF, in emitBeginCatch() argument
808 llvm::Value *Exn = CGF.getExceptionFromSlot(); in emitBeginCatch()
810 CGF.CGM.getIntrinsic(llvm::Intrinsic::eh_begincatch); in emitBeginCatch()
815 llvm::Value *Args[2] = {Exn, llvm::Constant::getNullValue(CGF.Int8PtrTy)}; in emitBeginCatch()
816 CGF.EmitNounwindRuntimeCall(BeginCatch, Args); in emitBeginCatch()
817 CGF.EHStack.pushCleanup<CallEndCatchMSVC>(NormalAndEHCleanup); in emitBeginCatch()
821 CodeGenFunction::AutoVarEmission var = CGF.EmitAutoVarAlloca(*CatchParam); in emitBeginCatch()
823 CGF.Builder.CreateBitCast(var.getObjectAddress(CGF), CGF.Int8PtrTy); in emitBeginCatch()
825 CGF.EmitNounwindRuntimeCall(BeginCatch, Args); in emitBeginCatch()
827 CGF.EHStack.pushCleanup<CallEndCatchMSVC>(NormalAndEHCleanup); in emitBeginCatch()
828 CGF.EmitAutoVarCleanups(var); in emitBeginCatch()
832 MicrosoftCXXABI::performBaseAdjustment(CodeGenFunction &CGF, llvm::Value *Value, in performBaseAdjustment() argument
834 Value = CGF.Builder.CreateBitCast(Value, CGF.Int8PtrTy); in performBaseAdjustment()
839 return std::make_pair(Value, llvm::ConstantInt::get(CGF.Int32Ty, 0)); in performBaseAdjustment()
849 CGF, Value, SrcDecl, PolymorphicBase->getType()->getAsCXXRecordDecl()); in performBaseAdjustment()
850 Value = CGF.Builder.CreateInBoundsGEP(Value, Offset); in performBaseAdjustment()
851 Offset = CGF.Builder.CreateTrunc(Offset, CGF.Int32Ty); in performBaseAdjustment()
862 static llvm::CallSite emitRTtypeidCall(CodeGenFunction &CGF, in emitRTtypeidCall() argument
864 llvm::Type *ArgTypes[] = {CGF.Int8PtrTy}; in emitRTtypeidCall()
866 llvm::FunctionType::get(CGF.Int8PtrTy, ArgTypes, false); in emitRTtypeidCall()
868 llvm::Constant *Fn = CGF.CGM.CreateRuntimeFunction(FTy, "__RTtypeid"); in emitRTtypeidCall()
869 return CGF.EmitRuntimeCallOrInvoke(Fn, Args); in emitRTtypeidCall()
872 void MicrosoftCXXABI::EmitBadTypeidCall(CodeGenFunction &CGF) { in EmitBadTypeidCall() argument
874 emitRTtypeidCall(CGF, llvm::Constant::getNullValue(CGM.VoidPtrTy)); in EmitBadTypeidCall()
876 CGF.Builder.CreateUnreachable(); in EmitBadTypeidCall()
879 llvm::Value *MicrosoftCXXABI::EmitTypeid(CodeGenFunction &CGF, in EmitTypeid() argument
884 std::tie(ThisPtr, Offset) = performBaseAdjustment(CGF, ThisPtr, SrcRecordTy); in EmitTypeid()
885 return CGF.Builder.CreateBitCast( in EmitTypeid()
886 emitRTtypeidCall(CGF, ThisPtr).getInstruction(), StdTypeInfoPtrTy); in EmitTypeid()
897 CodeGenFunction &CGF, llvm::Value *Value, QualType SrcRecordTy, in EmitDynamicCastCall() argument
899 llvm::Type *DestLTy = CGF.ConvertType(DestTy); in EmitDynamicCastCall()
902 CGF.CGM.GetAddrOfRTTIDescriptor(SrcRecordTy.getUnqualifiedType()); in EmitDynamicCastCall()
904 CGF.CGM.GetAddrOfRTTIDescriptor(DestRecordTy.getUnqualifiedType()); in EmitDynamicCastCall()
907 std::tie(Value, Offset) = performBaseAdjustment(CGF, Value, SrcRecordTy); in EmitDynamicCastCall()
915 llvm::Type *ArgTypes[] = {CGF.Int8PtrTy, CGF.Int32Ty, CGF.Int8PtrTy, in EmitDynamicCastCall()
916 CGF.Int8PtrTy, CGF.Int32Ty}; in EmitDynamicCastCall()
917 llvm::Constant *Function = CGF.CGM.CreateRuntimeFunction( in EmitDynamicCastCall()
918 llvm::FunctionType::get(CGF.Int8PtrTy, ArgTypes, false), in EmitDynamicCastCall()
922 llvm::ConstantInt::get(CGF.Int32Ty, DestTy->isReferenceType())}; in EmitDynamicCastCall()
923 Value = CGF.EmitRuntimeCallOrInvoke(Function, Args).getInstruction(); in EmitDynamicCastCall()
924 return CGF.Builder.CreateBitCast(Value, DestLTy); in EmitDynamicCastCall()
928 MicrosoftCXXABI::EmitDynamicCastToVoid(CodeGenFunction &CGF, llvm::Value *Value, in EmitDynamicCastToVoid() argument
932 std::tie(Value, Offset) = performBaseAdjustment(CGF, Value, SrcRecordTy); in EmitDynamicCastToVoid()
936 llvm::Type *ArgTypes[] = {CGF.Int8PtrTy}; in EmitDynamicCastToVoid()
937 llvm::Constant *Function = CGF.CGM.CreateRuntimeFunction( in EmitDynamicCastToVoid()
938 llvm::FunctionType::get(CGF.Int8PtrTy, ArgTypes, false), in EmitDynamicCastToVoid()
941 return CGF.EmitRuntimeCall(Function, Args); in EmitDynamicCastToVoid()
944 bool MicrosoftCXXABI::EmitBadCastCall(CodeGenFunction &CGF) { in EmitBadCastCall() argument
949 CodeGenFunction &CGF, llvm::Value *This, const CXXRecordDecl *ClassDecl, in GetVirtualBaseClassOffset() argument
963 GetVBaseOffsetFromVBPtr(CGF, This, VBPtrOffset, VBTableOffset); in GetVirtualBaseClassOffset()
965 CGF.Builder.CreateSExtOrBitCast(VBPtrToNewBase, CGM.PtrDiffTy); in GetVirtualBaseClassOffset()
966 return CGF.Builder.CreateNSWAdd(VBPtrOffset, VBPtrToNewBase); in GetVirtualBaseClassOffset()
1004 MicrosoftCXXABI::EmitCtorCompleteObjectHandler(CodeGenFunction &CGF, in EmitCtorCompleteObjectHandler() argument
1006 llvm::Value *IsMostDerivedClass = getStructorImplicitParamValue(CGF); in EmitCtorCompleteObjectHandler()
1010 CGF.Builder.CreateIsNotNull(IsMostDerivedClass, "is_complete_object"); in EmitCtorCompleteObjectHandler()
1012 llvm::BasicBlock *CallVbaseCtorsBB = CGF.createBasicBlock("ctor.init_vbases"); in EmitCtorCompleteObjectHandler()
1013 llvm::BasicBlock *SkipVbaseCtorsBB = CGF.createBasicBlock("ctor.skip_vbases"); in EmitCtorCompleteObjectHandler()
1014 CGF.Builder.CreateCondBr(IsCompleteObject, in EmitCtorCompleteObjectHandler()
1017 CGF.EmitBlock(CallVbaseCtorsBB); in EmitCtorCompleteObjectHandler()
1020 EmitVBPtrStores(CGF, RD); in EmitCtorCompleteObjectHandler()
1028 CodeGenFunction &CGF, const CXXRecordDecl *RD) { in initializeHiddenVirtualInheritanceMembers() argument
1045 CGBuilderTy &Builder = CGF.Builder; in initializeHiddenVirtualInheritanceMembers()
1048 cast<llvm::PointerType>(getThisValue(CGF)->getType())->getAddressSpace(); in initializeHiddenVirtualInheritanceMembers()
1057 GetVirtualBaseClassOffset(CGF, getThisValue(CGF), RD, I->first); in initializeHiddenVirtualInheritanceMembers()
1060 VBaseOffset = Builder.CreateTruncOrBitCast(VBaseOffset, CGF.Int32Ty); in initializeHiddenVirtualInheritanceMembers()
1070 Int8This = Builder.CreateBitCast(getThisValue(CGF), in initializeHiddenVirtualInheritanceMembers()
1071 CGF.Int8Ty->getPointerTo(AS)); in initializeHiddenVirtualInheritanceMembers()
1076 VtorDispPtr, CGF.Int32Ty->getPointerTo(AS), "vtordisp.ptr"); in initializeHiddenVirtualInheritanceMembers()
1107 void MicrosoftCXXABI::EmitVBPtrStores(CodeGenFunction &CGF, in EmitVBPtrStores() argument
1110 CGF.Builder.CreateBitCast(getThisValue(CGF), CGM.Int8PtrTy, "this.int8"); in EmitVBPtrStores()
1125 CGF.Builder.CreateConstInBoundsGEP1_64(ThisInt8Ptr, Offs.getQuantity()); in EmitVBPtrStores()
1127 CGF.Builder.CreateConstInBoundsGEP2_32(GV->getValueType(), GV, 0, 0); in EmitVBPtrStores()
1128 VBPtr = CGF.Builder.CreateBitCast(VBPtr, GVPtr->getType()->getPointerTo(0), in EmitVBPtrStores()
1130 CGF.Builder.CreateStore(GVPtr, VBPtr); in EmitVBPtrStores()
1203 CodeGenFunction &CGF, GlobalDecl GD, llvm::Value *This, bool VirtualCall) { in adjustThisArgumentForVirtualFunctionCall() argument
1212 llvm::Type *charPtrTy = CGF.Int8Ty->getPointerTo(AS); in adjustThisArgumentForVirtualFunctionCall()
1213 This = CGF.Builder.CreateBitCast(This, charPtrTy); in adjustThisArgumentForVirtualFunctionCall()
1215 return CGF.Builder.CreateConstGEP1_32(This, Adjustment.getQuantity()); in adjustThisArgumentForVirtualFunctionCall()
1236 llvm::Type *charPtrTy = CGF.Int8Ty->getPointerTo(AS); in adjustThisArgumentForVirtualFunctionCall()
1246 This = CGF.Builder.CreateBitCast(This, charPtrTy); in adjustThisArgumentForVirtualFunctionCall()
1248 GetVirtualBaseClassOffset(CGF, This, MD->getParent(), ML.VBase); in adjustThisArgumentForVirtualFunctionCall()
1249 This = CGF.Builder.CreateInBoundsGEP(This, VBaseOffset); in adjustThisArgumentForVirtualFunctionCall()
1253 This = CGF.Builder.CreateBitCast(This, charPtrTy); in adjustThisArgumentForVirtualFunctionCall()
1259 This = CGF.Builder.CreateConstGEP1_32(This, StaticOffset.getQuantity()); in adjustThisArgumentForVirtualFunctionCall()
1261 This = CGF.Builder.CreateConstInBoundsGEP1_32(CGF.Int8Ty, This, in adjustThisArgumentForVirtualFunctionCall()
1268 void MicrosoftCXXABI::addImplicitStructorParams(CodeGenFunction &CGF, in addImplicitStructorParams() argument
1272 const CXXMethodDecl *MD = cast<CXXMethodDecl>(CGF.CurGD.getDecl()); in addImplicitStructorParams()
1277 CGF.CurGD.getDecl()->getLocation(), in addImplicitStructorParams()
1287 getStructorImplicitParamDecl(CGF) = IsMostDerived; in addImplicitStructorParams()
1288 } else if (isDeletingDtor(CGF.CurGD)) { in addImplicitStructorParams()
1291 CGF.CurGD.getDecl()->getLocation(), in addImplicitStructorParams()
1295 getStructorImplicitParamDecl(CGF) = ShouldDelete; in addImplicitStructorParams()
1300 CodeGenFunction &CGF, GlobalDecl GD, llvm::Value *This) { in adjustThisParameterInVirtualFunctionPrologue() argument
1311 llvm::Type *charPtrTy = CGF.Int8Ty->getPointerTo(AS), in adjustThisParameterInVirtualFunctionPrologue()
1314 This = CGF.Builder.CreateBitCast(This, charPtrTy); in adjustThisParameterInVirtualFunctionPrologue()
1316 This = CGF.Builder.CreateConstInBoundsGEP1_32(CGF.Int8Ty, This, in adjustThisParameterInVirtualFunctionPrologue()
1318 return CGF.Builder.CreateBitCast(This, thisTy); in adjustThisParameterInVirtualFunctionPrologue()
1321 void MicrosoftCXXABI::EmitInstanceFunctionProlog(CodeGenFunction &CGF) { in EmitInstanceFunctionProlog() argument
1322 EmitThisParam(CGF); in EmitInstanceFunctionProlog()
1332 if (HasThisReturn(CGF.CurGD)) in EmitInstanceFunctionProlog()
1333 CGF.Builder.CreateStore(getThisValue(CGF), CGF.ReturnValue); in EmitInstanceFunctionProlog()
1334 else if (hasMostDerivedReturn(CGF.CurGD)) in EmitInstanceFunctionProlog()
1335 CGF.Builder.CreateStore(CGF.EmitCastToVoidPtr(getThisValue(CGF)), in EmitInstanceFunctionProlog()
1336 CGF.ReturnValue); in EmitInstanceFunctionProlog()
1338 const CXXMethodDecl *MD = cast<CXXMethodDecl>(CGF.CurGD.getDecl()); in EmitInstanceFunctionProlog()
1340 assert(getStructorImplicitParamDecl(CGF) && in EmitInstanceFunctionProlog()
1342 getStructorImplicitParamValue(CGF) in EmitInstanceFunctionProlog()
1343 = CGF.Builder.CreateLoad( in EmitInstanceFunctionProlog()
1344 CGF.GetAddrOfLocalVar(getStructorImplicitParamDecl(CGF)), in EmitInstanceFunctionProlog()
1348 if (isDeletingDtor(CGF.CurGD)) { in EmitInstanceFunctionProlog()
1349 assert(getStructorImplicitParamDecl(CGF) && in EmitInstanceFunctionProlog()
1351 getStructorImplicitParamValue(CGF) in EmitInstanceFunctionProlog()
1352 = CGF.Builder.CreateLoad( in EmitInstanceFunctionProlog()
1353 CGF.GetAddrOfLocalVar(getStructorImplicitParamDecl(CGF)), in EmitInstanceFunctionProlog()
1359 CodeGenFunction &CGF, const CXXConstructorDecl *D, CXXCtorType Type, in addImplicitConstructorArgs() argument
1383 void MicrosoftCXXABI::EmitDestructorCall(CodeGenFunction &CGF, in EmitDestructorCall() argument
1392 This = adjustThisArgumentForVirtualFunctionCall(CGF, GlobalDecl(DD, Type), in EmitDestructorCall()
1396 CGF.EmitCXXStructorCall(DD, Callee, ReturnValueSlot(), This, in EmitDestructorCall()
1428 CodeGenFunction &CGF, const CXXRecordDecl *VTableClass, BaseSubobject Base, in getVTableAddressPointInStructor() argument
1587 llvm::Value *MicrosoftCXXABI::getVirtualFunctionPointer(CodeGenFunction &CGF, in getVirtualFunctionPointer() argument
1592 CGBuilderTy &Builder = CGF.Builder; in getVirtualFunctionPointer()
1596 adjustThisArgumentForVirtualFunctionCall(CGF, GD, This, true); in getVirtualFunctionPointer()
1597 llvm::Value *VTable = CGF.GetVTablePtr(VPtr, Ty); in getVirtualFunctionPointer()
1607 CodeGenFunction &CGF, const CXXDestructorDecl *Dtor, CXXDtorType DtorType, in EmitVirtualDestructorCall() argument
1617 llvm::Type *Ty = CGF.CGM.getTypes().GetFunctionType(*FInfo); in EmitVirtualDestructorCall()
1618 llvm::Value *Callee = getVirtualFunctionPointer(CGF, GD, This, Ty); in EmitVirtualDestructorCall()
1622 llvm::IntegerType::getInt32Ty(CGF.getLLVMContext()), in EmitVirtualDestructorCall()
1625 This = adjustThisArgumentForVirtualFunctionCall(CGF, GD, This, true); in EmitVirtualDestructorCall()
1626 RValue RV = CGF.EmitCXXStructorCall(Dtor, Callee, ReturnValueSlot(), This, in EmitVirtualDestructorCall()
1702 CodeGenFunction CGF(CGM); in EmitVirtualMemPtrThunk() local
1703 CGF.CurGD = GlobalDecl(MD); in EmitVirtualMemPtrThunk()
1704 CGF.CurFuncIsThunk = true; in EmitVirtualMemPtrThunk()
1709 buildThisParam(CGF, FunctionArgs); in EmitVirtualMemPtrThunk()
1712 CGF.StartFunction(GlobalDecl(), FnInfo.getReturnType(), ThunkFn, FnInfo, in EmitVirtualMemPtrThunk()
1714 EmitThisParam(CGF); in EmitVirtualMemPtrThunk()
1718 llvm::Value *VTable = CGF.GetVTablePtr( in EmitVirtualMemPtrThunk()
1719 getThisValue(CGF), ThunkTy->getPointerTo()->getPointerTo()); in EmitVirtualMemPtrThunk()
1721 CGF.Builder.CreateConstInBoundsGEP1_64(VTable, ML.Index, "vfn"); in EmitVirtualMemPtrThunk()
1722 llvm::Value *Callee = CGF.Builder.CreateLoad(VFuncPtr); in EmitVirtualMemPtrThunk()
1724 CGF.EmitMustTailThunk(MD, getThisValue(CGF), Callee); in EmitVirtualMemPtrThunk()
1814 llvm::Value *MicrosoftCXXABI::performThisAdjustment(CodeGenFunction &CGF, in performThisAdjustment() argument
1820 llvm::Value *V = CGF.Builder.CreateBitCast(This, CGF.Int8PtrTy); in performThisAdjustment()
1826 CGF.Builder.CreateConstGEP1_32(V, TA.Virtual.Microsoft.VtordispOffset); in performThisAdjustment()
1828 CGF.Builder.CreateBitCast(VtorDispPtr, CGF.Int32Ty->getPointerTo()); in performThisAdjustment()
1829 llvm::Value *VtorDisp = CGF.Builder.CreateLoad(VtorDispPtr, "vtordisp"); in performThisAdjustment()
1830 V = CGF.Builder.CreateGEP(V, CGF.Builder.CreateNeg(VtorDisp)); in performThisAdjustment()
1840 GetVBaseOffsetFromVBPtr(CGF, V, -TA.Virtual.Microsoft.VBPtrOffset, in performThisAdjustment()
1842 V = CGF.Builder.CreateInBoundsGEP(VBPtr, VBaseOffset); in performThisAdjustment()
1850 V = CGF.Builder.CreateConstGEP1_32(V, TA.NonVirtual); in performThisAdjustment()
1858 MicrosoftCXXABI::performReturnAdjustment(CodeGenFunction &CGF, llvm::Value *Ret, in performReturnAdjustment() argument
1863 llvm::Value *V = CGF.Builder.CreateBitCast(Ret, CGF.Int8PtrTy); in performReturnAdjustment()
1871 GetVBaseOffsetFromVBPtr(CGF, V, RA.Virtual.Microsoft.VBPtrOffset, in performReturnAdjustment()
1873 V = CGF.Builder.CreateInBoundsGEP(VBPtr, VBaseOffset); in performReturnAdjustment()
1877 V = CGF.Builder.CreateConstInBoundsGEP1_32(CGF.Int8Ty, V, RA.NonVirtual); in performReturnAdjustment()
1880 return CGF.Builder.CreateBitCast(V, Ret->getType()); in performReturnAdjustment()
1904 llvm::Value *MicrosoftCXXABI::readArrayCookieImpl(CodeGenFunction &CGF, in readArrayCookieImpl() argument
1909 CGF.Builder.CreateBitCast(allocPtr, CGF.SizeTy->getPointerTo(AS)); in readArrayCookieImpl()
1910 return CGF.Builder.CreateLoad(numElementsPtr); in readArrayCookieImpl()
1913 llvm::Value* MicrosoftCXXABI::InitializeArrayCookie(CodeGenFunction &CGF, in InitializeArrayCookie() argument
1929 = CGF.Builder.CreateBitCast(cookiePtr, CGF.SizeTy->getPointerTo(AS)); in InitializeArrayCookie()
1930 CGF.Builder.CreateStore(numElements, numElementsPtr); in InitializeArrayCookie()
1934 return CGF.Builder.CreateConstInBoundsGEP1_64(newPtr, in InitializeArrayCookie()
1938 static void emitGlobalDtorWithTLRegDtor(CodeGenFunction &CGF, const VarDecl &VD, in emitGlobalDtorWithTLRegDtor() argument
1942 llvm::Constant *DtorStub = CGF.createAtExitStub(VD, Dtor, Addr); in emitGlobalDtorWithTLRegDtor()
1946 CGF.IntTy, DtorStub->getType(), /*IsVarArg=*/false); in emitGlobalDtorWithTLRegDtor()
1949 CGF.CGM.CreateRuntimeFunction(TLRegDtorTy, "__tlregdtor"); in emitGlobalDtorWithTLRegDtor()
1953 CGF.EmitNounwindRuntimeCall(TLRegDtor, DtorStub); in emitGlobalDtorWithTLRegDtor()
1956 void MicrosoftCXXABI::registerGlobalDtor(CodeGenFunction &CGF, const VarDecl &D, in registerGlobalDtor() argument
1960 return emitGlobalDtorWithTLRegDtor(CGF, D, Dtor, Addr); in registerGlobalDtor()
1963 CGF.registerGlobalDtorWithAtExit(D, Dtor, Addr); in registerGlobalDtor()
2011 LValue MicrosoftCXXABI::EmitThreadLocalVarDeclLValue(CodeGenFunction &CGF, in EmitThreadLocalVarDeclLValue() argument
2014 CGF.CGM.ErrorUnsupported(VD, "thread wrappers"); in EmitThreadLocalVarDeclLValue()
2018 void MicrosoftCXXABI::EmitGuardedInit(CodeGenFunction &CGF, const VarDecl &D, in EmitGuardedInit() argument
2025 llvm::Function *F = CGF.CurFn; in EmitGuardedInit()
2028 CGF.EmitCXXGlobalVarDeclInit(D, GV, PerformInit); in EmitGuardedInit()
2040 CGBuilderTy &Builder = CGF.Builder; in EmitGuardedInit()
2041 llvm::IntegerType *GuardTy = CGF.Int32Ty; in EmitGuardedInit()
2061 ErrorUnsupportedABI(CGF, "more than 32 guarded initializations"); in EmitGuardedInit()
2102 llvm::BasicBlock *InitBlock = CGF.createBasicBlock("init"); in EmitGuardedInit()
2103 llvm::BasicBlock *EndBlock = CGF.createBasicBlock("init.end"); in EmitGuardedInit()
2108 CGF.EmitBlock(InitBlock); in EmitGuardedInit()
2110 CGF.EmitCXXGlobalVarDeclInit(D, GV, PerformInit); in EmitGuardedInit()
2114 CGF.EmitBlock(EndBlock); in EmitGuardedInit()
2315 MicrosoftCXXABI::EmitMemberPointerComparison(CodeGenFunction &CGF, in EmitMemberPointerComparison() argument
2320 CGBuilderTy &Builder = CGF.Builder; in EmitMemberPointerComparison()
2375 MicrosoftCXXABI::EmitMemberPointerIsNotNull(CodeGenFunction &CGF, in EmitMemberPointerIsNotNull() argument
2378 CGBuilderTy &Builder = CGF.Builder; in EmitMemberPointerIsNotNull()
2437 MicrosoftCXXABI::GetVBaseOffsetFromVBPtr(CodeGenFunction &CGF, in GetVBaseOffsetFromVBPtr() argument
2442 CGBuilderTy &Builder = CGF.Builder; in GetVBaseOffsetFromVBPtr()
2466 CodeGenFunction &CGF, const Expr *E, const CXXRecordDecl *RD, in AdjustVirtualBase() argument
2468 CGBuilderTy &Builder = CGF.Builder; in AdjustVirtualBase()
2480 VBaseAdjustBB = CGF.createBasicBlock("memptr.vadjust"); in AdjustVirtualBase()
2481 SkipAdjustBB = CGF.createBasicBlock("memptr.skip_vadjust"); in AdjustVirtualBase()
2486 CGF.EmitBlock(VBaseAdjustBB); in AdjustVirtualBase()
2494 DiagnosticsEngine &Diags = CGF.CGM.getDiags(); in AdjustVirtualBase()
2506 GetVBaseOffsetFromVBPtr(CGF, Base, VBPtrOffset, VBTableOffset, &VBPtr); in AdjustVirtualBase()
2512 CGF.EmitBlock(SkipAdjustBB); in AdjustVirtualBase()
2522 CodeGenFunction &CGF, const Expr *E, llvm::Value *Base, llvm::Value *MemPtr, in EmitMemberDataPointerAddress() argument
2527 CGF.ConvertTypeForMem(MPT->getPointeeType())->getPointerTo(AS); in EmitMemberDataPointerAddress()
2528 CGBuilderTy &Builder = CGF.Builder; in EmitMemberDataPointerAddress()
2548 Base = AdjustVirtualBase(CGF, E, RD, Base, VirtualBaseAdjustmentOffset, in EmitMemberDataPointerAddress()
2570 MicrosoftCXXABI::EmitMemberPointerConversion(CodeGenFunction &CGF, in EmitMemberPointerConversion() argument
2599 CGBuilderTy &Builder = CGF.Builder; in EmitMemberPointerConversion()
2602 llvm::Value *IsNotNull = EmitMemberPointerIsNotNull(CGF, Src, SrcTy); in EmitMemberPointerConversion()
2615 llvm::BasicBlock *ConvertBB = CGF.createBasicBlock("memptr.convert"); in EmitMemberPointerConversion()
2616 llvm::BasicBlock *ContinueBB = CGF.createBasicBlock("memptr.converted"); in EmitMemberPointerConversion()
2618 CGF.EmitBlock(ConvertBB); in EmitMemberPointerConversion()
2677 CGF.EmitBlock(ContinueBB); in EmitMemberPointerConversion()
2757 CodeGenFunction &CGF, const Expr *E, llvm::Value *&This, in EmitLoadOfMemberFunctionPointer() argument
2766 CGBuilderTy &Builder = CGF.Builder; in EmitLoadOfMemberFunctionPointer()
2789 This = AdjustVirtualBase(CGF, E, RD, This, VirtualBaseAdjustmentOffset, in EmitLoadOfMemberFunctionPointer()
3361 CodeGenFunction CGF(CGM); in getAddrOfCXXCtorClosure() local
3362 CGF.CurGD = GlobalDecl(CD, Ctor_Complete); in getAddrOfCXXCtorClosure()
3368 buildThisParam(CGF, FunctionArgs); in getAddrOfCXXCtorClosure()
3390 CGF.StartFunction(GlobalDecl(), FnInfo.getReturnType(), ThunkFn, FnInfo, in getAddrOfCXXCtorClosure()
3392 EmitThisParam(CGF); in getAddrOfCXXCtorClosure()
3393 llvm::Value *This = getThisValue(CGF); in getAddrOfCXXCtorClosure()
3396 IsCopy ? CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(&SrcParam), "src") in getAddrOfCXXCtorClosure()
3416 CodeGenFunction::RunCleanupsScope Cleanups(CGF); in getAddrOfCXXCtorClosure()
3421 CGF.EmitCallArgs(Args, FPT, ArgBegin, ArgEnd, CD, IsCopy ? 1 : 0); in getAddrOfCXXCtorClosure()
3424 unsigned ExtraArgs = addImplicitConstructorArgs(CGF, CD, Ctor_Complete, in getAddrOfCXXCtorClosure()
3432 CGF.EmitCall(CalleeInfo, CalleeFn, ReturnValueSlot(), Args, CD); in getAddrOfCXXCtorClosure()
3438 CGF.FinishFunction(SourceLocation()); in getAddrOfCXXCtorClosure()
3713 void MicrosoftCXXABI::emitThrow(CodeGenFunction &CGF, const CXXThrowExpr *E) { in emitThrow() argument
3718 llvm::AllocaInst *AI = CGF.CreateMemTemp(ThrowType); in emitThrow()
3719 CGF.EmitAnyExprToMem(SubExpr, AI, ThrowType.getQualifiers(), in emitThrow()
3727 llvm::Value *Args[] = {CGF.Builder.CreateBitCast(AI, CGM.Int8PtrTy), TI}; in emitThrow()
3728 CGF.EmitNoreturnRuntimeCallOrInvoke(getThrowFn(), Args); in emitThrow()