public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c++/2711: ice in c_expand_expr (namespace directive)
@ 2001-05-02 10:26 Jeffrey Oldham
  0 siblings, 0 replies; 2+ messages in thread
From: Jeffrey Oldham @ 2001-05-02 10:26 UTC (permalink / raw)
  To: nathan; +Cc: gcc-prs

The following reply was made to PR c++/2711; it has been noted by GNATS.

From: Jeffrey Oldham <oldham@codesourcery.com>
To: schmid@snake.iap.physik.tu-darmstadt.de
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: c++/2711: ice in c_expand_expr (namespace directive)
Date: Wed, 2 May 2001 10:20:03 -0700

 A recent gcc 3.1 bootstrap shows that this difficulty has disappeared.
 
 Thanks,
 Jeffrey D. Oldham
 oldham@codesourcery.com


^ permalink raw reply	[flat|nested] 2+ messages in thread

* c++/2711: ice in c_expand_expr (namespace directive)
@ 2001-05-01 17:36 Peter Schmid
  0 siblings, 0 replies; 2+ messages in thread
From: Peter Schmid @ 2001-05-01 17:36 UTC (permalink / raw)
  To: gcc-gnats

>Number:         2711
>Category:       c++
>Synopsis:       ice in c_expand_expr (namespace directive)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-illegal-code
>Submitter-Id:   net
>Arrival-Date:   Tue May 01 17:36:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Peter Schmid
>Release:        3.0 20010501 (prerelease)
>Organization:
TU Darmstadt
>Environment:
System: Linux kiste 2.4.3 #35 Sat Mar 31 22:08:25 CEST 2001 i686 unknown
Architecture: i686
SuSE 7.1
Glibc 2.2
GNU assembler 2.11.90.0.4
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc/configure --enable-shared --disable-nls --enable-threads=posix --enable-long-long --enable-languages=c,c++,f77,objc
>Description:
Compiling the source code t.C generates an internal compiler error. If
the using namespace std directive is moved in front of the function f()
the crash does not occur. gcc 2.95 compiles the code without a problem.

>How-To-Repeat:
Source code t.C

namespace std
{
    template<typename _Tp>
    class complex
    {
    public:
        complex(const _Tp& = _Tp(), const _Tp & = _Tp());
        _Tp real() const;
        _Tp imag() const;

    private:
        _Tp _M_real, _M_imag;
    };

    template<typename _Tp>
    inline 
    complex<_Tp>::complex(const _Tp& __r, const _Tp& __i)
            : _M_real(__r), _M_imag(__i) { }

    template<typename _Tp>
    inline _Tp
    complex<_Tp>::real() const { return _M_real; }

    template<typename _Tp>
    inline _Tp
    complex<_Tp>::imag() const { return _M_imag; }
    
    template<typename _Tp>
    inline complex<_Tp>
    conj(const complex<_Tp>& __z)
    { return complex<_Tp>(__z.real(), -__z.imag()); }

    template<> class complex<double>
    {
    public:
        complex(double = 0.0, double = 0.0);
        double real() const;
        double imag() const;
    private:
        typedef __complex__ double _ComplexT;
        _ComplexT _M_value;
    };

    inline
    complex<double>::complex(double r, double i)
    {
        __real__ _M_value = r;
        __imag__ _M_value = i;
    }

    inline double
    complex<double>::real() const
    { return __real__ _M_value; }
    
    inline double
    complex<double>::imag() const
    { return __imag__ _M_value; }

}

void f()
{
    using namespace std;   
    complex<double> c(1.0, 2.0);
    complex<double> e = conj(c);
}


int main()
{
    f();
}

Compiling t.C
g++ -v -o t t.C -W -Wall 
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/specs
Configured with: ../gcc/configure --enable-shared --disable-nls --enable-threads=posix --enable-long-long --enable-languages=c,c++,f77,objc
Thread model: posix
gcc version 3.0 20010501 (prerelease)
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/cc1plus -v -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__STDC_HOSTED__=1 -W -Wall -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i686__ -D__tune_pentiumpro__ t.C -D__GNUG__=3 -D_GNU_SOURCE -D__EXCEPTIONS -D__GXX_ABI_VERSION=100 -quiet -dumpbase t.C -W -Wall -version -o /tmp/ccGO400h.s
GNU CPP version 3.0 20010501 (prerelease) (cpplib) (i386 Linux/ELF)
GNU C++ version 3.0 20010501 (prerelease) (i686-pc-linux-gnu)
	compiled by GNU C version 3.0 20010501 (prerelease).
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include/g++-v3
 /usr/local/include/g++-v3/i686-pc-linux-gnu
 /usr/local/include
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include
 /usr/local/i686-pc-linux-gnu/include
 /usr/include
End of search list.
t.C: In function `void f()':
t.C:65: warning: unused variable `std::complex<double> e'
t.C:65: Internal compiler error in c_expand_expr, at c-common.c:4116
Please submit a full bug report, with preprocessed source if appropriate.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.

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


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2001-05-02 10:26 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-05-02 10:26 c++/2711: ice in c_expand_expr (namespace directive) Jeffrey Oldham
  -- strict thread matches above, loose matches on Subject: below --
2001-05-01 17:36 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).