FLANG
|
#include <flang/Lower/ComponentPath.h>
Public Types | |
using | ExtendRefFunc = std::function< mlir::Value(const mlir::Value &)> |
Public Member Functions | |
ComponentPath (bool isImplicit) | |
ComponentPath (bool isImplicit, const evaluate::Substring *ss) | |
bool | isSlice () const |
bool | hasComponents () const |
void | clear () |
bool | hasExtendCoorRef () const |
ExtendRefFunc | getExtendCoorRef () const |
void | resetExtendCoorRef () |
void | resetPC () |
Public Attributes | |
llvm::SmallVector< PathComponent > | reversePath |
const evaluate::Substring * | substring = nullptr |
bool | applied = false |
llvm::SmallVector< mlir::Value > | prefixComponents |
llvm::SmallVector< mlir::Value > | trips |
llvm::SmallVector< mlir::Value > | suffixComponents |
std::function< IterationSpace(const IterationSpace &)> | pc |
std::optional< ExtendRefFunc > | extendCoorRef |
Collection of components.
This class is used both to collect front-end post-order functional Expr trees and their translations to Values to be used in a pre-order list of arguments.
std::optional<ExtendRefFunc> Fortran::lower::ComponentPath::extendCoorRef |
In the case where a path of components involves members that are POINTER or ALLOCATABLE, a dereference is required in FIR for semantic correctness. This optional continuation allows the generation of those dereferences. These accesses are always on Fortran entities of record types, which are implicitly in-memory objects.