FLANG
Public Member Functions | List of all members
Fortran::lower::HostAssociations Class Reference

#include <flang/Lower/HostAssociations.h>

Public Member Functions

bool empty () const
 Returns true iff there are no host associations.
 
bool hasTupleAssociations () const
 
void addSymbolsToBind (const llvm::SetVector< const Fortran::semantics::Symbol * > &symbols, const Fortran::semantics::Scope &hostScope)
 
void hostProcedureBindings (AbstractConverter &converter, SymMap &symMap)
 
void internalProcedureBindings (AbstractConverter &converter, SymMap &symMap)
 
mlir::Type getArgumentType (AbstractConverter &convert)
 Return the type of the extra argument to add to each internal procedure.
 
bool isAssociated (const Fortran::semantics::Symbol &symbol) const
 Is symbol host associated ?
 

Detailed Description

Internal procedures in Fortran may access variables declared in the host procedure directly. We bundle these variables together in a tuple and pass them as an extra argument.

Member Function Documentation

◆ addSymbolsToBind()

void Fortran::lower::HostAssociations::addSymbolsToBind ( const llvm::SetVector< const Fortran::semantics::Symbol * > &  symbols,
const Fortran::semantics::Scope hostScope 
)

Adds a set of Symbols that will be the host associated bindings for this host procedure.

◆ hasTupleAssociations()

bool Fortran::lower::HostAssociations::hasTupleAssociations ( ) const
inline

Returns true iff there are host associations that are conveyed through an extra tuple argument.

◆ hostProcedureBindings()

void Fortran::lower::HostAssociations::hostProcedureBindings ( AbstractConverter converter,
SymMap symMap 
)

Code gen the FIR for the local bindings for the host associated symbols for the host (parent) procedure using builder.

◆ internalProcedureBindings()

void Fortran::lower::HostAssociations::internalProcedureBindings ( AbstractConverter converter,
SymMap symMap 
)

Code gen the FIR for the local bindings for the host associated symbols for an internal (child) procedure using builder.


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