From abb2ac88891c0709414ee9accee4fef230ea4b13 Mon Sep 17 00:00:00 2001 From: Alexis Hunt Date: Tue, 18 May 2010 06:22:21 +0000 Subject: [PATCH] Switch over the tablegen to use much prettier range technology Also rename ABSTRACT to ABSTRACT_STMT, in keeping with the other .def files llvm-svn: 104017 --- clang/include/clang/AST/RecursiveASTVisitor.h | 2 +- clang/include/clang/AST/Stmt.h | 25 ++++++------------- clang/include/clang/AST/StmtVisitor.h | 2 +- clang/lib/AST/Stmt.cpp | 2 +- clang/lib/Sema/TreeTransform.h | 6 ++--- 5 files changed, 13 insertions(+), 24 deletions(-) diff --git a/clang/include/clang/AST/RecursiveASTVisitor.h b/clang/include/clang/AST/RecursiveASTVisitor.h index 1b2f3a79ddb9..9762a8361536 100644 --- a/clang/include/clang/AST/RecursiveASTVisitor.h +++ b/clang/include/clang/AST/RecursiveASTVisitor.h @@ -240,7 +240,7 @@ DISPATCH(UnaryOperator, UnaryOperator, S); \ // Top switch stmt: dispatch to VisitFooStmt for each FooStmt. switch (S->getStmtClass()) { case Stmt::NoStmtClass: break; -#define ABSTRACT(STMT) +#define ABSTRACT_STMT(STMT) #define STMT(CLASS, PARENT) \ case Stmt::CLASS ## Class: DISPATCH(CLASS, CLASS, S); #include "clang/AST/StmtNodes.inc" diff --git a/clang/include/clang/AST/Stmt.h b/clang/include/clang/AST/Stmt.h index f95c35a1268c..f2c067a05ff6 100644 --- a/clang/include/clang/AST/Stmt.h +++ b/clang/include/clang/AST/Stmt.h @@ -98,24 +98,13 @@ public: enum StmtClass { NoStmtClass = 0, #define STMT(CLASS, PARENT) CLASS##Class, -#define FIRST_STMT(CLASS) firstStmtConstant = CLASS##Class, -// LAST_STMT will always come last -#define LAST_STMT(CLASS) lastStmtConstant = CLASS##Class -#define FIRST_EXPR(CLASS) firstExprConstant = CLASS##Class, -#define LAST_EXPR(CLASS) lastExprConstant = CLASS##Class, -#define FIRST_CALLEXPR(CLASS) firstCallExprConstant = CLASS##Class, -#define LAST_CALLEXPR(CLASS) lastCallExprConstant = CLASS##Class, -#define FIRST_CASTEXPR(CLASS) firstCastExprConstant = CLASS##Class, -#define LAST_CASTEXPR(CLASS) lastCastExprConstant = CLASS##Class, -#define FIRST_EXPLICITCASTEXPR(CLASS) firstExplicitCastExprConstant = \ - CLASS##Class, -#define LAST_EXPLICITCASTEXPR(CLASS) lastExplicitCastExprConstant = \ - CLASS##Class, -#define FIRST_BINARYOPERATOR(CLASS) firstBinaryOperatorConstant = \ - CLASS##Class, -#define LAST_BINARYOPERATOR(CLASS) lastBinaryOperatorConstant = \ - CLASS##Class, -#define ABSTRACT(STMT) +#define STMT_RANGE(BASE, FIRST, LAST) \ + first##BASE##Constant = FIRST##Class, \ + last##BASE##Constant = LAST##Class, +#define LAST_STMT_RANGE(BASE, FIRST, LAST) \ + first##BASE##Constant = FIRST##Class, \ + last##BASE##Constant = LAST##Class +#define ABSTRACT_STMT(STMT) #include "clang/AST/StmtNodes.inc" }; private: diff --git a/clang/include/clang/AST/StmtVisitor.h b/clang/include/clang/AST/StmtVisitor.h index f1d478ded4d1..8078451fa31f 100644 --- a/clang/include/clang/AST/StmtVisitor.h +++ b/clang/include/clang/AST/StmtVisitor.h @@ -105,7 +105,7 @@ public: // Top switch stmt: dispatch to VisitFooStmt for each FooStmt. switch (S->getStmtClass()) { default: assert(0 && "Unknown stmt kind!"); -#define ABSTRACT(STMT) +#define ABSTRACT_STMT(STMT) #define STMT(CLASS, PARENT) \ case Stmt::CLASS ## Class: DISPATCH(CLASS, CLASS); #include "clang/AST/StmtNodes.inc" diff --git a/clang/lib/AST/Stmt.cpp b/clang/lib/AST/Stmt.cpp index f6f3ae5c8805..80f5695e42ad 100644 --- a/clang/lib/AST/Stmt.cpp +++ b/clang/lib/AST/Stmt.cpp @@ -36,7 +36,7 @@ static StmtClassNameTable &getStmtInfoTableEntry(Stmt::StmtClass E) { // Intialize the table on the first use. Initialized = true; -#define ABSTRACT(STMT) +#define ABSTRACT_STMT(STMT) #define STMT(CLASS, PARENT) \ StmtClassInfo[(unsigned)Stmt::CLASS##Class].Name = #CLASS; \ StmtClassInfo[(unsigned)Stmt::CLASS##Class].Size = sizeof(CLASS); diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 7f756ec4ce4d..37264a6cb3c8 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -344,7 +344,7 @@ public: OwningStmtResult Transform##Node(Node *S); #define EXPR(Node, Parent) \ OwningExprResult Transform##Node(Node *E); -#define ABSTRACT(Stmt) +#define ABSTRACT_STMT(Stmt) #include "clang/AST/StmtNodes.inc" /// \brief Build a new pointer type given its pointee type. @@ -1958,7 +1958,7 @@ Sema::OwningStmtResult TreeTransform::TransformStmt(Stmt *S) { // Transform expressions by calling TransformExpr. #define STMT(Node, Parent) -#define ABSTRACT(Stmt) +#define ABSTRACT_STMT(Stmt) #define EXPR(Node, Parent) case Stmt::Node##Class: #include "clang/AST/StmtNodes.inc" { @@ -1982,7 +1982,7 @@ Sema::OwningExprResult TreeTransform::TransformExpr(Expr *E) { switch (E->getStmtClass()) { case Stmt::NoStmtClass: break; #define STMT(Node, Parent) case Stmt::Node##Class: break; -#define ABSTRACT(Stmt) +#define ABSTRACT_STMT(Stmt) #define EXPR(Node, Parent) \ case Stmt::Node##Class: return getDerived().Transform##Node(cast(E)); #include "clang/AST/StmtNodes.inc"