clang: clang::OMPForSimdDirective Class Reference (original) (raw)

This represents '#pragma omp for simd' directive. More...

#include "[clang/AST/StmtOpenMP.h](StmtOpenMP%5F8h%5Fsource.html)"

Static Public Member Functions
static OMPForSimdDirective * Create (const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc, unsigned CollapsedNum, ArrayRef< OMPClause * > Clauses, Stmt *AssociatedStmt, const HelperExprs &Exprs)
Creates directive with a list of Clauses.
static OMPForSimdDirective * CreateEmpty (const ASTContext &C, unsigned NumClauses, unsigned CollapsedNum, EmptyShell)
Creates an empty directive with the place for NumClauses clauses.
static bool classof (const Stmt *T)
- Static Public Member Functions inherited from clang::OMPLoopDirective
static bool classof (const Stmt *T)
- Static Public Member Functions inherited from clang::OMPLoopBasedDirective
static Stmt * tryToFindNextInnerLoop (Stmt *CurStmt, bool TryImperfectlyNestedLoops)
Try to find the next loop sub-statement in the specified statement CurStmt.
static const Stmt * tryToFindNextInnerLoop (const Stmt *CurStmt, bool TryImperfectlyNestedLoops)
static bool doForAllLoops (Stmt *CurStmt, bool TryImperfectlyNestedLoops, unsigned NumLoops, llvm::function_ref< bool(unsigned, Stmt *)> Callback, llvm::function_ref< void(OMPLoopTransformationDirective *)> OnTransformationCallback)
Calls the specified callback function for all the loops in CurStmt, from the outermost to the innermost.
static bool doForAllLoops (const Stmt *CurStmt, bool TryImperfectlyNestedLoops, unsigned NumLoops, llvm::function_ref< bool(unsigned, const Stmt *)> Callback, llvm::function_ref< void(const OMPLoopTransformationDirective *)> OnTransformationCallback)
static bool doForAllLoops (Stmt *CurStmt, bool TryImperfectlyNestedLoops, unsigned NumLoops, llvm::function_ref< bool(unsigned, Stmt *)> Callback)
Calls the specified callback function for all the loops in CurStmt, from the outermost to the innermost.
static bool doForAllLoops (const Stmt *CurStmt, bool TryImperfectlyNestedLoops, unsigned NumLoops, llvm::function_ref< bool(unsigned, const Stmt *)> Callback)
static void doForAllLoopsBodies (Stmt *CurStmt, bool TryImperfectlyNestedLoops, unsigned NumLoops, llvm::function_ref< void(unsigned, Stmt *, Stmt *)> Callback)
Calls the specified callback function for all the loop bodies in CurStmt, from the outermost loop to the innermost.
static void doForAllLoopsBodies (const Stmt *CurStmt, bool TryImperfectlyNestedLoops, unsigned NumLoops, llvm::function_ref< void(unsigned, const Stmt *, const Stmt *)> Callback)
static bool classof (const Stmt *T)
- Static Public Member Functions inherited from clang::OMPExecutableDirective
static llvm::iterator_range< used_clauses_child_iterator > used_clauses_children (ArrayRef< OMPClause * > Clauses)
template
static llvm::iterator_range< specific_clause_iterator< SpecificClause > > getClausesOfKind (ArrayRef< OMPClause * > Clauses)
template
static const SpecificClause * getSingleClause (ArrayRef< OMPClause * > Clauses)
Gets a single clause of the specified kind associated with the current directive iff there is only one clause of this kind (and assertion is fired if there is more than one clause is associated with the directive).
static bool classof (const Stmt *S)
- Static Public Member Functions inherited from clang::Stmt
static void addStmtClass (const StmtClass s)
static void EnableStatistics ()
static void PrintStats ()
static Likelihood getLikelihood (ArrayRef< const Attr * > Attrs)
static Likelihood getLikelihood (const Stmt *S)
static const Attr * getLikelihoodAttr (const Stmt *S)
static Likelihood getLikelihood (const Stmt *Then, const Stmt *Else)
static std::tuple< bool, const Attr *, const Attr * > determineLikelihoodConflict (const Stmt *Then, const Stmt *Else)
Additional Inherited Members
- Public Types inherited from clang::Stmt
enum StmtClass { NoStmtClass = 0 }
enum Likelihood { LH_Unlikely = -1 , LH_None, LH_Likely }
The likelihood of a branch being taken. More...
using child_iterator = StmtIterator
Child Iterators: All subclasses must implement 'children' to permit easy iteration over the substatements/subexpressions of an AST node.
using const_child_iterator = ConstStmtIterator
using child_range = llvm::iterator_range< child_iterator >
using const_child_range = llvm::iterator_range< const_child_iterator >
- Public Member Functions inherited from clang::OMPLoopDirective
Expr * getIterationVariable () const
Expr * getLastIteration () const
Expr * getCalcLastIteration () const
Expr * getPreCond () const
Expr * getCond () const
Expr * getInit () const
Expr * getInc () const
const Stmt * getPreInits () const
Stmt * getPreInits ()
Expr * getIsLastIterVariable () const
Expr * getLowerBoundVariable () const
Expr * getUpperBoundVariable () const
Expr * getStrideVariable () const
Expr * getEnsureUpperBound () const
Expr * getNextLowerBound () const
Expr * getNextUpperBound () const
Expr * getNumIterations () const
Expr * getPrevLowerBoundVariable () const
Expr * getPrevUpperBoundVariable () const
Expr * getDistInc () const
Expr * getPrevEnsureUpperBound () const
Expr * getCombinedLowerBoundVariable () const
Expr * getCombinedUpperBoundVariable () const
Expr * getCombinedEnsureUpperBound () const
Expr * getCombinedInit () const
Expr * getCombinedCond () const
Expr * getCombinedNextLowerBound () const
Expr * getCombinedNextUpperBound () const
Expr * getCombinedDistCond () const
Expr * getCombinedParForInDistCond () const
Stmt * getBody ()
const Stmt * getBody () const
ArrayRef< Expr * > counters ()
ArrayRef< Expr * > counters () const
ArrayRef< Expr * > private_counters ()
ArrayRef< Expr * > private_counters () const
ArrayRef< Expr * > inits ()
ArrayRef< Expr * > inits () const
ArrayRef< Expr * > updates ()
ArrayRef< Expr * > updates () const
ArrayRef< Expr * > finals ()
ArrayRef< Expr * > finals () const
ArrayRef< Expr * > dependent_counters ()
ArrayRef< Expr * > dependent_counters () const
ArrayRef< Expr * > dependent_inits ()
ArrayRef< Expr * > dependent_inits () const
ArrayRef< Expr * > finals_conditions ()
ArrayRef< Expr * > finals_conditions () const
- Public Member Functions inherited from clang::OMPLoopBasedDirective
unsigned getLoopsNumber () const
Get number of collapsed loops.
- Public Member Functions inherited from clang::OMPExecutableDirective
template
llvm::iterator_range< specific_clause_iterator< SpecificClause > > getClausesOfKind () const
template
const SpecificClause * getSingleClause () const
template
bool hasClausesOfKind () const
Returns true if the current directive has one or more clauses of a specific kind.
SourceLocation getBeginLoc () const
Returns starting location of directive kind.
SourceLocation getEndLoc () const
Returns ending location of directive.
void setLocStart (SourceLocation Loc)
Set starting location of directive kind.
void setLocEnd (SourceLocation Loc)
Set ending location of directive.
unsigned getNumClauses () const
Get number of clauses.
OMPClause * getClause (unsigned I) const
Returns specified clause.
bool hasAssociatedStmt () const
Returns true if directive has associated statement.
const Stmt * getAssociatedStmt () const
Returns statement associated with the directive.
Stmt * getAssociatedStmt ()
const CapturedStmt * getCapturedStmt (OpenMPDirectiveKind RegionKind) const
Returns the captured statement associated with the component region within the (combined) directive.
CapturedStmt * getInnermostCapturedStmt ()
Get innermost captured statement for the construct.
const CapturedStmt * getInnermostCapturedStmt () const
OpenMPDirectiveKind getDirectiveKind () const
child_range children ()
const_child_range children () const
ArrayRef< OMPClause * > clauses () const
bool isStandaloneDirective () const
Returns whether or not this is a Standalone directive.
const Stmt * getStructuredBlock () const
Returns the AST node representing OpenMP structured-block of this OpenMP executable directive, Prerequisite: Executable Directive must not be Standalone directive.
Stmt * getStructuredBlock ()
const Stmt * getRawStmt () const
Stmt * getRawStmt ()
- Public Member Functions inherited from clang::Stmt
void * operator new (size_t bytes, const ASTContext &C, unsigned alignment=8)
void * operator new (size_t bytes, const ASTContext *C, unsigned alignment=8)
void * operator new (size_t bytes, void *mem) noexcept
void operator delete (void *, const ASTContext &, unsigned) noexcept
void operator delete (void *, const ASTContext *, unsigned) noexcept
void operator delete (void *, size_t) noexcept
void operator delete (void *, void *) noexcept
Stmt ()=delete
Stmt (const Stmt &)=delete
Stmt (Stmt &&)=delete
Stmt & operator= (const Stmt &)=delete
Stmt & operator= (Stmt &&)=delete
Stmt (StmtClass SC)
StmtClass getStmtClass () const
const char * getStmtClassName () const
SourceRange getSourceRange () const LLVM_READONLY
SourceLocation tokens are not useful in isolation - they are low level value objects created/interpreted by SourceManager.
SourceLocation getBeginLoc () const LLVM_READONLY
SourceLocation getEndLoc () const LLVM_READONLY
void dump () const
Dumps the specified AST fragment and all subtrees to llvm::errs().
void dump (raw_ostream &OS, const ASTContext &Context) const
int64_t getID (const ASTContext &Context) const
void dumpColor () const
dumpColor - same as dump(), but forces color highlighting.
void dumpPretty (const ASTContext &Context) const
dumpPretty/printPretty - These two methods do a "pretty print" of the AST back to its original source language syntax.
void printPretty (raw_ostream &OS, PrinterHelper *Helper, const PrintingPolicy &Policy, unsigned Indentation=0, StringRef NewlineSymbol="\n", const ASTContext *Context=nullptr) const
void printPrettyControlled (raw_ostream &OS, PrinterHelper *Helper, const PrintingPolicy &Policy, unsigned Indentation=0, StringRef NewlineSymbol="\n", const ASTContext *Context=nullptr) const
void printJson (raw_ostream &Out, PrinterHelper *Helper, const PrintingPolicy &Policy, bool AddQuotes) const
Pretty-prints in JSON format.
void viewAST () const
viewAST - Visualize an AST rooted at this Stmt* using GraphViz.
Stmt * IgnoreContainers (bool IgnoreCaptured=false)
Skip no-op (attributed, compound) container stmts and skip captured stmt at the top, if IgnoreCaptured is true.
const Stmt * IgnoreContainers (bool IgnoreCaptured=false) const
const Stmt * stripLabelLikeStatements () const
Strip off all label-like statements.
Stmt * stripLabelLikeStatements ()
child_range children ()
const_child_range children () const
child_iterator child_begin ()
child_iterator child_end ()
const_child_iterator child_begin () const
const_child_iterator child_end () const
void Profile (llvm::FoldingSetNodeID &ID, const ASTContext &Context, bool Canonical, bool ProfileLambdaExpr=false) const
Produce a unique representation of the given statement.
void ProcessODRHash (llvm::FoldingSetNodeID &ID, ODRHash &Hash) const
Calculate a unique representation for a statement that is stable across compiler invocations.
- Protected Types inherited from clang::Stmt
enum { NumExprBits = NumStmtBits + 5 + llvm::BitWidth }
enum { NumCallExprBits = 32 }
enum { NumOverloadExprBits = NumExprBits + 1 }
template<typename T >
using ConstCastIterator = CastIterator< T, const T *const, const Stmt *const >
Const iterator for iterating over Stmt * arrays that contain only T *.
using ExprIterator = CastIterator< Expr >
using ConstExprIterator = ConstCastIterator< Expr >
- Protected Member Functions inherited from clang::OMPLoopDirective
OMPLoopDirective (StmtClass SC, OpenMPDirectiveKind Kind, SourceLocation StartLoc, SourceLocation EndLoc, unsigned CollapsedNum)
Build instance of loop directive of class Kind.
void setIterationVariable (Expr *IV)
void setLastIteration (Expr *LI)
void setCalcLastIteration (Expr *CLI)
void setPreCond (Expr *PC)
void setCond (Expr *Cond)
void setInit (Expr *Init)
void setInc (Expr *Inc)
void setPreInits (Stmt *PreInits)
void setIsLastIterVariable (Expr *IL)
void setLowerBoundVariable (Expr *LB)
void setUpperBoundVariable (Expr *UB)
void setStrideVariable (Expr *ST)
void setEnsureUpperBound (Expr *EUB)
void setNextLowerBound (Expr *NLB)
void setNextUpperBound (Expr *NUB)
void setNumIterations (Expr *NI)
void setPrevLowerBoundVariable (Expr *PrevLB)
void setPrevUpperBoundVariable (Expr *PrevUB)
void setDistInc (Expr *DistInc)
void setPrevEnsureUpperBound (Expr *PrevEUB)
void setCombinedLowerBoundVariable (Expr *CombLB)
void setCombinedUpperBoundVariable (Expr *CombUB)
void setCombinedEnsureUpperBound (Expr *CombEUB)
void setCombinedInit (Expr *CombInit)
void setCombinedCond (Expr *CombCond)
void setCombinedNextLowerBound (Expr *CombNLB)
void setCombinedNextUpperBound (Expr *CombNUB)
void setCombinedDistCond (Expr *CombDistCond)
void setCombinedParForInDistCond (Expr *CombParForInDistCond)
void setCounters (ArrayRef< Expr * > A)
void setPrivateCounters (ArrayRef< Expr * > A)
void setInits (ArrayRef< Expr * > A)
void setUpdates (ArrayRef< Expr * > A)
void setFinals (ArrayRef< Expr * > A)
void setDependentCounters (ArrayRef< Expr * > A)
void setDependentInits (ArrayRef< Expr * > A)
void setFinalsConditions (ArrayRef< Expr * > A)
- Protected Member Functions inherited from clang::OMPLoopBasedDirective
OMPLoopBasedDirective (StmtClass SC, OpenMPDirectiveKind Kind, SourceLocation StartLoc, SourceLocation EndLoc, unsigned NumAssociatedLoops)
Build instance of loop directive of class Kind.
- Protected Member Functions inherited from clang::OMPExecutableDirective
OMPExecutableDirective (StmtClass SC, OpenMPDirectiveKind K, SourceLocation StartLoc, SourceLocation EndLoc)
Build instance of directive of class K.
- Protected Member Functions inherited from clang::Stmt
void * operator new (size_t bytes) noexcept
void operator delete (void *data) noexcept
Stmt (StmtClass SC, EmptyShell)
Construct an empty statement.
- Static Protected Member Functions inherited from clang::OMPLoopDirective
static unsigned getArraysOffset (OpenMPDirectiveKind Kind)
Offset to the start of children expression arrays.
static unsigned numLoopChildren (unsigned CollapsedNum, OpenMPDirectiveKind Kind)
Children number.
- Static Protected Member Functions inherited from clang::OMPExecutableDirective
template<typename T , typename... Params>
static T * createDirective (const ASTContext &C, ArrayRef< OMPClause * > Clauses, Stmt *AssociatedStmt, unsigned NumChildren, Params &&... P)
template<typename T , typename... Params>
static T * createEmptyDirective (const ASTContext &C, unsigned NumClauses, bool HasAssociatedStmt, unsigned NumChildren, Params &&... P)
template<typename T >
static T * createEmptyDirective (const ASTContext &C, unsigned NumClauses, bool HasAssociatedStmt=false, unsigned NumChildren=0)
- Protected Attributes inherited from clang::OMPLoopBasedDirective
unsigned NumAssociatedLoops = 0
Number of collapsed loops as specified by 'collapse' clause.
- Protected Attributes inherited from clang::OMPExecutableDirective
OMPChildren * Data = nullptr
Data, associated with the directive.
- Protected Attributes inherited from clang::Stmt
union {
StmtBitfields StmtBits
NullStmtBitfields NullStmtBits
CompoundStmtBitfields CompoundStmtBits
LabelStmtBitfields LabelStmtBits
AttributedStmtBitfields AttributedStmtBits
IfStmtBitfields IfStmtBits
SwitchStmtBitfields SwitchStmtBits
WhileStmtBitfields WhileStmtBits
DoStmtBitfields DoStmtBits
ForStmtBitfields ForStmtBits
GotoStmtBitfields GotoStmtBits
ContinueStmtBitfields ContinueStmtBits
BreakStmtBitfields BreakStmtBits
ReturnStmtBitfields ReturnStmtBits
SwitchCaseBitfields SwitchCaseBits
ExprBitfields ExprBits
ConstantExprBitfields ConstantExprBits
PredefinedExprBitfields PredefinedExprBits
DeclRefExprBitfields DeclRefExprBits
FloatingLiteralBitfields FloatingLiteralBits
StringLiteralBitfields StringLiteralBits
CharacterLiteralBitfields CharacterLiteralBits
UnaryOperatorBitfields UnaryOperatorBits
UnaryExprOrTypeTraitExprBitfields UnaryExprOrTypeTraitExprBits
ArrayOrMatrixSubscriptExprBitfields ArrayOrMatrixSubscriptExprBits
CallExprBitfields CallExprBits
MemberExprBitfields MemberExprBits
CastExprBitfields CastExprBits
BinaryOperatorBitfields BinaryOperatorBits
InitListExprBitfields InitListExprBits
ParenListExprBitfields ParenListExprBits
GenericSelectionExprBitfields GenericSelectionExprBits
PseudoObjectExprBitfields PseudoObjectExprBits
SourceLocExprBitfields SourceLocExprBits
ParenExprBitfields ParenExprBits
StmtExprBitfields StmtExprBits
CXXOperatorCallExprBitfields CXXOperatorCallExprBits
CXXRewrittenBinaryOperatorBitfields CXXRewrittenBinaryOperatorBits
CXXBoolLiteralExprBitfields CXXBoolLiteralExprBits
CXXNullPtrLiteralExprBitfields CXXNullPtrLiteralExprBits
CXXThisExprBitfields CXXThisExprBits
CXXThrowExprBitfields CXXThrowExprBits
CXXDefaultArgExprBitfields CXXDefaultArgExprBits
CXXDefaultInitExprBitfields CXXDefaultInitExprBits
CXXScalarValueInitExprBitfields CXXScalarValueInitExprBits
CXXNewExprBitfields CXXNewExprBits
CXXDeleteExprBitfields CXXDeleteExprBits
TypeTraitExprBitfields TypeTraitExprBits
DependentScopeDeclRefExprBitfields DependentScopeDeclRefExprBits
CXXConstructExprBitfields CXXConstructExprBits
ExprWithCleanupsBitfields ExprWithCleanupsBits
CXXUnresolvedConstructExprBitfields CXXUnresolvedConstructExprBits
CXXDependentScopeMemberExprBitfields CXXDependentScopeMemberExprBits
OverloadExprBitfields OverloadExprBits
UnresolvedLookupExprBitfields UnresolvedLookupExprBits
UnresolvedMemberExprBitfields UnresolvedMemberExprBits
CXXNoexceptExprBitfields CXXNoexceptExprBits
SubstNonTypeTemplateParmExprBitfields SubstNonTypeTemplateParmExprBits
LambdaExprBitfields LambdaExprBits
RequiresExprBitfields RequiresExprBits
CoawaitExprBitfields CoawaitBits
ObjCIndirectCopyRestoreExprBitfields ObjCIndirectCopyRestoreExprBits
OpaqueValueExprBitfields OpaqueValueExprBits
};

This represents '#pragma omp for simd' directive.

#pragma omp for simd private(a,b) linear(i,j:s) reduction(+:c,d)

In this example directive '#pragma omp for simd' has clauses 'private' with the variables 'a' and 'b', 'linear' with variables 'i', 'j' and linear step 's', 'reduction' with operator '+' and variables 'c' and 'd'.

Definition at line 1724 of file StmtOpenMP.h.

classof()

static bool clang::OMPForSimdDirective::classof ( const Stmt * T) inlinestatic

Create()

Creates directive with a list of Clauses.

Parameters

C AST context.
StartLoc Starting location of the directive kind.
EndLoc Ending Location of the directive.
CollapsedNum Number of collapsed loops.
Clauses List of clauses.
AssociatedStmt Statement, associated with the directive.
Exprs Helper expressions for CodeGen.

Definition at line 488 of file StmtOpenMP.cpp.

References clang::C, clang::OMPLoopBasedDirective::HelperExprs::CalcLastIteration, clang::OMPLoopBasedDirective::HelperExprs::Cond, clang::OMPLoopBasedDirective::HelperExprs::Counters, clang::OMPLoopBasedDirective::HelperExprs::DependentCounters, clang::OMPLoopBasedDirective::HelperExprs::DependentInits, clang::OMPLoopBasedDirective::HelperExprs::EUB, clang::OMPLoopBasedDirective::HelperExprs::Finals, clang::OMPLoopBasedDirective::HelperExprs::FinalsConditions, clang::OMPLoopBasedDirective::HelperExprs::IL, clang::OMPLoopBasedDirective::HelperExprs::Inc, clang::OMPLoopBasedDirective::HelperExprs::Init, clang::OMPLoopBasedDirective::HelperExprs::Inits, clang::OMPLoopBasedDirective::HelperExprs::IterationVarRef, clang::OMPLoopBasedDirective::HelperExprs::LastIteration, clang::OMPLoopBasedDirective::HelperExprs::LB, clang::OMPLoopBasedDirective::HelperExprs::NLB, clang::OMPLoopBasedDirective::HelperExprs::NUB, clang::OMPLoopBasedDirective::HelperExprs::NumIterations, clang::OMPLoopDirective::numLoopChildren(), clang::OMPLoopBasedDirective::HelperExprs::PreCond, clang::OMPLoopBasedDirective::HelperExprs::PreInits, clang::OMPLoopBasedDirective::HelperExprs::PrivateCounters, clang::OMPLoopBasedDirective::HelperExprs::ST, clang::OMPLoopBasedDirective::HelperExprs::UB, and clang::OMPLoopBasedDirective::HelperExprs::Updates.

Referenced by clang::SemaOpenMP::ActOnOpenMPForSimdDirective().

CreateEmpty()

ASTStmtReader

OMPExecutableDirective


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