From owner-freebsd-current@FreeBSD.ORG Sat Jul 12 20:27:30 2003 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 628B137B404 for ; Sat, 12 Jul 2003 20:27:30 -0700 (PDT) Received: from smtpout.mac.com (A17-250-248-97.apple.com [17.250.248.97]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8AC6D43FCB for ; Sat, 12 Jul 2003 20:27:29 -0700 (PDT) (envelope-from leimy2k@mac.com) Received: from mac.com (smtpin07-en2 [10.13.10.152]) by smtpout.mac.com (Xserve/MantshX 2.0) with ESMTP id h6D3RRgi024561; Sat, 12 Jul 2003 20:27:27 -0700 (PDT) Received: from mac.com (adsl-78-178-166.jan.bellsouth.net [216.78.178.166]) (authenticated bits=0) by mac.com (Xserve/8.12.9/MantshX 2.0) with ESMTP id h6D3ROIK021849; Sat, 12 Jul 2003 20:27:25 -0700 (PDT) In-Reply-To: <20030713031312.GA89014@crodrigues.org> References: <20030712155333.GA79322@crodrigues.org> <20030713031312.GA89014@crodrigues.org> Mime-Version: 1.0 (Apple Message framework v578) Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-Id: Content-Transfer-Encoding: 7bit From: David Leimbach Date: Sat, 12 Jul 2003 22:27:24 -0500 To: Craig Rodrigues X-Mailer: Apple Mail (2.578) cc: freebsd-current@freebsd.org Subject: Re: GCC 3.3.1, new warnings with X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Jul 2003 03:27:30 -0000 > 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 "" > # 1 "" > # 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