|
FLANG
|
#include <flang/Optimizer/Builder/TemporaryStorage.h>
Public Member Functions | |
| ArrayTemp (mlir::Location loc, fir::FirOpBuilder &builder, fir::SequenceType declaredType, llvm::ArrayRef< mlir::Value > extents, llvm::ArrayRef< mlir::Value > lowerBounds, llvm::ArrayRef< mlir::Value > lengths, bool allocateOnHeap, llvm::StringRef name) | |
| void | pushValue (mlir::Location loc, fir::FirOpBuilder &builder, mlir::Value value, mlir::ValueRange indices) |
| void | resetFetchPosition (mlir::Location loc, fir::FirOpBuilder &builder) |
| mlir::Value | fetch (mlir::Location loc, fir::FirOpBuilder &builder, mlir::ValueRange indices) |
| void | destroy (mlir::Location loc, fir::FirOpBuilder &builder) |
| bool | canBeFetchedAfterPush () const |
Multidimensional temporary indexed directly by the enclosing loop induction variables (innermost loop is the first dimension). The indices passed to pushValue/fetch are interpreted in the array's domain, which is described by a fir.shape_shift built from the loop extents and lower bounds. This avoids the loop-carried counter used by HomogeneousScalarStack, keeping loop iterations independent. Limited to Fortran::common::maxRank dimensions.