This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug regression/32072] New: g++ -O3 fails on code that compiles with -O2
- From: "gcc at abeckmann dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 24 May 2007 16:23:27 -0000
- Subject: [Bug regression/32072] New: g++ -O3 fails on code that compiles with -O2
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
The bug is present in the 4.2.0 release and still in the 20070523 snapshot.
It was not present in 4.2-20070405-1 (from Debian experimental).
The error occured in a program using stxxl (http://stxxl.sourceforge.net) with
mcstl (http://algo2.iti.uni-karlsruhe.de/singler/mcstl/). Since mcstl requires
openmp, this can't be tested with g++ earlier than 4.2, although the problem
does not look openmp related and it should be possible to produce a test case
without mcstl/openmp dependency.
I minimized the testcase to the following:
#include <sstream>
void f () {
std::ostringstream str_;
str_ << "x";
throw std::ios_base::failure(str_.str());
}
and compiled it with
/data/gcc/snapshot-4.2/bin/g++ -W -Wall -I /home/andreas/work/mpi/mcstl/c++ -I
/home/andreas/work/mpi/mcstl/originals/_data_gcc_snapshot-4.2_include_c++_4.2.1
-c -O[23] t.cpp
(.../mcstl/originals/_data_gcc_snapshot-4.2_include_c++_4.2.1/original is a
symlink to /data/gcc/snapshot-4.2/include/c++/4.2.1 and required by mcstl to
find the original STL headers, since mcstl wraps the STL headers in order to
provide parallelism)
Compiling with -O2 succeeds, while -O3 fails with
/data/gcc/snapshot-4.2/lib/gcc/i686-pc-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/ostream_insert.h:
In function ?void std::__ostream_fill(std::basic_ostream<_CharT, _Traits>&,
std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>]?:
/data/gcc/snapshot-4.2/lib/gcc/i686-pc-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/ostream_insert.h:96:
instantiated from ?std::basic_ostream<_CharT, _Traits>&
std::__ostream_insert(std::basic_ostream<_CharT, _Traits>&, const _CharT*,
std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>]?
/home/andreas/work/mpi/mcstl/originals/_data_gcc_snapshot-4.2_include_c++_4.2.1/original/ostream:517:
instantiated from ?std::basic_ostream<char, _Traits>&
std::operator<<(std::basic_ostream<char, _Traits>&, const char*) [with _Traits
= std::char_traits<char>]?
t.cpp:7: instantiated from here
/data/gcc/snapshot-4.2/lib/gcc/i686-pc-linux-gnu/4.2.1/../../../../include/c++/4.2.1/bits/ostream_insert.h:64:
error: ?struct std::basic_ostream<char, std::char_traits<char> >? has no member
named ?fill?
--
Summary: g++ -O3 fails on code that compiles with -O2
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: regression
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: gcc at abeckmann dot de
GCC target triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32072