On Wed, 18 Jan 2017, Jakub Jelinek wrote: > On Wed, Jan 18, 2017 at 10:52:32PM +0300, Alexander Monakov wrote: > > Sorry for not noticing this earlier, but ... > > > > > +#ifdef __LP64__ > > > +typedef unsigned long long CUdeviceptr; > > > +#else > > > +typedef unsigned CUdeviceptr; > > > +#endif > > > > I think this #ifdef doesn't do the right thing on MinGW. > > Would it be fine to simplify it? In my code I have > > > > typedef uintptr_t CUdeviceptr; > > I think it depends on if we want to use CUdeviceptr typed variables > in printf like format strings, or C++ overloading (then the exact > type is significant and we should go for probably > > -#ifdef __LP64__ > +#if defined(__LP64__) || defined(_WIN64) > > (is that the right define for 64-bit MingW, right?).
Yes, _WIN64; libsanitizer has a similar test. Alternatively, I guess, #if __SIZEOF_POINTER__ == 8 > Otherwise, I think using uintptr_t is a problem, because we'd need to > #include <stdint.h> (the header only includes <stdlib.h>). Note that plugin-nvptx.c already includes <stdint.h>. But, anyway, I agree that there's value in defining the exact type via the #if. Alexander