This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug optimization/14378] New: generates "will never be executed" warnings for code that will be executed
- From: "will at dot dot phys dot unm dot edu" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 2 Mar 2004 05:26:44 -0000
- Subject: [Bug optimization/14378] New: generates "will never be executed" warnings for code that will be executed
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
gcc -v -save-temps -O -Wunreachable-code -c foo.c
gives:
==========
Reading specs from /usr/local/bin/../lib/gcc-lib/i386-redhat-linux/3.3.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--disable-checking --with-system-zlib --enable-__cxa_atexit --host=i386-redhat-linux
Thread model: posix
gcc version 3.3.2 20031022 (Red Hat Linux 3.3.2-1)
/usr/local/bin/../lib/gcc-lib/i386-redhat-linux/3.3.2/cc1 -E -quiet -v -iprefix
/usr/local/bin/../lib/gcc-lib/i386-redhat-linux/3.3.2/ -D__GNUC__=3
-D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=2 foo.c -Wunreachable-code -O foo.i
ignoring nonexistent directory "/usr/local/i386-redhat-linux/include"
ignoring nonexistent directory "/usr/i386-redhat-linux/include"
ignoring duplicate directory "/usr/lib/gcc-lib/i386-redhat-linux/3.3.2/include"
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/lib/gcc-lib/i386-redhat-linux/3.3.2/include
/usr/local/include
End of search list.
/usr/local/bin/../lib/gcc-lib/i386-redhat-linux/3.3.2/cc1 -fpreprocessed foo.i
-quiet -dumpbase foo.c -auxbase foo -O -Wunreachable-code -version -o foo.s
GNU C version 3.3.2 20031022 (Red Hat Linux 3.3.2-1) (i386-redhat-linux)
compiled by GNU C version 3.3.2 20031022 (Red Hat Linux 3.3.2-1).
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
foo.c: In function `main':
foo.c:32: warning: will never be executed
foo.c:28: warning: will never be executed
foo.c:24: warning: will never be executed
foo.c:20: warning: will never be executed
foo.c:16: warning: will never be executed
foo.c:16: warning: will never be executed
foo.c:16: warning: will never be executed
foo.c:16: warning: will never be executed
foo.c:16: warning: will never be executed
as -V -Qy -o foo.o foo.s
GNU assembler version 2.14.90.0.6 (i386-redhat-linux) using BFD version
2.14.90.0.6 20030820
==========
which contains several "warning: will never be executed" lines
foo.c contains:
==========
extern int printf(const char *format, ...);
void f(void);
void g(void);
int h(int);
int main(void) {
int i;
for(i=0;i<10;i++) {
switch(h(i)) {
case 0:
f();
g();
break;
case 1:
f();
g();
break;
case 2:
f();
g();
break;
case 3:
f();
g();
break;
case 4:
f();
g();
break;
case 5:
f();
g();
break;
}
}
return 0;
}
void f(void) {
printf("f\n");
}
void g(void) {
printf("g\n");
}
int h(int i) {
printf("h(%d)\n",i);
return i%6;
}
==========
this error also happens on gcc 3.2.3
--
Summary: generates "will never be executed" warnings for code
that will be executed
Product: gcc
Version: 3.3.2
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: will at dot dot phys dot unm dot edu
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: i386-redhat-linux
GCC host triplet: i386-redhat-linux
GCC target triplet: i386-redhat-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14378