OSDN Git Service

(choose_reload_regs): Handle SUBREG in reload_earlyclobber
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 6 Mar 1993 20:09:57 +0000 (20:09 +0000)
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 6 Mar 1993 20:09:57 +0000 (20:09 +0000)
when matching output reloads for setting reload_when_needed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@3670 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/reload1.c

index cb3db79..15edd0b 100644 (file)
@@ -4187,8 +4187,14 @@ choose_reload_regs (insn, avoid_return_reg)
          {
            /* But earlyclobber operands must stay as RELOAD_OTHER.  */
            for (i = 0; i < n_earlyclobbers; i++)
-             if (rtx_equal_p (reload_out[j], reload_earlyclobbers[i]))
-               break;
+             {
+               if (GET_CODE (reload_earlyclobbers[i]) == SUBREG
+                   && reg_overlap_mentioned_for_reload_p (reload_out[j],
+                                   SUBREG_REG (reload_earlyclobbers[i])))
+                 break;
+               if (rtx_equal_p (reload_out[j], reload_earlyclobbers[i]))
+                 break;
+             }
            if (i == n_earlyclobbers)
              reload_when_needed[j] = RELOAD_FOR_OUTPUT;
          }