FLANG
Classes | Public Types | Public Member Functions | List of all members
Fortran::lower::pft::Variable Struct Reference

#include <flang/Lower/PFTBuilder.h>

Classes

struct  AggregateStore
 
struct  Nominal
 

Public Types

using Interval = std::tuple< std::size_t, std::size_t >
 <offset, size> pair
 

Public Member Functions

 Variable (const Fortran::semantics::Symbol &sym, bool global=false, int depth=0)
 
 Variable (AggregateStore &&istore)
 
const Fortran::semantics::SymbolgetSymbol () const
 Return the front-end symbol for a nominal variable.
 
bool isRuntimeTypeInfoData () const
 Is this variable a compiler generated global to describe derived types?
 
const AggregateStoregetAggregateStore () const
 Return the aggregate store.
 
const IntervalgetInterval () const
 Return the interval range of an aggregate store.
 
bool hasSymbol () const
 Only nominal variable have front-end symbols.
 
bool isAggregateStore () const
 Is this an aggregate store?
 
bool isGlobal () const
 Is this variable a global?
 
bool isModuleOrSubmoduleVariable () const
 Is this a module or submodule variable?
 
const Fortran::semantics::ScopegetOwningScope () const
 
bool isHeapAlloc () const
 
bool isPointer () const
 
bool isTarget () const
 
bool isAlias () const
 
std::size_t getAliasOffset () const
 
void setAlias (std::size_t offset)
 
void setHeapAlloc (bool to=true)
 
void setPointer (bool to=true)
 
void setTarget (bool to=true)
 
int getDepth () const
 The depth is recorded for nominal variables as a debugging aid.
 
LLVM_DUMP_METHOD void dump () const
 

Detailed Description

A variable captures an object to be created per the declaration part of a function like unit.

Fortran EQUIVALENCE statements are a mechanism that introduces aliasing between named variables. The set of overlapping aliases will materialize a generic store object with a designated offset and size. Participant symbols will simply be pointers into the aggregate store.

EQUIVALENCE can also interact with COMMON and other global variables to imply aliasing between (subparts of) a global and other local variable names.

Properties can be applied by lowering. For example, a local array that is known to be very large may be transformed into a heap allocated entity by lowering. That decision would be tracked in its Variable instance.

Member Function Documentation

◆ isAlias()

bool Fortran::lower::pft::Variable::isAlias ( ) const
inline

An alias(er) is a variable that is part of a EQUIVALENCE that is allocated locally on the stack.


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