[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