From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3455 invoked by alias); 6 Dec 2002 16:26:02 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 3440 invoked by uid 71); 6 Dec 2002 16:26:01 -0000 Date: Fri, 06 Dec 2002 08:26:00 -0000 Message-ID: <20021206162601.3439.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: "Rolf Campbell" Subject: RE: c/8828: gcc reports some code is unreachable when it is not Reply-To: "Rolf Campbell" X-SW-Source: 2002-12/txt/msg00367.txt.bz2 List-Id: The following reply was made to PR c/8828; it has been noted by GNATS. From: "Rolf Campbell" To: "Christian Ehrhardt" , , , , , Cc: Subject: RE: c/8828: gcc reports some code is unreachable when it is not Date: Fri, 6 Dec 2002 11:22:32 -0500 But, this was compiled WITHOUT optimizations (gcc -Wunreachable-code -c a.c), so there should be no removal of superfluous code, or folding of break statements. -Rolf > -----Original Message----- > From: Christian Ehrhardt [mailto:ehrhardt@mathematik.uni-ulm.de]=20 > Sent: Friday, December 06, 2002 11:14 AM > To: reichelt@igpm.rwth-aachen.de; gcc-bugs@gcc.gnu.org;=20 > gcc-prs@gcc.gnu.org; nobody@gcc.gnu.org; Rolf Campbell;=20 > gcc-gnats@gcc.gnu.org > Subject: Re: c/8828: gcc reports some code is unreachable=20 > when it is not >=20 >=20 > On Fri, Dec 06, 2002 at 09:29:12AM -0000,=20 > reichelt@igpm.rwth-aachen.de wrote: > > An even shorter example is the following: > > =20 > > -----------------snip here---------------- > > void foo(int i) > > { > > switch(i) { > > case 0: > > break; > > case 1: > > break; > > } > > } > > -----------------snip here---------------- > > =20 > > Compiling this with gcc 3.2.1 or mainline I get the message > > =20 > > PR8828.c: In function `foo': > > PR8828.c:7: warning: will never be executed > > PR8828.c:5: warning: will never be executed >=20 > Looks like warnings removed by the optimizer. In this case=20 > the optimizer will just remove both of the empty case labels=20 > and warn that the instructions therein (the breaks) aren't=20 > executed. In the original example the break is probably=20 > folded into the for loop an then optimized away. I even=20 > managed to get warnings for code like > this: >=20 > switch (i) { > case 0: > x++; > break; > case 1: > x++; > break; > } >=20 > where the optimizer tells me that it removed one of the x++=20 > instructions probably because the two case labels were=20 > combined. This is probably not a bug, the documentation=20 > doesn't explicitly mention optimizations but it does mention=20 > that inlined function may produce warning for code that is=20 > unreachable only in a single inlined copy. This case looks=20 > rather similar. >=20 > regards Christian >=20 > --=20 > THAT'S ALL FOLKS! >=20