internal compiler error in C++ front end
Mark Mitchell
mmitchell@usa.net
Mon Sep 29 09:56:00 GMT 1997
>>>>> "Joe" == Joe Buck <jbuck@synopsys.com> writes:
Joe> The following program blows up egcs (every version since at
Joe> least 970910 through the present version):
Joe> #include <vector> vector<int> v(3,5);
Joe> I've verified that the crash occurs on both Linux and
Joe> Solaris/sparc.
I'll take a look at this in the next few days.
Joe> The message is
Joe> /usr/local/egcs/include/g++/vector.h:103: Internal compiler
Joe> error 97. /usr/local/egcs/include/g++/vector.h:103: Please
Joe> submit a full bug report to `egcs-bugs@cygnus.com'.
Joe> vector<double> v(5, 3.0);
Joe> works fine.
Joe> vector<double> v(3.0, 5);
Joe> is quietly accepted, but seems bogus. I suppose the compiler
Joe> can assume InputIterator == double, but this seems strange.
Joe> does not crash, but
Joe> vector<double> v(3, 5);
Joe> does: so does the illegal vector<double> v(3.0, 3.0);
Joe> It seems that there is some confusion between
Joe> vector<T>(size_type,const T&) and the template member
Joe> vector<T>(Iterator,Iterator). The odd thing is that for
Joe> vector<int>(32,3) the second seems in some ways a better
Joe> match, but STL is banking on the first one being chosen! (to
Joe> get a vector of 32 elements with value 3).
Joe> While it's likely that this particular case would not have
Joe> been caught, this does suggest that the libstdc++ tests are
Joe> too weak; tvector does not try out even 1/10 of the vector
Joe> class functionality. Tests that at least call each method of
Joe> vector (and the other STL classes) at least once would be a
Joe> great help. (Perhaps others already have something: the
Joe> ObjectSpace free tests seem too weak).
--
Mark Mitchell mmitchell@usa.net
Stanford University http://www.stanford.edu
More information about the Gcc
mailing list