Lines Matching refs:CGF

41   RValue EmitVAArg(CodeGenFunction &CGF, Address VAListAddr, QualType Ty,
246 RValue SystemZABIInfo::EmitVAArg(CodeGenFunction &CGF, Address VAListAddr, in EmitVAArg() argument
264 llvm::Type *ArgTy = CGF.ConvertTypeForMem(Ty); in EmitVAArg()
292 llvm::Type *IndexTy = CGF.Int64Ty; in EmitVAArg()
301 CGF.Builder.CreateStructGEP(VAListAddr, 2, "overflow_arg_area_ptr"); in EmitVAArg()
303 Address(CGF.Builder.CreateLoad(OverflowArgAreaPtr, "overflow_arg_area"), in EmitVAArg()
304 CGF.Int8Ty, TyInfo.Align); in EmitVAArg()
308 llvm::Value *NewOverflowArgArea = CGF.Builder.CreateGEP( in EmitVAArg()
309 OverflowArgArea.getElementType(), OverflowArgArea.emitRawPointer(CGF), in EmitVAArg()
311 CGF.Builder.CreateStore(NewOverflowArgArea, OverflowArgAreaPtr); in EmitVAArg()
313 return CGF.EmitLoadOfAnyValue(CGF.MakeAddrLValue(MemAddr, Ty), Slot); in EmitVAArg()
333 CGF.Builder.CreateStructGEP(VAListAddr, RegCountField, "reg_count_ptr"); in EmitVAArg()
334 llvm::Value *RegCount = CGF.Builder.CreateLoad(RegCountPtr, "reg_count"); in EmitVAArg()
336 llvm::Value *InRegs = CGF.Builder.CreateICmpULT(RegCount, MaxRegsV, in EmitVAArg()
339 llvm::BasicBlock *InRegBlock = CGF.createBasicBlock("vaarg.in_reg"); in EmitVAArg()
340 llvm::BasicBlock *InMemBlock = CGF.createBasicBlock("vaarg.in_mem"); in EmitVAArg()
341 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("vaarg.end"); in EmitVAArg()
342 CGF.Builder.CreateCondBr(InRegs, InRegBlock, InMemBlock); in EmitVAArg()
345 CGF.EmitBlock(InRegBlock); in EmitVAArg()
349 CGF.Builder.CreateMul(RegCount, PaddedSizeV, "scaled_reg_count"); in EmitVAArg()
354 CGF.Builder.CreateAdd(ScaledRegCount, RegBase, "reg_offset"); in EmitVAArg()
356 CGF.Builder.CreateStructGEP(VAListAddr, 3, "reg_save_area_ptr"); in EmitVAArg()
358 CGF.Builder.CreateLoad(RegSaveAreaPtr, "reg_save_area"); in EmitVAArg()
360 CGF.Builder.CreateGEP(CGF.Int8Ty, RegSaveArea, RegOffset, "raw_reg_addr"), in EmitVAArg()
361 CGF.Int8Ty, PaddedSize); in EmitVAArg()
367 CGF.Builder.CreateAdd(RegCount, One, "reg_count"); in EmitVAArg()
368 CGF.Builder.CreateStore(NewRegCount, RegCountPtr); in EmitVAArg()
369 CGF.EmitBranch(ContBlock); in EmitVAArg()
372 CGF.EmitBlock(InMemBlock); in EmitVAArg()
376 CGF.Builder.CreateStructGEP(VAListAddr, 2, "overflow_arg_area_ptr"); in EmitVAArg()
378 Address(CGF.Builder.CreateLoad(OverflowArgAreaPtr, "overflow_arg_area"), in EmitVAArg()
379 CGF.Int8Ty, PaddedSize); in EmitVAArg()
381 CGF.Builder.CreateConstByteGEP(OverflowArgArea, Padding, "raw_mem_addr"); in EmitVAArg()
385 llvm::Value *NewOverflowArgArea = CGF.Builder.CreateGEP( in EmitVAArg()
386 OverflowArgArea.getElementType(), OverflowArgArea.emitRawPointer(CGF), in EmitVAArg()
388 CGF.Builder.CreateStore(NewOverflowArgArea, OverflowArgAreaPtr); in EmitVAArg()
389 CGF.EmitBranch(ContBlock); in EmitVAArg()
392 CGF.EmitBlock(ContBlock); in EmitVAArg()
393 Address ResAddr = emitMergePHI(CGF, RegAddr, InRegBlock, MemAddr, InMemBlock, in EmitVAArg()
397 ResAddr = Address(CGF.Builder.CreateLoad(ResAddr, "indirect_arg"), ArgTy, in EmitVAArg()
400 return CGF.EmitLoadOfAnyValue(CGF.MakeAddrLValue(ResAddr, Ty), Slot); in EmitVAArg()