-O3 bug

Carlo Wood carlo@alinoe.com
Thu Jun 29 11:20:00 GMT 2000


The following code compiles fine with -O2 (and less)
but fails with -O3:

--------------------
#include <iostream>
#include <netinet/in.h>

void foo(unsigned short int s)
{
  cout << ntohs(s);
}

int main(void)
{
  foo(1);
  return 0;
}
--------------------

~/c++/libcw/src/gcc.bugs>g++-cvs -v -O3 -save-temps 20000629.cc
Reading specs from /usr/local/egcs/lib/gcc-lib/i686-pc-linux-gnu/2.96/specs
gcc version 2.96 20000402 (experimental)
 /usr/local/egcs/lib/gcc-lib/i686-pc-linux-gnu/2.96/cpp -lang-c++ -v -iprefix /usr/local/bin/../lib/gcc-lib/i686-pc-linux-gnu/2.96/ -D__GNUC_
_=2 -D__GNUG__=2 -D__GNUC_MINOR__=96 -D__GNUC_PATCHLEVEL__=0 -D__cplusplus -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix
 -D__linux -Asystem(posix) -D__EXCEPTIONS -D__OPTIMIZE__ -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__tune_pentiumpro__ 2000062
9.cc 20000629.ii
GNU CPP version 2.96 20000402 (experimental) (cpplib)
 (i386 Linux/ELF)
ignoring nonexistent directory `/usr/local/include/g++-3'
ignoring nonexistent directory `/usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.96/include'
ignoring nonexistent directory `/usr/local/i686-pc-linux-gnu/include'
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/egcs/include/g++-3
 /usr/local/egcs/include
 /usr/local/egcs/lib/gcc-lib/i686-pc-linux-gnu/2.96/include
 /usr/local/egcs/i686-pc-linux-gnu/include
 /usr/include
End of search list.
 /usr/local/egcs/lib/gcc-lib/i686-pc-linux-gnu/2.96/cc1plus 20000629.ii -quiet -dumpbase 20000629.cc -O3 -version -o 20000629.s
GNU C++ version 2.96 20000402 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 2.95.1 19990816/Linux (release).
/usr/local/egcs/include/g++-3/iostream.h: In function `int main ()':
/usr/local/egcs/include/g++-3/iostream.h:6: non-lvalue in assignment


>rpm -qf /usr/include/netinet/in.h
glibc-devel-2.1.2-11
>uname -a
Linux jolan 2.4.0-test1 #8 Thu Jun 29 01:38:20 CEST 2000 i686 unknown

I will attach a gzipped 20000629.ii.gz

You should be able to reproduce this with:

>gunzip 20000629.ii.gz
>/usr/local/egcs/lib/gcc-lib/i686-pc-linux-gnu/2.96/cc1plus 20000629.ii -quiet -dumpbase 20000629.cc -O3 -version -o 20000629.s
GNU C++ version 2.96 20000402 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 2.95.1 19990816/Linux (release).
/usr/local/egcs/include/g++-3/iostream.h: In function `int main ()':
/usr/local/egcs/include/g++-3/iostream.h:6: non-lvalue in assignment


Well, why am I telling you that :*) *blush*

Regards,

-- 
Carlo Wood <carlo@alinoe.com>                        -=- Jesus Loves you -=-
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 20000629.ii.gz
Type: application/x-gzip
Size: 9315 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-bugs/attachments/20000629/6adc57ee/attachment.bin>


More information about the Gcc-bugs mailing list