Lines Matching refs:CGF
50 CodeGenFunction &CGF; member in __anon18403adf0111::ComplexExprEmitter
58 : CGF(cgf), Builder(CGF.Builder), IgnoreReal(ir), IgnoreImag(ii), in ComplexExprEmitter()
80 return EmitLoadOfLValue(CGF.EmitLValue(E), E->getExprLoc()); in EmitLoadOfLValue()
101 ApplyDebugLocation DL(CGF, E); in Visit()
106 S->dump(llvm::errs(), CGF.getContext()); in VisitStmt()
111 if (llvm::Constant *Result = ConstantEmitter(CGF).tryEmitConstantExpr(E)) in VisitConstantExpr()
126 return CGF.EmitCoawaitExpr(*S).getComplexVal(); in VisitCoawaitExpr()
129 return CGF.EmitCoyieldExpr(*S).getComplexVal(); in VisitCoyieldExpr()
139 return EmitLoadOfLValue(Constant.getReferenceLValue(CGF, E), in emitConstant()
149 if (CodeGenFunction::ConstantEmission Constant = CGF.tryEmitAsConstant(E)) in VisitDeclRefExpr()
157 return CGF.EmitObjCMessageExpr(E).getComplexVal(); in VisitObjCMessageExpr()
162 CGF.tryEmitAsConstant(ME)) { in VisitMemberExpr()
163 CGF.EmitIgnoredExpr(ME->getBase()); in VisitMemberExpr()
170 return EmitLoadOfLValue(CGF.getOrCreateOpaqueLValueMapping(E), in VisitOpaqueValueExpr()
172 return CGF.getOrCreateOpaqueRValueMapping(E).getComplexVal(); in VisitOpaqueValueExpr()
176 return CGF.EmitPseudoObjectRValue(E).getComplexVal(); in VisitPseudoObjectExpr()
191 CGF.CGM.EmitExplicitCastExprType(ECE, &CGF); in VisitCastExpr()
202 LValue LV = CGF.EmitLValue(E->getSubExpr()); in VisitPrePostIncDec()
203 return CGF.EmitComplexPrePostIncDec(E, LV, isInc, isPre); in VisitPrePostIncDec()
231 CodeGenFunction::CXXDefaultArgExprScope Scope(CGF, DAE); in VisitCXXDefaultArgExpr()
235 CodeGenFunction::CXXDefaultInitExprScope Scope(CGF, DIE); in VisitCXXDefaultInitExpr()
239 CodeGenFunction::RunCleanupsScope Scope(CGF); in VisitExprWithCleanups()
249 llvm::Constant *Null = llvm::Constant::getNullValue(CGF.ConvertType(Elem)); in VisitCXXScalarValueInitExpr()
256 llvm::Constant::getNullValue(CGF.ConvertType(Elem)); in VisitImplicitValueInitExpr()
295 return CGF.getContext().FloatTy; in GetHigherPrecisionFPType()
298 return CGF.getContext().DoubleTy; in GetHigherPrecisionFPType()
300 return CGF.getContext().LongDoubleTy; in GetHigherPrecisionFPType()
310 CGF.getContext().getFloatTypeSemantics(ElementType); in HigherPrecisionTypeForComplexArithmetic()
312 CGF.getContext().getFloatTypeSemantics(HigherElementType); in HigherPrecisionTypeForComplexArithmetic()
323 return CGF.getContext().getComplexType(HigherElementType); in HigherPrecisionTypeForComplexArithmetic()
325 DiagnosticsEngine &Diags = CGF.CGM.getDiags(); in HigherPrecisionTypeForComplexArithmetic()
336 bool IsComplexRangePromoted = CGF.getLangOpts().getComplexRange() == in getPromotionType()
341 CGF.getLangOpts().getComplexRange(); in getPromotionType()
347 if (ElementType.UseExcessPrecision(CGF.getContext())) in getPromotionType()
348 return CGF.getContext().getComplexType(CGF.getContext().FloatTy); in getPromotionType()
350 if (Ty.UseExcessPrecision(CGF.getContext())) in getPromotionType()
351 return CGF.getContext().FloatTy; in getPromotionType()
362 result = CGF.EmitUnPromotedValue(result, E->getType()); \
414 return CGF.EmitAtomicExpr(E).getComplexVal(); in VisitAtomicExpr()
443 return CGF.EmitAtomicLoad(lvalue, loc).getComplexVal(); in EmitLoadOfLValue()
451 Address RealP = CGF.emitAddrOfRealComponent(SrcPtr, lvalue.getType()); in EmitLoadOfLValue()
456 Address ImagP = CGF.emitAddrOfImagComponent(SrcPtr, lvalue.getType()); in EmitLoadOfLValue()
468 (!isInit && CGF.LValueIsSuitableForInlineAtomic(lvalue))) in EmitStoreOfComplex()
469 return CGF.EmitAtomicStore(RValue::getComplex(Val), lvalue, isInit); in EmitStoreOfComplex()
472 Address RealPtr = CGF.emitAddrOfRealComponent(Ptr, lvalue.getType()); in EmitStoreOfComplex()
473 Address ImagPtr = CGF.emitAddrOfImagComponent(Ptr, lvalue.getType()); in EmitStoreOfComplex()
486 CGF.ErrorUnsupported(E, "complex expression"); in VisitExpr()
488 CGF.ConvertType(getComplexType(E->getType())->getElementType()); in VisitExpr()
495 llvm::Value *Imag = CGF.EmitScalarExpr(IL->getSubExpr()); in VisitImaginaryLiteral()
501 if (E->getCallReturnType(CGF.getContext())->isReferenceType()) in VisitCallExpr()
504 return CGF.EmitCallExpr(E).getComplexVal(); in VisitCallExpr()
508 CodeGenFunction::StmtExprEvaluation eval(CGF); in VisitStmtExpr()
509 Address RetAlloca = CGF.EmitCompoundStmt(*E->getSubStmt(), true); in VisitStmtExpr()
511 return EmitLoadOfLValue(CGF.MakeAddrLValue(RetAlloca, E->getType()), in VisitStmtExpr()
528 Val.first = CGF.EmitScalarConversion(Val.first, SrcType, DestType, Loc); in EmitComplexToComplexCast()
530 Val.second = CGF.EmitScalarConversion(Val.second, SrcType, DestType, Loc); in EmitComplexToComplexCast()
540 Val = CGF.EmitScalarConversion(Val, SrcType, DestType, Loc); in EmitScalarToComplexCast()
561 LValue origLV = CGF.EmitLValue(Op); in EmitCast()
562 Address V = origLV.getAddress().withElementType(CGF.ConvertType(DestTy)); in EmitCast()
563 return EmitLoadOfLValue(CGF.MakeAddrLValue(V, DestTy), Op->getExprLoc()); in EmitCast()
567 LValue SourceLVal = CGF.EmitLValue(Op); in EmitCast()
569 SourceLVal.getAddress().withElementType(CGF.ConvertTypeForMem(DestTy)); in EmitCast()
570 LValue DestLV = CGF.MakeAddrLValue(Addr, DestTy); in EmitCast()
632 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op); in EmitCast()
633 return EmitScalarToComplexCast(CGF.EmitScalarExpr(Op), Op->getType(), in EmitCast()
641 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op); in EmitCast()
660 return CGF.EmitUnPromotedValue(result, E->getSubExpr()->getType()); in VisitUnaryPlus()
669 return CGF.EmitPromotedComplexExpr(E->getSubExpr(), PromotionType); in VisitPlus()
682 return CGF.EmitUnPromotedValue(result, E->getSubExpr()->getType()); in VisitUnaryMinus()
691 Op = CGF.EmitPromotedComplexExpr(E->getSubExpr(), PromotionType); in VisitMinus()
724 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op.FPFeatures); in EmitBinAdd()
743 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op.FPFeatures); in EmitBinSub()
784 QualType FQTy = CGF.getContext().getFunctionType(Op.Ty, ArgsQTys, EPI); in EmitComplexBinOpLibCall()
785 const CGFunctionInfo &FuncInfo = CGF.CGM.getTypes().arrangeFreeFunctionCall( in EmitComplexBinOpLibCall()
788 llvm::FunctionType *FTy = CGF.CGM.getTypes().GetFunctionType(FuncInfo); in EmitComplexBinOpLibCall()
789 llvm::FunctionCallee Func = CGF.CGM.CreateRuntimeFunction( in EmitComplexBinOpLibCall()
794 RValue Res = CGF.EmitCall(FuncInfo, Callee, ReturnValueSlot(), Args, &Call); in EmitComplexBinOpLibCall()
795 Call->setCallingConv(CGF.CGM.getRuntimeCC()); in EmitComplexBinOpLibCall()
825 llvm::MDBuilder MDHelper(CGF.getLLVMContext()); in EmitBinMul()
834 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op.FPFeatures); in EmitBinMul()
864 llvm::BasicBlock *ContBB = CGF.createBasicBlock("complex_mul_cont"); in EmitBinMul()
865 llvm::BasicBlock *INaNBB = CGF.createBasicBlock("complex_mul_imag_nan"); in EmitBinMul()
874 CGF.EmitBlock(INaNBB); in EmitBinMul()
876 llvm::BasicBlock *LibCallBB = CGF.createBasicBlock("complex_mul_libcall"); in EmitBinMul()
881 CGF.EmitBlock(LibCallBB); in EmitBinMul()
889 CGF.EmitBlock(ContBB); in EmitBinMul()
950 static llvm::Value *EmitllvmFAbs(CodeGenFunction &CGF, llvm::Value *Value) { in EmitllvmFAbs() argument
952 CGF.CGM.getIntrinsic(llvm::Intrinsic::fabs, Value->getType()); in EmitllvmFAbs()
953 llvm::Value *Call = CGF.Builder.CreateCall(Func, Value); in EmitllvmFAbs()
967 llvm::Value *FAbsRHSr = EmitllvmFAbs(CGF, RHSr); // |c| in EmitRangeReductionDiv()
968 llvm::Value *FAbsRHSi = EmitllvmFAbs(CGF, RHSi); // |d| in EmitRangeReductionDiv()
973 CGF.createBasicBlock("abs_rhsr_greater_or_equal_abs_rhsi"); in EmitRangeReductionDiv()
975 CGF.createBasicBlock("abs_rhsr_less_than_abs_rhsi"); in EmitRangeReductionDiv()
976 llvm::BasicBlock *ContBB = CGF.createBasicBlock("complex_div"); in EmitRangeReductionDiv()
979 CGF.EmitBlock(TrueBB); in EmitRangeReductionDiv()
999 CGF.EmitBlock(FalseBB); in EmitRangeReductionDiv()
1020 CGF.EmitBlock(ContBB); in EmitRangeReductionDiv()
1037 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op.FPFeatures); in EmitBinDiv()
1168 return CGF.EmitPromotedValue(result, PromotionType); in EmitPromoted()
1183 return CGF.EmitPromotedComplexExpr(E, OverallPromotionType); in EmitPromotedComplexOperand()
1190 return ComplexPairTy(CGF.EmitPromotedScalarExpr(E, ComplexElementTy), in EmitPromotedComplexOperand()
1193 return ComplexPairTy(CGF.EmitScalarExpr(E), nullptr); in EmitPromotedComplexOperand()
1211 Ops.FPFeatures = E->getFPFeaturesInEffect(CGF.getLangOpts()); in EmitBinOps()
1227 OpInfo.FPFeatures = E->getFPFeaturesInEffect(CGF.getLangOpts()); in EmitCompoundAssignLValue()
1228 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, OpInfo.FPFeatures); in EmitCompoundAssignLValue()
1248 CGF.EmitPromotedScalarExpr(E->getRHS(), PromotionTypeRHS), nullptr); in EmitCompoundAssignLValue()
1250 assert(CGF.getContext().hasSameUnqualifiedType(ComplexElementTy, in EmitCompoundAssignLValue()
1253 OpInfo.RHS = ComplexPairTy(CGF.EmitScalarExpr(E->getRHS()), nullptr); in EmitCompoundAssignLValue()
1258 CGF.EmitPromotedComplexExpr(E->getRHS(), PromotionTypeRHS)); in EmitCompoundAssignLValue()
1260 assert(CGF.getContext().hasSameUnqualifiedType(OpInfo.Ty, in EmitCompoundAssignLValue()
1266 LValue LHS = CGF.EmitLValue(E->getLHS()); in EmitCompoundAssignLValue()
1280 llvm::Value *LHSVal = CGF.EmitLoadOfScalar(LHS, Loc); in EmitCompoundAssignLValue()
1288 if (!CGF.getContext().hasSameUnqualifiedType(PromotedComplexElementTy, in EmitCompoundAssignLValue()
1290 LHSVal = CGF.EmitScalarConversion(LHSVal, LHSTy, in EmitCompoundAssignLValue()
1293 if (!CGF.getContext().hasSameUnqualifiedType(ComplexElementTy, LHSTy)) in EmitCompoundAssignLValue()
1295 CGF.EmitScalarConversion(LHSVal, LHSTy, ComplexElementTy, Loc); in EmitCompoundAssignLValue()
1314 CGF.EmitComplexToScalarConversion(Result, OpInfo.Ty, LHSTy, Loc); in EmitCompoundAssignLValue()
1315 CGF.EmitStoreOfScalar(ResVal, LHS, /*isInit*/ false); in EmitCompoundAssignLValue()
1330 if (!CGF.getLangOpts().CPlusPlus) in EmitCompoundAssign()
1342 assert(CGF.getContext().hasSameUnqualifiedType(E->getLHS()->getType(), in EmitBinAssignLValue()
1352 LValue LHS = CGF.EmitLValue(E->getLHS()); in EmitBinAssignLValue()
1365 if (!CGF.getLangOpts().CPlusPlus) in VisitBinAssign()
1376 CGF.EmitIgnoredExpr(E->getLHS()); in VisitBinComma()
1384 llvm::BasicBlock *LHSBlock = CGF.createBasicBlock("cond.true"); in VisitAbstractConditionalOperator()
1385 llvm::BasicBlock *RHSBlock = CGF.createBasicBlock("cond.false"); in VisitAbstractConditionalOperator()
1386 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("cond.end"); in VisitAbstractConditionalOperator()
1389 CodeGenFunction::OpaqueValueMapping binding(CGF, E); in VisitAbstractConditionalOperator()
1392 CodeGenFunction::ConditionalEvaluation eval(CGF); in VisitAbstractConditionalOperator()
1393 CGF.EmitBranchOnBoolExpr(E->getCond(), LHSBlock, RHSBlock, in VisitAbstractConditionalOperator()
1394 CGF.getProfileCount(E)); in VisitAbstractConditionalOperator()
1396 eval.begin(CGF); in VisitAbstractConditionalOperator()
1397 CGF.EmitBlock(LHSBlock); in VisitAbstractConditionalOperator()
1399 CGF.incrementProfileCounter(E->getTrueExpr()); in VisitAbstractConditionalOperator()
1401 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
1405 CGF.EmitBranch(ContBlock); in VisitAbstractConditionalOperator()
1406 eval.end(CGF); in VisitAbstractConditionalOperator()
1408 eval.begin(CGF); in VisitAbstractConditionalOperator()
1409 CGF.EmitBlock(RHSBlock); in VisitAbstractConditionalOperator()
1411 CGF.incrementProfileCounter(E->getFalseExpr()); in VisitAbstractConditionalOperator()
1414 CGF.EmitBlock(ContBlock); in VisitAbstractConditionalOperator()
1416 CGF.incrementProfileCounter(E); in VisitAbstractConditionalOperator()
1417 eval.end(CGF); in VisitAbstractConditionalOperator()
1445 llvm::Value *Real = CGF.EmitScalarExpr(E->getInit(0)); in VisitInitListExpr()
1446 llvm::Value *Imag = CGF.EmitScalarExpr(E->getInit(1)); in VisitInitListExpr()
1455 llvm::Type* LTy = CGF.ConvertType(Ty); in VisitInitListExpr()
1462 RValue RV = CGF.EmitVAArg(E, ArgValue); in VisitVAArgExpr()
1465 CGF.ErrorUnsupported(E, "complex va_arg expression"); in VisitVAArgExpr()
1467 CGF.ConvertType(E->getType()->castAs<ComplexType>()->getElementType()); in VisitVAArgExpr()