Lines Matching refs:CGF
328 CodeGenFunction *CGF) { in getParamAddrs() argument
330 Address(CGF->Builder.CreateLoad(CGF->GetAddrOfLocalVar(Args[Ints])), in getParamAddrs()
354 CodeGenFunction &CGF = *this->CGF; in visitArray() local
355 ASTContext &Ctx = CGF.getContext(); in visitArray()
363 llvm::Value *NumElts = CGF.emitArrayLength(AT, BaseEltQT, DstAddr); in visitArray()
368 CGF.Builder.CreateNUWMul(BaseEltSizeVal, NumElts); in visitArray()
369 Address BC = CGF.Builder.CreateBitCast(DstAddr, CGF.CGM.Int8PtrTy); in visitArray()
371 CGF.Builder.CreateInBoundsGEP(CGF.Int8Ty, BC.getPointer(), SizeInBytes); in visitArray()
372 DstArrayEnd = CGF.Builder.CreateBitCast(DstArrayEnd, CGF.CGM.Int8PtrPtrTy, in visitArray()
374 llvm::BasicBlock *PreheaderBB = CGF.Builder.GetInsertBlock(); in visitArray()
377 llvm::BasicBlock *HeaderBB = CGF.createBasicBlock("loop.header"); in visitArray()
378 CGF.EmitBlock(HeaderBB); in visitArray()
382 PHIs[I] = CGF.Builder.CreatePHI(CGF.CGM.Int8PtrPtrTy, 2, "addr.cur"); in visitArray()
387 llvm::BasicBlock *ExitBB = CGF.createBasicBlock("loop.exit"); in visitArray()
388 llvm::BasicBlock *LoopBB = CGF.createBasicBlock("loop.body"); in visitArray()
393 CGF.Builder.CreateICmpEQ(PHIs[DstIdx], DstArrayEnd, "done"); in visitArray()
394 CGF.Builder.CreateCondBr(Done, ExitBB, LoopBB); in visitArray()
397 CGF.EmitBlock(LoopBB); in visitArray()
410 LoopBB = CGF.Builder.GetInsertBlock(); in visitArray()
420 CGF.Builder.CreateBr(HeaderBB); in visitArray()
421 CGF.EmitBlock(ExitBB); in visitArray()
429 Addr = CGF->Builder.CreateBitCast(Addr, CGF->CGM.Int8PtrTy); in getAddrWithOffset()
430 Addr = CGF->Builder.CreateConstInBoundsGEP(Addr, Offset.getQuantity()); in getAddrWithOffset()
431 return CGF->Builder.CreateBitCast(Addr, CGF->CGM.Int8PtrPtrTy); in getAddrWithOffset()
482 CGF->StartFunction(FD, Ctx.VoidTy, F, FI, Args); in getFunction()
484 getParamAddrs<N>(std::make_index_sequence<N>{}, Alignments, Args, CGF); in getFunction()
486 CGF->FinishFunction(); in getFunction()
510 void setCGF(CodeGenFunction *F) { CGF = F; } in setCGF()
512 CodeGenFunction *CGF = nullptr; member
532 llvm::ConstantInt::get(this->CGF->SizeTy, Size.getQuantity()); in flushTrivialFields()
534 this->CGF->Builder.CreateElementBitCast(DstAddr, this->CGF->Int8Ty); in flushTrivialFields()
536 this->CGF->Builder.CreateElementBitCast(SrcAddr, this->CGF->Int8Ty); in flushTrivialFields()
537 this->CGF->Builder.CreateMemCpy(DstAddr, SrcAddr, SizeVal, false); in flushTrivialFields()
540 this->CGF->getLLVMContext(), in flushTrivialFields()
541 Size.getQuantity() * this->CGF->getContext().getCharWidth()); in flushTrivialFields()
542 DstAddr = this->CGF->Builder.CreateElementBitCast(DstAddr, Ty); in flushTrivialFields()
543 SrcAddr = this->CGF->Builder.CreateElementBitCast(SrcAddr, Ty); in flushTrivialFields()
544 llvm::Value *SrcVal = this->CGF->Builder.CreateLoad(SrcAddr, false); in flushTrivialFields()
545 this->CGF->Builder.CreateStore(SrcVal, DstAddr, false); in flushTrivialFields()
557 if (FD->isZeroLengthBitField(this->CGF->getContext())) in visitVolatileTrivial()
561 llvm::PointerType *PtrTy = this->CGF->ConvertType(RT)->getPointerTo(); in visitVolatileTrivial()
563 LValue DstBase = this->CGF->MakeAddrLValue( in visitVolatileTrivial()
564 this->CGF->Builder.CreateBitCast(DstAddr, PtrTy), FT); in visitVolatileTrivial()
565 DstLV = this->CGF->EmitLValueForField(DstBase, FD); in visitVolatileTrivial()
567 LValue SrcBase = this->CGF->MakeAddrLValue( in visitVolatileTrivial()
568 this->CGF->Builder.CreateBitCast(SrcAddr, PtrTy), FT); in visitVolatileTrivial()
569 SrcLV = this->CGF->EmitLValueForField(SrcBase, FD); in visitVolatileTrivial()
571 llvm::PointerType *Ty = this->CGF->ConvertTypeForMem(FT)->getPointerTo(); in visitVolatileTrivial()
572 Address DstAddr = this->CGF->Builder.CreateBitCast(Addrs[DstIdx], Ty); in visitVolatileTrivial()
573 Address SrcAddr = this->CGF->Builder.CreateBitCast(Addrs[SrcIdx], Ty); in visitVolatileTrivial()
574 DstLV = this->CGF->MakeAddrLValue(DstAddr, FT); in visitVolatileTrivial()
575 SrcLV = this->CGF->MakeAddrLValue(SrcAddr, FT); in visitVolatileTrivial()
577 RValue SrcVal = this->CGF->EmitLoadOfLValue(SrcLV, SourceLocation()); in visitVolatileTrivial()
578 this->CGF->EmitStoreThroughLValue(SrcVal, DstLV); in visitVolatileTrivial()
602 CGF->destroyARCStrongImprecise( in visitARCStrong()
603 *CGF, getAddrWithOffset(Addrs[DstIdx], CurStructOffset, FD), QT); in visitARCStrong()
608 CGF->destroyARCWeak( in visitARCWeak()
609 *CGF, getAddrWithOffset(Addrs[DstIdx], CurStructOffset, FD), QT); in visitARCWeak()
614 CGF->callCStructDestructor( in callSpecialFunction()
615 CGF->MakeAddrLValue(getAddrWithOffset(Addrs[DstIdx], Offset), FT)); in callSpecialFunction()
643 CGF->EmitNullInitialization( in visitARCStrong()
649 CGF->EmitNullInitialization( in visitARCWeak()
669 llvm::Constant *SizeVal = CGF->Builder.getInt64(Size.getQuantity()); in visitArray()
671 Address Loc = CGF->Builder.CreateElementBitCast(DstAddr, CGF->Int8Ty); in visitArray()
672 CGF->Builder.CreateMemSet(Loc, CGF->Builder.getInt8(0), SizeVal, in visitArray()
678 CGF->callCStructDefaultConstructor( in callSpecialFunction()
679 CGF->MakeAddrLValue(getAddrWithOffset(Addrs[DstIdx], Offset), FT)); in callSpecialFunction()
691 llvm::Value *SrcVal = CGF->EmitLoadOfScalar( in visitARCStrong()
693 llvm::Value *Val = CGF->EmitARCRetain(QT, SrcVal); in visitARCStrong()
694 CGF->EmitStoreOfScalar(Val, CGF->MakeAddrLValue(Addrs[DstIdx], QT), true); in visitARCStrong()
701 CGF->EmitARCCopyWeak(Addrs[DstIdx], Addrs[SrcIdx]); in visitARCWeak()
708 CGF->callCStructCopyConstructor(CGF->MakeAddrLValue(Addrs[DstIdx], FT), in callSpecialFunction()
709 CGF->MakeAddrLValue(Addrs[SrcIdx], FT)); in callSpecialFunction()
721 LValue SrcLV = CGF->MakeAddrLValue(Addrs[SrcIdx], QT); in visitARCStrong()
723 CGF->EmitLoadOfLValue(SrcLV, SourceLocation()).getScalarVal(); in visitARCStrong()
724 CGF->EmitStoreOfScalar(getNullForVariable(SrcLV.getAddress(*CGF)), SrcLV); in visitARCStrong()
725 CGF->EmitStoreOfScalar(SrcVal, CGF->MakeAddrLValue(Addrs[DstIdx], QT), in visitARCStrong()
733 CGF->EmitARCMoveWeak(Addrs[DstIdx], Addrs[SrcIdx]); in visitARCWeak()
740 CGF->callCStructMoveConstructor(CGF->MakeAddrLValue(Addrs[DstIdx], FT), in callSpecialFunction()
741 CGF->MakeAddrLValue(Addrs[SrcIdx], FT)); in callSpecialFunction()
753 llvm::Value *SrcVal = CGF->EmitLoadOfScalar( in visitARCStrong()
755 CGF->EmitARCStoreStrong(CGF->MakeAddrLValue(Addrs[DstIdx], QT), SrcVal, in visitARCStrong()
763 CGF->emitARCCopyAssignWeak(QT, Addrs[DstIdx], Addrs[SrcIdx]); in visitARCWeak()
770 CGF->callCStructCopyAssignmentOperator( in callSpecialFunction()
771 CGF->MakeAddrLValue(Addrs[DstIdx], FT), in callSpecialFunction()
772 CGF->MakeAddrLValue(Addrs[SrcIdx], FT)); in callSpecialFunction()
784 LValue SrcLV = CGF->MakeAddrLValue(Addrs[SrcIdx], QT); in visitARCStrong()
786 CGF->EmitLoadOfLValue(SrcLV, SourceLocation()).getScalarVal(); in visitARCStrong()
787 CGF->EmitStoreOfScalar(getNullForVariable(SrcLV.getAddress(*CGF)), SrcLV); in visitARCStrong()
788 LValue DstLV = CGF->MakeAddrLValue(Addrs[DstIdx], QT); in visitARCStrong()
790 CGF->EmitLoadOfLValue(DstLV, SourceLocation()).getScalarVal(); in visitARCStrong()
791 CGF->EmitStoreOfScalar(SrcVal, DstLV); in visitARCStrong()
792 CGF->EmitARCRelease(DstVal, ARCImpreciseLifetime); in visitARCStrong()
799 CGF->emitARCMoveAssignWeak(QT, Addrs[DstIdx], Addrs[SrcIdx]); in visitARCWeak()
806 CGF->callCStructMoveAssignmentOperator( in callSpecialFunction()
807 CGF->MakeAddrLValue(Addrs[DstIdx], FT), in callSpecialFunction()
808 CGF->MakeAddrLValue(Addrs[SrcIdx], FT)); in callSpecialFunction()
814 void CodeGenFunction::destroyNonTrivialCStruct(CodeGenFunction &CGF, in destroyNonTrivialCStruct() argument
816 CGF.callCStructDestructor(CGF.MakeAddrLValue(Addr, Type)); in destroyNonTrivialCStruct()
833 bool IsVolatile, CodeGenFunction &CGF, in callSpecialFunction() argument
835 auto SetArtificialLoc = ApplyDebugLocation::CreateArtificial(CGF); in callSpecialFunction()
837 Addrs[I] = CGF.Builder.CreateBitCast(Addrs[I], CGF.CGM.Int8PtrPtrTy); in callSpecialFunction()
839 Gen.callFunc(FuncName, QT, Addrs, CGF); in callSpecialFunction()