c/3711: ICE in instantiate_virtual_regs_1, at function.c:3880

Richard Henderson rth@redhat.com
Tue Mar 26 10:08:00 GMT 2002

On Tue, Mar 26, 2002 at 11:53:03AM +0000, Nicola Pero wrote:
> Hmmm ... well this testcase arrives from a real example ... forwarding
> code in some advanced OO stuff which worked perfectly well with all GCC
> releases up to now (code from mframe.m in gnustep-base).

No it didn't.  It worked perfectly well *with some particular abi*,
which is not the same thing.

> So I can use SMSmessages in place of a struct {char text[255];} everywhere
> I want, but I can't pass it in place of a struct {char text[255];} to a
> function ?


> This is very confusing for users I must say.  And it is not how it worked
> in previous versions of the compiler.

Yes it is.  Like I said, this has *never* worked on sparc64, and
never will.

> I think you understood what the function in the testcase "wants/needs" to
> do - which is that it can be called with an arbitrary struct (fixed size)
> as the second argument, and it is informed of the size of the struct from
> the first argument (which is just to say, a source providing the info at
> runtime), and it needs to be able to access the bytes in the struct.

Why don't you just pass a pointer to the structure all the time?


More information about the Gcc-bugs mailing list