zlaski 02/09/26 14:29:20
Modified: gcc/config darwin.c
Log:
Migrate Stuart's fix for 3032085 into TOT.
Revision Changes Path
1.79 +18 -0 gcc3/gcc/config/darwin.c
Index: darwin.c
===================================================================
RCS file: /cvs/Darwin/gcc3/gcc/config/darwin.c,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -r1.78 -r1.79
--- darwin.c 2002/08/26 20:08:02 1.78
+++ darwin.c 2002/09/26 21:29:20 1.79
@@ -958,8 +958,26 @@
pic_ref = plus_constant (base, INTVAL (orig));
is_complex = 1;
}
+ /* APPLE LOCAL begin gen ADD */
+#ifdef MASK_80387
+ else if ((GET_CODE (XEXP (orig, 0)) == MEM))
+ {
+ pic_ref = gen_rtx (PLUS, Pmode, base, orig);
+ if ( ! reload_in_progress) /* necessary ? */
+ {
+ rtx clob = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CCmode, FLAGS_REG));
+ rtx set = gen_rtx_SET (VOIDmode, reg, pic_ref);
+ pic_ref = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, set, clob));
+ emit_insn (pic_ref);
+ pic_ref = reg;
+ is_complex = 0;
+ }
+ }
+#endif
else
pic_ref = gen_rtx (PLUS, Pmode, base, orig);
+
+ /* APPLE LOCAL end gen ADD */
if (RTX_UNCHANGING_P (base) && RTX_UNCHANGING_P (orig))
RTX_UNCHANGING_P (pic_ref) = 1;