[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