This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

ICE in C++ frontend with gcc-2.95.2 and current snapshot


X-Authenticated-Sender: #0000373857@gmx.net
X-Authenticated-IP: [195.145.195.9]
Message-ID: <15131.947863272@www1.gmx.net>
X-Mailer: WWW-Mail 1.5 (Global Message Exchange)
X-Flags: 0001
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

Hi,
the appended testprogram crahes both egcs-20000110 and gcc-2.95.2.
egcs-1.1.2 as included in Redhat 6.1 compiles it fine.

# /opt/bin/g++ -v -save-temps -c templ_inst.C 
Reading specs from /opt/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/specs
gcc version 2.95.2 19991024 (release)
 /opt/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/cpp -lang-c++ -v -D__GNUC__=2
-D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -D__ELF__ -Dunix -D__i386__
-Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux
-Asystem(posix) -D__EXCEPTIONS -Acpu(i386) -Amachine(i386) -Di386 -D__i386
-D__i386__ -Di686 -Dpentiumpro -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__
templ_inst.C templ_inst.ii
GNU CPP version 2.95.2 19991024 (release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
 /opt/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../include/g++-3

/opt/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../i686-pc-linux-gnu/include /opt/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/include
 /usr/include
End of search list.
The following default directories have been omitted from the search path:
 /usr/local/include
End of omitted list.
 /opt/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/cc1plus templ_inst.ii -quiet
-dumpbase templ_inst.cc -version -o templ_inst.s
GNU C++ version 2.95.2 19991024 (release) (i686-pc-linux-gnu) compiled by
GNU C version 2.95.2 19991024 (release).
templ_inst.C: In function `static void
w::registerWidgetCallback<int>(_Widget *, const char *, Signal<int> *)':
templ_inst.C:22:   instantiated from `w::registerCallback<int>(const char
*, Signal<int> *)'
templ_inst.C:37:   instantiated from here
templ_inst.C:29: Internal compiler error.
templ_inst.C:29: Please submit a full bug report.
templ_inst.C:29: See
<URL:http://www.gnu.org/software/gcc/faq.html#bugreport> for instructions.

------snip----------
template <typename T> class Signal;
struct _Widget;
typedef _Widget* Widget;
typedef void* XtPointer;
#define XtNcallback "XtNcallback"
extern void XtAddCallback( Widget, const char*, void
(*)(Widget,XtPointer,XtPointer), XtPointer );

class w {
public:
    void f( Signal<int>* );
    template<typename argType> void registerCallback( const char* name,
Signal<argType>* signal );
    template<typename argType> static void registerWidgetCallback( Widget,
const char* name, Signal<argType>* signal );
    template<typename argType> static void emitDataCallback( Widget w,
XtPointer client_data, XtPointer call_data );
    Widget widget() const { return _w; }
private:
    Widget _w;
};

template<typename argType> void
w::registerCallback( const char* name, Signal<argType>* signal )
{
	registerWidgetCallback( widget(), name, signal );
}
    
template<typename argType> void
w::registerWidgetCallback( Widget w, const char* name, Signal<argType>*
signal )
{
	XtAddCallback( w, name, &emitDataCallback<argType>,
		       static_cast<XtPointer>( signal ) );
}

template<typename argType> void
w::emitDataCallback( Widget, XtPointer, XtPointer ) {}

void w::f( Signal<int>* theSig )
{
    registerCallback<>( XtNcallback, theSig );
}


---------snip----------------

-- 
Klaus-Georg Adams

Sent through Global Message Exchange - http://www.gmx.net


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]