sibcall ICE

Nathan Sidwell
Wed May 24 05:43:00 GMT 2000

the sibcall patch of
2000-03-17  Jeff Law  <>
            Richard Henderson  <>

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.


Dr Nathan Sidwell   ::   ::   CodeSourcery LLC
         'But that's a lie.' - 'Yes it is. What's your point?' : :

More information about the Gcc-bugs mailing list