From owner-freebsd-questions@FreeBSD.ORG Tue Jun 10 02:58:35 2003 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6D01437B401 for ; Tue, 10 Jun 2003 02:58:35 -0700 (PDT) Received: from smtp0.adl1.internode.on.net (smtp0.adl1.internode.on.net [203.16.214.194]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5BD9343FD7 for ; Tue, 10 Jun 2003 02:58:34 -0700 (PDT) (envelope-from malcolm.kay@internode.on.net) Received: from beta.home (ppp2159.sa.padsl.internode.on.net [150.101.28.110]) h5A9wVCT018079; Tue, 10 Jun 2003 19:28:31 +0930 (CST) Content-Type: text/plain; charset="iso-8859-1" From: Malcolm Kay Organization: At home To: Sean Chittenden Date: Tue, 10 Jun 2003 19:28:30 +0930 User-Agent: KMail/1.4.3 References: <20030609230324.GL65470@perrin.int.nxad.com> <200306101825.33674.malcolm.kay@internode.on.net> <20030610092129.GP65470@perrin.int.nxad.com> In-Reply-To: <20030610092129.GP65470@perrin.int.nxad.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-Id: <200306101928.30765.malcolm.kay@internode.on.net> cc: questions@freebsd.org Subject: Re: gcc me harder: -Wconversion bug? X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jun 2003 09:58:35 -0000 On Tue, 10 Jun 2003 18:51, Sean Chittenden wrote: > > It seems to me that this is doing exactly what is claimed for > > -Wconversion. To quote from the gcc man page: > > -Wconversion > > Warn if a prototype causes a type conversion that > > is different from what would happen to the same ar- > > gument in the absence of a prototype. ... > > > > Now in the absence of a prototype for f() the argument true would be > > promoted from char/bool to int before being passed to the > > function. With the prototype in scope it is not promoted. Different > > argument widths so warning delivered. > > % cpp test.c > # 1 "test7.c" > # 1 "" > # 1 "" > # 1 "test7.c" > # 1 "test7.h" 1 > # 13 "test7.h" > void f(char b); > # 2 "test7.c" 2 > > int > main(int argc, char *argv[]) { > f((((char)1))); > > return(0); > } > > void > f(char b) { > } > > Am I missing something that says that there isn't the prototype of the > same width? Last time I checked my vision, f(char b) was the same as > f(char b)... :-/ or am I missing something? I believe that gcc's > promoting the char to an int or to some other non-1 byte width data > type... but I'm not seeing how, where, or why. -sc According to the man page we are comaring what does happen with the prototype in scope with what would have happened if the prototype=20 was not there. You are aware theat the rules of C require that in the absence of a proto= type actual integer calling arguments of less width than int (usually char and= =20 short) must be promoted to int before the call? Malcolm