clang: clang::OMPUnrollDirective Class Reference (original) (raw)
Public Member Functions
Stmt *
getTransformedStmt () const
Get the de-sugared associated loops after unrolling.
Stmt *
getPreInits () const
Return the pre-init statements.
Public Member Functions inherited from clang::OMPLoopTransformationDirective
getNumAssociatedLoops () const
Return the number of associated (consumed) loops.
getNumGeneratedLoops () const
Return the number of loops generated by this loop transformation.
Stmt *
getTransformedStmt () const
Get the de-sugared statements after the loop transformation.
Stmt *
getPreInits () const
Return preinits statement.
Public Member Functions inherited from clang::OMPLoopBasedDirective
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
hasClausesOfKind () const
Returns true if the current directive has one or more clauses of a specific kind.
getBeginLoc () const
Returns starting location of directive kind.
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.
getNumClauses () const
Get number of clauses.
Returns specified clause.
hasAssociatedStmt () const
Returns true if directive has associated statement.
const Stmt *
getAssociatedStmt () const
Returns statement associated with the directive.
Stmt *
const CapturedStmt *
getCapturedStmt (OpenMPDirectiveKind RegionKind) const
Returns the captured statement associated with the component region within the (combined) directive.
Get innermost captured statement for the construct.
const CapturedStmt *
getInnermostCapturedStmt () const
getDirectiveKind () const
children ()
children () const
clauses () const
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 *
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 &
operator= (const Stmt &)=delete
Stmt &
getStmtClass () const
const char *
getStmtClassName () const
getSourceRange () const LLVM_READONLY
SourceLocation tokens are not useful in isolation - they are low level value objects created/interpreted by SourceManager.
getBeginLoc () const LLVM_READONLY
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 *
children ()
children () const
child_begin ()
child_end ()
child_begin () const
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.
Static Public Member Functions
static OMPUnrollDirective *
Create (const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc, ArrayRef< OMPClause * > Clauses, Stmt *AssociatedStmt, unsigned NumGeneratedLoops, Stmt *TransformedStmt, Stmt *PreInits)
Create a new AST node representation for '#pragma omp unroll'.
static OMPUnrollDirective *
CreateEmpty (const ASTContext &C, unsigned NumClauses)
Build an empty '#pragma omp unroll' AST node for deserialization.
static bool
Static Public Member Functions inherited from clang::OMPLoopTransformationDirective
static bool
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
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
Static Public Member Functions inherited from clang::Stmt
static void
addStmtClass (const StmtClass s)
static void
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 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 >
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::OMPLoopTransformationDirective
OMPLoopTransformationDirective (StmtClass SC, OpenMPDirectiveKind Kind, SourceLocation StartLoc, SourceLocation EndLoc, unsigned NumAssociatedLoops)
void
setNumGeneratedLoops (unsigned Num)
Set the number of loops generated by this loop transformation.
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::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
Number of collapsed loops as specified by 'collapse' clause.
Protected Attributes inherited from clang::OMPExecutableDirective
Data = nullptr
Data, associated with the directive.
Protected Attributes inherited from clang::Stmt
union {
NullStmtBitfields NullStmtBits
CompoundStmtBitfields CompoundStmtBits
LabelStmtBitfields LabelStmtBits
AttributedStmtBitfields AttributedStmtBits
SwitchStmtBitfields SwitchStmtBits
WhileStmtBitfields WhileStmtBits
GotoStmtBitfields GotoStmtBits
ContinueStmtBitfields ContinueStmtBits
BreakStmtBitfields BreakStmtBits
ReturnStmtBitfields ReturnStmtBits
SwitchCaseBitfields SwitchCaseBits
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 the '#pragma omp unroll' loop transformation directive.
#pragma omp unroll
for (int i = 0; i < 64; ++i)
Definition at line 5630 of file StmtOpenMP.h.