[Bug c++/5310] Weird warnings about using (int)NULL
gdr at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Wed Nov 30 19:15:00 GMT 2005
------- Comment #3 from gdr at gcc dot gnu dot org 2005-11-30 19:15 -------
(In reply to comment #2)
> On the mainline (20030526), I only get one warning:
>
> pr5310.cc: In function `void bar()':
> pr5310.cc:9: warning: passing NULL used for non-pointer argument 1 of `void
> foo(int)'
>
> Here is the proprocessed form of the testcase:
> void foo (int);
> void foo (long);
>
> void bar()
> {
> foo ((int)__null);
> foo ((long)__null);
> }
The issue here has several roots:
(1) cp/call.c:convert_like_real() should warn only if !c_cast_p;
(2) convert_like_real() was called (as convert_like_with_context)
with c_cast_p set to false; which is one source of the bug
(3) since __null is of type int, the cast to int was a no-op, and
since the C++ front-end currently does not have a high level
representation of the program (e.g. lowering is done as part of
parsing), it does not have ways to make the difference.
Patches to correct any point above will be a progress.
--
gdr at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |gdr at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=5310
More information about the Gcc-bugs
mailing list