Incorrect code generation on Solaris

Jon Steinhart jon@fourwinds.com
Tue May 15 09:36:00 GMT 2001


The following source appears to generate incorrect code as the resulting
executable crashes in the switch statement.  I have done a bit of messing
around with it.  Removing the while makes it work.  Changing the number of
cases in the switch makes it work.

This is on a Sun Ultra-60 running Solaris 2.6

> SunOS darkstar.fourwinds.com 5.6 Generic_105181-19 sun4u sparc SUNW,Ultra-60

 Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/specs
 gcc version 2.95.3 20010315 (release)
  /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/cpp0 -lang-c -v -D__GNUC__=2 -D__GNUC_MINOR__=95 -Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sparc -D__sun -D__unix -Asystem(unix) -Asystem(svr4) -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) b.c b.i
 GNU CPP version 2.95.3 20010315 (release) (sparc)
 #include "..." search starts here:
 #include <...> search starts here:
  /usr/local/include
  /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/../../../../sparc-sun-solaris2.6/include
  /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/include
  /usr/include
 End of search list.
 The following default directories have been omitted from the search path:
  /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/../../../../include/g++-3
 End of omitted list.
  /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/cc1 b.i -quiet -dumpbase b.c -version -o b.s
 GNU C version 2.95.3 20010315 (release) (sparc-sun-solaris2.6) compiled by CC.
  /usr/local/sparc-sun-solaris2.6/bin/as -V -Qy -s -o b.o b.s
 GNU assembler version 2.9.1 (sparc-sun-solaris2.6), using BFD version 2.9.1
  /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/collect2 -V -Y P,/usr/ccs/lib:/usr/lib -Qy /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/crt1.o /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/crti.o /usr/ccs/lib/values-Xa.o /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/crtbegin.o -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3 -L/usr/local/sparc-sun-solaris2.6/lib -L/usr/ccs/bin -L/usr/ccs/lib -L/usr/local/lib b.o -lgcc -lc -lgcc /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/crtend.o /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/crtn.o
 GNU ld version 2.9.1 (with BFD 2.9.1)
   Supported emulations:
    elf32_sparc
#text/x-c-file; name="b.c"; x-unix-mode=0600  [ c program text ] /export/home/jon/cb/protocol/poem/src/manufacturing/board/b.c
#text/x-c-file; name="b.i"; x-unix-mode=0600  [ c program text ] /export/home/jon/cb/protocol/poem/src/manufacturing/board/b.i
#text/x-c-file; name="b.o"; x-unix-mode=0600  [ ELF 32-bit MSB relocatable SPARC Version 1 ] /export/home/jon/cb/protocol/poem/src/manufacturing/board/b.o
#text/x-c-file; name="b.s"; x-unix-mode=0600  [ assembler program text ] /export/home/jon/cb/protocol/poem/src/manufacturing/board/b.s
#text/x-c-file; name="a.out"; x-unix-mode=0600  [ ELF 32-bit MSB executable SPARC Version 1, dynamically linked, not stripped ] /export/home/jon/cb/protocol/poem/src/manufacturing/board/a.out



More information about the Gcc-bugs mailing list