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

Duncan P. N. Exon Smith via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 22 11:08:44 PST 2018


dexonsmith requested changes to this revision.
dexonsmith added a comment.
This revision now requires changes to proceed.

Thanks for working on this!



================
Comment at: src/cxa_demangle.cpp:260-261
+
+#if 0
+  void dump() const {
+    char *Buffer = static_cast<char*>(std::malloc(1024));
----------------
Why is this behind `#if 0`?  Should you just use something like `LLVM_DUMP_METHOD`?


================
Comment at: src/cxa_demangle.cpp:604
+
+  void printLeft(OutputStream &S) const override {
+    Pointee->printLeft(S);
----------------
I'd rather style changes like this were separated out into NFC commits (pre or post), since they make it hard to see what actually changed.


================
Comment at: src/cxa_demangle.cpp:1412-1414
+    setCachedRHSComponent(false);
+    setCachedArray(false);
+    setCachedFunction(false);
----------------
This seems like a super-common sequence in constructors of subclasses of `Node`.  Can you pull out a common subclass of `Node` (say, `CachingNode`)?


================
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
----------------
erik.pilkington wrote:
> I just generated this symbol by hand because I couldn't get clang to do it without crashing. Turns out I forgot the Dp!
Why was it crashing?  (Did you file a bug?)


Repository:
  rCXXA libc++abi

https://reviews.llvm.org/D41885





More information about the cfe-commits mailing list