Lines Matching refs:e
22 LValue emitBinAssignLValue(const BinaryOperator *e, mlir::Value &val);
27 Expr *e);
32 mlir::Value emitLoadOfLValue(const Expr *e) { in emitLoadOfLValue() argument
33 return emitLoadOfLValue(cgf.emitLValue(e), e->getExprLoc()); in emitLoadOfLValue()
43 VisitAbstractConditionalOperator(const AbstractConditionalOperator *e);
44 mlir::Value VisitArraySubscriptExpr(Expr *e);
45 mlir::Value VisitBinAssign(const BinaryOperator *e);
46 mlir::Value VisitBinComma(const BinaryOperator *e);
47 mlir::Value VisitCallExpr(const CallExpr *e);
48 mlir::Value VisitCastExpr(CastExpr *e);
49 mlir::Value VisitChooseExpr(ChooseExpr *e);
50 mlir::Value VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *e);
51 mlir::Value VisitDeclRefExpr(DeclRefExpr *e);
52 mlir::Value VisitGenericSelectionExpr(GenericSelectionExpr *e);
53 mlir::Value VisitImplicitCastExpr(ImplicitCastExpr *e);
54 mlir::Value VisitInitListExpr(const InitListExpr *e);
56 mlir::Value VisitParenExpr(ParenExpr *e);
58 VisitSubstNonTypeTemplateParmExpr(SubstNonTypeTemplateParmExpr *e);
59 mlir::Value VisitUnaryDeref(const Expr *e);
69 BinOpInfo emitBinOps(const BinaryOperator *e,
72 mlir::Value emitPromoted(const Expr *e, QualType promotionTy);
74 mlir::Value emitPromotedComplexOperand(const Expr *e, QualType promotionTy);
99 mlir::Value VisitBin##OP(const BinaryOperator *e) { \
101 e->getType(), e->getOpcode() == BinaryOperatorKind::BO_Div); \
102 mlir::Value result = emitBin##OP(emitBinOps(e, promotionTy)); \
121 LValue ComplexExprEmitter::emitBinAssignLValue(const BinaryOperator *e, in emitBinAssignLValue() argument
123 assert(cgf.getContext().hasSameUnqualifiedType(e->getLHS()->getType(), in emitBinAssignLValue()
124 e->getRHS()->getType()) && in emitBinAssignLValue()
128 value = Visit(e->getRHS()); in emitBinAssignLValue()
131 LValue lhs = cgf.emitLValue(e->getLHS()); in emitBinAssignLValue()
134 emitStoreOfComplex(cgf.getLoc(e->getExprLoc()), value, lhs, /*isInit*/ false); in emitBinAssignLValue()
152 const CIRGenFunction::ConstantEmission &constant, Expr *e) { in emitConstant() argument
155 return emitLoadOfLValue(constant.getReferenceLValue(cgf, e), in emitConstant()
156 e->getExprLoc()); in emitConstant()
159 return builder.getConstant(cgf.getLoc(e->getSourceRange()), valueAttr); in emitConstant()
185 const AbstractConditionalOperator *e) { in VisitAbstractConditionalOperator() argument
186 mlir::Value condValue = Visit(e->getCond()); in VisitAbstractConditionalOperator()
187 mlir::Location loc = cgf.getLoc(e->getSourceRange()); in VisitAbstractConditionalOperator()
194 mlir::Value trueValue = Visit(e->getTrueExpr()); in VisitAbstractConditionalOperator()
199 mlir::Value falseValue = Visit(e->getFalseExpr()); in VisitAbstractConditionalOperator()
205 mlir::Value ComplexExprEmitter::VisitArraySubscriptExpr(Expr *e) { in VisitArraySubscriptExpr() argument
206 return emitLoadOfLValue(e); in VisitArraySubscriptExpr()
209 mlir::Value ComplexExprEmitter::VisitBinAssign(const BinaryOperator *e) { in VisitBinAssign() argument
211 LValue lv = emitBinAssignLValue(e, value); in VisitBinAssign()
222 return emitLoadOfLValue(lv, e->getExprLoc()); in VisitBinAssign()
225 mlir::Value ComplexExprEmitter::VisitBinComma(const BinaryOperator *e) { in VisitBinComma() argument
226 cgf.emitIgnoredExpr(e->getLHS()); in VisitBinComma()
227 return Visit(e->getRHS()); in VisitBinComma()
230 mlir::Value ComplexExprEmitter::VisitCallExpr(const CallExpr *e) { in VisitCallExpr() argument
231 if (e->getCallReturnType(cgf.getContext())->isReferenceType()) in VisitCallExpr()
232 return emitLoadOfLValue(e); in VisitCallExpr()
234 return cgf.emitCallExpr(e).getValue(); in VisitCallExpr()
237 mlir::Value ComplexExprEmitter::VisitCastExpr(CastExpr *e) { in VisitCastExpr() argument
238 if (const auto *ece = dyn_cast<ExplicitCastExpr>(e)) { in VisitCastExpr()
246 if (e->changesVolatileQualification()) in VisitCastExpr()
247 return emitLoadOfLValue(e); in VisitCastExpr()
249 return emitCast(e->getCastKind(), e->getSubExpr(), e->getType()); in VisitCastExpr()
252 mlir::Value ComplexExprEmitter::VisitChooseExpr(ChooseExpr *e) { in VisitChooseExpr() argument
253 return Visit(e->getChosenSubExpr()); in VisitChooseExpr()
257 ComplexExprEmitter::VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *e) { in VisitCXXScalarValueInitExpr() argument
258 mlir::Location loc = cgf.getLoc(e->getExprLoc()); in VisitCXXScalarValueInitExpr()
259 mlir::Type complexTy = cgf.convertType(e->getType()); in VisitCXXScalarValueInitExpr()
263 mlir::Value ComplexExprEmitter::VisitDeclRefExpr(DeclRefExpr *e) { in VisitDeclRefExpr() argument
264 if (CIRGenFunction::ConstantEmission constant = cgf.tryEmitAsConstant(e)) in VisitDeclRefExpr()
265 return emitConstant(constant, e); in VisitDeclRefExpr()
266 return emitLoadOfLValue(e); in VisitDeclRefExpr()
270 ComplexExprEmitter::VisitGenericSelectionExpr(GenericSelectionExpr *e) { in VisitGenericSelectionExpr() argument
271 return Visit(e->getResultExpr()); in VisitGenericSelectionExpr()
274 mlir::Value ComplexExprEmitter::VisitImplicitCastExpr(ImplicitCastExpr *e) { in VisitImplicitCastExpr() argument
277 if (e->changesVolatileQualification()) in VisitImplicitCastExpr()
278 return emitLoadOfLValue(e); in VisitImplicitCastExpr()
279 return emitCast(e->getCastKind(), e->getSubExpr(), e->getType()); in VisitImplicitCastExpr()
282 mlir::Value ComplexExprEmitter::VisitInitListExpr(const InitListExpr *e) { in VisitInitListExpr() argument
283 mlir::Location loc = cgf.getLoc(e->getExprLoc()); in VisitInitListExpr()
284 if (e->getNumInits() == 2) { in VisitInitListExpr()
285 mlir::Value real = cgf.emitScalarExpr(e->getInit(0)); in VisitInitListExpr()
286 mlir::Value imag = cgf.emitScalarExpr(e->getInit(1)); in VisitInitListExpr()
290 if (e->getNumInits() == 1) { in VisitInitListExpr()
295 assert(e->getNumInits() == 0 && "Unexpected number of inits"); in VisitInitListExpr()
296 mlir::Type complexTy = cgf.convertType(e->getType()); in VisitInitListExpr()
328 mlir::Value ComplexExprEmitter::VisitParenExpr(ParenExpr *e) { in VisitParenExpr() argument
329 return Visit(e->getSubExpr()); in VisitParenExpr()
333 SubstNonTypeTemplateParmExpr *e) { in VisitSubstNonTypeTemplateParmExpr() argument
334 return Visit(e->getReplacement()); in VisitSubstNonTypeTemplateParmExpr()
337 mlir::Value ComplexExprEmitter::VisitUnaryDeref(const Expr *e) { in VisitUnaryDeref() argument
338 return emitLoadOfLValue(e); in VisitUnaryDeref()
341 mlir::Value ComplexExprEmitter::emitPromoted(const Expr *e, in emitPromoted() argument
343 e = e->IgnoreParens(); in emitPromoted()
344 if (const auto *bo = dyn_cast<BinaryOperator>(e)) { in emitPromoted()
355 } else if (isa<UnaryOperator>(e)) { in emitPromoted()
360 mlir::Value result = Visit(const_cast<Expr *>(e)); in emitPromoted()
368 ComplexExprEmitter::emitPromotedComplexOperand(const Expr *e, in emitPromotedComplexOperand() argument
370 if (e->getType()->isAnyComplexType()) { in emitPromotedComplexOperand()
372 return cgf.emitPromotedComplexExpr(e, promotionTy); in emitPromotedComplexOperand()
373 return Visit(const_cast<Expr *>(e)); in emitPromotedComplexOperand()
381 ComplexExprEmitter::emitBinOps(const BinaryOperator *e, QualType promotionTy) { in emitBinOps() argument
382 BinOpInfo binOpInfo{cgf.getLoc(e->getExprLoc())}; in emitBinOps()
383 binOpInfo.lhs = emitPromotedComplexOperand(e->getLHS(), promotionTy); in emitBinOps()
384 binOpInfo.rhs = emitPromotedComplexOperand(e->getRHS(), promotionTy); in emitBinOps()
385 binOpInfo.ty = promotionTy.isNull() ? e->getType() : promotionTy; in emitBinOps()
386 binOpInfo.fpFeatures = e->getFPFeaturesInEffect(cgf.getLangOpts()); in emitBinOps()
402 LValue CIRGenFunction::emitComplexAssignmentLValue(const BinaryOperator *e) { in emitComplexAssignmentLValue() argument
403 assert(e->getOpcode() == BO_Assign && "Expected assign op"); in emitComplexAssignmentLValue()
406 LValue lvalue = ComplexExprEmitter(*this).emitBinAssignLValue(e, value); in emitComplexAssignmentLValue()
413 mlir::Value CIRGenFunction::emitComplexExpr(const Expr *e) { in emitComplexExpr() argument
414 assert(e && getComplexType(e->getType()) && in emitComplexExpr()
417 return ComplexExprEmitter(*this).Visit(const_cast<Expr *>(e)); in emitComplexExpr()
425 mlir::Value CIRGenFunction::emitPromotedComplexExpr(const Expr *e, in emitPromotedComplexExpr() argument
427 return ComplexExprEmitter(*this).emitPromoted(e, promotionType); in emitPromotedComplexExpr()