15 #ifndef LLVM_CLANG_AST_DECLOPENMP_H
16 #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);
56 MutableArrayRef<Expr *> getVars() {
57 return MutableArrayRef<Expr *>(getTrailingObjects<Expr *>(), NumVars);
60 void setVars(ArrayRef<Expr *> VL);
67 unsigned ID,
unsigned N);
114 virtual void anchor();
120 Initializer(nullptr), PrevDeclInScope(PrevDeclInScope) {}
123 PrevDeclInScope = Prev;
128 static OMPDeclareReductionDecl *
130 QualType T, OMPDeclareReductionDecl *PrevDeclInScope);
173 void anchor()
override;
const Expr * getCombiner() const
A (possibly-)qualified type.
C Language Family Type Representation.
The base class of the type hierarchy.
static OMPDeclareReductionDecl * Create(ASTContext &C, DeclContext *DC, SourceLocation L, DeclarationName Name, QualType T, OMPDeclareReductionDecl *PrevDeclInScope)
Create declare reduction node.
static OMPDeclareReductionDecl * castFromDeclContext(const DeclContext *DC)
llvm::iterator_range< varlist_const_iterator > varlist_const_range
VarDecl - An instance of this class is created to represent a variable declaration or definition...
varlist_const_iterator varlist_end() const
static bool classofKind(Kind K)
static bool classof(const Decl *D)
static OMPCapturedExprDecl * Create(ASTContext &C, DeclContext *DC, IdentifierInfo *Id, QualType T)
One of these records is kept for each identifier that is lexed.
static OMPThreadPrivateDecl * CreateDeserialized(ASTContext &C, unsigned ID, unsigned N)
class LLVM_ALIGNAS(8) DependentTemplateSpecializationType const IdentifierInfo * Name
Represents a template specialization type whose template cannot be resolved, e.g. ...
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
bool varlist_empty() const
static OMPCapturedExprDecl * CreateDeserialized(ASTContext &C, unsigned ID)
static bool classof(const Decl *D)
static bool classof(const Decl *D)
Expr * getInitializer()
Get initializer expression (if specified) of the declare reduction construct.
varlist_const_iterator varlist_begin() const
static OMPThreadPrivateDecl * Create(ASTContext &C, DeclContext *DC, SourceLocation L, ArrayRef< Expr * > VL)
Expr * getCombiner()
Get combiner expression of the declare reduction construct.
MutableArrayRef< Expr * >::iterator varlist_iterator
ValueDecl - Represent the declaration of a variable (in which case it is an lvalue) a function (in wh...
Expr - This represents one expression.
OMPDeclareReductionDecl * getPrevDeclInScope()
Get reference to previous declare reduction construct in the same scope with the same name...
Encodes a location in the source.
This represents '#pragma omp declare reduction ...' directive.
Pseudo declaration for capturing expressions.
varlist_iterator varlist_begin()
static bool classofKind(Kind K)
static DeclContext * castToDeclContext(const OMPDeclareReductionDecl *D)
unsigned varlist_size() const
const Expr * getInitializer() const
varlist_const_range varlists() const
DeclContext - This is used only as base class of specific decl types that can act as declaration cont...
DeclarationName - The name of a declaration.
static bool classofKind(Kind K)
detail::InMemoryDirectory::const_iterator E
void setCombiner(Expr *E)
Set combiner expression for the declare reduction construct.
void setInitializer(Expr *E)
Set initializer expression for the declare reduction construct.
varlist_iterator varlist_end()
static OMPDeclareReductionDecl * CreateDeserialized(ASTContext &C, unsigned ID)
Create deserialized declare reduction node.
llvm::iterator_range< varlist_iterator > varlist_range
ArrayRef< const Expr * >::iterator varlist_const_iterator
This represents '#pragma omp threadprivate ...' directive.
DeclContext(Decl::Kind K)