--- /dev/null
+diff -urN gcc-2.95.2.org/gcc/reload1.c gcc-2.95.2/gcc/reload1.c
+--- gcc-2.95.2.org/gcc/reload1.c Sat Nov 25 01:48:15 2000
++++ gcc-2.95.2/gcc/reload1.c Sat Nov 25 01:52:07 2000
+@@ -423,6 +423,7 @@
+ static int reload_reg_reaches_end_p PROTO((int, int, enum reload_type));
+ static int allocate_reload_reg PROTO((struct insn_chain *, int, int,
+ int));
++static int conflicts_with_override PROTO((rtx));
+ static void choose_reload_regs PROTO((struct insn_chain *));
+ static void merge_assigned_reloads PROTO((rtx));
+ static void emit_reload_insns PROTO((struct insn_chain *));
+@@ -5594,6 +5595,21 @@
+
+ return 1;
+ }
++
++/* Determine whether the reload reg X overlaps any rtx'es used for
++ overriding inheritance. Return nonzero if so. */
++
++static int
++conflicts_with_override (x)
++ rtx x;
++{
++ int i;
++ for (i = 0; i < n_reloads; i++)
++ if (reload_override_in[i]
++ && reg_overlap_mentioned_p (x, reload_override_in[i]))
++ return 1;
++ return 0;
++}
+ \f
+ /* Assign hard reg targets for the pseudo-registers we must reload
+ into hard regs for this insn.
+@@ -6791,6 +6807,7 @@
+ && dead_or_set_p (insn, old)
+ /* This is unsafe if some other reload
+ uses the same reg first. */
++ && ! conflicts_with_override (reloadreg)
+ && reload_reg_free_for_value_p (REGNO (reloadreg),
+ reload_opnum[j],
+ reload_when_needed[j],
+