• Home
  • Raw
  • Download

Lines Matching refs:CGF

34   CodeGenFunction &CGF;  member in __anonc11c73150111::AggExprEmitter
58 return CGF.CreateAggTemp(T, "agg.tmp.ensured"); in EnsureSlot()
62 Dest = CGF.CreateAggTemp(T, "agg.tmp.ensured"); in EnsureDest()
67 : CGF(cgf), Builder(CGF.Builder), Dest(Dest), in AggExprEmitter()
91 if (CGF.getLangOpts().getGC() && TypeRequiresGCollection(T)) in needsGC()
103 ApplyDebugLocation DL(CGF, E); in Visit()
108 CGF.ErrorUnsupported(S, "aggregate expression"); in VisitStmt()
129 = CGF.tryEmitAsConstant(E)) { in VisitDeclRefExpr()
130 EmitFinalDestCopy(E->getType(), result.getReferenceLValue(CGF, E)); in VisitDeclRefExpr()
173 CodeGenFunction::CXXDefaultInitExprScope Scope(CGF); in VisitCXXDefaultInitExpr()
189 LValue LV = CGF.EmitPseudoObjectLValue(E); in VisitPseudoObjectExpr()
193 CGF.EmitPseudoObjectRValue(E, EnsureSlot(E->getType())); in VisitPseudoObjectExpr()
201 void VisitCXXThrowExpr(const CXXThrowExpr *E) { CGF.EmitCXXThrowExpr(E); } in VisitCXXThrowExpr()
203 RValue Res = CGF.EmitAtomicExpr(E); in VisitAtomicExpr()
217 LValue LV = CGF.EmitLValue(E); in EmitAggLoadOfLValue()
220 if (LV.getType()->isAtomicType() || CGF.LValueIsSuitableForInlineAtomic(LV)) { in EmitAggLoadOfLValue()
221 CGF.EmitAtomicLoad(LV, E->getExprLoc(), Dest); in EmitAggLoadOfLValue()
271 LValue srcLV = CGF.MakeAddrLValue(src.getAggregateAddress(), type); in EmitFinalDestCopy()
297 CharUnits sz = CGF.getContext().getTypeSizeInChars(type); in EmitCopy()
298 llvm::Value *size = llvm::ConstantInt::get(CGF.SizeTy, sz.getQuantity()); in EmitCopy()
299 CGF.CGM.getObjCRuntime().EmitGCMemmoveCollectable(CGF, in EmitCopy()
309 CGF.EmitAggregateCopy(dest.getAddress(), src.getAddress(), type, in EmitCopy()
319 ASTContext &Ctx = CGF.getContext(); in VisitCXXStdInitializerListExpr()
320 LValue Array = CGF.EmitLValue(E->getSubExpr()); in VisitCXXStdInitializerListExpr()
332 CGF.ErrorUnsupported(E, "weird std::initializer_list"); in VisitCXXStdInitializerListExpr()
340 CGF.ErrorUnsupported(E, "weird std::initializer_list"); in VisitCXXStdInitializerListExpr()
345 LValue DestLV = CGF.MakeAddrLValue(Dest.getAddress(), E->getType()); in VisitCXXStdInitializerListExpr()
346 LValue Start = CGF.EmitLValueForFieldInitialization(DestLV, *Field); in VisitCXXStdInitializerListExpr()
347 llvm::Value *Zero = llvm::ConstantInt::get(CGF.PtrDiffTy, 0); in VisitCXXStdInitializerListExpr()
351 CGF.EmitStoreThroughLValue(RValue::get(ArrayStart), Start); in VisitCXXStdInitializerListExpr()
355 CGF.ErrorUnsupported(E, "weird std::initializer_list"); in VisitCXXStdInitializerListExpr()
360 LValue EndOrLength = CGF.EmitLValueForFieldInitialization(DestLV, *Field); in VisitCXXStdInitializerListExpr()
368 CGF.EmitStoreThroughLValue(RValue::get(ArrayEnd), EndOrLength); in VisitCXXStdInitializerListExpr()
371 CGF.EmitStoreThroughLValue(RValue::get(Size), EndOrLength); in VisitCXXStdInitializerListExpr()
373 CGF.ErrorUnsupported(E, "weird std::initializer_list"); in VisitCXXStdInitializerListExpr()
411 llvm::Value *zero = llvm::ConstantInt::get(CGF.SizeTy, 0); in EmitArrayInit()
416 CharUnits elementSize = CGF.getContext().getTypeSizeInChars(elementType); in EmitArrayInit()
427 if (CGF.needsEHCleanup(dtorKind)) { in EmitArrayInit()
432 endOfInit = CGF.CreateTempAlloca(begin->getType(), CGF.getPointerAlign(), in EmitArrayInit()
435 CGF.pushIrregularPartialArrayCleanup(begin, endOfInit, elementType, in EmitArrayInit()
437 CGF.getDestroyer(dtorKind)); in EmitArrayInit()
438 cleanup = CGF.EHStack.stable_begin(); in EmitArrayInit()
445 llvm::Value *one = llvm::ConstantInt::get(CGF.SizeTy, 1); in EmitArrayInit()
467 CGF.MakeAddrLValue(Address(element, elementAlign), elementType); in EmitArrayInit()
480 CGF.getTypes().isZeroInitializable(elementType))) { in EmitArrayInit()
493 llvm::ConstantInt::get(CGF.SizeTy, NumArrayElements), in EmitArrayInit()
497 llvm::BasicBlock *bodyBB = CGF.createBasicBlock("arrayinit.body"); in EmitArrayInit()
500 CGF.EmitBlock(bodyBB); in EmitArrayInit()
507 CGF.MakeAddrLValue(Address(currentElement, elementAlign), elementType); in EmitArrayInit()
523 llvm::BasicBlock *endBB = CGF.createBasicBlock("arrayinit.end"); in EmitArrayInit()
527 CGF.EmitBlock(endBB); in EmitArrayInit()
531 if (dtorKind) CGF.DeactivateCleanupBlock(cleanup, cleanupDominator); in EmitArrayInit()
543 EmitFinalDestCopy(e->getType(), CGF.getOpaqueLValueMapping(e)); in VisitOpaqueValueExpr()
549 E->getType().isPODType(CGF.getContext())) { in VisitCompoundLiteralExpr()
557 CGF.EmitAggExpr(E->getInitializer(), Slot); in VisitCompoundLiteralExpr()
577 CGF.CGM.EmitExplicitCastExprType(ECE, &CGF); in VisitCastExpr()
582 LValue LV = CGF.EmitCheckedLValue(E->getSubExpr(), in VisitCastExpr()
586 CGF.EmitDynamicCast(LV.getAddress(), cast<CXXDynamicCastExpr>(E)); in VisitCastExpr()
588 CGF.CGM.ErrorUnsupported(E, "non-simple lvalue dynamic_cast"); in VisitCastExpr()
591 CGF.CGM.ErrorUnsupported(E, "lvalue dynamic_cast with a destination"); in VisitCastExpr()
598 CGF.EmitAnyExpr(E->getSubExpr(), AggValueSlot::ignored(), in VisitCastExpr()
606 Builder.CreateElementBitCast(Dest.getAddress(), CGF.ConvertType(Ty)); in VisitCastExpr()
608 CGF.MakeAddrLValue(CastPtr, Ty)); in VisitCastExpr()
629 assert(CGF.getContext().hasSameUnqualifiedType(valueType, in VisitCastExpr()
634 if (Dest.isIgnored() || !CGF.CGM.isPaddedAtomicType(atomicType)) { in VisitCastExpr()
643 assert(CGF.getContext().hasSameUnqualifiedType(op->getType(), in VisitCastExpr()
653 if (!valueDest.isIgnored() && CGF.CGM.isPaddedAtomicType(atomicType)) { in VisitCastExpr()
657 CGF.EmitNullInitialization(Dest.getAddress(), atomicType); in VisitCastExpr()
661 CGF.Builder.CreateStructGEP(valueDest.getAddress(), 0, in VisitCastExpr()
671 CGF.EmitAggExpr(E->getSubExpr(), valueDest); in VisitCastExpr()
678 CGF.CreateAggTemp(atomicType, "atomic-to-nonatomic.temp"); in VisitCastExpr()
679 CGF.EmitAggExpr(E->getSubExpr(), atomicSlot); in VisitCastExpr()
700 assert(CGF.getContext().hasSameUnqualifiedType(E->getSubExpr()->getType(), in VisitCastExpr()
758 if (E->getCallReturnType(CGF.getContext())->isReferenceType()) { in VisitCallExpr()
763 RValue RV = CGF.EmitCallExpr(E, getReturnValueSlot()); in VisitCallExpr()
768 RValue RV = CGF.EmitObjCMessageExpr(E, getReturnValueSlot()); in VisitObjCMessageExpr()
773 CGF.EmitIgnoredExpr(E->getLHS()); in VisitBinComma()
778 CodeGenFunction::StmtExprEvaluation eval(CGF); in VisitStmtExpr()
779 CGF.EmitCompoundStmt(*E->getSubStmt(), true, Dest); in VisitStmtExpr()
786 CGF.ErrorUnsupported(E, "aggregate binary expression"); in VisitBinaryOperator()
791 LValue LV = CGF.EmitPointerToDataMemberBinaryExpr(E); in VisitPointerToDataMemberBinaryOperator()
864 assert(CGF.getContext().hasSameUnqualifiedType(E->getLHS()->getType(), in VisitBinAssign()
873 E->getRHS()->HasSideEffects(CGF.getContext())) { in VisitBinAssign()
879 LValue LHS = CGF.EmitCheckedLValue(E->getLHS(), CodeGenFunction::TCK_Store); in VisitBinAssign()
883 CGF.LValueIsSuitableForInlineAtomic(LHS)) { in VisitBinAssign()
884 CGF.EmitAtomicStore(Dest.asRValue(), LHS, /*isInit*/ false); in VisitBinAssign()
896 LValue LHS = CGF.EmitLValue(E->getLHS()); in VisitBinAssign()
901 CGF.LValueIsSuitableForInlineAtomic(LHS)) { in VisitBinAssign()
904 CGF.EmitAtomicStore(Dest.asRValue(), LHS, /*isInit*/ false); in VisitBinAssign()
915 CGF.hasVolatileMember(E->getLHS()->getType())) in VisitBinAssign()
918 CGF.EmitAggExpr(E->getRHS(), LHSSlot); in VisitBinAssign()
926 llvm::BasicBlock *LHSBlock = CGF.createBasicBlock("cond.true"); in VisitAbstractConditionalOperator()
927 llvm::BasicBlock *RHSBlock = CGF.createBasicBlock("cond.false"); in VisitAbstractConditionalOperator()
928 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("cond.end"); in VisitAbstractConditionalOperator()
931 CodeGenFunction::OpaqueValueMapping binding(CGF, E); in VisitAbstractConditionalOperator()
933 CodeGenFunction::ConditionalEvaluation eval(CGF); in VisitAbstractConditionalOperator()
934 CGF.EmitBranchOnBoolExpr(E->getCond(), LHSBlock, RHSBlock, in VisitAbstractConditionalOperator()
935 CGF.getProfileCount(E)); in VisitAbstractConditionalOperator()
940 eval.begin(CGF); in VisitAbstractConditionalOperator()
941 CGF.EmitBlock(LHSBlock); in VisitAbstractConditionalOperator()
942 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
944 eval.end(CGF); in VisitAbstractConditionalOperator()
946 assert(CGF.HaveInsertPoint() && "expression evaluation ended with no IP!"); in VisitAbstractConditionalOperator()
947 CGF.Builder.CreateBr(ContBlock); in VisitAbstractConditionalOperator()
955 eval.begin(CGF); in VisitAbstractConditionalOperator()
956 CGF.EmitBlock(RHSBlock); in VisitAbstractConditionalOperator()
958 eval.end(CGF); in VisitAbstractConditionalOperator()
960 CGF.EmitBlock(ContBlock); in VisitAbstractConditionalOperator()
969 Address ArgPtr = CGF.EmitVAArg(VE, ArgValue); in VisitVAArgExpr()
973 CGF.ErrorUnsupported(VE, "aggregate va_arg expression"); in VisitVAArgExpr()
977 EmitFinalDestCopy(VE->getType(), CGF.MakeAddrLValue(ArgPtr, VE->getType())); in VisitVAArgExpr()
993 CGF.EmitCXXTemporary(E->getTemporary(), E->getType(), Dest.getAddress()); in VisitCXXBindTemporaryExpr()
999 CGF.EmitCXXConstructExpr(E, Slot); in VisitCXXConstructExpr()
1005 CGF.EmitInheritedCXXConstructorCall( in VisitCXXInheritedCtorInitExpr()
1013 CGF.EmitLambdaExpr(E, Slot); in VisitLambdaExpr()
1017 CGF.enterFullExpression(E); in VisitExprWithCleanups()
1018 CodeGenFunction::RunCleanupsScope cleanups(CGF); in VisitExprWithCleanups()
1025 EmitNullInitializationToLValue(CGF.MakeAddrLValue(Slot.getAddress(), T)); in VisitCXXScalarValueInitExpr()
1031 EmitNullInitializationToLValue(CGF.MakeAddrLValue(Slot.getAddress(), T)); in VisitImplicitValueInitExpr()
1037 static bool isSimpleZero(const Expr *E, CodeGenFunction &CGF) { in isSimpleZero() argument
1048 CGF.getTypes().isZeroInitializable(E->getType())) in isSimpleZero()
1067 if (Dest.isZeroed() && isSimpleZero(E, CGF)) { in EmitInitializationToLValue()
1076 RValue RV = CGF.EmitReferenceBindingToExpr(E); in EmitInitializationToLValue()
1077 return CGF.EmitStoreThroughLValue(RV, LV); in EmitInitializationToLValue()
1080 switch (CGF.getEvaluationKind(type)) { in EmitInitializationToLValue()
1082 CGF.EmitComplexExprIntoLValue(E, LV, /*isInit*/ true); in EmitInitializationToLValue()
1085 CGF.EmitAggExpr(E, AggValueSlot::forLValue(LV, in EmitInitializationToLValue()
1093 CGF.EmitScalarInit(E, /*D=*/nullptr, LV, /*Captured=*/false); in EmitInitializationToLValue()
1095 CGF.EmitStoreThroughLValue(RValue::get(CGF.EmitScalarExpr(E)), LV); in EmitInitializationToLValue()
1107 if (Dest.isZeroed() && CGF.getTypes().isZeroInitializable(type)) in EmitNullInitializationToLValue()
1110 if (CGF.hasScalarEvaluationKind(type)) { in EmitNullInitializationToLValue()
1112 llvm::Value *null = CGF.CGM.EmitNullConstant(type); in EmitNullInitializationToLValue()
1116 CGF.EmitStoreThroughBitfieldLValue(RValue::get(null), lv); in EmitNullInitializationToLValue()
1119 CGF.EmitStoreOfScalar(null, lv, /* isInitialization */ true); in EmitNullInitializationToLValue()
1125 CGF.EmitNullInitialization(lv.getAddress(), lv.getType()); in EmitNullInitializationToLValue()
1136 if (llvm::Constant* C = CGF.CGM.EmitConstantExpr(E, E->getType(), &CGF)) { in VisitInitListExpr()
1138 new llvm::GlobalVariable(CGF.CGM.getModule(), C->getType(), true, in VisitInitListExpr()
1140 EmitFinalDestCopy(E->getType(), CGF.MakeAddrLValue(GV, E->getType())); in VisitInitListExpr()
1145 CGF.ErrorUnsupported(E, "GNU array range designator extension"); in VisitInitListExpr()
1149 LValue DestLV = CGF.MakeAddrLValue(Dest.getAddress(), E->getType()); in VisitInitListExpr()
1157 CGF.getContext().getAsArrayType(E->getType())->getElementType(); in VisitInitListExpr()
1168 CGF.getContext().hasSameUnqualifiedType(E->getInit(0)->getType(), in VisitInitListExpr()
1197 Address V = CGF.GetAddressOfDirectBaseInCompleteClass( in VisitInitListExpr()
1205 CGF.EmitAggExpr(E->getInit(curInitIndex++), AggSlot); in VisitInitListExpr()
1209 CGF.pushDestroy(dtorKind, V, Base.getType()); in VisitInitListExpr()
1210 cleanups.push_back(CGF.EHStack.stable_begin()); in VisitInitListExpr()
1216 CodeGenFunction::FieldConstructionScope FCS(CGF, Dest.getAddress()); in VisitInitListExpr()
1236 LValue FieldLoc = CGF.EmitLValueForFieldInitialization(DestLV, Field); in VisitInitListExpr()
1263 CGF.getTypes().isZeroInitializable(E->getType())) in VisitInitListExpr()
1267 LValue LV = CGF.EmitLValueForFieldInitialization(DestLV, field); in VisitInitListExpr()
1286 if (CGF.needsEHCleanup(dtorKind)) { in VisitInitListExpr()
1288 cleanupDominator = CGF.Builder.CreateAlignedLoad( in VisitInitListExpr()
1289 CGF.Int8Ty, in VisitInitListExpr()
1290 llvm::Constant::getNullValue(CGF.Int8PtrTy), in VisitInitListExpr()
1293 CGF.pushDestroy(EHCleanup, LV.getAddress(), field->getType(), in VisitInitListExpr()
1294 CGF.getDestroyer(dtorKind), false); in VisitInitListExpr()
1295 cleanups.push_back(CGF.EHStack.stable_begin()); in VisitInitListExpr()
1312 CGF.DeactivateCleanupBlock(cleanups[i-1], cleanupDominator); in VisitInitListExpr()
1322 LValue DestLV = CGF.MakeAddrLValue(Dest.getAddress(), E->getType()); in VisitDesignatedInitUpdateExpr()
1334 static CharUnits GetNumNonZeroBytesInInit(const Expr *E, CodeGenFunction &CGF) { in GetNumNonZeroBytesInInit() argument
1338 if (isSimpleZero(E, CGF)) return CharUnits::Zero(); in GetNumNonZeroBytesInInit()
1343 if (!ILE || !CGF.getTypes().isZeroInitializable(ILE->getType())) in GetNumNonZeroBytesInInit()
1344 return CGF.getContext().getTypeSizeInChars(E->getType()); in GetNumNonZeroBytesInInit()
1358 GetNumNonZeroBytesInInit(ILE->getInit(ILEElement++), CGF); in GetNumNonZeroBytesInInit()
1372 NumNonZeroBytes += CGF.getContext().toCharUnitsFromBits( in GetNumNonZeroBytesInInit()
1373 CGF.getTarget().getPointerWidth(0)); in GetNumNonZeroBytesInInit()
1375 NumNonZeroBytes += GetNumNonZeroBytesInInit(E, CGF); in GetNumNonZeroBytesInInit()
1385 NumNonZeroBytes += GetNumNonZeroBytesInInit(ILE->getInit(i), CGF); in GetNumNonZeroBytesInInit()
1393 CodeGenFunction &CGF) { in CheckAggExprForMemSetUse() argument
1400 if (CGF.getLangOpts().CPlusPlus) in CheckAggExprForMemSetUse()
1401 if (const RecordType *RT = CGF.getContext() in CheckAggExprForMemSetUse()
1409 CharUnits Size = CGF.getContext().getTypeSizeInChars(E->getType()); in CheckAggExprForMemSetUse()
1415 CharUnits NumNonZeroBytes = GetNumNonZeroBytesInInit(E, CGF); in CheckAggExprForMemSetUse()
1420 llvm::Constant *SizeVal = CGF.Builder.getInt64(Size.getQuantity()); in CheckAggExprForMemSetUse()
1423 Loc = CGF.Builder.CreateElementBitCast(Loc, CGF.Int8Ty); in CheckAggExprForMemSetUse()
1424 CGF.Builder.CreateMemSet(Loc, CGF.Builder.getInt8(0), SizeVal, false); in CheckAggExprForMemSetUse()