This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Patch to fix several compat failures on irix6.5
Eric Christopher <echristo@redhat.com> writes:
> > OK to install? If so, I guess it warrants an entry in 3.4/changes.html.
>
> Yes
Thanks, applied.
> and please come up with a quick note for changes at least so people
> will know the ABI changed.
How's this?
Also, since we're breaking the ABI anyway, maybe we should sort out the
other (known) problems with NewABI structure passing. It shouldn't be
too much work with Alan's BLOCK_REG_PADDING code.
Working on a patch now...
Richard
Index: gcc-3.4/changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-3.4/changes.html,v
retrieving revision 1.41
diff -c -d -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.41 changes.html
*** gcc-3.4/changes.html 16 Aug 2003 14:00:02 -0000 1.41
--- gcc-3.4/changes.html 21 Aug 2003 11:29:45 -0000
***************
*** 31,36 ****
--- 31,39 ----
in this release</a>.</li>
<li>GCC now requires an ISO C90 (ANSI C89) C compiler to build.
K&R C compilers will not work.</li>
+ <li>On some MIPS targets, the code generated by this release
+ will not be binary compatible with previous releases.
+ See <a href="#mips_abi">below</a> for details.</li>
</ul>
<h2>General Optimizer Improvements</h2>
***************
*** 270,275 ****
--- 273,292 ----
MIPS port. It is activated by the <code>-march</code> compiler option
and should work with any MIPS I (<code>mips-*</code>) or MIPS III
(<code>mips64-*</code>) configuration.</li>
+
+ <li><a name="mips_abi">n32 and n64 MIPS targets now pass all
+ structures by value.</a> While this change brings GCC closer
+ to ABI compliance, it will unfortunately break binary compatibility
+ with earlier releases. A structure used to be passed by reference if:
+ <ul>
+ <li>the target was big-endian;</li>
+ <li>the structure was bigger than 8 bytes;</li>
+ <li>the structure's size was not a multiple of 8 bytes; and</li>
+ <li>the first word of the structure would have been passed in
+ a register.</li>
+ </ul>
+ Note that only big-endian n32 & n64 targets (such as IRIX 6) are
+ affected.</li>
</ul>
<h2><a name="obsolete_systems">Obsolete Systems</a></h2>