public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c++/10158: ice (regression)
@ 2003-03-20  1:56 peter schmid
  0 siblings, 0 replies; only message in thread
From: peter schmid @ 2003-03-20  1:56 UTC (permalink / raw)
  To: gcc-gnats


>Number:         10158
>Category:       c++
>Synopsis:       ice (regression)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 20 01:56:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Peter Schmid
>Release:        3.3 20030314 (prerelease)
>Organization:
LBNL
>Environment:
System: Linux linux 2.4.19-4GB #1 Wed Nov 27 00:56:40 UTC 2002 i686 unknown
Architecture: i686
SuSE 8.1
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc3/gcc/configure --enable-threads=posix
--enable-languages=c,c++,f77,objc --enable-__cxa_atexit 
>Description:
The following code r.C, extracted from boost's
libs/random/random_test.cpp cause an ice. gcc 3.2 accept this code
without a problem. I believe this is a regression. gcc 3.3 and 3.4
crash while trying to compile this code.

>How-To-Repeat:

source code r.C

namespace std
{
    template<typename _Alloc>
    class allocator {};

    template<class _CharT>
    struct char_traits;

    template<typename _CharT, typename _Traits = char_traits<_CharT>,
	     typename _Alloc = allocator<_CharT> >
    class basic_istringstream;

    typedef basic_istringstream<char> istringstream;

    template<typename _CharT, typename _Traits, typename _Alloc>
    class basic_string
    {
    public:
	basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
    };

    template <typename _CharT, typename _Traits>
    class basic_streambuf {};

    template<typename _CharT, typename _Traits>
    class basic_istream 
    {
    public:
	typedef basic_streambuf<_CharT, _Traits>   __streambuf_type;
	typedef basic_istream<_CharT, _Traits>     __istream_type;

	explicit 
	basic_istream(__streambuf_type* __sb)
	{ }
    };

    template<typename _CharT, typename _Traits, typename _Alloc>
    class basic_istringstream : public basic_istream<_CharT, _Traits>
    {
    public:
	typedef basic_string<_CharT, _Traits, _Alloc> 	__string_type;

    public:
	explicit
	basic_istringstream(const __string_type& __str)
	    : __istream_type(0)
	    { }
    };

} // namespace std
 
template<class UIntType, int n>
class mersenne_twister
{
public:
    mersenne_twister() {}

    template<class CharT, class Traits>
    friend std::basic_istream<CharT,Traits>&
    operator>>(std::basic_istream<CharT,Traits>& is, mersenne_twister& mt)
	{
	    mt.i = n;
	    return is;
	}
private:
    int i;
};

typedef mersenne_twister<unsigned int,351> mt11213b;
 
template<class URNG, class ResultType>
void instantiate_urng(const URNG, const ResultType &)
{
    URNG urng;
    std::istringstream input("hurz");
    input >> urng;
}

int main(int, char*[])
{
    instantiate_urng(mt11213b(), 0u);
}

gcc 3.3
g++ -v -W -Wall --save-temps r.C 
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/specs
Configured with: ../gcc3/gcc/configure --enable-threads=posix --enable-languages=c,c++,f77,objc --enable-__cxa_atexit
Thread model: posix
gcc version 3.3 20030314 (prerelease)
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/cc1plus -E -D__GNUG__=3 -quiet -v -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=0 -D_GNU_SOURCE r.C -W -Wall r.ii
ignoring nonexistent directory "NONE/include"
ignoring nonexistent directory "/usr/local/i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include/c++/3.3
 /usr/local/include/c++/3.3/i686-pc-linux-gnu
 /usr/local/include/c++/3.3/backward
 /usr/local/include
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/include
 /usr/include
End of search list.
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.3/cc1plus -fpreprocessed r.ii -quiet -dumpbase r.C -auxbase r -W -Wall -version -o r.s
GNU C++ version 3.3 20030314 (prerelease) (i686-pc-linux-gnu)
	compiled by GNU C version 3.3 20030314 (prerelease).
GGC heuristics: --param ggc-min-expand=47 --param ggc-min-heapsize=31901
r.C: In function `std::basic_istream<CharT, Traits>& 
   operator>>(std::basic_istream<CharT, Traits>&, mersenne_twister<UIntType, 
   n>&) [with CharT = char, Traits = std::char_traits<char>, UIntType = 
   unsigned int, int n = 351]':
r.C:76:   instantiated from `void instantiate_urng(URNG, const ResultType&) [with URNG = mersenne_twister<unsigned int, 351>, ResultType = unsigned int]'
r.C:81:   instantiated from here
r.C:62: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

gcc 3.2
/usr/bin/g++ -v -W -Wall --save-temps r.C 
Reading specs from /usr/lib/gcc-lib/i486-suse-linux/3.2/specs
Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --enable-languages=c,c++,f77,objc,java,ada --enable-libgcj --with-gxx-include-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit i486-suse-linux
Thread model: posix
gcc version 3.2
 /usr/lib/gcc-lib/i486-suse-linux/3.2/cpp0 -lang-c++ -D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -v -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=0 -D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux -D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i486__ r.C -W -Wall r.ii
GNU CPP version 3.2 (cpplib) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/g++
 /usr/include/g++/i486-suse-linux
 /usr/include/g++/backward
 /usr/local/include
 /usr/lib/gcc-lib/i486-suse-linux/3.2/include
 /usr/i486-suse-linux/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/i486-suse-linux/3.2/cc1plus -fpreprocessed r.ii -quiet -dumpbase r.C -W -Wall -version -o r.s
GNU CPP version 3.2 (cpplib) (i386 Linux/ELF)
GNU C++ version 3.2 (i486-suse-linux)
	compiled by GNU C version 3.2.
r.C: In member function `std::basic_istream<_CharT, 
   _Traits>::basic_istream(std::basic_streambuf<_CharT, _Traits>*) [with _CharT 
   = char, _Traits = std::char_traits<char>]':
r.C:34:   instantiated from `std::basic_istream<_CharT, _Traits>::basic_istream(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>]'
r.C:47:   instantiated from `std::basic_istringstream<_CharT, _Traits, _Alloc>::basic_istringstream(const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]'
r.C:75:   instantiated from `void instantiate_urng(URNG, const ResultType&) [with URNG = mersenne_twister<unsigned int, 351>, ResultType = unsigned int]'
r.C:81:   instantiated from here
r.C:34: warning: unused parameter `std::basic_streambuf<char, 
   std::char_traits<char> >*__sb'
 /usr/lib/gcc-lib/i486-suse-linux/3.2/../../../../i486-suse-linux/bin/as -V -Qy -o r.o r.s
GNU assembler version 2.12.90.0.15 (i486-suse-linux) using BFD version 2.12.90.0.15 20020717 (SuSE)
 /usr/lib/gcc-lib/i486-suse-linux/3.2/collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/gcc-lib/i486-suse-linux/3.2/../../../crt1.o /usr/lib/gcc-lib/i486-suse-linux/3.2/../../../crti.o /usr/lib/gcc-lib/i486-suse-linux/3.2/crtbegin.o -L/usr/lib/gcc-lib/i486-suse-linux/3.2 -L/usr/lib/gcc-lib/i486-suse-linux/3.2/../../../../i486-suse-linux/lib -L/usr/lib/gcc-lib/i486-suse-linux/3.2/../../.. r.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc-lib/i486-suse-linux/3.2/crtend.o /usr/lib/gcc-lib/i486-suse-linux/3.2/../../../crtn.o

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-03-20  1:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-20  1:56 c++/10158: ice (regression) peter schmid

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).