17#ifndef FORTRAN_LOWER_CONVERTEXPR_H
18#define FORTRAN_LOWER_CONVERTEXPR_H
20#include "flang/Lower/Support/Utils.h"
21#include "flang/Optimizer/Builder/BoxValue.h"
22#include "flang/Optimizer/Builder/FIRBuilder.h"
38class AbstractConverter;
39class ExplicitIterSpace;
40class ImplicitIterSpace;
41class StatementContext;
46 AbstractConverter &converter,
49 StatementContext &stmtCtx);
55 AbstractConverter &converter,
58 StatementContext &stmtCtx);
62 AbstractConverter &converter,
65 StatementContext &stmtCtx);
71 AbstractConverter &converter,
74 StatementContext &stmtCtx);
79 AbstractConverter &converter,
80 const SomeExpr &expr, SymMap &symMap);
88 const SomeExpr &expr);
96 AbstractConverter &converter,
97 const SomeExpr &expr, SymMap &symMap,
98 StatementContext &stmtCtx);
111 const SomeExpr &lhs,
const SomeExpr &rhs,
112 SymMap &symMap, StatementContext &stmtCtx);
124 const SomeExpr &rhs, SymMap &symMap,
125 StatementContext &stmtCtx);
133 StatementContext &stmtCtx);
164 const SomeExpr &lhs,
const SomeExpr &rhs,
165 ExplicitIterSpace &explicitIterSpace,
166 ImplicitIterSpace &implicitIterSpace,
167 SymMap &symMap, StatementContext &stmtCtx);
173 const SomeExpr &lhs,
const SomeExpr &rhs,
174 ExplicitIterSpace &explicitIterSpace,
175 ImplicitIterSpace &implicitIterSpace,
177 StatementContext &stmtCtx);
184 AbstractConverter &converter,
const SomeExpr &lhs,
const SomeExpr &rhs,
185 ExplicitIterSpace &explicitIterSpace, ImplicitIterSpace &implicitIterSpace,
188 StatementContext &stmtCtx);
193 const SomeExpr &expr,
195 StatementContext &stmtCtx);
207 const SomeExpr &expr, mlir::Value raggedHeader,
208 SymMap &symMap, StatementContext &stmtCtx);
213 const SomeExpr &expr, SymMap &symMap,
214 StatementContext &stmtCtx);
222 const evaluate::ProcedureRef &call,
223 ExplicitIterSpace &explicitIterSpace,
224 ImplicitIterSpace &implicitIterSpace,
225 SymMap &symMap, StatementContext &stmtCtx,
226 bool isUserDefAssignment);
229 mlir::Value ptrVal, mlir::Type ptrTy,
Definition: BoxValue.h:478
Definition: FIRBuilder.h:55
Definition: BoxValue.h:360
Definition: AbstractConverter.h:59
fir::MutableBoxValue createMutableBox(AbstractConverter &converter, mlir::Location loc, const pft::Variable &var, mlir::Value boxAddr, mlir::ValueRange nonDeferredParams, bool alwaysUseBox, unsigned allocator=kDefaultAllocator)
Definition: Allocatable.cpp:1084
void createArrayOfPointerAssignment(AbstractConverter &converter, const SomeExpr &lhs, const SomeExpr &rhs, ExplicitIterSpace &explicitIterSpace, ImplicitIterSpace &implicitIterSpace, const llvm::SmallVector< mlir::Value > &lbounds, std::optional< llvm::SmallVector< mlir::Value > > ubounds, SymMap &symMap, StatementContext &stmtCtx)
Definition: ConvertExpr.cpp:7449
fir::ExtendedValue createBoxValue(mlir::Location loc, AbstractConverter &converter, const SomeExpr &expr, SymMap &symMap, StatementContext &stmtCtx)
Definition: ConvertExpr.cpp:7562
fir::ExtendedValue createInitializerAddress(mlir::Location loc, AbstractConverter &converter, const SomeExpr &expr, SymMap &symMap, StatementContext &stmtCtx)
Definition: ConvertExpr.cpp:7383
void createAllocatableArrayAssignment(AbstractConverter &converter, const SomeExpr &lhs, const SomeExpr &rhs, ExplicitIterSpace &explicitIterSpace, ImplicitIterSpace &implicitIterSpace, SymMap &symMap, StatementContext &stmtCtx)
Definition: ConvertExpr.cpp:7434
bool isParentComponent(const SomeExpr &expr)
Return true iff the expression is pointing to a parent component.
Definition: ConvertExpr.cpp:7509
fir::ExtendedValue createSomeExtendedAddress(mlir::Location loc, AbstractConverter &converter, const SomeExpr &expr, SymMap &symMap, StatementContext &stmtCtx)
Create an extended expression address.
Definition: ConvertExpr.cpp:7375
void createLazyArrayTempValue(AbstractConverter &converter, const SomeExpr &expr, mlir::Value raggedHeader, SymMap &symMap, StatementContext &stmtCtx)
Definition: ConvertExpr.cpp:7477
fir::ExtendedValue createSomeArrayBox(AbstractConverter &converter, const SomeExpr &expr, SymMap &symMap, StatementContext &stmtCtx)
Definition: ConvertExpr.cpp:7487
mlir::Value createSubroutineCall(AbstractConverter &converter, const evaluate::ProcedureRef &call, ExplicitIterSpace &explicitIterSpace, ImplicitIterSpace &implicitIterSpace, SymMap &symMap, StatementContext &stmtCtx, bool isUserDefAssignment)
Definition: ConvertExpr.cpp:7583
fir::ExtendedValue createSomeArrayTempValue(AbstractConverter &converter, const SomeExpr &expr, SymMap &symMap, StatementContext &stmtCtx)
Definition: ConvertExpr.cpp:7468
void createAnyMaskedArrayAssignment(AbstractConverter &converter, const SomeExpr &lhs, const SomeExpr &rhs, ExplicitIterSpace &explicitIterSpace, ImplicitIterSpace &implicitIterSpace, SymMap &symMap, StatementContext &stmtCtx)
Definition: ConvertExpr.cpp:7419
void createSomeArrayAssignment(AbstractConverter &converter, const SomeExpr &lhs, const SomeExpr &rhs, SymMap &symMap, StatementContext &stmtCtx)
Definition: ConvertExpr.cpp:7393
fir::ExtendedValue createSomeExtendedExpression(mlir::Location loc, AbstractConverter &converter, const SomeExpr &expr, SymMap &symMap, StatementContext &stmtCtx)
Create an extended expression value.
Definition: ConvertExpr.cpp:7357
fir::ExtendedValue updateBoxForParentComponent(AbstractConverter &converter, fir::ExtendedValue exv, const SomeExpr &expr)
Update the extended value to represent the parent component.
Definition: ConvertExpr.cpp:7531
fir::ExtendedValue createSomeInitializerExpression(mlir::Location loc, AbstractConverter &converter, const SomeExpr &expr, SymMap &symMap, StatementContext &stmtCtx)
Definition: ConvertExpr.cpp:7365
Definition: AbstractConverter.h:31
@ Value
Lower argument to a value. Mainly intended for scalar arguments.
Definition: AbstractConverter.h:27