openbsd-ports/lang/gcc/3.3/patches/pp-gcc_loop_c
2005-01-04 23:06:33 +00:00

35 lines
1.1 KiB
Plaintext

$OpenBSD: pp-gcc_loop_c,v 1.1 2005/01/04 23:06:33 espie Exp $
--- gcc/loop.c.orig Sun May 30 01:27:30 2004
+++ gcc/loop.c Mon Jan 3 10:17:42 2005
@@ -1130,6 +1130,7 @@ scan_loop (loop, flags)
Generally this increases code size, so do not move moveables when
optimizing for code size. */
+#ifndef BROKEN_MOVE_MOVABLES_P
if (! optimize_size)
{
move_movables (loop, movables, threshold, insn_count);
@@ -1150,6 +1151,7 @@ scan_loop (loop, flags)
loop_max_reg = max_reg_num ();
}
}
+#endif
/* Now candidates that still are negative are those not moved.
Change regs->array[I].set_in_loop to indicate that those are not actually
@@ -6553,6 +6555,14 @@ general_induction_var (loop, x, src_reg,
*add_val = XEXP (*add_val, 0);
if (GET_CODE (*mult_val) == USE)
*mult_val = XEXP (*mult_val, 0);
+
+#ifndef FRAME_GROWS_DOWNWARD
+ if (flag_propolice_protection
+ && GET_CODE (*add_val) == PLUS
+ && (XEXP (*add_val, 0) == frame_pointer_rtx
+ || XEXP (*add_val, 1) == frame_pointer_rtx))
+ return 0;
+#endif
if (is_addr)
*pbenefit += address_cost (orig_x, addr_mode) - reg_address_cost;