Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:CGF

63   llvm::Value *EmitLoadOfMemberFunctionPointer(CodeGenFunction &CGF,
68 llvm::Value *EmitMemberDataPointerAddress(CodeGenFunction &CGF,
73 llvm::Value *EmitMemberPointerConversion(CodeGenFunction &CGF,
86 llvm::Value *EmitMemberPointerComparison(CodeGenFunction &CGF,
92 llvm::Value *EmitMemberPointerIsNotNull(CodeGenFunction &CGF,
106 void BuildInstanceFunctionParams(CodeGenFunction &CGF,
110 void EmitInstanceFunctionProlog(CodeGenFunction &CGF);
113 llvm::Value *InitializeArrayCookie(CodeGenFunction &CGF,
118 void ReadArrayCookie(CodeGenFunction &CGF, llvm::Value *Ptr,
123 void EmitGuardedInit(CodeGenFunction &CGF, const VarDecl &D,
141 void BuildInstanceFunctionParams(CodeGenFunction &CGF,
145 void EmitInstanceFunctionProlog(CodeGenFunction &CGF);
147 void EmitReturnFromThunk(CodeGenFunction &CGF, RValue RV, QualType ResTy);
150 llvm::Value *InitializeArrayCookie(CodeGenFunction &CGF,
155 void ReadArrayCookie(CodeGenFunction &CGF, llvm::Value *Ptr,
207 ItaniumCXXABI::EmitLoadOfMemberFunctionPointer(CodeGenFunction &CGF,
211 CGBuilderTy &Builder = CGF.Builder;
225 llvm::BasicBlock *FnVirtual = CGF.createBasicBlock("memptr.virtual");
226 llvm::BasicBlock *FnNonVirtual = CGF.createBasicBlock("memptr.nonvirtual");
227 llvm::BasicBlock *FnEnd = CGF.createBasicBlock("memptr.end");
259 CGF.EmitBlock(FnVirtual);
274 CGF.EmitBranch(FnEnd);
278 CGF.EmitBlock(FnNonVirtual);
283 CGF.EmitBlock(FnEnd);
292 llvm::Value *ItaniumCXXABI::EmitMemberDataPointerAddress(CodeGenFunction &CGF,
298 CGBuilderTy &Builder = CGF.Builder;
311 = CGF.ConvertTypeForMem(MPT->getPointeeType())->getPointerTo(AS);
336 ItaniumCXXABI::EmitMemberPointerConversion(CodeGenFunction &CGF,
345 CGBuilderTy &Builder = CGF.Builder;
364 CGF.CGM.GetNonVirtualBaseClassOffset(DerivedDecl,
563 ItaniumCXXABI::EmitMemberPointerComparison(CodeGenFunction &CGF,
568 CGBuilderTy &Builder = CGF.Builder;
637 ItaniumCXXABI::EmitMemberPointerIsNotNull(CodeGenFunction &CGF,
640 CGBuilderTy &Builder = CGF.Builder;
727 void ItaniumCXXABI::BuildInstanceFunctionParams(CodeGenFunction &CGF,
731 BuildThisParam(CGF, Params);
733 const CXXMethodDecl *MD = cast<CXXMethodDecl>(CGF.CurGD.getDecl());
737 if (CodeGenVTables::needsVTTParameter(CGF.CurGD)) {
746 getVTTDecl(CGF) = VTTDecl;
750 void ARMCXXABI::BuildInstanceFunctionParams(CodeGenFunction &CGF,
753 ItaniumCXXABI::BuildInstanceFunctionParams(CGF, ResTy, Params);
756 if (HasThisReturn(CGF.CurGD))
760 void ItaniumCXXABI::EmitInstanceFunctionProlog(CodeGenFunction &CGF) {
762 EmitThisParam(CGF);
765 if (getVTTDecl(CGF)) {
766 getVTTValue(CGF)
767 = CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(getVTTDecl(CGF)),
772 void ARMCXXABI::EmitInstanceFunctionProlog(CodeGenFunction &CGF) {
773 ItaniumCXXABI::EmitInstanceFunctionProlog(CGF);
777 if (HasThisReturn(CGF.CurGD))
778 CGF.Builder.CreateStore(CGF.LoadCXXThis(), CGF.ReturnValue);
781 void ARMCXXABI::EmitReturnFromThunk(CodeGenFunction &CGF,
783 if (!isa<CXXDestructorDecl>(CGF.CurGD.getDecl()))
784 return ItaniumCXXABI::EmitReturnFromThunk(CGF, RV, ResultType);
788 cast<llvm::PointerType>(CGF.ReturnValue->getType())->getElementType();
790 return ItaniumCXXABI::EmitReturnFromThunk(CGF, Undef, ResultType);
845 llvm::Value *ItaniumCXXABI::InitializeArrayCookie(CodeGenFunction &CGF,
866 CookiePtr = CGF.Builder.CreateConstInBoundsGEP1_64(CookiePtr,
871 = CGF.Builder.CreateBitCast(CookiePtr,
872 CGF.ConvertType(SizeTy)->getPointerTo(AS));
873 CGF.Builder.CreateStore(NumElements, NumElementsPtr);
877 return CGF.Builder.CreateConstInBoundsGEP1_64(NewPtr,
881 void ItaniumCXXABI::ReadArrayCookie(CodeGenFunction &CGF,
890 llvm::Type *CharPtrTy = CGF.Builder.getInt8Ty()->getPointerTo(AS);
894 AllocPtr = CGF.Builder.CreateBitCast(Ptr, CharPtrTy);
902 llvm::Type *SizeLTy = CGF.ConvertType(SizeTy);
910 AllocPtr = CGF.Builder.CreateBitCast(Ptr, CharPtrTy);
911 AllocPtr = CGF.Builder.CreateConstInBoundsGEP1_64(AllocPtr,
917 CGF.Builder.CreateConstInBoundsGEP1_64(NumElementsPtr,
920 CGF.Builder.CreateBitCast(NumElementsPtr, SizeLTy->getPointerTo(AS));
921 NumElements = CGF.Builder.CreateLoad(NumElementsPtr);
938 llvm::Value *ARMCXXABI::InitializeArrayCookie(CodeGenFunction &CGF,
952 cast<llvm::IntegerType>(CGF.ConvertType(Ctx.getSizeType()));
958 CookiePtr = CGF.Builder.CreateBitCast(CookiePtr, SizeTy->getPointerTo(AS));
961 CGF.Builder.CreateStore(ElementSize, CookiePtr);
964 CookiePtr = CGF.Builder.CreateConstInBoundsGEP1_32(CookiePtr, 1);
965 CGF.Builder.CreateStore(NumElements, CookiePtr);
970 return CGF.Builder.CreateConstInBoundsGEP1_64(NewPtr,
974 void ARMCXXABI::ReadArrayCookie(CodeGenFunction &CGF,
983 llvm::Type *CharPtrTy = CGF.Builder.getInt8Ty()->getPointerTo(AS);
987 AllocPtr = CGF.Builder.CreateBitCast(Ptr, CharPtrTy);
995 llvm::Type *SizeLTy = CGF.ConvertType(SizeTy);
1001 AllocPtr = CGF.Builder.CreateBitCast(Ptr, CharPtrTy);
1002 AllocPtr = CGF.Builder.CreateConstInBoundsGEP1_64(AllocPtr,
1007 = CGF.Builder.CreateConstInBoundsGEP1_64(AllocPtr,
1010 CGF.Builder.CreateBitCast(NumElementsPtr, SizeLTy->getPointerTo(AS));
1011 NumElements = CGF.Builder.CreateLoad(NumElementsPtr);
1051 void Emit(CodeGenFunction &CGF, Flags flags) {
1052 CGF.Builder.CreateCall(getGuardAbortFn(CGF.CGM, Guard->getType()), Guard)
1060 void ItaniumCXXABI::EmitGuardedInit(CodeGenFunction &CGF,
1063 CGBuilderTy &Builder = CGF.Builder;
1076 GuardTy = CGF.Int8Ty;
1079 GuardTy = (IsARM ? CGF.Int32Ty : CGF.Int64Ty);
1149 llvm::BasicBlock *InitCheckBlock = CGF.createBasicBlock("init.check");
1150 llvm::BasicBlock *EndBlock = CGF.createBasicBlock("init.end");
1155 CGF.EmitBlock(InitCheckBlock);
1163 llvm::BasicBlock *InitBlock = CGF.createBasicBlock("init");
1169 CGF.EHStack.pushCleanup<CallGuardAbort>(EHCleanup, GuardVariable);
1171 CGF.EmitBlock(InitBlock);
1175 CGF.EmitCXXGlobalVarDeclInit(D, GV);
1179 CGF.PopCleanupBlock();
1187 CGF.EmitBlock(EndBlock);