Lines Matching refs:CGF

115   void emitVirtualObjectDelete(CodeGenFunction &CGF, const CXXDeleteExpr *DE,
119 void emitRethrow(CodeGenFunction &CGF, bool isNoReturn) override;
120 void emitThrow(CodeGenFunction &CGF, const CXXThrowExpr *E) override;
122 void emitBeginCatch(CodeGenFunction &CGF, const CXXCatchStmt *C) override;
137 void EmitBadTypeidCall(CodeGenFunction &CGF) override;
138 llvm::Value *EmitTypeid(CodeGenFunction &CGF, QualType SrcRecordTy,
145 llvm::Value *EmitDynamicCastCall(CodeGenFunction &CGF, Address Value,
150 llvm::Value *EmitDynamicCastToVoid(CodeGenFunction &CGF, Address Value,
154 bool EmitBadCastCall(CodeGenFunction &CGF) override;
160 GetVirtualBaseClassOffset(CodeGenFunction &CGF, Address This,
165 EmitCtorCompleteObjectHandler(CodeGenFunction &CGF,
168 void initializeHiddenVirtualInheritanceMembers(CodeGenFunction &CGF,
235 adjustThisArgumentForVirtualFunctionCall(CodeGenFunction &CGF, GlobalDecl GD,
239 void addImplicitStructorParams(CodeGenFunction &CGF, QualType &ResTy,
243 CodeGenFunction &CGF, GlobalDecl GD, llvm::Value *This) override;
245 void EmitInstanceFunctionProlog(CodeGenFunction &CGF) override;
247 unsigned addImplicitConstructorArgs(CodeGenFunction &CGF,
253 void EmitDestructorCall(CodeGenFunction &CGF, const CXXDestructorDecl *DD,
263 bool isVirtualOffsetNeededForVTableField(CodeGenFunction &CGF,
277 CodeGenFunction &CGF, const CXXRecordDecl *VTableClass,
287 llvm::Value *getVirtualFunctionPointer(CodeGenFunction &CGF, GlobalDecl GD,
291 llvm::Value *EmitVirtualDestructorCall(CodeGenFunction &CGF,
297 void adjustCallArgsForDestructorThunk(CodeGenFunction &CGF, GlobalDecl GD,
301 CallArgs.add(RValue::get(getStructorImplicitParamValue(CGF)),
373 llvm::Value *performThisAdjustment(CodeGenFunction &CGF, Address This,
376 llvm::Value *performReturnAdjustment(CodeGenFunction &CGF, Address Ret,
385 LValue EmitThreadLocalVarDeclLValue(CodeGenFunction &CGF, const VarDecl *VD,
388 void EmitGuardedInit(CodeGenFunction &CGF, const VarDecl &D,
391 void registerGlobalDtor(CodeGenFunction &CGF, const VarDecl &D,
421 Address InitializeArrayCookie(CodeGenFunction &CGF,
426 llvm::Value *readArrayCookieImpl(CodeGenFunction &CGF,
563 llvm::Value *GetVBaseOffsetFromVBPtr(CodeGenFunction &CGF,
569 llvm::Value *GetVBaseOffsetFromVBPtr(CodeGenFunction &CGF,
577 return GetVBaseOffsetFromVBPtr(CGF, Base, VBPOffset, VBTOffset, VBPtr);
581 performBaseAdjustment(CodeGenFunction &CGF, Address Value,
586 llvm::Value *AdjustVirtualBase(CodeGenFunction &CGF, const Expr *E,
603 void EmitVBPtrStores(CodeGenFunction &CGF, const CXXRecordDecl *RD);
630 llvm::Value *EmitMemberPointerComparison(CodeGenFunction &CGF,
636 llvm::Value *EmitMemberPointerIsNotNull(CodeGenFunction &CGF,
641 EmitMemberDataPointerAddress(CodeGenFunction &CGF, const Expr *E,
651 llvm::Value *EmitMemberPointerConversion(CodeGenFunction &CGF,
664 EmitLoadOfMemberFunctionPointer(CodeGenFunction &CGF, const Expr *E,
851 void MicrosoftCXXABI::emitVirtualObjectDelete(CodeGenFunction &CGF,
861 EmitVirtualDestructorCall(CGF, Dtor, DtorType, Ptr, /*CE=*/nullptr);
863 CGF.EmitDeleteCall(DE->getOperatorDelete(), MDThis, ElementType);
866 void MicrosoftCXXABI::emitRethrow(CodeGenFunction &CGF, bool isNoReturn) {
872 CGF.EmitNoreturnRuntimeCallOrInvoke(Fn, Args);
874 CGF.EmitRuntimeCallOrInvoke(Fn, Args);
883 void Emit(CodeGenFunction &CGF, Flags flags) override {
884 llvm::BasicBlock *BB = CGF.createBasicBlock("catchret.dest");
885 CGF.Builder.CreateCatchRet(CPI, BB);
886 CGF.EmitBlock(BB);
891 void MicrosoftCXXABI::emitBeginCatch(CodeGenFunction &CGF,
896 llvm::BasicBlock *CatchPadBB = CGF.Builder.GetInsertBlock();
899 CGF.CurrentFuncletPad = CPI;
904 CGF.EHStack.pushCleanup<CatchRetScope>(NormalCleanup, CPI);
908 CodeGenFunction::AutoVarEmission var = CGF.EmitAutoVarAlloca(*CatchParam);
909 CPI->setArgOperand(2, var.getObjectAddress(CGF).getPointer());
910 CGF.EHStack.pushCleanup<CatchRetScope>(NormalCleanup, CPI);
911 CGF.EmitAutoVarCleanups(var);
918 MicrosoftCXXABI::performBaseAdjustment(CodeGenFunction &CGF, Address Value,
920 Value = CGF.Builder.CreateBitCast(Value, CGF.Int8PtrTy);
928 return std::make_pair(Value, llvm::ConstantInt::get(CGF.Int32Ty, 0));
943 GetVirtualBaseClassOffset(CGF, Value, SrcDecl, PolymorphicBase);
944 llvm::Value *Ptr = CGF.Builder.CreateInBoundsGEP(Value.getPointer(), Offset);
945 Offset = CGF.Builder.CreateTrunc(Offset, CGF.Int32Ty);
947 CGF.CGM.getVBaseAlignment(Value.getAlignment(), SrcDecl, PolymorphicBase);
958 static llvm::CallSite emitRTtypeidCall(CodeGenFunction &CGF,
960 llvm::Type *ArgTypes[] = {CGF.Int8PtrTy};
962 llvm::FunctionType::get(CGF.Int8PtrTy, ArgTypes, false);
964 llvm::Constant *Fn = CGF.CGM.CreateRuntimeFunction(FTy, "__RTtypeid");
965 return CGF.EmitRuntimeCallOrInvoke(Fn, Args);
968 void MicrosoftCXXABI::EmitBadTypeidCall(CodeGenFunction &CGF) {
970 emitRTtypeidCall(CGF, llvm::Constant::getNullValue(CGM.VoidPtrTy));
972 CGF.Builder.CreateUnreachable();
975 llvm::Value *MicrosoftCXXABI::EmitTypeid(CodeGenFunction &CGF,
980 std::tie(ThisPtr, Offset) = performBaseAdjustment(CGF, ThisPtr, SrcRecordTy);
981 auto Typeid = emitRTtypeidCall(CGF, ThisPtr.getPointer()).getInstruction();
982 return CGF.Builder.CreateBitCast(Typeid, StdTypeInfoPtrTy);
993 CodeGenFunction &CGF, Address This, QualType SrcRecordTy,
995 llvm::Type *DestLTy = CGF.ConvertType(DestTy);
998 CGF.CGM.GetAddrOfRTTIDescriptor(SrcRecordTy.getUnqualifiedType());
1000 CGF.CGM.GetAddrOfRTTIDescriptor(DestRecordTy.getUnqualifiedType());
1003 std::tie(This, Offset) = performBaseAdjustment(CGF, This, SrcRecordTy);
1012 llvm::Type *ArgTypes[] = {CGF.Int8PtrTy, CGF.Int32Ty, CGF.Int8PtrTy,
1013 CGF.Int8PtrTy, CGF.Int32Ty};
1014 llvm::Constant *Function = CGF.CGM.CreateRuntimeFunction(
1015 llvm::FunctionType::get(CGF.Int8PtrTy, ArgTypes, false),
1019 llvm::ConstantInt::get(CGF.Int32Ty, DestTy->isReferenceType())};
1020 ThisPtr = CGF.EmitRuntimeCallOrInvoke(Function, Args).getInstruction();
1021 return CGF.Builder.CreateBitCast(ThisPtr, DestLTy);
1025 MicrosoftCXXABI::EmitDynamicCastToVoid(CodeGenFunction &CGF, Address Value,
1029 std::tie(Value, Offset) = performBaseAdjustment(CGF, Value, SrcRecordTy);
1033 llvm::Type *ArgTypes[] = {CGF.Int8PtrTy};
1034 llvm::Constant *Function = CGF.CGM.CreateRuntimeFunction(
1035 llvm::FunctionType::get(CGF.Int8PtrTy, ArgTypes, false),
1038 return CGF.EmitRuntimeCall(Function, Args);
1041 bool MicrosoftCXXABI::EmitBadCastCall(CodeGenFunction &CGF) {
1046 CodeGenFunction &CGF, Address This, const CXXRecordDecl *ClassDecl,
1060 GetVBaseOffsetFromVBPtr(CGF, This, VBPtrOffset, VBTableOffset);
1062 CGF.Builder.CreateSExtOrBitCast(VBPtrToNewBase, CGM.PtrDiffTy);
1063 return CGF.Builder.CreateNSWAdd(VBPtrOffset, VBPtrToNewBase);
1102 MicrosoftCXXABI::EmitCtorCompleteObjectHandler(CodeGenFunction &CGF,
1104 llvm::Value *IsMostDerivedClass = getStructorImplicitParamValue(CGF);
1108 CGF.Builder.CreateIsNotNull(IsMostDerivedClass, "is_complete_object");
1110 llvm::BasicBlock *CallVbaseCtorsBB = CGF.createBasicBlock("ctor.init_vbases");
1111 llvm::BasicBlock *SkipVbaseCtorsBB = CGF.createBasicBlock("ctor.skip_vbases");
1112 CGF.Builder.CreateCondBr(IsCompleteObject,
1115 CGF.EmitBlock(CallVbaseCtorsBB);
1118 EmitVBPtrStores(CGF, RD);
1120 // CGF will put the base ctor calls in this basic block for us later.
1126 CodeGenFunction &CGF, const CXXRecordDecl *RD) {
1143 CGBuilderTy &Builder = CGF.Builder;
1145 unsigned AS = getThisAddress(CGF).getAddressSpace();
1154 GetVirtualBaseClassOffset(CGF, getThisAddress(CGF), RD, I->first);
1157 VBaseOffset = Builder.CreateTruncOrBitCast(VBaseOffset, CGF.Int32Ty);
1167 Int8This = Builder.CreateBitCast(getThisValue(CGF),
1168 CGF.Int8Ty->getPointerTo(AS));
1173 VtorDispPtr, CGF.Int32Ty->getPointerTo(AS), "vtordisp.ptr");
1205 void MicrosoftCXXABI::EmitVBPtrStores(CodeGenFunction &CGF,
1207 Address This = getThisAddress(CGF);
1208 This = CGF.Builder.CreateElementBitCast(This, CGM.Int8Ty, "this.int8");
1222 Address VBPtr = CGF.Builder.CreateConstInBoundsByteGEP(This, Offs);
1224 CGF.Builder.CreateConstInBoundsGEP2_32(GV->getValueType(), GV, 0, 0);
1225 VBPtr = CGF.Builder.CreateElementBitCast(VBPtr, GVPtr->getType(),
1227 CGF.Builder.CreateStore(GVPtr, VBPtr);
1300 CodeGenFunction &CGF, GlobalDecl GD, Address This,
1309 This = CGF.Builder.CreateElementBitCast(This, CGF.Int8Ty);
1311 return CGF.Builder.CreateConstByteGEP(This, Adjustment);
1341 Result = CGF.Builder.CreateElementBitCast(Result, CGF.Int8Ty);
1346 GetVirtualBaseClassOffset(CGF, Result, Derived, VBase);
1348 CGF.Builder.CreateInBoundsGEP(Result.getPointer(), VBaseOffset);
1350 CGF.CGM.getVBaseAlignment(Result.getAlignment(), Derived, VBase);
1355 Result = CGF.Builder.CreateElementBitCast(Result, CGF.Int8Ty);
1361 Result = CGF.Builder.CreateConstByteGEP(Result, StaticOffset);
1363 Result = CGF.Builder.CreateConstInBoundsByteGEP(Result, StaticOffset);
1369 void MicrosoftCXXABI::addImplicitStructorParams(CodeGenFunction &CGF,
1373 const CXXMethodDecl *MD = cast<CXXMethodDecl>(CGF.CurGD.getDecl());
1378 CGF.CurGD.getDecl()->getLocation(),
1388 getStructorImplicitParamDecl(CGF) = IsMostDerived;
1389 } else if (isDeletingDtor(CGF.CurGD)) {
1392 CGF.CurGD.getDecl()->getLocation(),
1396 getStructorImplicitParamDecl(CGF) = ShouldDelete;
1401 CodeGenFunction &CGF, GlobalDecl GD, llvm::Value *This) {
1412 llvm::Type *charPtrTy = CGF.Int8Ty->getPointerTo(AS),
1415 This = CGF.Builder.CreateBitCast(This, charPtrTy);
1417 This = CGF.Builder.CreateConstInBoundsGEP1_32(CGF.Int8Ty, This,
1419 return CGF.Builder.CreateBitCast(This, thisTy);
1422 void MicrosoftCXXABI::EmitInstanceFunctionProlog(CodeGenFunction &CGF) {
1423 EmitThisParam(CGF);
1433 if (HasThisReturn(CGF.CurGD))
1434 CGF.Builder.CreateStore(getThisValue(CGF), CGF.ReturnValue);
1435 else if (hasMostDerivedReturn(CGF.CurGD))
1436 CGF.Builder.CreateStore(CGF.EmitCastToVoidPtr(getThisValue(CGF)),
1437 CGF.ReturnValue);
1439 const CXXMethodDecl *MD = cast<CXXMethodDecl>(CGF.CurGD.getDecl());
1441 assert(getStructorImplicitParamDecl(CGF) &&
1443 getStructorImplicitParamValue(CGF)
1444 = CGF.Builder.CreateLoad(
1445 CGF.GetAddrOfLocalVar(getStructorImplicitParamDecl(CGF)),
1449 if (isDeletingDtor(CGF.CurGD)) {
1450 assert(getStructorImplicitParamDecl(CGF) &&
1452 getStructorImplicitParamValue(CGF)
1453 = CGF.Builder.CreateLoad(
1454 CGF.GetAddrOfLocalVar(getStructorImplicitParamDecl(CGF)),
1460 CodeGenFunction &CGF, const CXXConstructorDecl *D, CXXCtorType Type,
1484 void MicrosoftCXXABI::EmitDestructorCall(CodeGenFunction &CGF,
1493 This = adjustThisArgumentForVirtualFunctionCall(CGF, GlobalDecl(DD, Type),
1497 CGF.EmitCXXStructorCall(DD, Callee, ReturnValueSlot(), This.getPointer(),
1588 CodeGenFunction &CGF, CodeGenFunction::VPtr Vptr) {
1593 CodeGenFunction &CGF, const CXXRecordDecl *VTableClass, BaseSubobject Base,
1799 llvm::Value *MicrosoftCXXABI::getVirtualFunctionPointer(CodeGenFunction &CGF,
1805 CGBuilderTy &Builder = CGF.Builder;
1809 adjustThisArgumentForVirtualFunctionCall(CGF, GD, This, true);
1812 llvm::Value *VTable = CGF.GetVTablePtr(VPtr, Ty, MethodDecl->getParent());
1816 if (CGF.SanOpts.has(SanitizerKind::CFIVCall))
1817 CGF.EmitVTablePtrCheck(getClassAtVTableLocation(getContext(), GD, ML),
1822 return Builder.CreateAlignedLoad(VFuncPtr, CGF.getPointerAlign());
1826 CodeGenFunction &CGF, const CXXDestructorDecl *Dtor, CXXDtorType DtorType,
1836 llvm::Type *Ty = CGF.CGM.getTypes().GetFunctionType(*FInfo);
1838 CGF, GD, This, Ty, CE ? CE->getLocStart() : SourceLocation());
1842 llvm::IntegerType::getInt32Ty(CGF.getLLVMContext()),
1845 This = adjustThisArgumentForVirtualFunctionCall(CGF, GD, This, true);
1846 RValue RV = CGF.EmitCXXStructorCall(Dtor, Callee, ReturnValueSlot(),
1922 CodeGenFunction CGF(CGM);
1923 CGF.CurGD = GlobalDecl(MD);
1924 CGF.CurFuncIsThunk = true;
1929 buildThisParam(CGF, FunctionArgs);
1932 CGF.StartFunction(GlobalDecl(), FnInfo.getReturnType(), ThunkFn, FnInfo,
1934 EmitThisParam(CGF);
1938 llvm::Value *VTable = CGF.GetVTablePtr(
1939 getThisAddress(CGF), ThunkTy->getPointerTo()->getPointerTo(), MD->getParent());
1942 CGF.Builder.CreateConstInBoundsGEP1_64(VTable, ML.Index, "vfn");
1944 CGF.Builder.CreateAlignedLoad(VFuncPtr, CGF.getPointerAlign());
1946 CGF.EmitMustTailThunk(MD, getThisValue(CGF), Callee);
2035 llvm::Value *MicrosoftCXXABI::performThisAdjustment(CodeGenFunction &CGF,
2041 This = CGF.Builder.CreateElementBitCast(This, CGF.Int8Ty);
2050 CGF.Builder.CreateConstInBoundsByteGEP(This,
2052 VtorDispPtr = CGF.Builder.CreateElementBitCast(VtorDispPtr, CGF.Int32Ty);
2053 llvm::Value *VtorDisp = CGF.Builder.CreateLoad(VtorDispPtr, "vtordisp");
2054 V = CGF.Builder.CreateGEP(This.getPointer(),
2055 CGF.Builder.CreateNeg(VtorDisp));
2069 GetVBaseOffsetFromVBPtr(CGF, Address(V, CGF.getPointerAlign()),
2072 V = CGF.Builder.CreateInBoundsGEP(VBPtr, VBaseOffset);
2080 V = CGF.Builder.CreateConstGEP1_32(V, TA.NonVirtual);
2088 MicrosoftCXXABI::performReturnAdjustment(CodeGenFunction &CGF, Address Ret,
2094 Ret = CGF.Builder.CreateElementBitCast(Ret, CGF.Int8Ty);
2099 int32_t IntSize = CGF.getIntSize().getQuantity();
2102 GetVBaseOffsetFromVBPtr(CGF, Ret, RA.Virtual.Microsoft.VBPtrOffset,
2104 V = CGF.Builder.CreateInBoundsGEP(VBPtr, VBaseOffset);
2108 V = CGF.Builder.CreateConstInBoundsGEP1_32(CGF.Int8Ty, V, RA.NonVirtual);
2111 return CGF.Builder.CreateBitCast(V, OrigTy);
2135 llvm::Value *MicrosoftCXXABI::readArrayCookieImpl(CodeGenFunction &CGF,
2139 CGF.Builder.CreateElementBitCast(allocPtr, CGF.SizeTy);
2140 return CGF.Builder.CreateLoad(numElementsPtr);
2143 Address MicrosoftCXXABI::InitializeArrayCookie(CodeGenFunction &CGF,
2158 = CGF.Builder.CreateElementBitCast(cookiePtr, CGF.SizeTy);
2159 CGF.Builder.CreateStore(numElements, numElementsPtr);
2163 return CGF.Builder.CreateConstInBoundsByteGEP(newPtr, cookieSize);
2166 static void emitGlobalDtorWithTLRegDtor(CodeGenFunction &CGF, const VarDecl &VD,
2170 llvm::Constant *DtorStub = CGF.createAtExitStub(VD, Dtor, Addr);
2174 CGF.IntTy, DtorStub->getType(), /*IsVarArg=*/false);
2177 CGF.CGM.CreateRuntimeFunction(TLRegDtorTy, "__tlregdtor");
2181 CGF.EmitNounwindRuntimeCall(TLRegDtor, DtorStub);
2184 void MicrosoftCXXABI::registerGlobalDtor(CodeGenFunction &CGF, const VarDecl &D,
2188 return emitGlobalDtorWithTLRegDtor(CGF, D, Dtor, Addr);
2191 CGF.registerGlobalDtorWithAtExit(D, Dtor, Addr);
2238 LValue MicrosoftCXXABI::EmitThreadLocalVarDeclLValue(CodeGenFunction &CGF,
2241 CGF.CGM.ErrorUnsupported(VD, "thread wrappers");
2299 void Emit(CodeGenFunction &CGF, Flags flags) override {
2302 CGBuilderTy &Builder = CGF.Builder;
2305 llvm::ConstantInt::get(CGF.IntTy, ~(1U << GuardNum));
2314 void Emit(CodeGenFunction &CGF, Flags flags) override {
2316 CGF.EmitNounwindRuntimeCall(getInitThreadAbortFn(CGF.CGM), Guard);
2321 void MicrosoftCXXABI::EmitGuardedInit(CodeGenFunction &CGF, const VarDecl &D,
2328 llvm::Function *F = CGF.CurFn;
2331 CGF.EmitCXXGlobalVarDeclInit(D, GV, PerformInit);
2342 CGBuilderTy &Builder = CGF.Builder;
2343 llvm::IntegerType *GuardTy = CGF.Int32Ty;
2371 ErrorUnsupportedABI(CGF, "more than 32 guarded initializations");
2422 llvm::BasicBlock *InitBlock = CGF.createBasicBlock("init");
2423 llvm::BasicBlock *EndBlock = CGF.createBasicBlock("init.end");
2428 CGF.EmitBlock(InitBlock);
2430 CGF.EHStack.pushCleanup<ResetGuardBit>(EHCleanup, GuardAddr, GuardNum);
2431 CGF.EmitCXXGlobalVarDeclInit(D, GV, PerformInit);
2432 CGF.PopCleanupBlock();
2436 CGF.EmitBlock(EndBlock);
2457 llvm::BasicBlock *AttemptInitBlock = CGF.createBasicBlock("init.attempt");
2458 llvm::BasicBlock *EndBlock = CGF.createBasicBlock("init.end");
2463 CGF.EmitBlock(AttemptInitBlock);
2464 CGF.EmitNounwindRuntimeCall(getInitThreadHeaderFn(CGM),
2470 llvm::BasicBlock *InitBlock = CGF.createBasicBlock("init");
2474 CGF.EmitBlock(InitBlock);
2475 CGF.EHStack.pushCleanup<CallInitThreadAbort>(EHCleanup, GuardAddr);
2476 CGF.EmitCXXGlobalVarDeclInit(D, GV, PerformInit);
2477 CGF.PopCleanupBlock();
2478 CGF.EmitNounwindRuntimeCall(getInitThreadFooterFn(CGM),
2482 CGF.EmitBlock(EndBlock);
2711 MicrosoftCXXABI::EmitMemberPointerComparison(CodeGenFunction &CGF,
2716 CGBuilderTy &Builder = CGF.Builder;
2771 MicrosoftCXXABI::EmitMemberPointerIsNotNull(CodeGenFunction &CGF,
2774 CGBuilderTy &Builder = CGF.Builder;
2833 MicrosoftCXXABI::GetVBaseOffsetFromVBPtr(CodeGenFunction &CGF,
2838 CGBuilderTy &Builder = CGF.Builder;
2852 VBPtrAlign = CGF.getPointerAlign();
2872 CodeGenFunction &CGF, const Expr *E, const CXXRecordDecl *RD,
2874 CGBuilderTy &Builder = CGF.Builder;
2886 VBaseAdjustBB = CGF.createBasicBlock("memptr.vadjust");
2887 SkipAdjustBB = CGF.createBasicBlock("memptr.skip_vadjust");
2892 CGF.EmitBlock(VBaseAdjustBB);
2900 DiagnosticsEngine &Diags = CGF.CGM.getDiags();
2912 GetVBaseOffsetFromVBPtr(CGF, Base, VBPtrOffset, VBTableOffset, &VBPtr);
2918 CGF.EmitBlock(SkipAdjustBB);
2928 CodeGenFunction &CGF, const Expr *E, Address Base, llvm::Value *MemPtr,
2933 CGF.ConvertTypeForMem(MPT->getPointeeType())->getPointerTo(AS);
2934 CGBuilderTy &Builder = CGF.Builder;
2955 Addr = AdjustVirtualBase(CGF, E, RD, Base, VirtualBaseAdjustmentOffset,
2962 Addr = Builder.CreateBitCast(Addr, CGF.Int8Ty->getPointerTo(AS));
2973 MicrosoftCXXABI::EmitMemberPointerConversion(CodeGenFunction &CGF,
3002 CGBuilderTy &Builder = CGF.Builder;
3005 llvm::Value *IsNotNull = EmitMemberPointerIsNotNull(CGF, Src, SrcTy);
3018 llvm::BasicBlock *ConvertBB = CGF.createBasicBlock("memptr.convert");
3019 llvm::BasicBlock *ContinueBB = CGF.createBasicBlock("memptr.converted");
3021 CGF.EmitBlock(ConvertBB);
3030 CGF.EmitBlock(ContinueBB);
3218 CodeGenFunction &CGF, const Expr *E, Address This,
3227 CGBuilderTy &Builder = CGF.Builder;
3250 ThisPtrForCall = AdjustVirtualBase(CGF, E, RD, This,
3258 llvm::Value *Ptr = Builder.CreateBitCast(ThisPtrForCall, CGF.Int8PtrTy);
3806 CodeGenFunction CGF(CGM);
3807 CGF.CurGD = GlobalDecl(CD, Ctor_Complete);
3813 buildThisParam(CGF, FunctionArgs);
3835 CGF.StartFunction(GlobalDecl(), FnInfo.getReturnType(), ThunkFn, FnInfo,
3837 EmitThisParam(CGF);
3838 llvm::Value *This = getThisValue(CGF);
3841 IsCopy ? CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(&SrcParam), "src")
3861 CodeGenFunction::RunCleanupsScope Cleanups(CGF);
3864 CGF.EmitCallArgs(Args, FPT, llvm::makeArrayRef(ArgVec), CD, IsCopy ? 1 : 0);
3867 unsigned ExtraArgs = addImplicitConstructorArgs(CGF, CD, Ctor_Complete,
3875 CGF.EmitCall(CalleeInfo, CalleeFn, ReturnValueSlot(), Args, CD);
3881 CGF.FinishFunction(SourceLocation());
4156 void MicrosoftCXXABI::emitThrow(CodeGenFunction &CGF, const CXXThrowExpr *E) {
4161 Address AI = CGF.CreateMemTemp(ThrowType);
4162 CGF.EmitAnyExprToMem(SubExpr, AI, ThrowType.getQualifiers(),
4171 CGF.Builder.CreateBitCast(AI.getPointer(), CGM.Int8PtrTy),
4174 CGF.EmitNoreturnRuntimeCallOrInvoke(getThrowFn(), Args);