Here is something I still have on my machine about this problem
-------- Original Message -------- Subject: Re: gcc 3.x breaks ABI compatibility? [Was: Re: Bug 00314 -- div() still broken] Date: Tue, 29 Apr 2003 08:44:45 +0100 From: Richard Dawe rich@phekda.freeserve.co.uk Reply-To: djgpp-workers@delorie.com To: Andris Pavenis pavenis@latnet.lv CC: djgpp-workers@delorie.com, Ben Peddell killer.lightspeed@bigpond.com,rudd@cyberoptics.com References: <3e9c6920$0$21928$afc38c87@> lzLqa.23283$1s1.356122@newsfeeds.bigpond.com 3EABA5AA.99B8EDE3@phekda.freeserve.co.uk 200304280954.02899.pavenis@latnet.lv
Hello.
Andris Pavenis wrote:
On Sunday 27 April 2003 12:40, Richard Dawe wrote:
[snip]
I've just looked at the gcc 2.95.2 sources and it looks like -fpcc-struct-return (i.e.: use memory) is the default there.
The gcc 3.2.2 source seems to default to using registers. See the end gcc/config/i386/djgpp.h:
/* Don't default to pcc-struct-return, because gcc is the only compiler, and we want to retain compatibility with older gcc versions. */ #define DEFAULT_PCC_STRUCT_RETURN 0
Why is this defined? I couldn't see a ChangeLog entry for djgpp.h. AFAICT this breaks backwards compatibility, i.e.: the opposite of what the comment says. Is there something I'm missing?
I copied it from other i386 targets. GCC-3.2.2 didn't compile without defining DEFAULT_PCC_STRUCT_RETURN, as there is no default
Not all i386 targets define DEFAULT_PCC_STRUCT_RETURN to be 0. Linux and NetBSD ELF don't.
I think we need to use the same as the default for 2.95.x, i.e.:
#define DEFAULT_PCC_STRUCT_RETURN 1
This is a pretty critical bug. Do you have any plans to rebuild gcc 3.2.2 (or 3.2.3) with this fix?
Thanks, bye, Rich =]