Lines Matching refs:CGF

44   CodeGenFunction &CGF;  member in __anon66bd1ef60111::AggExprEmitter
51 return CGF.CreateAggTemp(T, "agg.tmp.ensured"); in EnsureSlot()
55 Dest = CGF.CreateAggTemp(T, "agg.tmp.ensured"); in EnsureDest()
69 : CGF(cgf), Builder(CGF.Builder), Dest(Dest), in AggExprEmitter()
95 if (CGF.getLangOpts().getGC() && TypeRequiresGCollection(T)) in needsGC()
107 ApplyDebugLocation DL(CGF, E); in Visit()
112 CGF.ErrorUnsupported(S, "aggregate expression"); in VisitStmt()
119 CGF.EmitCoawaitExpr(*E, Dest, IsResultUnused); in VisitCoawaitExpr()
122 CGF.EmitCoyieldExpr(*E, Dest, IsResultUnused); in VisitCoyieldExpr()
133 if (llvm::Value *Result = ConstantEmitter(CGF).tryEmitConstantExpr(E)) { in VisitConstantExpr()
134 CGF.CreateCoercedStore( in VisitConstantExpr()
137 Dest.getPreferredSize(CGF.getContext(), E->getType()) in VisitConstantExpr()
188 CodeGenFunction::CXXDefaultArgExprScope Scope(CGF, DAE); in VisitCXXDefaultArgExpr()
192 CodeGenFunction::CXXDefaultInitExprScope Scope(CGF, DIE); in VisitCXXDefaultInitExpr()
208 LValue LV = CGF.EmitPseudoObjectLValue(E); in VisitPseudoObjectExpr()
218 CGF.EmitPseudoObjectRValue(E, Slot); in VisitPseudoObjectExpr()
220 CGF.pushDestroy(QualType::DK_nontrivial_c_struct, Slot.getAddress(), in VisitPseudoObjectExpr()
232 void VisitCXXThrowExpr(const CXXThrowExpr *E) { CGF.EmitCXXThrowExpr(E); } in VisitCXXThrowExpr()
234 RValue Res = CGF.EmitAtomicExpr(E); in VisitAtomicExpr()
251 LValue LV = CGF.EmitLValue(E); in EmitAggLoadOfLValue()
254 if (LV.getType()->isAtomicType() || CGF.LValueIsSuitableForInlineAtomic(LV)) { in EmitAggLoadOfLValue()
255 CGF.EmitAtomicLoad(LV, E->getExprLoc(), Dest); in EmitAggLoadOfLValue()
303 RetAddr = CGF.CreateMemTemp(RetTy, "tmp", &RetAllocaAddr); in withReturnValueSlot()
305 CGF.CGM.getDataLayout().getTypeAllocSize(CGF.ConvertTypeForMem(RetTy)); in withReturnValueSlot()
306 LifetimeSizePtr = CGF.EmitLifetimeStart(Size, RetAllocaAddr.getPointer()); in withReturnValueSlot()
314 CGF.pushFullExprCleanup<CodeGenFunction::CallLifetimeEnd>( in withReturnValueSlot()
316 LifetimeEndBlock = CGF.EHStack.stable_begin(); in withReturnValueSlot()
327 assert(Dest.isIgnored() || Dest.emitRawPointer(CGF) != in withReturnValueSlot()
328 Src.getAggregatePointer(E->getType(), CGF)); in withReturnValueSlot()
335 CGF.DeactivateCleanupBlock(LifetimeEndBlock, LifetimeStartInst); in withReturnValueSlot()
336 CGF.EmitLifetimeEnd(LifetimeSizePtr, RetAllocaAddr.getPointer()); in withReturnValueSlot()
343 LValue srcLV = CGF.MakeAddrLValue(src.getAggregateAddress(), type); in EmitFinalDestCopy()
359 LValue DstLV = CGF.MakeAddrLValue( in EmitFinalDestCopy()
365 CGF.callCStructMoveAssignmentOperator(DstLV, src); in EmitFinalDestCopy()
367 CGF.callCStructMoveConstructor(DstLV, src); in EmitFinalDestCopy()
373 CGF.callCStructCopyAssignmentOperator(DstLV, src); in EmitFinalDestCopy()
375 CGF.callCStructCopyConstructor(DstLV, src); in EmitFinalDestCopy()
393 CharUnits sz = dest.getPreferredSize(CGF.getContext(), type); in EmitCopy()
394 llvm::Value *size = llvm::ConstantInt::get(CGF.SizeTy, sz.getQuantity()); in EmitCopy()
395 CGF.CGM.getObjCRuntime().EmitGCMemmoveCollectable(CGF, in EmitCopy()
405 LValue DestLV = CGF.MakeAddrLValue(dest.getAddress(), type); in EmitCopy()
406 LValue SrcLV = CGF.MakeAddrLValue(src.getAddress(), type); in EmitCopy()
407 CGF.EmitAggregateCopy(DestLV, SrcLV, type, dest.mayOverlap(), in EmitCopy()
417 ASTContext &Ctx = CGF.getContext(); in VisitCXXStdInitializerListExpr()
418 LValue Array = CGF.EmitLValue(E->getSubExpr()); in VisitCXXStdInitializerListExpr()
435 LValue DestLV = CGF.MakeAddrLValue(Dest.getAddress(), E->getType()); in VisitCXXStdInitializerListExpr()
436 LValue Start = CGF.EmitLValueForFieldInitialization(DestLV, *Field); in VisitCXXStdInitializerListExpr()
437 llvm::Value *ArrayStart = ArrayPtr.emitRawPointer(CGF); in VisitCXXStdInitializerListExpr()
438 CGF.EmitStoreThroughLValue(RValue::get(ArrayStart), Start); in VisitCXXStdInitializerListExpr()
444 LValue EndOrLength = CGF.EmitLValueForFieldInitialization(DestLV, *Field); in VisitCXXStdInitializerListExpr()
447 CGF.EmitStoreThroughLValue(RValue::get(Size), EndOrLength); in VisitCXXStdInitializerListExpr()
455 llvm::Value *Zero = llvm::ConstantInt::get(CGF.PtrDiffTy, 0); in VisitCXXStdInitializerListExpr()
458 ArrayPtr.getElementType(), ArrayPtr.emitRawPointer(CGF), IdxEnd, in VisitCXXStdInitializerListExpr()
460 CGF.EmitStoreThroughLValue(RValue::get(ArrayEnd), EndOrLength); in VisitCXXStdInitializerListExpr()
511 CGF.getContext().getAsArrayType(ArrayQTy)->getElementType(); in EmitArrayInit()
512 CharUnits elementSize = CGF.getContext().getTypeSizeInChars(elementType); in EmitArrayInit()
515 llvm::Type *llvmElementType = CGF.ConvertTypeForMem(elementType); in EmitArrayInit()
521 elementType.isTriviallyCopyableType(CGF.getContext())) { in EmitArrayInit()
522 CodeGen::CodeGenModule &CGM = CGF.CGM; in EmitArrayInit()
523 ConstantEmitter Emitter(CGF); in EmitArrayInit()
540 EmitFinalDestCopy(ArrayQTy, CGF.MakeAddrLValue(GVAddr, GVArrayQTy)); in EmitArrayInit()
550 CodeGenFunction::CleanupDeactivationScope deactivation(CGF); in EmitArrayInit()
552 llvm::Value *begin = DestPtr.emitRawPointer(CGF); in EmitArrayInit()
554 CodeGenFunction::AllocaTrackerRAII allocaTracker(CGF); in EmitArrayInit()
560 Builder.CreateFlagLoad(llvm::ConstantInt::getNullValue(CGF.Int8PtrTy)); in EmitArrayInit()
561 endOfInit = CGF.CreateTempAlloca(begin->getType(), CGF.getPointerAlign(), in EmitArrayInit()
564 CGF.pushIrregularPartialArrayCleanup(begin, endOfInit, elementType, in EmitArrayInit()
566 CGF.getDestroyer(dtorKind)); in EmitArrayInit()
567 cast<EHCleanupScope>(*CGF.EHStack.find(CGF.EHStack.stable_begin())) in EmitArrayInit()
570 CGF.DeferredDeactivationCleanupStack.push_back( in EmitArrayInit()
571 {CGF.EHStack.stable_begin(), dominatingIP}); in EmitArrayInit()
574 llvm::Value *one = llvm::ConstantInt::get(CGF.SizeTy, 1); in EmitArrayInit()
581 llvm::ConstantInt::get(CGF.SizeTy, ArrayIndex), "arrayinit.element"); in EmitArrayInit()
590 LValue elementLV = CGF.MakeAddrLValue( in EmitArrayInit()
617 CGF.getTypes().isZeroInitializable(elementType))) { in EmitArrayInit()
627 llvm::ConstantInt::get(CGF.SizeTy, NumInitElements), in EmitArrayInit()
635 llvm::ConstantInt::get(CGF.SizeTy, NumArrayElements), "arrayinit.end"); in EmitArrayInit()
638 llvm::BasicBlock *bodyBB = CGF.createBasicBlock("arrayinit.body"); in EmitArrayInit()
641 CGF.EmitBlock(bodyBB); in EmitArrayInit()
653 CodeGenFunction::RunCleanupsScope CleanupsScope(CGF); in EmitArrayInit()
654 LValue elementLV = CGF.MakeAddrLValue( in EmitArrayInit()
672 llvm::BasicBlock *endBB = CGF.createBasicBlock("arrayinit.end"); in EmitArrayInit()
676 CGF.EmitBlock(endBB); in EmitArrayInit()
693 EmitFinalDestCopy(e->getType(), CGF.getOrCreateOpaqueLValueMapping(e)); in VisitOpaqueValueExpr()
699 E->getType().isPODType(CGF.getContext())) { in VisitCompoundLiteralExpr()
711 !CGF.getLangOpts().CPlusPlus && !Slot.isExternallyDestructed(); in VisitCompoundLiteralExpr()
715 CGF.EmitAggExpr(E->getInitializer(), Slot); in VisitCompoundLiteralExpr()
719 CGF.pushLifetimeExtendedDestroy( in VisitCompoundLiteralExpr()
720 CGF.getCleanupKind(DtorKind), Slot.getAddress(), E->getType(), in VisitCompoundLiteralExpr()
721 CGF.getDestroyer(DtorKind), DtorKind & EHCleanup); in VisitCompoundLiteralExpr()
737 CGF.CGM.EmitExplicitCastExprType(ECE, &CGF); in VisitCastExpr()
742 LValue LV = CGF.EmitCheckedLValue(E->getSubExpr(), in VisitCastExpr()
746 CGF.EmitDynamicCast(LV.getAddress(), cast<CXXDynamicCastExpr>(E)); in VisitCastExpr()
748 CGF.CGM.ErrorUnsupported(E, "non-simple lvalue dynamic_cast"); in VisitCastExpr()
751 CGF.CGM.ErrorUnsupported(E, "lvalue dynamic_cast with a destination"); in VisitCastExpr()
758 CGF.EmitAnyExpr(E->getSubExpr(), AggValueSlot::ignored(), in VisitCastExpr()
765 Address CastPtr = Dest.getAddress().withElementType(CGF.ConvertType(Ty)); in VisitCastExpr()
767 CGF.MakeAddrLValue(CastPtr, Ty)); in VisitCastExpr()
773 CGF.EmitAnyExpr(E->getSubExpr(), AggValueSlot::ignored(), in VisitCastExpr()
778 LValue SourceLV = CGF.EmitLValue(E->getSubExpr()); in VisitCastExpr()
779 Address SourceAddress = SourceLV.getAddress().withElementType(CGF.Int8Ty); in VisitCastExpr()
780 Address DestAddress = Dest.getAddress().withElementType(CGF.Int8Ty); in VisitCastExpr()
782 CGF.SizeTy, in VisitCastExpr()
783 CGF.getContext().getTypeSizeInChars(E->getType()).getQuantity()); in VisitCastExpr()
805 assert(CGF.getContext().hasSameUnqualifiedType(valueType, in VisitCastExpr()
810 if (Dest.isIgnored() || !CGF.CGM.isPaddedAtomicType(atomicType)) { in VisitCastExpr()
819 findPeephole(E->getSubExpr(), peepholeTarget, CGF.getContext())) { in VisitCastExpr()
820 assert(CGF.getContext().hasSameUnqualifiedType(op->getType(), in VisitCastExpr()
830 if (!valueDest.isIgnored() && CGF.CGM.isPaddedAtomicType(atomicType)) { in VisitCastExpr()
834 CGF.EmitNullInitialization(Dest.getAddress(), atomicType); in VisitCastExpr()
838 CGF.Builder.CreateStructGEP(valueDest.getAddress(), 0); in VisitCastExpr()
848 CGF.EmitAggExpr(E->getSubExpr(), valueDest); in VisitCastExpr()
855 CGF.CreateAggTemp(atomicType, "atomic-to-nonatomic.temp"); in VisitCastExpr()
856 CGF.EmitAggExpr(E->getSubExpr(), atomicSlot); in VisitCastExpr()
878 CGF.pushDestroy(QualType::DK_nontrivial_c_struct, Dest.getAddress(), in VisitCastExpr()
893 assert(CGF.getContext().hasSameUnqualifiedType(E->getSubExpr()->getType(), in VisitCastExpr()
960 if (E->getCallReturnType(CGF.getContext())->isReferenceType()) { in VisitCallExpr()
966 return CGF.EmitCallExpr(E, Slot); in VisitCallExpr()
972 return CGF.EmitObjCMessageExpr(E, Slot); in VisitObjCMessageExpr()
977 CGF.EmitIgnoredExpr(E->getLHS()); in VisitBinComma()
982 CodeGenFunction::StmtExprEvaluation eval(CGF); in VisitStmtExpr()
983 CGF.EmitCompoundStmt(*E->getSubStmt(), true, Dest); in VisitStmtExpr()
992 static llvm::Value *EmitCompare(CGBuilderTy &Builder, CodeGenFunction &CGF, in EmitCompare() argument
1003 return CGF.CGM.getCXXABI().EmitMemberPointerComparison( in EmitCompare()
1004 CGF, LHS, RHS, MPT, /*IsInequality*/ false); in EmitCompare()
1046 assert(CGF.getContext().hasSameType(E->getLHS()->getType(), in VisitBinCmp()
1049 CGF.getContext().CompCategories.getInfoForType(E->getType()); in VisitBinCmp()
1058 return CGF.ErrorUnsupported(E, "aggregate three-way comparison"); in VisitBinCmp()
1064 RValue RV = CGF.EmitAnyExpr(E); in VisitBinCmp()
1068 return {RV.getAggregatePointer(E->getType(), CGF), nullptr}; in VisitBinCmp()
1076 Value *Cmp = EmitCompare(Builder, CGF, E, LHSValues.first, RHSValues.first, in VisitBinCmp()
1081 Value *CmpImag = EmitCompare(Builder, CGF, E, LHSValues.second, in VisitBinCmp()
1111 LValue DestLV = CGF.MakeAddrLValue(Dest.getAddress(), E->getType()); in VisitBinCmp()
1115 LValue FieldLV = CGF.EmitLValueForFieldInitialization( in VisitBinCmp()
1117 CGF.EmitStoreThroughLValue(RValue::get(Select), FieldLV, /*IsInit*/ true); in VisitBinCmp()
1126 CGF.ErrorUnsupported(E, "aggregate binary expression"); in VisitBinaryOperator()
1131 LValue LV = CGF.EmitPointerToDataMemberBinaryExpr(E); in VisitPointerToDataMemberBinaryOperator()
1204 assert(CGF.getContext().hasSameUnqualifiedType(E->getLHS()->getType(), in VisitBinAssign()
1213 E->getRHS()->HasSideEffects(CGF.getContext())) { in VisitBinAssign()
1219 LValue LHS = CGF.EmitCheckedLValue(E->getLHS(), CodeGenFunction::TCK_Store); in VisitBinAssign()
1223 CGF.LValueIsSuitableForInlineAtomic(LHS)) { in VisitBinAssign()
1224 CGF.EmitAtomicStore(Dest.asRValue(), LHS, /*isInit*/ false); in VisitBinAssign()
1237 LValue LHS = CGF.EmitLValue(E->getLHS()); in VisitBinAssign()
1242 CGF.LValueIsSuitableForInlineAtomic(LHS)) { in VisitBinAssign()
1245 CGF.EmitAtomicStore(Dest.asRValue(), LHS, /*isInit*/ false); in VisitBinAssign()
1255 CGF.hasVolatileMember(E->getLHS()->getType())) in VisitBinAssign()
1258 CGF.EmitAggExpr(E->getRHS(), LHSSlot); in VisitBinAssign()
1265 CGF.pushDestroy(QualType::DK_nontrivial_c_struct, Dest.getAddress(), in VisitBinAssign()
1271 llvm::BasicBlock *LHSBlock = CGF.createBasicBlock("cond.true"); in VisitAbstractConditionalOperator()
1272 llvm::BasicBlock *RHSBlock = CGF.createBasicBlock("cond.false"); in VisitAbstractConditionalOperator()
1273 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("cond.end"); in VisitAbstractConditionalOperator()
1276 CodeGenFunction::OpaqueValueMapping binding(CGF, E); in VisitAbstractConditionalOperator()
1278 CodeGenFunction::ConditionalEvaluation eval(CGF); in VisitAbstractConditionalOperator()
1279 CGF.EmitBranchOnBoolExpr(E->getCond(), LHSBlock, RHSBlock, in VisitAbstractConditionalOperator()
1280 CGF.getProfileCount(E)); in VisitAbstractConditionalOperator()
1290 eval.begin(CGF); in VisitAbstractConditionalOperator()
1291 CGF.EmitBlock(LHSBlock); in VisitAbstractConditionalOperator()
1293 CGF.incrementProfileCounter(E->getTrueExpr()); in VisitAbstractConditionalOperator()
1295 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
1297 eval.end(CGF); in VisitAbstractConditionalOperator()
1299 assert(CGF.HaveInsertPoint() && "expression evaluation ended with no IP!"); in VisitAbstractConditionalOperator()
1300 CGF.Builder.CreateBr(ContBlock); in VisitAbstractConditionalOperator()
1308 eval.begin(CGF); in VisitAbstractConditionalOperator()
1309 CGF.EmitBlock(RHSBlock); in VisitAbstractConditionalOperator()
1311 CGF.incrementProfileCounter(E->getFalseExpr()); in VisitAbstractConditionalOperator()
1313 eval.end(CGF); in VisitAbstractConditionalOperator()
1316 CGF.pushDestroy(QualType::DK_nontrivial_c_struct, Dest.getAddress(), in VisitAbstractConditionalOperator()
1319 CGF.EmitBlock(ContBlock); in VisitAbstractConditionalOperator()
1321 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
1330 CGF.EmitVAArg(VE, ArgValue, Dest); in VisitVAArgExpr()
1334 CGF.ErrorUnsupported(VE, "aggregate va_arg expression"); in VisitVAArgExpr()
1352 CGF.EmitCXXTemporary(E->getTemporary(), E->getType(), Dest.getAddress()); in VisitCXXBindTemporaryExpr()
1358 CGF.EmitCXXConstructExpr(E, Slot); in VisitCXXConstructExpr()
1364 CGF.EmitInheritedCXXConstructorCall( in VisitCXXInheritedCtorInitExpr()
1372 LValue SlotLV = CGF.MakeAddrLValue(Slot.getAddress(), E->getType()); in VisitLambdaExpr()
1376 CodeGenFunction::CleanupDeactivationScope scope(CGF); in VisitLambdaExpr()
1383 LValue LV = CGF.EmitLValueForFieldInitialization(SlotLV, *CurField); in VisitLambdaExpr()
1385 CGF.EmitLambdaVLACapture(CurField->getCapturedVLAType(), LV); in VisitLambdaExpr()
1396 CGF.pushDestroyAndDeferDeactivation(NormalAndEHCleanup, LV.getAddress(), in VisitLambdaExpr()
1398 CGF.getDestroyer(DtorKind), false); in VisitLambdaExpr()
1404 CodeGenFunction::RunCleanupsScope cleanups(CGF); in VisitExprWithCleanups()
1411 EmitNullInitializationToLValue(CGF.MakeAddrLValue(Slot.getAddress(), T)); in VisitCXXScalarValueInitExpr()
1417 EmitNullInitializationToLValue(CGF.MakeAddrLValue(Slot.getAddress(), T)); in VisitImplicitValueInitExpr()
1520 static bool isSimpleZero(const Expr *E, CodeGenFunction &CGF) { in isSimpleZero() argument
1536 CGF.getTypes().isZeroInitializable(E->getType())) in isSimpleZero()
1541 CGF.getTypes().isPointerZeroInitializable(E->getType()) && in isSimpleZero()
1542 !E->HasSideEffects(CGF.getContext()); in isSimpleZero()
1557 if (Dest.isZeroed() && isSimpleZero(E, CGF)) { in EmitInitializationToLValue()
1566 RValue RV = CGF.EmitReferenceBindingToExpr(E); in EmitInitializationToLValue()
1567 return CGF.EmitStoreThroughLValue(RV, LV); in EmitInitializationToLValue()
1570 switch (CGF.getEvaluationKind(type)) { in EmitInitializationToLValue()
1572 CGF.EmitComplexExprIntoLValue(E, LV, /*isInit*/ true); in EmitInitializationToLValue()
1575 CGF.EmitAggExpr( in EmitInitializationToLValue()
1583 CGF.EmitScalarInit(E, /*D=*/nullptr, LV, /*Captured=*/false); in EmitInitializationToLValue()
1585 CGF.EmitStoreThroughLValue(RValue::get(CGF.EmitScalarExpr(E)), LV); in EmitInitializationToLValue()
1597 if (Dest.isZeroed() && CGF.getTypes().isZeroInitializable(type)) in EmitNullInitializationToLValue()
1600 if (CGF.hasScalarEvaluationKind(type)) { in EmitNullInitializationToLValue()
1602 llvm::Value *null = CGF.CGM.EmitNullConstant(type); in EmitNullInitializationToLValue()
1606 CGF.EmitStoreThroughBitfieldLValue(RValue::get(null), lv); in EmitNullInitializationToLValue()
1609 CGF.EmitStoreOfScalar(null, lv, /* isInitialization */ true); in EmitNullInitializationToLValue()
1615 CGF.EmitNullInitialization(lv.getAddress(), lv.getType()); in EmitNullInitializationToLValue()
1627 CGF.ErrorUnsupported(E, "GNU array range designator extension"); in VisitInitListExpr()
1646 CGF.CGM.EmitConstantExpr(ExprToVisit, ExprToVisit->getType(), &CGF)) { in VisitCXXParenListOrInitListExpr()
1648 new llvm::GlobalVariable(CGF.CGM.getModule(), C->getType(), true, in VisitCXXParenListOrInitListExpr()
1651 CGF.MakeAddrLValue(GV, ExprToVisit->getType())); in VisitCXXParenListOrInitListExpr()
1658 LValue DestLV = CGF.MakeAddrLValue(Dest.getAddress(), ExprToVisit->getType()); in VisitCXXParenListOrInitListExpr()
1672 CGF.EmitNullInitialization(Dest.getAddress(), ExprToVisit->getType()); in VisitCXXParenListOrInitListExpr()
1689 CodeGenFunction::CleanupDeactivationScope DeactivateCleanups(CGF); in VisitCXXParenListOrInitListExpr()
1700 Address V = CGF.GetAddressOfDirectBaseInCompleteClass( in VisitCXXParenListOrInitListExpr()
1708 CGF.getOverlapForBaseInit(CXXRD, BaseRD, Base.isVirtual())); in VisitCXXParenListOrInitListExpr()
1709 CGF.EmitAggExpr(InitExprs[curInitIndex++], AggSlot); in VisitCXXParenListOrInitListExpr()
1713 CGF.pushDestroyAndDeferDeactivation(dtorKind, V, Base.getType()); in VisitCXXParenListOrInitListExpr()
1718 CodeGenFunction::FieldConstructionScope FCS(CGF, Dest.getAddress()); in VisitCXXParenListOrInitListExpr()
1740 LValue FieldLoc = CGF.EmitLValueForFieldInitialization(DestLV, Field); in VisitCXXParenListOrInitListExpr()
1767 CGF.getTypes().isZeroInitializable(ExprToVisit->getType())) in VisitCXXParenListOrInitListExpr()
1771 LValue LV = CGF.EmitLValueForFieldInitialization(DestLV, field); in VisitCXXParenListOrInitListExpr()
1790 CGF.pushDestroyAndDeferDeactivation(NormalAndEHCleanup, LV.getAddress(), in VisitCXXParenListOrInitListExpr()
1792 CGF.getDestroyer(dtorKind), false); in VisitCXXParenListOrInitListExpr()
1801 CodeGenFunction::OpaqueValueMapping binding(CGF, E->getCommonExpr()); in VisitArrayInitLoopExpr()
1810 llvm::Value *zero = llvm::ConstantInt::get(CGF.SizeTy, 0); in VisitArrayInitLoopExpr()
1813 destPtr.emitRawPointer(CGF), in VisitArrayInitLoopExpr()
1823 CGF.getContext().getAsArrayType(E->getType())->getElementType(); in VisitArrayInitLoopExpr()
1824 CharUnits elementSize = CGF.getContext().getTypeSizeInChars(elementType); in VisitArrayInitLoopExpr()
1827 llvm::Type *llvmElementType = CGF.ConvertTypeForMem(elementType); in VisitArrayInitLoopExpr()
1830 llvm::BasicBlock *bodyBB = CGF.createBasicBlock("arrayinit.body"); in VisitArrayInitLoopExpr()
1833 CGF.EmitBlock(bodyBB); in VisitArrayInitLoopExpr()
1843 if (CGF.needsEHCleanup(dtorKind) && !InnerLoop) { in VisitArrayInitLoopExpr()
1846 CGF.pushRegularPartialArrayCleanup(outerBegin, element, elementType, in VisitArrayInitLoopExpr()
1848 CGF.getDestroyer(dtorKind)); in VisitArrayInitLoopExpr()
1849 cleanup = CGF.EHStack.stable_begin(); in VisitArrayInitLoopExpr()
1858 CodeGenFunction::RunCleanupsScope CleanupsScope(CGF); in VisitArrayInitLoopExpr()
1859 CodeGenFunction::ArrayInitLoopExprScope Scope(CGF, index); in VisitArrayInitLoopExpr()
1860 LValue elementLV = CGF.MakeAddrLValue( in VisitArrayInitLoopExpr()
1869 AggExprEmitter(CGF, elementSlot, false) in VisitArrayInitLoopExpr()
1877 index, llvm::ConstantInt::get(CGF.SizeTy, 1), "arrayinit.next"); in VisitArrayInitLoopExpr()
1882 nextIndex, llvm::ConstantInt::get(CGF.SizeTy, numElements), in VisitArrayInitLoopExpr()
1884 llvm::BasicBlock *endBB = CGF.createBasicBlock("arrayinit.end"); in VisitArrayInitLoopExpr()
1887 CGF.EmitBlock(endBB); in VisitArrayInitLoopExpr()
1891 CGF.DeactivateCleanupBlock(cleanup, index); in VisitArrayInitLoopExpr()
1897 LValue DestLV = CGF.MakeAddrLValue(Dest.getAddress(), E->getType()); in VisitDesignatedInitUpdateExpr()
1909 static CharUnits GetNumNonZeroBytesInInit(const Expr *E, CodeGenFunction &CGF) { in GetNumNonZeroBytesInInit() argument
1912 E = E->IgnoreParenNoopCasts(CGF.getContext()); in GetNumNonZeroBytesInInit()
1915 if (isSimpleZero(E, CGF)) return CharUnits::Zero(); in GetNumNonZeroBytesInInit()
1922 if (!ILE || !CGF.getTypes().isZeroInitializable(ILE->getType())) in GetNumNonZeroBytesInInit()
1923 return CGF.getContext().getTypeSizeInChars(E->getType()); in GetNumNonZeroBytesInInit()
1937 GetNumNonZeroBytesInInit(ILE->getInit(ILEElement++), CGF); in GetNumNonZeroBytesInInit()
1951 NumNonZeroBytes += CGF.getContext().toCharUnitsFromBits( in GetNumNonZeroBytesInInit()
1952 CGF.getTarget().getPointerWidth(LangAS::Default)); in GetNumNonZeroBytesInInit()
1954 NumNonZeroBytes += GetNumNonZeroBytesInInit(E, CGF); in GetNumNonZeroBytesInInit()
1964 NumNonZeroBytes += GetNumNonZeroBytesInInit(ILE->getInit(i), CGF); in GetNumNonZeroBytesInInit()
1972 CodeGenFunction &CGF) { in CheckAggExprForMemSetUse() argument
1979 if (CGF.getLangOpts().CPlusPlus) in CheckAggExprForMemSetUse()
1980 if (const RecordType *RT = CGF.getContext() in CheckAggExprForMemSetUse()
1988 CharUnits Size = Slot.getPreferredSize(CGF.getContext(), E->getType()); in CheckAggExprForMemSetUse()
1994 CharUnits NumNonZeroBytes = GetNumNonZeroBytesInInit(E, CGF); in CheckAggExprForMemSetUse()
1999 llvm::Constant *SizeVal = CGF.Builder.getInt64(Size.getQuantity()); in CheckAggExprForMemSetUse()
2001 Address Loc = Slot.getAddress().withElementType(CGF.Int8Ty); in CheckAggExprForMemSetUse()
2002 CGF.Builder.CreateMemSet(Loc, CGF.Builder.getInt8(0), SizeVal, false); in CheckAggExprForMemSetUse()