1 diff -urN gcc-2.95.2.org/gcc/reload1.c gcc-2.95.2/gcc/reload1.c
2 --- gcc-2.95.2.org/gcc/reload1.c Sat Nov 25 01:48:15 2000
3 +++ gcc-2.95.2/gcc/reload1.c Sat Nov 25 01:52:07 2000
5 static int reload_reg_reaches_end_p PROTO((int, int, enum reload_type));
6 static int allocate_reload_reg PROTO((struct insn_chain *, int, int,
8 +static int conflicts_with_override PROTO((rtx));
9 static void choose_reload_regs PROTO((struct insn_chain *));
10 static void merge_assigned_reloads PROTO((rtx));
11 static void emit_reload_insns PROTO((struct insn_chain *));
12 @@ -5594,6 +5595,21 @@
17 +/* Determine whether the reload reg X overlaps any rtx'es used for
18 + overriding inheritance. Return nonzero if so. */
21 +conflicts_with_override (x)
25 + for (i = 0; i < n_reloads; i++)
26 + if (reload_override_in[i]
27 + && reg_overlap_mentioned_p (x, reload_override_in[i]))
32 /* Assign hard reg targets for the pseudo-registers we must reload
33 into hard regs for this insn.
35 && dead_or_set_p (insn, old)
36 /* This is unsafe if some other reload
37 uses the same reg first. */
38 + && ! conflicts_with_override (reloadreg)
39 && reload_reg_free_for_value_p (REGNO (reloadreg),
41 reload_when_needed[j],