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

DirContext & GetContext ()
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)
Scope & currScope ()
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)
Symbol & MakeAssocSymbol (const SourceName &name, const Symbol &prev, Scope &scope)
Symbol & MakeAssocSymbol (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::Name * GetLoopIndex (const parser::DoConstruct &)
const parser::DoConstruct * GetDoConstructIf (const parser::ExecutionPartConstruct &)
Symbol * DeclareNewAccessEntity (const Symbol &, Symbol::Flag, Scope &)
Symbol * DeclareNewAccessEntity (const SourceName &, const Symbol &, Symbol::Flag, Scope &)
Symbol * DeclareAccessEntity (const parser::Name &, Symbol::Flag, Scope &)
Symbol * DeclareAccessEntity (Symbol &, Symbol::Flag, Scope &)

Protected Attributes

UnorderedSymbolSet dataSharingAttributeObjects_
SemanticsContext & context_
std::vector< DirContext > dirContext_

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: