OSDN Git Service

authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 25 Oct 1998 12:13:14 +0000 (12:13 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 25 Oct 1998 12:13:14 +0000 (12:13 +0000)
        * reload.c (push_reload): When merging reloads, make sure
        that reload_in_reg and reload_in are from the same reload in
        all cases.

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

gcc/reload.c

index a7dba55..b6a2ff9 100644 (file)
@@ -1320,6 +1320,7 @@ push_reload (in, out, inloc, outloc, class,
        reload_outmode[i] = outmode;
       if (in != 0)
        {
+         rtx in_reg = inloc ? *inloc : 0;
          /* If we merge reloads for two distinct rtl expressions that
             are identical in content, there might be duplicate address
             reloads.  Remove the extra set now, so that if we later find
@@ -1333,12 +1334,13 @@ push_reload (in, out, inloc, outloc, class,
                {
                  remove_address_replacements (in);
                  in = reload_in[i];
+                 in_reg = reload_in_reg[i];
                }
              else
                remove_address_replacements (reload_in[i]);
            }
          reload_in[i] = in;
-         reload_in_reg[i] = inloc ? *inloc : 0;
+         reload_in_reg[i] = in_reg;
        }
       if (out != 0)
        {