I have a small C++ code segment that produces an invalid warning about unreachable code. It might be similar to #19354 but that bug is reported fixed in 4.0.0, and indeed the example there works in my build.
homerun[/home/etalvola]<184> g++ -v -save-temps -m64 -mcpu=v9 -O0 -Wunreachable- code gstest.cpp Using built-in specs. Target: sparc-sun-solaris2.8 Configured with: ../configure --prefix=/usr/local/geneva/packages/gcc Thread model: posix gcc version 4.0.0 /usr/local-sol/geneva/packages/gcc/bin/../libexec/gcc/sparc-sun- solaris2.8/4.0.0/cc1plus -E -quiet -v -iprefix /usr/local- sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun-solaris2.8/4.0.0/ - D__arch64__ -D__sparcv9 gstest.cpp -mptr64 -mstack-bias -mno-v8plus -m64 - mcpu=v9 -Wunreachable-code -O0 -fpch-preprocess -o gstest.ii ignoring nonexistent directory "/usr/local- sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun- solaris2.8/4.0.0/../../../../sparc-sun-solaris2.8/include" ignoring duplicate directory "/usr/local/geneva/packages/gcc/lib/gcc/sparc-sun- solaris2.8/4.0.0/../../../../include/c++/4.0.0" ignoring duplicate directory "/usr/local/geneva/packages/gcc/lib/gcc/sparc-sun- solaris2.8/4.0.0/../../../../include/c++/4.0.0/sparc-sun-solaris2.8" ignoring duplicate directory "/usr/local/geneva/packages/gcc/lib/gcc/sparc-sun- solaris2.8/4.0.0/../../../../include/c++/4.0.0/backward" ignoring duplicate directory "/usr/local/geneva/packages/gcc/lib/gcc/sparc-sun- solaris2.8/4.0.0/include" ignoring nonexistent directory "/usr/local/geneva/packages/gcc/lib/gcc/sparc- sun-solaris2.8/4.0.0/../../../../sparc-sun-solaris2.8/include" #include "..." search starts here: #include <...> search starts here: /usr/local-sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun- solaris2.8/4.0.0/../../../../include/c++/4.0.0 /usr/local-sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun- solaris2.8/4.0.0/../../../../include/c++/4.0.0/sparc-sun-solaris2.8 /usr/local-sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun- solaris2.8/4.0.0/../../../../include/c++/4.0.0/backward /usr/local-sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun- solaris2.8/4.0.0/include /usr/local/include /usr/local/geneva/packages/gcc/include /usr/include End of search list. /usr/local-sol/geneva/packages/gcc/bin/../libexec/gcc/sparc-sun- solaris2.8/4.0.0/cc1plus -fpreprocessed gstest.ii -mptr64 -mstack-bias -mno- v8plus -quiet -dumpbase gstest.cpp -m64 -mcpu=v9 -auxbase gstest -O0 - Wunreachable-code -version -o gstest.s GNU C++ version 4.0.0 (sparc-sun-solaris2.8) compiled by GNU C version 3.3.3. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 gstest.cpp: In constructor 'testStringBase::testStringBase()': gstest.cpp:15: warning: will never be executed /usr/ccs/bin/as -V -Qy -s -xarch=v9 -o gstest.o gstest.s /usr/ccs/bin/as: Sun WorkShop 6 99/08/18 /usr/local-sol/geneva/packages/gcc/bin/../libexec/gcc/sparc-sun- solaris2.8/4.0.0/collect2 -V -Y P,/usr/lib/sparcv9 -Qy /usr/local- sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun- solaris2.8/4.0.0/sparcv9/crt1.o /usr/local- sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun- solaris2.8/4.0.0/sparcv9/crti.o /usr/ccs/lib/sparcv9/values-Xa.o /usr/local- sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun- solaris2.8/4.0.0/sparcv9/crtbegin.o -L/usr/local- sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun-solaris2.8/4.0.0/sparcv9 - L/usr/local-sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun-solaris2.8/4.0.0 - L/usr/local-sol/geneva/packages/gcc/bin/../lib/gcc - L/usr/local/geneva/packages/gcc/lib/gcc/sparc-sun-solaris2.8/4.0.0/sparcv9 - L/usr/local/geneva/packages/gcc/lib/gcc/sparc-sun-solaris2.8/4.0.0 - L/usr/ccs/bin/sparcv9 -L/usr/ccs/bin -L/usr/ccs/lib/sparcv9 -L/usr/ccs/lib - L/usr/local-sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun- solaris2.8/4.0.0/../../../sparcv9 -L/usr/local- sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun-solaris2.8/4.0.0/../../.. - L/usr/local/geneva/packages/gcc/lib/gcc/sparc-sun- solaris2.8/4.0.0/../../../sparcv9 - L/usr/local/geneva/packages/gcc/lib/gcc/sparc-sun-solaris2.8/4.0.0/../../.. - L/lib/sparcv9 -L/usr/lib/sparcv9 gstest.o -lstdc++ -lm -lgcc_s -lgcc -lc - lgcc_s -lgcc -lc /usr/local-sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun- solaris2.8/4.0.0/sparcv9/crtend.o /usr/local- sol/geneva/packages/gcc/bin/../lib/gcc/sparc-sun-solaris2.8/4.0.0/sparcv9/crtn.o ld: Software Generation Utilities - Solaris Link Editors: 5.8-1.273 homerun[/home/etalvola]<185> cat gstest.cpp // #include <stdio.h> class testStringBase { public: char *stringPtr; }; class testString : public testStringBase { public: testString(); }; testString::testString() { stringPtr = (char *) 9; } int main(int argc, char **argv) { testString s; // printf("s.stringPtr is %ld\n", (unsigned long) s.stringPtr); } If the lines are uncommented - the pointer is set to '9' so clearly the code is being executed. -- Summary: -Wunreachable-code produces spurious warnings for constructor Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: talvola at yahoo dot com CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: sparc-sun-solaris2.8 GCC host triplet: sparc-sun-solaris2.8 GCC target triplet: sparc-sun-solaris2.8 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21228