14 #ifndef LLVM_CLANG_AST_DECLOPENMP_H 15 #define LLVM_CLANG_AST_DECLOPENMP_H 22 #include "llvm/ADT/ArrayRef.h" 23 #include "llvm/Support/TrailingObjects.h" 47 virtual void anchor();
50 Decl(DK, DC, L), NumVars(0) { }
53 return llvm::makeArrayRef(getTrailingObjects<Expr *>(), NumVars);
67 unsigned ID,
unsigned N);
85 varlist_const_iterator
varlist_begin()
const {
return getVars().begin(); }
86 varlist_const_iterator
varlist_end()
const {
return getVars().end(); }
115 Expr *Combiner =
nullptr;
123 Expr *Priv =
nullptr;
125 Expr *Orig =
nullptr;
132 virtual void anchor();
139 PrevDeclInScope = Prev;
174 return static_cast<InitKind>(OMPDeclareReductionDeclBits.InitializerKind);
185 OMPDeclareReductionDeclBits.InitializerKind = IK;
224 Expr *MapperVarRef =
nullptr;
231 virtual void anchor();
238 PrevDeclInScope(PrevDeclInScope) {}
241 PrevDeclInScope = Prev;
265 llvm::iterator_range<clauselist_const_iterator>;
314 void anchor()
override;
319 :
VarDecl(OMPCapturedExpr, C, DC, StartLoc, StartLoc, Id, Type, TInfo,
352 unsigned NumClauses = 0;
354 virtual void anchor();
357 :
Decl(DK, DC, L), NumClauses(0) {}
362 return llvm::makeArrayRef(getTrailingObjects<OMPClause *>(), NumClauses);
399 return getClauses().begin();
402 return getClauses().end();
429 unsigned NumVars = 0;
431 unsigned NumClauses = 0;
433 size_t numTrailingObjects(OverloadToken<Expr *>)
const {
436 size_t numTrailingObjects(OverloadToken<OMPClause *>)
const {
440 virtual void anchor();
446 return llvm::makeArrayRef(getTrailingObjects<Expr *>(), NumVars);
457 return llvm::makeArrayRef(getTrailingObjects<OMPClause *>(), NumClauses);
474 unsigned NVars,
unsigned NClauses);
500 varlist_const_iterator
varlist_end()
const {
return getVars().end(); }
511 return getClauses().begin();
514 return getClauses().end();
clauselist_range clauselists()
static bool classof(const Decl *D)
static bool classof(const Decl *D)
void setImplicit(bool I=true)
void setInitializerData(Expr *OrigE, Expr *PrivE)
Set initializer Orig and Priv vars.
const Expr * getCombiner() const
MutableArrayRef< OMPClause * >::iterator clauselist_iterator
A (possibly-)qualified type.
clauselist_const_range clauselists() const
varlist_iterator varlist_end()
clauselist_iterator clauselist_end()
This represents '#pragma omp allocate ...' directive.
C Language Family Type Representation.
unsigned clauselist_size() const
Decl - This represents one declaration (or definition), e.g.
ArrayRef< const OMPClause * >::iterator clauselist_const_iterator
clauselist_iterator clauselist_end()
clauselist_const_range clauselists() const
The base class of the type hierarchy.
llvm::iterator_range< clauselist_iterator > clauselist_range
static OMPDeclareReductionDecl * castFromDeclContext(const DeclContext *DC)
bool clauselist_empty() const
static bool classofKind(Kind K)
A container of type source information.
clauselist_iterator clauselist_begin()
llvm::iterator_range< varlist_const_iterator > varlist_const_range
clauselist_const_iterator clauselist_begin() const
Represents a variable declaration or definition.
ArrayRef< const Expr * >::iterator varlist_const_iterator
bool clauselist_empty() const
void setCombinerData(Expr *InE, Expr *OutE)
Set combiner In and Out vars.
static bool classofKind(Kind K)
static bool classof(const Decl *D)
clauselist_range clauselists()
clauselist_const_iterator clauselist_end() const
One of these records is kept for each identifier that is lexed.
llvm::iterator_range< clauselist_const_iterator > clauselist_const_range
static OMPThreadPrivateDecl * CreateDeserialized(ASTContext &C, unsigned ID, unsigned N)
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
varlist_const_range varlists() const
InitKind getInitializerKind() const
Get initializer kind.
virtual SourceRange getSourceRange() const LLVM_READONLY
Source range that this declaration covers.
MutableArrayRef< OMPClause * >::iterator clauselist_iterator
static bool classof(const Decl *D)
Expr * getMapperVarRef()
Get the variable declared in the mapper.
Expr * getInitializer()
Get initializer expression (if specified) of the declare reduction construct.
bool clauselist_empty() const
clauselist_const_iterator clauselist_begin() const
varlist_const_iterator varlist_begin() const
static DeclContext * castToDeclContext(const OMPDeclareMapperDecl *D)
ArrayRef< const OMPClause * >::iterator clauselist_const_iterator
llvm::iterator_range< varlist_const_iterator > varlist_const_range
static bool classofKind(Kind K)
unsigned varlist_size() const
varlist_const_iterator varlist_begin() const
const Expr * getInitPriv() const
DeclarationName getVarName()
Get the name of the variable declared in the mapper.
Expr * getCombiner()
Get combiner expression of the declare reduction construct.
MutableArrayRef< Expr * >::iterator varlist_iterator
clauselist_const_range clauselists() const
This represents '#pragma omp requires...' directive.
varlist_iterator varlist_begin()
Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it ...
This represents one expression.
const Expr * getCombinerIn() const
const Expr * getCombinerOut() const
static bool classof(const Decl *D)
clauselist_range clauselists()
Expr * getInitPriv()
Get Priv variable of the initializer.
llvm::iterator_range< clauselist_iterator > clauselist_range
This file defines OpenMP AST classes for clauses.
clauselist_const_iterator clauselist_end() const
varlist_const_iterator varlist_end() const
clauselist_const_iterator clauselist_end() const
static bool classofKind(Kind K)
Encodes a location in the source.
clauselist_iterator clauselist_begin()
This represents '#pragma omp declare reduction ...' directive.
Pseudo declaration for capturing expressions.
varlist_const_range varlists() const
varlist_iterator varlist_begin()
void setInitializer(Expr *E, InitKind IK)
Set initializer expression for the declare reduction construct.
void setMapperVarRef(Expr *MapperVarRefE)
Set the variable declared in the mapper.
static bool classofKind(Kind K)
clauselist_iterator clauselist_begin()
static DeclContext * castToDeclContext(const OMPDeclareReductionDecl *D)
Expr * getInitOrig()
Get Orig variable of the initializer.
bool varlist_empty() const
Dataflow Directional Tag Classes.
DeclContext - This is used only as base class of specific decl types that can act as declaration cont...
static OMPThreadPrivateDecl * Create(ASTContext &C, DeclContext *DC, SourceLocation L, ArrayRef< Expr *> VL)
static OMPDeclareMapperDecl * castFromDeclContext(const DeclContext *DC)
The name of a declaration.
varlist_const_iterator varlist_end() const
static bool classofKind(Kind K)
const Expr * getInitOrig() const
MutableArrayRef< Expr * >::iterator varlist_iterator
llvm::iterator_range< clauselist_const_iterator > clauselist_const_range
void setCombiner(Expr *E)
Set combiner expression for the declare reduction construct.
clauselist_const_iterator clauselist_begin() const
clauselist_iterator clauselist_end()
const Expr * getInitializer() const
MutableArrayRef< OMPClause * >::iterator clauselist_iterator
ArrayRef< const OMPClause * >::iterator clauselist_const_iterator
unsigned clauselist_size() const
varlist_iterator varlist_end()
bool varlist_empty() const
This represents '#pragma omp declare mapper ...' directive.
llvm::iterator_range< clauselist_const_iterator > clauselist_const_range
unsigned clauselist_size() const
Kind
Lists the kind of concrete classes of Decl.
Expr * getCombinerIn()
Get In variable of the combiner.
unsigned varlist_size() const
llvm::iterator_range< varlist_iterator > varlist_range
llvm::iterator_range< clauselist_iterator > clauselist_range
A trivial tuple used to represent a source range.
llvm::iterator_range< varlist_iterator > varlist_range
Expr * getCombinerOut()
Get Out variable of the combiner.
ArrayRef< const Expr * >::iterator varlist_const_iterator
This represents '#pragma omp threadprivate ...' directive.
const Expr * getMapperVarRef() const