]> granicus.if.org Git - clang/commit
Devirtualize Attr and all subclasses.
authorBenjamin Kramer <benny.kra@googlemail.com>
Thu, 19 Mar 2015 16:06:49 +0000 (16:06 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Thu, 19 Mar 2015 16:06:49 +0000 (16:06 +0000)
commit5d00c12060d126231439ea6e8806967abdb952bf
tree61dcd8c1ee09bda1cb2882b396f1a04753593303
parentceb12ce16d85d8113eb5759dd996abf3de106fbc
Devirtualize Attr and all subclasses.

We know all subclasses in tblgen so just generate a giant switch for
the few virtual methods or turn them into a member variable using spare
bits. The giant jump tables aren't pretty but still much smaller than
a vtable for every attribute, shrinking Release+Asserts clang by ~400k.

Also halves the size of the Attr base class. No functional change
intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232726 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/Attr.h
lib/AST/AttrImpl.cpp
utils/TableGen/ClangAttrEmitter.cpp