[cfe-commits] [PATCH] [VCPP] Add __ptr64 qualifier
Charles Davis
cdavis5x at gmail.com
Thu Nov 8 15:19:19 PST 2012
On Nov 8, 2012, at 2:33 PM, Aaron Ballman wrote:
> I finally had the chance to dig a bit deeper into this...
>
> I'm not certain we'd need to do anything aside from fix 64-bit
> mangling of pointers, truth be told. From looking at the
> documentation, it seems those type attributes are ignored on Windows.
> It doesn't appear that cl mangles them identically, regardless of
> target architecture (including ARM).
So which is it? Are they ignored or not? From the looks of it...
>
> Namely:
> // Code
> int * __ptr32 p32;
> int * __ptr64 p64;
>
> // Assembly
> PUBLIC ?p32@@3PAHA ; p32
> PUBLIC ?p64@@3PEAHEA ; p64
>
> Those mangled names are the same when I compile for x86, x64 and ARM,
> so empirical testing seems to agree with documented behavior from
> MSDN.
...I'd say not, because their mangled names are clearly different.
>
> Basically, I think we can parse and eat __ptr64 and __ptr32, and
> simply mangle as proper for the native architecture and be fine.
But if a program uses explicit `__ptr32` or `__ptr64`, we won't be fine because the names will get mangled wrong. This--this right here--is exactly why I held off on implementing this.
Chip
More information about the cfe-commits
mailing list