[PATCH] D45131: [AST] Refactor UnaryTransformType into TransformTraitType supporting non-unary transforms

Eric Fiselier via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 5 15:15:57 PDT 2018


EricWF added inline comments.


================
Comment at: lib/AST/ItaniumMangle.cpp:3250-3251
 
-  mangleType(T->getBaseType());
+  for (auto Ty : T->getArgs())
+    mangleType(Ty);
 }
----------------
EricWF wrote:
> rsmith wrote:
> > We need manglings to be self-delimiting, and we can't tell where the end of the argument list is with this mangling approach. :(
> > 
> > (Eg, `f(__raw_invocation_type(T1, T2, T3))` and `f(__raw_invocation_type(T1, T2), T3)` would mangle the same with this mangling.)
> > 
> > Maybe drop an `E` on the end? (Or maybe do that only for traits that don't require exactly one argument, but that would create pain for demanglers....)
> Makes sense. Thanks for the explanation. I'll go ahead and drop and E on the end.
> 
> However, will this cause ABI issues? Either with existing code or with GCC? If so, perhaps we should maintain the current mangling for `__underlying_type`.
To answer my own question, GCC doesn't mangle `__underlying_type` yet. And I doubt that people are currently depending on the dependent mangling of `__underlying_type`. Perhaps I'm wrong about that last assumption though.


https://reviews.llvm.org/D45131





More information about the cfe-commits mailing list