aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-11-05 11:23:29 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1995-11-05 11:23:29 -0500
commit5ca582cfa036ef5fa9f15c34435c0f79b2b556ce (patch)
treecfc9e99787475eea1c4f9444c2b1b087263e1eca
parentc96d01ab97046e1094188478d9f7585374305c8e (diff)
downloadgcc-5ca582cfa036ef5fa9f15c34435c0f79b2b556ce.zip
gcc-5ca582cfa036ef5fa9f15c34435c0f79b2b556ce.tar.gz
gcc-5ca582cfa036ef5fa9f15c34435c0f79b2b556ce.tar.bz2
(emit_reload_insns): For RELOAD_OTHER output reloads, output the
reload insns in descending order of reloads. From-SVN: r10562
-rw-r--r--gcc/reload1.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 9f437b6..33c77e4 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -6290,7 +6290,7 @@ emit_reload_insns (insn)
abort ();
if (reload_when_needed[j] == RELOAD_OTHER)
- push_to_sequence (other_output_reload_insns);
+ start_sequence ();
else
push_to_sequence (output_reload_insns[reload_opnum[j]]);
@@ -6437,7 +6437,11 @@ emit_reload_insns (insn)
}
if (reload_when_needed[j] == RELOAD_OTHER)
- other_output_reload_insns = get_insns ();
+ {
+ if (other_output_reload_insns)
+ emit_insns (other_output_reload_insns);
+ other_output_reload_insns = get_insns ();
+ }
else
output_reload_insns[reload_opnum[j]] = get_insns ();
@@ -6451,7 +6455,7 @@ emit_reload_insns (insn)
RELOAD_FOR_OTHER_ADDRESS reloads for input addresses.
- RELOAD_OTHER reloads.
+ RELOAD_OTHER reloads, output in ascending order by reload number.
For each operand, any RELOAD_FOR_INPUT_ADDRESS reloads followed by
the RELOAD_FOR_INPUT reload for the operand.
@@ -6465,7 +6469,8 @@ emit_reload_insns (insn)
For each operand, any RELOAD_FOR_OUTPUT_ADDRESS reload followed by
the RELOAD_FOR_OUTPUT reload for that operand.
- Any RELOAD_OTHER output reloads. */
+ Any RELOAD_OTHER output reloads, output in descending order by
+ reload number. */
emit_insns_before (other_input_address_reload_insns, before_insn);
emit_insns_before (other_input_reload_insns, before_insn);