[cfe-commits] r59300 - in /cfe/trunk: include/clang/AST/Stmt.h include/clang/AST/StmtNodes.def include/clang/AST/StmtVisitor.h lib/AST/Stmt.cpp lib/AST/StmtPrinter.cpp
Douglas Gregor
doug.gregor at gmail.com
Fri Nov 14 04:46:10 PST 2008
Author: dgregor
Date: Fri Nov 14 06:46:07 2008
New Revision: 59300
URL: http://llvm.org/viewvc/llvm-project?rev=59300&view=rev
Log:
Don't require us to manually number the statements and expressions in StmtNodes.def. We don't need stable numbers yet, renumbering is a pain, and LAST_STMT had the wrong value anyway.
Modified:
cfe/trunk/include/clang/AST/Stmt.h
cfe/trunk/include/clang/AST/StmtNodes.def
cfe/trunk/include/clang/AST/StmtVisitor.h
cfe/trunk/lib/AST/Stmt.cpp
cfe/trunk/lib/AST/StmtPrinter.cpp
Modified: cfe/trunk/include/clang/AST/Stmt.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Stmt.h?rev=59300&r1=59299&r2=59300&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/Stmt.h (original)
+++ cfe/trunk/include/clang/AST/Stmt.h Fri Nov 14 06:46:07 2008
@@ -92,11 +92,12 @@
class Stmt {
public:
enum StmtClass {
-#define STMT(N, CLASS, PARENT) CLASS##Class = N,
-#define FIRST_STMT(N) firstStmtConstant = N,
-#define LAST_STMT(N) lastStmtConstant = N,
-#define FIRST_EXPR(N) firstExprConstant = N,
-#define LAST_EXPR(N) lastExprConstant = N
+ NoStmtClass = 0,
+#define STMT(CLASS, PARENT) CLASS##Class,
+#define FIRST_STMT(CLASS) firstStmtConstant = CLASS##Class,
+#define LAST_STMT(CLASS) lastStmtConstant = CLASS##Class,
+#define FIRST_EXPR(CLASS) firstExprConstant = CLASS##Class,
+#define LAST_EXPR(CLASS) lastExprConstant = CLASS##Class
#include "clang/AST/StmtNodes.def"
};
private:
Modified: cfe/trunk/include/clang/AST/StmtNodes.def
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/StmtNodes.def?rev=59300&r1=59299&r2=59300&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/StmtNodes.def (original)
+++ cfe/trunk/include/clang/AST/StmtNodes.def Fri Nov 14 06:46:07 2008
@@ -12,115 +12,115 @@
//===----------------------------------------------------------------------===//
#ifndef FIRST_STMT
-#define FIRST_STMT(n)
-#define LAST_STMT(n)
+#define FIRST_STMT(CLASS)
+#define LAST_STMT(CLASS)
#endif
#ifndef FIRST_EXPR
-#define FIRST_EXPR(n)
-#define LAST_EXPR(n)
+#define FIRST_EXPR(CLASS)
+#define LAST_EXPR(CLASS)
#endif
// Normal Statements.
-FIRST_STMT(1)
-STMT( 1, NullStmt , Stmt)
-STMT( 2, CompoundStmt , Stmt)
-STMT( 3, CaseStmt , SwitchCase)
-STMT( 4, DefaultStmt , SwitchCase)
-STMT( 5, LabelStmt , Stmt)
-STMT( 6, IfStmt , Stmt)
-STMT( 7, SwitchStmt , Stmt)
-STMT( 8, WhileStmt , Stmt)
-STMT( 9, DoStmt , Stmt)
-STMT(10, ForStmt , Stmt)
-STMT(11, GotoStmt , Stmt)
-STMT(12, IndirectGotoStmt, Stmt)
-STMT(13, ContinueStmt , Stmt)
-STMT(14, BreakStmt , Stmt)
-STMT(15, ReturnStmt , Stmt)
-STMT(16, DeclStmt , Stmt)
-STMT(17, SwitchCase , Stmt)
+STMT(NullStmt , Stmt)
+FIRST_STMT(NullStmt)
+STMT(CompoundStmt , Stmt)
+STMT(CaseStmt , SwitchCase)
+STMT(DefaultStmt , SwitchCase)
+STMT(LabelStmt , Stmt)
+STMT(IfStmt , Stmt)
+STMT(SwitchStmt , Stmt)
+STMT(WhileStmt , Stmt)
+STMT(DoStmt , Stmt)
+STMT(ForStmt , Stmt)
+STMT(GotoStmt , Stmt)
+STMT(IndirectGotoStmt, Stmt)
+STMT(ContinueStmt , Stmt)
+STMT(BreakStmt , Stmt)
+STMT(ReturnStmt , Stmt)
+STMT(DeclStmt , Stmt)
+STMT(SwitchCase , Stmt)
// GNU Stmt Extensions
-STMT(18, AsmStmt , Stmt)
+STMT(AsmStmt , Stmt)
// Obj-C statements
-STMT(19, ObjCAtTryStmt , Stmt)
-STMT(20, ObjCAtCatchStmt , Stmt)
-STMT(21, ObjCAtFinallyStmt , Stmt)
-STMT(22, ObjCAtThrowStmt , Stmt)
-STMT(23, ObjCAtSynchronizedStmt , Stmt)
+STMT(ObjCAtTryStmt , Stmt)
+STMT(ObjCAtCatchStmt , Stmt)
+STMT(ObjCAtFinallyStmt , Stmt)
+STMT(ObjCAtThrowStmt , Stmt)
+STMT(ObjCAtSynchronizedStmt , Stmt)
// Obj-C2 statements
-STMT(24, ObjCForCollectionStmt, Stmt)
+STMT(ObjCForCollectionStmt, Stmt)
-LAST_STMT(23)
+LAST_STMT(ObjCForCollectionStmt)
-FIRST_EXPR(31)
// Expressions.
-STMT(31, Expr , Stmt)
-STMT(32, PredefinedExpr , Expr)
-STMT(33, DeclRefExpr , Expr)
-STMT(34, IntegerLiteral , Expr)
-STMT(35, FloatingLiteral , Expr)
-STMT(36, ImaginaryLiteral , Expr)
-STMT(37, StringLiteral , Expr)
-STMT(38, CharacterLiteral , Expr)
-STMT(39, ParenExpr , Expr)
-STMT(40, UnaryOperator , Expr)
-STMT(41, SizeOfAlignOfExpr , Expr)
-STMT(42, ArraySubscriptExpr , Expr)
-STMT(43, CallExpr , Expr)
-STMT(44, MemberExpr , Expr)
-STMT(45, CastExpr , Expr)
-STMT(46, BinaryOperator , Expr)
-STMT(47, CompoundAssignOperator, BinaryOperator)
-STMT(48, ConditionalOperator , Expr)
-STMT(49, ImplicitCastExpr , CastExpr)
-STMT(50, ExplicitCastExpr , CastExpr)
-STMT(51, CStyleCastExpr , ExplicitCastExpr)
-STMT(52, CompoundLiteralExpr , Expr)
-STMT(53, ExtVectorElementExpr , Expr)
-STMT(54, InitListExpr , Expr)
-STMT(55, VAArgExpr , Expr)
+STMT(Expr , Stmt)
+FIRST_EXPR(Expr)
+STMT(PredefinedExpr , Expr)
+STMT(DeclRefExpr , Expr)
+STMT(IntegerLiteral , Expr)
+STMT(FloatingLiteral , Expr)
+STMT(ImaginaryLiteral , Expr)
+STMT(StringLiteral , Expr)
+STMT(CharacterLiteral , Expr)
+STMT(ParenExpr , Expr)
+STMT(UnaryOperator , Expr)
+STMT(SizeOfAlignOfExpr , Expr)
+STMT(ArraySubscriptExpr , Expr)
+STMT(CallExpr , Expr)
+STMT(MemberExpr , Expr)
+STMT(CastExpr , Expr)
+STMT(BinaryOperator , Expr)
+STMT(CompoundAssignOperator, BinaryOperator)
+STMT(ConditionalOperator , Expr)
+STMT(ImplicitCastExpr , CastExpr)
+STMT(ExplicitCastExpr , CastExpr)
+STMT(CStyleCastExpr , ExplicitCastExpr)
+STMT(CompoundLiteralExpr , Expr)
+STMT(ExtVectorElementExpr , Expr)
+STMT(InitListExpr , Expr)
+STMT(VAArgExpr , Expr)
// GNU Extensions.
-STMT(56, AddrLabelExpr , Expr)
-STMT(57, StmtExpr , Expr)
-STMT(58, TypesCompatibleExpr , Expr)
-STMT(59, ChooseExpr , Expr)
+STMT(AddrLabelExpr , Expr)
+STMT(StmtExpr , Expr)
+STMT(TypesCompatibleExpr , Expr)
+STMT(ChooseExpr , Expr)
// C++ Expressions.
-STMT(60, CXXNamedCastExpr , ExplicitCastExpr)
-STMT(61, CXXStaticCastExpr , CXXNamedCastExpr)
-STMT(62, CXXDynamicCastExpr , CXXNamedCastExpr)
-STMT(63, CXXReinterpretCastExpr , CXXNamedCastExpr)
-STMT(64, CXXConstCastExpr , CXXNamedCastExpr)
-STMT(65, CXXFunctionalCastExpr , Expr)
-STMT(66, CXXTypeidExpr , Expr)
-STMT(67, CXXBoolLiteralExpr , Expr)
-STMT(68, CXXThisExpr , Expr)
-STMT(69, CXXThrowExpr , Expr)
-STMT(70, CXXDefaultArgExpr , Expr)
-STMT(71, CXXZeroInitValueExpr , Expr)
-STMT(72, CXXConditionDeclExpr , DeclRefExpr)
+STMT(CXXNamedCastExpr , ExplicitCastExpr)
+STMT(CXXStaticCastExpr , CXXNamedCastExpr)
+STMT(CXXDynamicCastExpr , CXXNamedCastExpr)
+STMT(CXXReinterpretCastExpr , CXXNamedCastExpr)
+STMT(CXXConstCastExpr , CXXNamedCastExpr)
+STMT(CXXFunctionalCastExpr , Expr)
+STMT(CXXTypeidExpr , Expr)
+STMT(CXXBoolLiteralExpr , Expr)
+STMT(CXXThisExpr , Expr)
+STMT(CXXThrowExpr , Expr)
+STMT(CXXDefaultArgExpr , Expr)
+STMT(CXXZeroInitValueExpr , Expr)
+STMT(CXXConditionDeclExpr , DeclRefExpr)
// Obj-C Expressions.
-STMT(80, ObjCStringLiteral , Expr)
-STMT(81, ObjCEncodeExpr , Expr)
-STMT(82, ObjCMessageExpr , Expr)
-STMT(83, ObjCSelectorExpr , Expr)
-STMT(84, ObjCProtocolExpr , Expr)
-STMT(85, ObjCIvarRefExpr , Expr)
-STMT(86, ObjCPropertyRefExpr , Expr)
-STMT(87, ObjCSuperExpr , Expr)
+STMT(ObjCStringLiteral , Expr)
+STMT(ObjCEncodeExpr , Expr)
+STMT(ObjCMessageExpr , Expr)
+STMT(ObjCSelectorExpr , Expr)
+STMT(ObjCProtocolExpr , Expr)
+STMT(ObjCIvarRefExpr , Expr)
+STMT(ObjCPropertyRefExpr , Expr)
+STMT(ObjCSuperExpr , Expr)
// Clang Extensions.
-STMT(90, OverloadExpr , Expr)
-STMT(91, ShuffleVectorExpr , Expr)
-STMT(92, BlockExpr , Expr)
-STMT(93, BlockDeclRefExpr , Expr)
+STMT(OverloadExpr , Expr)
+STMT(ShuffleVectorExpr , Expr)
+STMT(BlockExpr , Expr)
+STMT(BlockDeclRefExpr , Expr)
-LAST_EXPR(93)
+LAST_EXPR(BlockDeclRefExpr)
#undef STMT
#undef FIRST_STMT
Modified: cfe/trunk/include/clang/AST/StmtVisitor.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/StmtVisitor.h?rev=59300&r1=59299&r2=59300&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/StmtVisitor.h (original)
+++ cfe/trunk/include/clang/AST/StmtVisitor.h Fri Nov 14 06:46:07 2008
@@ -101,7 +101,7 @@
// Top switch stmt: dispatch to VisitFooStmt for each FooStmt.
switch (S->getStmtClass()) {
default: assert(0 && "Unknown stmt kind!");
-#define STMT(N, CLASS, PARENT) \
+#define STMT(CLASS, PARENT) \
case Stmt::CLASS ## Class: DISPATCH(CLASS, CLASS);
#include "clang/AST/StmtNodes.def"
}
@@ -109,7 +109,7 @@
// If the implementation chooses not to implement a certain visit method, fall
// back on VisitExpr or whatever else is the superclass.
-#define STMT(N, CLASS, PARENT) \
+#define STMT(CLASS, PARENT) \
RetTy Visit ## CLASS(CLASS *S) { DISPATCH(PARENT, PARENT); }
#include "clang/AST/StmtNodes.def"
Modified: cfe/trunk/lib/AST/Stmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Stmt.cpp?rev=59300&r1=59299&r2=59300&view=diff
==============================================================================
--- cfe/trunk/lib/AST/Stmt.cpp (original)
+++ cfe/trunk/lib/AST/Stmt.cpp Fri Nov 14 06:46:07 2008
@@ -29,9 +29,9 @@
// Intialize the table on the first use.
Initialized = true;
-#define STMT(N, CLASS, PARENT) \
- StmtClassInfo[N].Name = #CLASS; \
- StmtClassInfo[N].Size = sizeof(CLASS);
+#define STMT(CLASS, PARENT) \
+ StmtClassInfo[(unsigned)Stmt::CLASS##Class].Name = #CLASS; \
+ StmtClassInfo[(unsigned)Stmt::CLASS##Class].Size = sizeof(CLASS);
#include "clang/AST/StmtNodes.def"
return StmtClassInfo[E];
Modified: cfe/trunk/lib/AST/StmtPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/StmtPrinter.cpp?rev=59300&r1=59299&r2=59300&view=diff
==============================================================================
--- cfe/trunk/lib/AST/StmtPrinter.cpp (original)
+++ cfe/trunk/lib/AST/StmtPrinter.cpp Fri Nov 14 06:46:07 2008
@@ -76,7 +76,7 @@
}
void VisitStmt(Stmt *Node);
-#define STMT(N, CLASS, PARENT) \
+#define STMT(CLASS, PARENT) \
void Visit##CLASS(CLASS *Node);
#include "clang/AST/StmtNodes.def"
};
More information about the cfe-commits
mailing list