summaryrefslogtreecommitdiff
path: root/include/clang/Basic/StmtNodes.td
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2011-02-09 08:16:59 +0000
committerJohn McCall <rjmccall@apple.com>2011-02-09 08:16:59 +0000
commit63c00d7f35fa060c0a446c9df3a4402d9c7757fe (patch)
tree64f68effbaf44e33590151cab184481c9313db35 /include/clang/Basic/StmtNodes.td
parentf0ed580ea5cdc171973c1ac259a9ee21badb80d8 (diff)
downloadclang-63c00d7f35fa060c0a446c9df3a4402d9c7757fe.tar.gz
clang-63c00d7f35fa060c0a446c9df3a4402d9c7757fe.tar.bz2
clang-63c00d7f35fa060c0a446c9df3a4402d9c7757fe.tar.xz
Remove vtables from the Stmt hierarchy; this was pretty easy as
there were only three virtual methods of any significance. The primary way to grab child iterators now is with Stmt::child_range children(); Stmt::const_child_range children() const; where a child_range is just a std::pair of iterators suitable for being llvm::tie'd to some locals. I've left the old child_begin() and child_end() accessors in place, but it's probably a substantial penalty to grab the iterators individually now, since the switch-based dispatch is kindof inherently slower than vtable dispatch. Grabbing them together is probably a slight win over the status quo, although of course we could've achieved that with vtables, too. I also reclassified SwitchCase (correctly) as an abstract Stmt class, which (as the first such class that wasn't an Expr subclass) required some fiddling in a few places. There are somewhat gross metaprogramming hooks in place to ensure that new statements/expressions continue to implement getSourceRange() and children(). I had to work around a recent clang bug; dgregor actually fixed it already, but I didn't want to introduce a selfhosting dependency on ToT. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125183 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Basic/StmtNodes.td')
-rw-r--r--include/clang/Basic/StmtNodes.td2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/clang/Basic/StmtNodes.td b/include/clang/Basic/StmtNodes.td
index 58db87b4c2..32dd6c1d69 100644
--- a/include/clang/Basic/StmtNodes.td
+++ b/include/clang/Basic/StmtNodes.td
@@ -23,7 +23,7 @@ def ContinueStmt : Stmt;
def BreakStmt : Stmt;
def ReturnStmt : Stmt;
def DeclStmt : Stmt;
-def SwitchCase : Stmt;
+def SwitchCase : Stmt<1>;
def CaseStmt : DStmt<SwitchCase>;
def DefaultStmt : DStmt<SwitchCase>;