FLANG
Fortran::semantics::DirectiveAttributeVisitor< T > Class Template Reference

Classes

struct  DirContext

Public Member Functions

 DirectiveAttributeVisitor (SemanticsContext &context)
template<typename A>
bool Pre (const A &)
template<typename A>
void Post (const A &)

Protected Member Functions

DirContextGetContext ()
std::optional< DirContextGetContextIf ()
void PushContext (const parser::CharBlock &source, T dir, Scope &scope)
void PushContext (const parser::CharBlock &source, T dir)
void PopContext ()
void SetContextDirectiveSource (parser::CharBlock &dir)
ScopecurrScope ()
void AddContextDefaultmapBehaviour (parser::OmpVariableCategory::Value VarCat, parser::OmpDefaultmapClause::ImplicitBehavior ImpBehav)
void SetContextDefaultDSA (Symbol::Flag flag)
void AddToContextObjectWithDSA (const Symbol &symbol, Symbol::Flag flag, DirContext &context)
void AddToContextObjectWithDSA (const Symbol &symbol, Symbol::Flag flag)
bool IsObjectWithDSA (const Symbol &symbol)
bool IsObjectWithVisibleDSA (const Symbol &symbol)
bool WithinConstruct ()
void SetContextAssociatedLoopLevel (std::int64_t level)
SymbolMakeAssocSymbol (const SourceName &name, const Symbol &prev, Scope &scope)
SymbolMakeAssocSymbol (const SourceName &name, const Symbol &prev)
void AddDataSharingAttributeObject (SymbolRef object)
void ClearDataSharingAttributeObjects ()
bool HasDataSharingAttributeObject (const Symbol &)
std::tuple< const parser::Name *, const parser::ScalarExpr *, const parser::ScalarExpr *, const parser::ScalarExpr * > GetLoopBounds (const parser::DoConstruct &)
const parser::NameGetLoopIndex (const parser::DoConstruct &)
const parser::DoConstructGetDoConstructIf (const parser::ExecutionPartConstruct &)
SymbolDeclareNewAccessEntity (const Symbol &, Symbol::Flag, Scope &)
SymbolDeclareAccessEntity (const parser::Name &, Symbol::Flag, Scope &)
SymbolDeclareAccessEntity (Symbol &, Symbol::Flag, Scope &)
SymbolDeclareOrMarkOtherAccessEntity (const parser::Name &, Symbol::Flag)

Protected Attributes

UnorderedSymbolSet dataSharingAttributeObjects_
SemanticsContextcontext_
std::vector< DirContextdirContext_

Member Function Documentation

◆ GetLoopBounds()

template<typename T>
std::tuple< const parser::Name *, const parser::ScalarExpr *, const parser::ScalarExpr *, const parser::ScalarExpr * > Fortran::semantics::DirectiveAttributeVisitor< T >::GetLoopBounds ( const parser::DoConstruct & x)
protected

Extract the iv and bounds of a DO loop:

  1. The loop index/induction variable
  2. The lower bound
  3. The upper bound
  4. The step/increment (or nullptr if not present)

Each returned tuple value can be nullptr if not present. Diagnoses an error if the the DO loop is a DO WHILE or DO CONCURRENT loop.

◆ GetLoopIndex()

template<typename T>
const parser::Name * Fortran::semantics::DirectiveAttributeVisitor< T >::GetLoopIndex ( const parser::DoConstruct & x)
protected

Extract the loop index/induction variable from a DO loop. Diagnoses an error if the the DO loop is a DO WHILE or DO CONCURRENT loop and returns nullptr.


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