re PR debug/66691 (ICE on valid code at -O3 with -g enabled in simplify_subreg, at...
[gcc.git] / gcc / reload.c
index 03354deb6059bfd92eed31449d7f468bd7a5b55d..1dc04bf0eb96df901aad7d043f58f4d6066c4cbe 100644 (file)
@@ -3872,6 +3872,12 @@ find_reloads (rtx_insn *insn, int replace, int ind_levels, int live_known,
       std::swap (*recog_data.operand_loc[commutative],
                 *recog_data.operand_loc[commutative + 1]);
 
+      for (i = 0; i < recog_data.n_dups; i++)
+       if (recog_data.dup_num[i] == commutative
+           || recog_data.dup_num[i] == commutative + 1)
+         *recog_data.dup_loc[i]
+           = recog_data.operand[(int) recog_data.dup_num[i]];
+
       for (i = 0; i < n_reloads; i++)
        {
          if (rld[i].opnum == commutative)