FLANG
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::Symbol & getSymbol () 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 AggregateStore & getAggregateStore () const
 Return the aggregate store.
const Interval & getInterval () 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::Scope * getOwningScope () 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: