clang 20.0.0git
Classes | Namespaces | Macros | Functions
TreeTransform.h File Reference
#include "CoroutineStmtBuilder.h"
#include "TypeLocBuilder.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/Expr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprConcepts.h"
#include "clang/AST/ExprObjC.h"
#include "clang/AST/ExprOpenMP.h"
#include "clang/AST/OpenMPClause.h"
#include "clang/AST/Stmt.h"
#include "clang/AST/StmtCXX.h"
#include "clang/AST/StmtObjC.h"
#include "clang/AST/StmtOpenACC.h"
#include "clang/AST/StmtOpenMP.h"
#include "clang/Basic/DiagnosticParse.h"
#include "clang/Basic/OpenMPKinds.h"
#include "clang/Sema/Designator.h"
#include "clang/Sema/EnterExpressionEvaluationContext.h"
#include "clang/Sema/Lookup.h"
#include "clang/Sema/Ownership.h"
#include "clang/Sema/ParsedTemplate.h"
#include "clang/Sema/ScopeInfo.h"
#include "clang/Sema/SemaDiagnostic.h"
#include "clang/Sema/SemaInternal.h"
#include "clang/Sema/SemaObjC.h"
#include "clang/Sema/SemaOpenACC.h"
#include "clang/Sema/SemaOpenMP.h"
#include "clang/Sema/SemaPseudoObject.h"
#include "clang/Sema/SemaSYCL.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/Support/ErrorHandling.h"
#include <algorithm>
#include <optional>
#include "clang/Basic/AttrList.inc"
#include "clang/AST/TypeLocNodes.def"
#include "clang/AST/StmtNodes.inc"
#include "llvm/Frontend/OpenMP/OMP.inc"
#include "clang/Basic/OpenACCClauses.def"
#include "clang/Basic/OperatorKinds.def"

Go to the source code of this file.

Classes

class  clang::TreeTransform< Derived >
 A semantic tree transformation that allows one to transform one abstract syntax tree into another. More...
 
class  clang::TreeTransform< Derived >::TemporaryBase
 RAII object that temporarily sets the base location and entity used for reporting diagnostics in types. More...
 
class  clang::TemplateArgumentLocInventIterator< Derived, InputIterator >
 Iterator adaptor that invents template argument location information for each of the template arguments in its underlying iterator. More...
 
class  clang::TemplateArgumentLocInventIterator< Derived, InputIterator >::pointer
 
class  clang::TemplateArgumentLocContainerIterator< ArgLocContainer >
 Simple iterator that traverses the template arguments in a container that provides a getArgLoc() member function. More...
 
class  clang::TemplateArgumentLocContainerIterator< ArgLocContainer >::pointer
 

Namespaces

namespace  clang
 The JSON file list parser is used to communicate input to InstallAPI.
 

Macros

#define ATTR(X)    const X##Attr *Transform##X##Attr(const X##Attr *R) { return R; }
 
#define ATTR(X)
 
#define ABSTRACT_TYPELOC(CLASS, PARENT)
 
#define TYPELOC(CLASS, PARENT)    QualType Transform##CLASS##Type(TypeLocBuilder &TLB, CLASS##TypeLoc T);
 
#define STMT(Node, Parent)
 
#define VALUESTMT(Node, Parent)
 
#define EXPR(Node, Parent)
 
#define ABSTRACT_STMT(Stmt)
 
#define GEN_CLANG_CLAUSE_CLASS
 
#define CLAUSE_CLASS(Enum, Str, Class)
 
#define STMT(Node, Parent)    case Stmt::Node##Class: return getDerived().Transform##Node(cast<Node>(S));
 
#define VALUESTMT(Node, Parent)
 
#define ABSTRACT_STMT(Node)
 
#define EXPR(Node, Parent)
 
#define STMT(Node, Parent)
 
#define ABSTRACT_STMT(Stmt)
 
#define EXPR(Node, Parent)   case Stmt::Node##Class:
 
#define GEN_CLANG_CLAUSE_CLASS
 
#define CLAUSE_CLASS(Enum, Str, Class)
 
#define STMT(Node, Parent)   case Stmt::Node##Class: break;
 
#define ABSTRACT_STMT(Stmt)
 
#define EXPR(Node, Parent)    case Stmt::Node##Class: return getDerived().Transform##Node(cast<Node>(E));
 
#define ABSTRACT_TYPELOC(CLASS, PARENT)
 
#define TYPELOC(CLASS, PARENT)
 
#define ATTR(X)
 
#define ATTR(X)
 
#define VISIT_CLAUSE(CLAUSE_NAME)    void Visit##CLAUSE_NAME##Clause(const OpenACC##CLAUSE_NAME##Clause &Clause);
 
#define OVERLOADED_OPERATOR(Name, Spelling, Token, Unary, Binary, MemberOnly)
 
#define OVERLOADED_OPERATOR_MULTI(Name, Spelling, Unary, Binary, MemberOnly)
 

Functions

template<class TyLoc >
static QualType clang::TransformTypeSpecType (TypeLocBuilder &TLB, TyLoc T)
 
template<typename Derived , class T >
bool clang::transformOMPMappableExprListClause (TreeTransform< Derived > &TT, OMPMappableExprListClause< T > *C, llvm::SmallVectorImpl< Expr * > &Vars, CXXScopeSpec &MapperIdScopeSpec, DeclarationNameInfo &MapperIdInfo, llvm::SmallVectorImpl< Expr * > &UnresolvedMappers)
 

Macro Definition Documentation

◆ ABSTRACT_STMT [1/4]

#define ABSTRACT_STMT (   Node)

Definition at line 819 of file TreeTransform.h.

◆ ABSTRACT_STMT [2/4]

#define ABSTRACT_STMT (   Stmt)

Definition at line 819 of file TreeTransform.h.

◆ ABSTRACT_STMT [3/4]

#define ABSTRACT_STMT (   Stmt)

Definition at line 819 of file TreeTransform.h.

◆ ABSTRACT_STMT [4/4]

#define ABSTRACT_STMT (   Stmt)

Definition at line 819 of file TreeTransform.h.

◆ ABSTRACT_TYPELOC [1/2]

#define ABSTRACT_TYPELOC (   CLASS,
  PARENT 
)

Definition at line 667 of file TreeTransform.h.

◆ ABSTRACT_TYPELOC [2/2]

#define ABSTRACT_TYPELOC (   CLASS,
  PARENT 
)

Definition at line 667 of file TreeTransform.h.

◆ ATTR [1/4]

#define ATTR (   X)     const X##Attr *Transform##X##Attr(const X##Attr *R) { return R; }

Definition at line 421 of file TreeTransform.h.

◆ ATTR [2/4]

#define ATTR (   X)
Value:
const X##Attr *TransformStmt##X##Attr(const Stmt *, const Stmt *, \
const X##Attr *A) { \
return getDerived().Transform##X##Attr(A); \
}
#define X(type, name)
Definition: Value.h:144

Definition at line 421 of file TreeTransform.h.

◆ ATTR [3/4]

#define ATTR (   X)
Value:
case attr::X: \
return getDerived().Transform##X##Attr(cast<X##Attr>(R));

Definition at line 421 of file TreeTransform.h.

◆ ATTR [4/4]

#define ATTR (   X)
Value:
case attr::X: \
return getDerived().TransformStmt##X##Attr(OrigS, InstS, cast<X##Attr>(R));

Definition at line 421 of file TreeTransform.h.

◆ CLAUSE_CLASS [1/2]

#define CLAUSE_CLASS (   Enum,
  Str,
  Class 
)
Value:
LLVM_ATTRIBUTE_NOINLINE \
OMPClause *Transform##Class(Class *S);

Definition at line 823 of file TreeTransform.h.

◆ CLAUSE_CLASS [2/2]

#define CLAUSE_CLASS (   Enum,
  Str,
  Class 
)
Value:
case Enum: \
return getDerived().Transform##Class(cast<Class>(S));

Definition at line 823 of file TreeTransform.h.

◆ EXPR [1/4]

#define EXPR (   Node,
  Parent 
)
Value:
LLVM_ATTRIBUTE_NOINLINE \
ExprResult Transform##Node(Node *E);
DynTypedNode Node
Expr * E

Definition at line 816 of file TreeTransform.h.

◆ EXPR [2/4]

#define EXPR (   Node,
  Parent 
)

Definition at line 816 of file TreeTransform.h.

◆ EXPR [3/4]

#define EXPR (   Node,
  Parent 
)    case Stmt::Node##Class:

Definition at line 816 of file TreeTransform.h.

◆ EXPR [4/4]

#define EXPR (   Node,
  Parent 
)     case Stmt::Node##Class: return getDerived().Transform##Node(cast<Node>(E));

Definition at line 816 of file TreeTransform.h.

◆ GEN_CLANG_CLAUSE_CLASS [1/2]

#define GEN_CLANG_CLAUSE_CLASS

Definition at line 822 of file TreeTransform.h.

◆ GEN_CLANG_CLAUSE_CLASS [2/2]

#define GEN_CLANG_CLAUSE_CLASS

Definition at line 822 of file TreeTransform.h.

◆ OVERLOADED_OPERATOR

#define OVERLOADED_OPERATOR (   Name,
  Spelling,
  Token,
  Unary,
  Binary,
  MemberOnly 
)
Value:
case OO_##Name: \
break;

◆ OVERLOADED_OPERATOR_MULTI

#define OVERLOADED_OPERATOR_MULTI (   Name,
  Spelling,
  Unary,
  Binary,
  MemberOnly 
)

◆ STMT [1/4]

#define STMT (   Node,
  Parent 
)
Value:
LLVM_ATTRIBUTE_NOINLINE \
StmtResult Transform##Node(Node *S);

Definition at line 810 of file TreeTransform.h.

◆ STMT [2/4]

#define STMT (   Node,
  Parent 
)     case Stmt::Node##Class: return getDerived().Transform##Node(cast<Node>(S));

Definition at line 810 of file TreeTransform.h.

◆ STMT [3/4]

#define STMT (   Node,
  Parent 
)

Definition at line 810 of file TreeTransform.h.

◆ STMT [4/4]

#define STMT (   Node,
  Parent 
)    case Stmt::Node##Class: break;

Definition at line 810 of file TreeTransform.h.

◆ TYPELOC [1/2]

#define TYPELOC (   CLASS,
  PARENT 
)     QualType Transform##CLASS##Type(TypeLocBuilder &TLB, CLASS##TypeLoc T);

Definition at line 668 of file TreeTransform.h.

◆ TYPELOC [2/2]

#define TYPELOC (   CLASS,
  PARENT 
)
Value:
case TypeLoc::CLASS: \
return getDerived().Transform##CLASS##Type(TLB, \
T.castAs<CLASS##TypeLoc>());
MatchType Type
const T * castAs() const
Member-template castAs<specific type>.
Definition: Type.h:8800

Definition at line 668 of file TreeTransform.h.

◆ VALUESTMT [1/2]

#define VALUESTMT (   Node,
  Parent 
)
Value:
LLVM_ATTRIBUTE_NOINLINE \
StmtResult Transform##Node(Node *S, StmtDiscardKind SDK);

Definition at line 813 of file TreeTransform.h.

◆ VALUESTMT [2/2]

#define VALUESTMT (   Node,
  Parent 
)
Value:
case Stmt::Node##Class: \
return getDerived().Transform##Node(cast<Node>(S), SDK);

Definition at line 813 of file TreeTransform.h.

◆ VISIT_CLAUSE

#define VISIT_CLAUSE (   CLAUSE_NAME)     void Visit##CLAUSE_NAME##Clause(const OpenACC##CLAUSE_NAME##Clause &Clause);

Definition at line 11594 of file TreeTransform.h.