Lines Matching refs:CGF
46 CodeGenFunction &CGF; member in __anonfcbe76150111::ComplexExprEmitter
52 : CGF(cgf), Builder(CGF.Builder), IgnoreReal(ir), IgnoreImag(ii) { in ComplexExprEmitter()
75 return EmitLoadOfLValue(CGF.EmitLValue(E), E->getExprLoc()); in EmitLoadOfLValue()
96 ApplyDebugLocation DL(CGF, E); in Visit()
101 S->dump(llvm::errs(), CGF.getContext()); in VisitStmt()
106 if (llvm::Constant *Result = ConstantEmitter(CGF).tryEmitConstantExpr(E)) in VisitConstantExpr()
121 return CGF.EmitCoawaitExpr(*S).getComplexVal(); in VisitCoawaitExpr()
124 return CGF.EmitCoyieldExpr(*S).getComplexVal(); in VisitCoyieldExpr()
134 return EmitLoadOfLValue(Constant.getReferenceLValue(CGF, E), in emitConstant()
144 if (CodeGenFunction::ConstantEmission Constant = CGF.tryEmitAsConstant(E)) in VisitDeclRefExpr()
152 return CGF.EmitObjCMessageExpr(E).getComplexVal(); in VisitObjCMessageExpr()
157 CGF.tryEmitAsConstant(ME)) { in VisitMemberExpr()
158 CGF.EmitIgnoredExpr(ME->getBase()); in VisitMemberExpr()
165 return EmitLoadOfLValue(CGF.getOrCreateOpaqueLValueMapping(E), in VisitOpaqueValueExpr()
167 return CGF.getOrCreateOpaqueRValueMapping(E).getComplexVal(); in VisitOpaqueValueExpr()
171 return CGF.EmitPseudoObjectRValue(E).getComplexVal(); in VisitPseudoObjectExpr()
186 CGF.CGM.EmitExplicitCastExprType(ECE, &CGF); in VisitCastExpr()
197 LValue LV = CGF.EmitLValue(E->getSubExpr()); in VisitPrePostIncDec()
198 return CGF.EmitComplexPrePostIncDec(E, LV, isInc, isPre); in VisitPrePostIncDec()
226 CodeGenFunction::CXXDefaultArgExprScope Scope(CGF, DAE); in VisitCXXDefaultArgExpr()
230 CodeGenFunction::CXXDefaultInitExprScope Scope(CGF, DIE); in VisitCXXDefaultInitExpr()
234 CodeGenFunction::RunCleanupsScope Scope(CGF); in VisitExprWithCleanups()
244 llvm::Constant *Null = llvm::Constant::getNullValue(CGF.ConvertType(Elem)); in VisitCXXScalarValueInitExpr()
251 llvm::Constant::getNullValue(CGF.ConvertType(Elem)); in VisitImplicitValueInitExpr()
289 if (ElementType.UseExcessPrecision(CGF.getContext())) in getPromotionType()
290 return CGF.getContext().getComplexType(CGF.getContext().FloatTy); in getPromotionType()
292 if (Ty.UseExcessPrecision(CGF.getContext())) in getPromotionType()
293 return CGF.getContext().FloatTy; in getPromotionType()
303 CGF.EmitUnPromotedValue(result, E->getType()); \
355 return CGF.EmitAtomicExpr(E).getComplexVal(); in VisitAtomicExpr()
380 return CGF.EmitAtomicLoad(lvalue, loc).getComplexVal(); in EmitLoadOfLValue()
382 Address SrcPtr = lvalue.getAddress(CGF); in EmitLoadOfLValue()
388 Address RealP = CGF.emitAddrOfRealComponent(SrcPtr, lvalue.getType()); in EmitLoadOfLValue()
393 Address ImagP = CGF.emitAddrOfImagComponent(SrcPtr, lvalue.getType()); in EmitLoadOfLValue()
405 (!isInit && CGF.LValueIsSuitableForInlineAtomic(lvalue))) in EmitStoreOfComplex()
406 return CGF.EmitAtomicStore(RValue::getComplex(Val), lvalue, isInit); in EmitStoreOfComplex()
408 Address Ptr = lvalue.getAddress(CGF); in EmitStoreOfComplex()
409 Address RealPtr = CGF.emitAddrOfRealComponent(Ptr, lvalue.getType()); in EmitStoreOfComplex()
410 Address ImagPtr = CGF.emitAddrOfImagComponent(Ptr, lvalue.getType()); in EmitStoreOfComplex()
423 CGF.ErrorUnsupported(E, "complex expression"); in VisitExpr()
425 CGF.ConvertType(getComplexType(E->getType())->getElementType()); in VisitExpr()
432 llvm::Value *Imag = CGF.EmitScalarExpr(IL->getSubExpr()); in VisitImaginaryLiteral()
438 if (E->getCallReturnType(CGF.getContext())->isReferenceType()) in VisitCallExpr()
441 return CGF.EmitCallExpr(E).getComplexVal(); in VisitCallExpr()
445 CodeGenFunction::StmtExprEvaluation eval(CGF); in VisitStmtExpr()
446 Address RetAlloca = CGF.EmitCompoundStmt(*E->getSubStmt(), true); in VisitStmtExpr()
448 return EmitLoadOfLValue(CGF.MakeAddrLValue(RetAlloca, E->getType()), in VisitStmtExpr()
465 Val.first = CGF.EmitScalarConversion(Val.first, SrcType, DestType, Loc); in EmitComplexToComplexCast()
467 Val.second = CGF.EmitScalarConversion(Val.second, SrcType, DestType, Loc); in EmitComplexToComplexCast()
477 Val = CGF.EmitScalarConversion(Val, SrcType, DestType, Loc); in EmitScalarToComplexCast()
498 LValue origLV = CGF.EmitLValue(Op); in EmitCast()
499 Address V = origLV.getAddress(CGF).withElementType(CGF.ConvertType(DestTy)); in EmitCast()
500 return EmitLoadOfLValue(CGF.MakeAddrLValue(V, DestTy), Op->getExprLoc()); in EmitCast()
504 LValue SourceLVal = CGF.EmitLValue(Op); in EmitCast()
505 Address Addr = SourceLVal.getAddress(CGF).withElementType( in EmitCast()
506 CGF.ConvertTypeForMem(DestTy)); in EmitCast()
507 LValue DestLV = CGF.MakeAddrLValue(Addr, DestTy); in EmitCast()
567 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op); in EmitCast()
568 return EmitScalarToComplexCast(CGF.EmitScalarExpr(Op), Op->getType(), in EmitCast()
576 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op); in EmitCast()
592 return CGF.EmitUnPromotedValue(result, E->getSubExpr()->getType()); in VisitUnaryPlus()
601 return CGF.EmitPromotedComplexExpr(E->getSubExpr(), PromotionType); in VisitPlus()
612 return CGF.EmitUnPromotedValue(result, E->getSubExpr()->getType()); in VisitUnaryMinus()
621 Op = CGF.EmitPromotedComplexExpr(E->getSubExpr(), PromotionType); in VisitMinus()
654 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op.FPFeatures); in EmitBinAdd()
673 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op.FPFeatures); in EmitBinSub()
714 QualType FQTy = CGF.getContext().getFunctionType(Op.Ty, ArgsQTys, EPI); in EmitComplexBinOpLibCall()
715 const CGFunctionInfo &FuncInfo = CGF.CGM.getTypes().arrangeFreeFunctionCall( in EmitComplexBinOpLibCall()
718 llvm::FunctionType *FTy = CGF.CGM.getTypes().GetFunctionType(FuncInfo); in EmitComplexBinOpLibCall()
719 llvm::FunctionCallee Func = CGF.CGM.CreateRuntimeFunction( in EmitComplexBinOpLibCall()
724 RValue Res = CGF.EmitCall(FuncInfo, Callee, ReturnValueSlot(), Args, &Call); in EmitComplexBinOpLibCall()
725 Call->setCallingConv(CGF.CGM.getRuntimeCC()); in EmitComplexBinOpLibCall()
755 llvm::MDBuilder MDHelper(CGF.getLLVMContext()); in EmitBinMul()
766 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op.FPFeatures); in EmitBinMul()
795 llvm::BasicBlock *ContBB = CGF.createBasicBlock("complex_mul_cont"); in EmitBinMul()
796 llvm::BasicBlock *INaNBB = CGF.createBasicBlock("complex_mul_imag_nan"); in EmitBinMul()
806 CGF.EmitBlock(INaNBB); in EmitBinMul()
808 llvm::BasicBlock *LibCallBB = CGF.createBasicBlock("complex_mul_libcall"); in EmitBinMul()
813 CGF.EmitBlock(LibCallBB); in EmitBinMul()
821 CGF.EmitBlock(ContBB); in EmitBinMul()
882 static llvm::Value *EmitllvmFAbs(CodeGenFunction &CGF, llvm::Value *Value) { in EmitllvmFAbs() argument
884 CGF.CGM.getIntrinsic(llvm::Intrinsic::fabs, Value->getType()); in EmitllvmFAbs()
885 llvm::Value *Call = CGF.Builder.CreateCall(Func, Value); in EmitllvmFAbs()
899 llvm::Value *FAbsRHSr = EmitllvmFAbs(CGF, RHSr); // |c| in EmitRangeReductionDiv()
900 llvm::Value *FAbsRHSi = EmitllvmFAbs(CGF, RHSi); // |d| in EmitRangeReductionDiv()
905 CGF.createBasicBlock("abs_rhsr_greater_or_equal_abs_rhsi"); in EmitRangeReductionDiv()
907 CGF.createBasicBlock("abs_rhsr_less_than_abs_rhsi"); in EmitRangeReductionDiv()
908 llvm::BasicBlock *ContBB = CGF.createBasicBlock("complex_div"); in EmitRangeReductionDiv()
911 CGF.EmitBlock(TrueBB); in EmitRangeReductionDiv()
931 CGF.EmitBlock(FalseBB); in EmitRangeReductionDiv()
952 CGF.EmitBlock(ContBB); in EmitRangeReductionDiv()
969 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op.FPFeatures); in EmitBinDiv()
984 else if (!CGF.getLangOpts().FastMath || in EmitBinDiv()
1101 return CGF.EmitPromotedValue(result, PromotionType); in EmitPromoted()
1116 return CGF.EmitPromotedComplexExpr(E, OverallPromotionType); in EmitPromotedComplexOperand()
1123 return ComplexPairTy(CGF.EmitPromotedScalarExpr(E, ComplexElementTy), in EmitPromotedComplexOperand()
1126 return ComplexPairTy(CGF.EmitScalarExpr(E), nullptr); in EmitPromotedComplexOperand()
1144 Ops.FPFeatures = E->getFPFeaturesInEffect(CGF.getLangOpts()); in EmitBinOps()
1160 OpInfo.FPFeatures = E->getFPFeaturesInEffect(CGF.getLangOpts()); in EmitCompoundAssignLValue()
1161 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, OpInfo.FPFeatures); in EmitCompoundAssignLValue()
1179 CGF.EmitPromotedScalarExpr(E->getRHS(), PromotionTypeRHS), nullptr); in EmitCompoundAssignLValue()
1181 assert(CGF.getContext().hasSameUnqualifiedType(ComplexElementTy, in EmitCompoundAssignLValue()
1184 OpInfo.RHS = ComplexPairTy(CGF.EmitScalarExpr(E->getRHS()), nullptr); in EmitCompoundAssignLValue()
1189 CGF.EmitPromotedComplexExpr(E->getRHS(), PromotionTypeRHS)); in EmitCompoundAssignLValue()
1191 assert(CGF.getContext().hasSameUnqualifiedType(OpInfo.Ty, in EmitCompoundAssignLValue()
1197 LValue LHS = CGF.EmitLValue(E->getLHS()); in EmitCompoundAssignLValue()
1210 llvm::Value *LHSVal = CGF.EmitLoadOfScalar(LHS, Loc); in EmitCompoundAssignLValue()
1218 if (!CGF.getContext().hasSameUnqualifiedType(PromotedComplexElementTy, in EmitCompoundAssignLValue()
1220 LHSVal = CGF.EmitScalarConversion(LHSVal, LHSTy, in EmitCompoundAssignLValue()
1223 if (!CGF.getContext().hasSameUnqualifiedType(ComplexElementTy, LHSTy)) in EmitCompoundAssignLValue()
1225 CGF.EmitScalarConversion(LHSVal, LHSTy, ComplexElementTy, Loc); in EmitCompoundAssignLValue()
1244 CGF.EmitComplexToScalarConversion(Result, OpInfo.Ty, LHSTy, Loc); in EmitCompoundAssignLValue()
1245 CGF.EmitStoreOfScalar(ResVal, LHS, /*isInit*/ false); in EmitCompoundAssignLValue()
1260 if (!CGF.getLangOpts().CPlusPlus) in EmitCompoundAssign()
1272 assert(CGF.getContext().hasSameUnqualifiedType(E->getLHS()->getType(), in EmitBinAssignLValue()
1282 LValue LHS = CGF.EmitLValue(E->getLHS()); in EmitBinAssignLValue()
1295 if (!CGF.getLangOpts().CPlusPlus) in VisitBinAssign()
1306 CGF.EmitIgnoredExpr(E->getLHS()); in VisitBinComma()
1314 llvm::BasicBlock *LHSBlock = CGF.createBasicBlock("cond.true"); in VisitAbstractConditionalOperator()
1315 llvm::BasicBlock *RHSBlock = CGF.createBasicBlock("cond.false"); in VisitAbstractConditionalOperator()
1316 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("cond.end"); in VisitAbstractConditionalOperator()
1319 CodeGenFunction::OpaqueValueMapping binding(CGF, E); in VisitAbstractConditionalOperator()
1322 CodeGenFunction::ConditionalEvaluation eval(CGF); in VisitAbstractConditionalOperator()
1323 CGF.EmitBranchOnBoolExpr(E->getCond(), LHSBlock, RHSBlock, in VisitAbstractConditionalOperator()
1324 CGF.getProfileCount(E)); in VisitAbstractConditionalOperator()
1326 eval.begin(CGF); in VisitAbstractConditionalOperator()
1327 CGF.EmitBlock(LHSBlock); in VisitAbstractConditionalOperator()
1328 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
1331 CGF.EmitBranch(ContBlock); in VisitAbstractConditionalOperator()
1332 eval.end(CGF); in VisitAbstractConditionalOperator()
1334 eval.begin(CGF); in VisitAbstractConditionalOperator()
1335 CGF.EmitBlock(RHSBlock); in VisitAbstractConditionalOperator()
1338 CGF.EmitBlock(ContBlock); in VisitAbstractConditionalOperator()
1339 eval.end(CGF); in VisitAbstractConditionalOperator()
1367 llvm::Value *Real = CGF.EmitScalarExpr(E->getInit(0)); in VisitInitListExpr()
1368 llvm::Value *Imag = CGF.EmitScalarExpr(E->getInit(1)); in VisitInitListExpr()
1377 llvm::Type* LTy = CGF.ConvertType(Ty); in VisitInitListExpr()
1384 Address ArgPtr = CGF.EmitVAArg(E, ArgValue); in VisitVAArgExpr()
1387 CGF.ErrorUnsupported(E, "complex va_arg expression"); in VisitVAArgExpr()
1389 CGF.ConvertType(E->getType()->castAs<ComplexType>()->getElementType()); in VisitVAArgExpr()
1394 return EmitLoadOfLValue(CGF.MakeAddrLValue(ArgPtr, E->getType()), in VisitVAArgExpr()