Hi,

I think that this is a FreeBSD issue.  I compiled
the same file under Linux, with a GCC 3.3.1 checked out on 7/11
and did not encounter this warning.


I think you hit it on the head.


I looked in the source code of gcc and found this:
/usr/src/contrib/gcc/c-common.c

2597 case LT_EXPR:
2598 if (extra_warnings && !in_system_header
2599 && ! (TREE_CODE (primop0) == INTEGER_CST
2600 && ! TREE_OVERFLOW (convert (c_common_signed_typ
e (type),
2601 primop0))))
2602 warning ("comparison of unsigned expression < 0 is alway
s false");
2603 value = boolean_false_node;
2604 break;





I am guessing that the C preprocessor does not think that it is in a system header, and thus prints out the warning.

If I take the following preprocessed source (test.ii) and compile it
under FreeBSD with g++ -W -c test.ii:

======================================================================= ========
# 1 "test.cc"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "test.cc"
# 1 "/usr/include/c++/3.3/iostream" 1 3
# 43 "/usr/include/c++/3.3/iostream" 3


static const int digits = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0));

======================================================================= ========

I get:

In file included from test.cc:1:
/usr/include/c++/3.3/iostream:44: warning: comparison of unsigned expression <
0 is always false






If I compile the same file on my Linux box, with a gcc checked out
from the FSF CVS repository (gcc version 3.3.1 20030711 (prerelease)),
I do not get the warning.

I am not an expert on the GNU C preprocessor format, but I changed
two of the lines in the above file to:

# 1 "/usr/include/c++/3.3/iostream" 1
# 43 "/usr/include/c++/3.3/iostream"

and when I recompiled it under Linux, I also got the warning:

In file included from test.cc:1:
/usr/include/c++/3.3/iostream:44: warning: comparison of unsigned expression <
0 is always false




Any GCC/FreeBSD expert care to comment? ;)

--
Craig Rodrigues
http://crodrigues.org
[EMAIL PROTECTED]

_______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to