Re: GCC 3.3.1, new warnings with <limits>

From: David Leimbach (leimy2k_at_mac.com)
Date: 07/13/03

  • Next message: John Reynolds: "build error building cvs doc?"
    Date: Sat, 12 Jul 2003 22:27:24 -0500
    To: Craig Rodrigues <rodrigc@crodrigues.org>
    
    

    > 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
    > rodrigc@crodrigues.org

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


  • Next message: John Reynolds: "build error building cvs doc?"

    Relevant Pages