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

Richard Henderson rth@redhat.com
Tue Mar 26 09:46:00 GMT 2002


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

From: Richard Henderson <rth@redhat.com>
To: Nicola Pero <nicola@brainstorm.co.uk>
Cc: gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org,
   GNUstep Developers <gnustep-dev@gnu.org>
Subject: Re: c/3711: ICE in instantiate_virtual_regs_1, at function.c:3880
Date: Tue, 26 Mar 2002 09:41:07 -0800

 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 ?
 
 Correct.
 
 > 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?
 
 
 r~



More information about the Gcc-prs mailing list