[PATCH] D41885: [libcxxabi][demangler] Improve handling of variadic templates

Erik Pilkington via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 9 15:27:09 PST 2018


erik.pilkington added inline comments.


================
Comment at: src/cxa_demangle.cpp:130
-  // Offset of position in buffer, used for building stream_string_view.
-  typedef unsigned StreamPosition;
-
----------------
This caching API is being removed because it is no longer valid: if a node has an unexpanded parameter pack it can generate multiple different strings.


================
Comment at: src/cxa_demangle.cpp:1599
-template <size_t Size>
-class SubstitutionTable {
-  // Substitutions hold the actual entries in the table, and PackIndices tells
----------------
This type was an optimization that flattened the previously 2d vector of substitutions (index * pack) into two 1d vectors. Now that packs are represented with a single Node*, we can replace it with a simple vector.


================
Comment at: test/test_demangle.pass.cpp:29607
     {"_ZTHN3fooE", "thread-local initialization routine for foo"},
-    {"_Z4algoIJiiiEEvZ1gEUlT_E_", "void algo<int, int, int>(g::'lambda'(int, int, int))"},
+    {"_Z4algoIJiiiEEvZ1gEUlDpT_E_", "void algo<int, int, int>(g::'lambda'(int, int, int))"},
     // attribute abi_tag
----------------
I just generated this symbol by hand because I couldn't get clang to do it without crashing. Turns out I forgot the Dp!


Repository:
  rCXXA libc++abi

https://reviews.llvm.org/D41885





More information about the cfe-commits mailing list