rjmccall added a comment.

In https://reviews.llvm.org/D52674#1251439, @smeenai wrote:

> In https://reviews.llvm.org/D52674#1251419, @rjmccall wrote:
>
> > Conceptually this seems fine, but I think it would be good to stop and make 
> > sure we're using a consistent style when mangling extensions.  Currently it 
> > feels like every patch to add a Clang extension to the Microsoft mangling 
> > ends up inventing its own rules and crossing its fingers.
>
>
> That's a fair concern.
>
> I believe most of the Obj-C extensions have been handled by @compnerd, and 
> he's been following a pretty consistent scheme using the `__Objc` namespace, 
> e.g. `void f(id<P>) {}` is mangled as `void __cdecl f(struct 
> objc_object<struct __ObjC::Protocol<struct P> > *)`. I could certainly try to 
> implement something similar here, except as I mentioned, I'm pretty sure it 
> would require maintaining some state in the demangler for indicating whether 
> we were mangling for RTTI.


State wouldn't really be the right solution anyway, although it might work 
because of the structural restrictions on Objective-C types.  If you wanted to 
keep that same rule, I think you could probably just pass a (default=`false`) 
flag down to the `ObjCObjectPointerType`, `ObjCObjectType`, and 
`ObjCInterfaceType` cases.  (The pointee type of the former will always be one 
of the latter two.)


Repository:
  rC Clang

https://reviews.llvm.org/D52674



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

Reply via email to