Lines Matching refs:CGF
74 RValue DefaultABIInfo::EmitVAArg(CodeGenFunction &CGF, Address VAListAddr, in EmitVAArg() argument
76 return CGF.EmitLoadOfAnyValue( in EmitVAArg()
77 CGF.MakeAddrLValue( in EmitVAArg()
78 EmitVAArgInstr(CGF, VAListAddr, Ty, classifyArgumentType(Ty)), Ty), in EmitVAArg()
108 llvm::Type *CodeGen::getVAListElementType(CodeGenFunction &CGF) { in getVAListElementType() argument
109 return CGF.ConvertTypeForMem( in getVAListElementType()
110 CGF.getContext().getBuiltinVaListType()->getPointeeType()); in getVAListElementType()
156 llvm::Value *CodeGen::emitRoundPointerUpToAlignment(CodeGenFunction &CGF, in emitRoundPointerUpToAlignment() argument
160 llvm::Value *RoundUp = CGF.Builder.CreateConstInBoundsGEP1_32( in emitRoundPointerUpToAlignment()
161 CGF.Builder.getInt8Ty(), Ptr, Align.getQuantity() - 1); in emitRoundPointerUpToAlignment()
162 return CGF.Builder.CreateIntrinsic( in emitRoundPointerUpToAlignment()
163 llvm::Intrinsic::ptrmask, {Ptr->getType(), CGF.IntPtrTy}, in emitRoundPointerUpToAlignment()
164 {RoundUp, llvm::ConstantInt::get(CGF.IntPtrTy, -Align.getQuantity())}, in emitRoundPointerUpToAlignment()
169 CodeGen::emitVoidPtrDirectVAArg(CodeGenFunction &CGF, Address VAListAddr, in emitVoidPtrDirectVAArg() argument
175 if (VAListAddr.getElementType() != CGF.Int8PtrTy) in emitVoidPtrDirectVAArg()
176 VAListAddr = VAListAddr.withElementType(CGF.Int8PtrTy); in emitVoidPtrDirectVAArg()
178 llvm::Value *Ptr = CGF.Builder.CreateLoad(VAListAddr, "argp.cur"); in emitVoidPtrDirectVAArg()
183 Addr = Address(emitRoundPointerUpToAlignment(CGF, Ptr, DirectAlign), in emitVoidPtrDirectVAArg()
184 CGF.Int8Ty, DirectAlign); in emitVoidPtrDirectVAArg()
186 Addr = Address(Ptr, CGF.Int8Ty, SlotSize); in emitVoidPtrDirectVAArg()
192 CGF.Builder.CreateConstInBoundsByteGEP(Addr, FullDirectSize, "argp.next"); in emitVoidPtrDirectVAArg()
193 CGF.Builder.CreateStore(NextPtr.emitRawPointer(CGF), VAListAddr); in emitVoidPtrDirectVAArg()
197 if (DirectSize < SlotSize && CGF.CGM.getDataLayout().isBigEndian() && in emitVoidPtrDirectVAArg()
199 Addr = CGF.Builder.CreateConstInBoundsByteGEP(Addr, SlotSize - DirectSize); in emitVoidPtrDirectVAArg()
205 RValue CodeGen::emitVoidPtrVAArg(CodeGenFunction &CGF, Address VAListAddr, in emitVoidPtrVAArg() argument
214 DirectSize = CGF.getPointerSize(); in emitVoidPtrVAArg()
215 DirectAlign = CGF.getPointerAlign(); in emitVoidPtrVAArg()
222 llvm::Type *DirectTy = CGF.ConvertTypeForMem(ValueTy), *ElementTy = DirectTy; in emitVoidPtrVAArg()
224 unsigned AllocaAS = CGF.CGM.getDataLayout().getAllocaAddrSpace(); in emitVoidPtrVAArg()
225 DirectTy = llvm::PointerType::get(CGF.getLLVMContext(), AllocaAS); in emitVoidPtrVAArg()
228 Address Addr = emitVoidPtrDirectVAArg(CGF, VAListAddr, DirectTy, DirectSize, in emitVoidPtrVAArg()
233 Addr = Address(CGF.Builder.CreateLoad(Addr), ElementTy, ValueInfo.Align); in emitVoidPtrVAArg()
236 return CGF.EmitLoadOfAnyValue(CGF.MakeAddrLValue(Addr, ValueTy), Slot); in emitVoidPtrVAArg()
239 Address CodeGen::emitMergePHI(CodeGenFunction &CGF, Address Addr1, in emitMergePHI() argument
244 llvm::PHINode *PHI = CGF.Builder.CreatePHI(Addr1.getType(), 2, Name); in emitMergePHI()
245 PHI->addIncoming(Addr1.emitRawPointer(CGF), Block1); in emitMergePHI()
246 PHI->addIncoming(Addr2.emitRawPointer(CGF), Block2); in emitMergePHI()
415 Address CodeGen::EmitVAArgInstr(CodeGenFunction &CGF, Address VAListAddr, in EmitVAArgInstr() argument
435 auto TyInfo = CGF.getContext().getTypeInfoInChars(Ty); in EmitVAArgInstr()
438 llvm::Type *ElementTy = CGF.ConvertTypeForMem(Ty); in EmitVAArgInstr()
441 CGF.Builder.CreateVAArg(VAListAddr.emitRawPointer(CGF), BaseTy); in EmitVAArgInstr()
456 Address Temp = CGF.CreateMemTemp(Ty, "varet"); in EmitVAArgInstr()
457 Val = CGF.Builder.CreateVAArg(VAListAddr.emitRawPointer(CGF), in EmitVAArgInstr()
458 CGF.ConvertTypeForMem(Ty)); in EmitVAArgInstr()
459 CGF.Builder.CreateStore(Val, Temp); in EmitVAArgInstr()