From 87cda9d6cadaff58cbebb89bc5c0b8bd72ed1ff1 Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Fri, 3 Sep 2004 19:34:15 +0000 Subject: [PATCH] reload.c (find_reloads): Swap operand_loc pointers for find_dummy_reload if we have swapped two operands. * reload.c (find_reloads): Swap operand_loc pointers for find_dummy_reload if we have swapped two operands. From-SVN: r87049 --- gcc/ChangeLog | 5 +++++ gcc/reload.c | 21 ++++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9c4561fa2fa..c20d4a9b5d3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-09-03 Daniel Jacobowitz + + * reload.c (find_reloads): Swap operand_loc pointers for + find_dummy_reload if we have swapped two operands. + 2004-09-03 Hans-Peter Nilsson * config/cris/cris.h (ASM_OUTPUT_CASE_END): Use prev_nonnote_insn diff --git a/gcc/reload.c b/gcc/reload.c index 260e4b7a3aa..950d6fd3088 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -3079,6 +3079,7 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, { /* Operands don't match. */ rtx value; + int loc1, loc2; /* Retroactively mark the operand we had to match as a loser, if it wasn't already. */ if (this_alternative_win[m]) @@ -3087,12 +3088,26 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, if (this_alternative[m] == (int) NO_REGS) bad = 1; /* But count the pair only once in the total badness of - this alternative, if the pair can be a dummy reload. */ + this alternative, if the pair can be a dummy reload. + The pointers in operand_loc are not swapped; swap + them by hand if necessary. */ + if (swapped && i == commutative) + loc1 = commutative + 1; + else if (swapped && i == commutative + 1) + loc1 = commutative; + else + loc1 = i; + if (swapped && m == commutative) + loc2 = commutative + 1; + else if (swapped && m == commutative + 1) + loc2 = commutative; + else + loc2 = m; value = find_dummy_reload (recog_data.operand[i], recog_data.operand[m], - recog_data.operand_loc[i], - recog_data.operand_loc[m], + recog_data.operand_loc[loc1], + recog_data.operand_loc[loc2], operand_mode[i], operand_mode[m], this_alternative[m], -1, this_alternative_earlyclobber[m]); -- 2.30.2