This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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!
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]