workarounf for missing uintptr_t on PGI?

Hi, the PGI compiler (pgi- 11.9) seams not to support intptr_t and uninptr_t. Does boost provide a workaround I'm not aware of? Is the PGI compiler relevant (== does it matter if unit-test fails for PGI but pass GCC, MSVC, INTEL)? Oliver -- Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de

On Thu, Mar 08, 2012 at 08:22:14AM +0100, Oliver Kowalke wrote:
Hi, the PGI compiler (pgi- 11.9) seams not to support intptr_t and uninptr_t. Does boost provide a workaround I'm not aware of?
I cannot reproduce this on 11.8 or 12.1, the following program compiles cleanly with pgCC: #include <stdint.h> int main() { uintptr_t up = 0; intptr_t ip = 0; }
Is the PGI compiler relevant (== does it matter if unit-test fails for PGI but pass GCC, MSVC, INTEL)?
C++03 does not define intptr_t or uintptr_t at all. C++11 has them optional in <cstdint>. C99 has them optional. Relying on their presence seems a bit shaky. -- Lars Viklund | zao@acc.umu.se

On Thu, Mar 08, 2012 at 08:22:14AM +0100, Oliver Kowalke wrote:
Hi, the PGI compiler (pgi- 11.9) seams not to support intptr_t and uninptr_t. Does boost provide a workaround I'm not aware of?
I cannot reproduce this on 11.8 or 12.1, the following program compiles cleanly with pgCC:
#include <stdint.h>
int main() { uintptr_t up = 0; intptr_t ip = 0; }
the file reporting the error includes <boost/cstdint.hpp> which includes <stdint.h> - ?
Is the PGI compiler relevant (== does it matter if unit-test fails for PGI but pass GCC, MSVC, INTEL)?
C++03 does not define intptr_t or uintptr_t at all. C++11 has them optional in <cstdint>. C99 has them optional.
Relying on their presence seems a bit shaky.
a compuation requires an integer large enought to contain an address - inptr_t/uinptr_t a the choice for this purpose
-- Lars Viklund | zao@acc.umu.se
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- NEU: FreePhone 3-fach-Flat mit kostenlosem Smartphone! Jetzt informieren: http://mobile.1und1.de/?ac=OM.PW.PW003K20328T7073a

On Thu, Mar 08, 2012 at 11:08:51AM +0100, Oliver Kowalke wrote:
the file reporting the error includes <boost/cstdint.hpp> which includes <stdint.h> - ?
You have yet to mention what you're trying to compile, nor have provided any testcase that demonstrates the problem.
Relying on their presence seems a bit shaky.
a compuation requires an integer large enought to contain an address - inptr_t/uinptr_t a the choice for this purpose
In any way, it seems like boost/config/compiler/pgi.hpp does not define BOOST_HAS_STDINT_H, and thus, boost/cstdint.hpp doesn't try to include stdint.h. Assuming that this is the place to define it, file a bug against Boost.Config. Note that the documentation for boost/cstdint.hpp does _not_ mention uintptr_t or intptr_t at all, and thus, relying on it to pull them in by proxy is a fault. It doesn't guarantee any inclusion of a stdint.h either, as that's impossible to guarantee as not all platforms have one. If you think that it's boost/cstdint.hpp:s responsibility to define such a type, file a bug against it. -- Lars Viklund | zao@acc.umu.se

On Thu, Mar 08, 2012 at 11:08:51AM +0100, Oliver Kowalke wrote:
the file reporting the error includes <boost/cstdint.hpp> which includes <stdint.h> - ?
You have yet to mention what you're trying to compile, nor have provided any testcase that demonstrates the problem.
I'm referring to: http://www.boost.org/development/tests/trunk/developer/output/Sandia-pgi-11-...
Relying on their presence seems a bit shaky.
a compuation requires an integer large enought to contain an address - inptr_t/uinptr_t a the choice for this purpose
In any way, it seems like boost/config/compiler/pgi.hpp does not define BOOST_HAS_STDINT_H, and thus, boost/cstdint.hpp doesn't try to include stdint.h. Assuming that this is the place to define it, file a bug against Boost.Config.
Note that the documentation for boost/cstdint.hpp does _not_ mention uintptr_t or intptr_t at all, and thus, relying on it to pull them in by proxy is a fault. It doesn't guarantee any inclusion of a stdint.h either, as that's impossible to guarantee as not all platforms have one.
If you think that it's boost/cstdint.hpp:s responsibility to define such a type, file a bug against it.
maybe it is its the responsibility of cstdint or which place would you preferre instead? some other boost libs define their own uintptr_t etc. - boost should concentrate such typedefs in on boost lib. -- NEU: FreePhone 3-fach-Flat mit kostenlosem Smartphone! Jetzt informieren: http://mobile.1und1.de/?ac=OM.PW.PW003K20328T7073a
participants (2)
-
Lars Viklund
-
Oliver Kowalke