This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
RE: c/8828: gcc reports some code is unreachable when it is not
- From: "Rolf Campbell" <rcampbell at tropicnetworks dot com>
- To: "Christian Ehrhardt" <ehrhardt at mathematik dot uni-ulm dot de>,<reichelt at igpm dot rwth-aachen dot de>,<gcc-bugs at gcc dot gnu dot org>,<gcc-prs at gcc dot gnu dot org>,<nobody at gcc dot gnu dot org>,<gcc-gnats at gcc dot gnu dot org>
- Date: Fri, 6 Dec 2002 11:22:32 -0500
- Subject: RE: c/8828: gcc reports some code is unreachable when it is not
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]
> Sent: Friday, December 06, 2002 11:14 AM
> To: reichelt@igpm.rwth-aachen.de; gcc-bugs@gcc.gnu.org;
> gcc-prs@gcc.gnu.org; nobody@gcc.gnu.org; Rolf Campbell;
> gcc-gnats@gcc.gnu.org
> Subject: Re: c/8828: gcc reports some code is unreachable
> when it is not
>
>
> On Fri, Dec 06, 2002 at 09:29:12AM -0000,
> reichelt@igpm.rwth-aachen.de wrote:
> > An even shorter example is the following:
> >
> > -----------------snip here----------------
> > void foo(int i)
> > {
> > switch(i) {
> > case 0:
> > break;
> > case 1:
> > break;
> > }
> > }
> > -----------------snip here----------------
> >
> > Compiling this with gcc 3.2.1 or mainline I get the message
> >
> > PR8828.c: In function `foo':
> > PR8828.c:7: warning: will never be executed
> > PR8828.c:5: warning: will never be executed
>
> Looks like warnings removed by the optimizer. In this case
> the optimizer will just remove both of the empty case labels
> and warn that the instructions therein (the breaks) aren't
> executed. In the original example the break is probably
> folded into the for loop an then optimized away. I even
> managed to get warnings for code like
> this:
>
> switch (i) {
> case 0:
> x++;
> break;
> case 1:
> x++;
> break;
> }
>
> where the optimizer tells me that it removed one of the x++
> instructions probably because the two case labels were
> combined. This is probably not a bug, the documentation
> doesn't explicitly mention optimizations but it does mention
> that inlined function may produce warning for code that is
> unreachable only in a single inlined copy. This case looks
> rather similar.
>
> regards Christian
>
> --
> THAT'S ALL FOLKS!
>