Patch to fix several compat failures on irix6.5

Richard Sandiford rsandifo@redhat.com
Thu Aug 21 18:45:00 GMT 2003


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>



More information about the Gcc-patches mailing list