This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
sibcall ICE
- To: gcc-bugs at gcc dot gnu dot org, law at cygnus dot com, rth at cygnus dot com
- Subject: sibcall ICE
- From: Nathan Sidwell <nathan at codesourcery dot com>
- Date: Wed, 24 May 2000 13:43:26 +0100
- Organization: CodeSourcery, LLC
Hi,
the sibcall patch of
2000-03-17 Jeff Law <law@cygnus.com>
Richard Henderson <rth@cygnus.com>
is causing a cc1plus ICE in the following C++ code when compiled at -O2
on i686-pc-linux-gnu
struct A
{
A (int s) { }
~A () { }
int get () const { return 0; }
};
void f (const A &s) {
f (s.get ());
}
nathan@uha:69>./cc1plus n3.ii -O2
void f (const A &)
n3.ii:12: Internal compiler error.
Yes, this is strange code, it's culled from gtk--'s autoconf test of
the library's string class, the code is supposed to be compilable.
I've tried turning it into equivalent C code, but that fails to
tickle cc1 into ICEing. FYI here's the nearest I can get to representing
the program at the C source level.
struct A {int m;};
inline void dtor (struct A *t, int inchrg) {}
inline struct A *ctor (struct A *t, int i) {return t;}
inline int get (struct A const *t) { return 0;}
void f (const struct A *s)
{
struct A tmp;
f (ctor (&tmp, get (s))), dtor (&tmp, 0);
}
Can you look at this? Let me know if you need help with the C++ aspects.
nathan
--
Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC
'But that's a lie.' - 'Yes it is. What's your point?'
nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org