56class VectorSubscriptBox {
61 using ElementalGeneratorWithBoolReturn =
63 struct LoweredVectorSubscript {
65 : vector{std::move(vector)}, size{size} {}
76 using LoweredSubscript =
77 std::variant<mlir::Value, LoweredTriplet, LoweredVectorSubscript>;
83 MaybeSubstring substringBounds, mlir::Type elementType)
84 : loweredBase{std::move(loweredBase)}, loweredSubscripts{std::move(
86 componentPath{std::move(componentPath)},
87 substringBounds{substringBounds}, elementType{elementType} {};
101 const ElementalGeneratorWithBoolReturn &elementalGenerator,
102 mlir::Value initialCondition);
109 template <
typename LoopType,
typename Generator>
112 const Generator &elementalGenerator,
113 mlir::Value initialCondition);
119 mlir::Location loc, mlir::Value shape,
121 mlir::ValueRange inductionVariables);
137 MaybeSubstring substringBounds;
139 mlir::Type elementType;
Definition StatementContext.h:46
mlir::Value loopOverElementsWhile(fir::FirOpBuilder &builder, mlir::Location loc, const ElementalGeneratorWithBoolReturn &elementalGenerator, mlir::Value initialCondition)
Definition VectorSubscripts.cpp:315
VectorSubscriptBox genVectorSubscriptBox(mlir::Location loc, Fortran::lower::AbstractConverter &converter, Fortran::lower::StatementContext &stmtCtx, const Fortran::evaluate::Expr< Fortran::evaluate::SomeType > &expr)
Definition VectorSubscripts.cpp:251