FLANG
Public Types | Public Member Functions | Public Attributes | List of all members
Fortran::lower::ComponentPath Class Reference

#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::Substringsubstring = 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
 

Detailed Description

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.

Member Data Documentation

◆ extendCoorRef

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.


The documentation for this class was generated from the following files: