maybe bug regarding intptr_t and NULL
Cedric Roux
croux@cadence.com
Thu Aug 23 09:38:00 GMT 2007
Hi GCC people,
the following code gives me a warning when compiling
(on an IA32 host).
----
~/c/tests 37> cat intptr.cpp
#include "stdint.h"
#include "stdlib.h"
int main(void)
{
intptr_t t = 0;
if (t != ((intptr_t)NULL)) t = 1;
return 0;
}
lnxsodt25 ~/c/tests 38> g++ --version
g++ (GCC) 4.2.1
lnxsodt25 ~/c/tests 39> g++ -c intptr.cpp
intptr.cpp: In function 'int main()':
intptr.cpp:7: warning: NULL used in arithmetic
----
If I use uintptr_t, gcc gives no warning.
After reading cp/typeck.c around build_binary_op
and knowing that NULL is in fact null_node
with type integer (integer_type_node I think),
I guess that the cast is removed in some way
so that build_binary_op produces a warning
believing I pass NULL as is, without the cast.
Of course I could use uintptr_t and everything
would be fine, but it's not my own code.
Or I might also misunderstand something
in there in which case I apologize for this
email.
Take care,
and keep on the good work on this great compiler.
Cedric.
More information about the Gcc-bugs
mailing list