[demangler] Use an AST to represent demangled names
authorErik Pilkington <erik.pilkington@gmail.com>
Fri, 28 Jul 2017 00:43:49 +0000 (00:43 +0000)
committerErik Pilkington <erik.pilkington@gmail.com>
Fri, 28 Jul 2017 00:43:49 +0000 (00:43 +0000)
commit94d2ac716091fd049a09d54d3904a19076c1ae29
tree0945dc0a017d783f958007a9e62485cb654339a6
parentfea50c286a19bf8e2212001fc022089e342b10ea
[demangler] Use an AST to represent demangled names

The demangler now demangles by producing an AST, then traverses that
AST to produce a demangled name. This is done for performance reasons,
now the demangler doesn't manuiplate std::strings, which hurt
performance and caused string operations to be inlined into the
parser, leading to large code size and stack usage.

Differential revision: https://reviews.llvm.org/D35159

llvm-svn: 309340
libcxxabi/src/cxa_demangle.cpp
libcxxabi/test/test_demangle.pass.cpp