rsmith added inline comments.

================
Comment at: clang/lib/AST/ItaniumMangle.cpp:3928
         break;
+      case UnaryTransformType::AddConst:
+        Out << "2ac";
----------------
cjdb wrote:
> aaron.ballman wrote:
> > Are these the suggested manglings from the Itanium mangling document, or 
> > something you invented yourself?
> > 
> > Should there be corresponding Microsoft manglings or are those already 
> > handled magically?
> > 
> > Also, test coverage for the manglings?
> I copied the mangling from D67052 and then inferred for what's missing over 
> there. I'll consult the Itanium mangling doc to ensure that they're correct. 
> How can I check the corresponding Microsoft manglings are handled?
This is mangling the trait as a vendor-specific type *qualifier*, so 
`__add_lvalue_reference(T)` will demangle as `alref T` instead. The 
underlying_type trait probably does this because it predates the Itanium ABI 
having a mangling form for a vendor-specific type *specifier* with arguments. 
Also, if we want this to demangle properly, we should follow the ABI 
specification's recommendations and use the actual source name of the builtin. 
So I think the ideal manglings (other than being kinda long, which probably 
doesn't matter given that these are unlikely to show up in actual mangled 
names) would be things like:

`u13__add_pointerI` ... inner type mangling ... `E`

It would probably be OK to change the mangling for `__enum_underlying_type` to 
this form too. I doubt that's made it into real mangled names in the wild, but 
if you want to add `-fclang-abi-compat` support for that, it wouldn't hurt.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116203/new/

https://reviews.llvm.org/D116203

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to