OSDN Git Service

* alpha.c (alpha_expand_block_move): Copy ADDRESSOF to reg.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 25 Jan 1998 22:22:29 +0000 (22:22 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 25 Jan 1998 22:22:29 +0000 (22:22 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@17485 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/alpha/alpha.c

index c0c433f..48aa92c 100644 (file)
@@ -1,3 +1,7 @@
+Sun Jan 25 22:22:04 1998  Richard Henderson  <rth@cygnus.com>
+
+       * alpha.c (alpha_expand_block_move): Copy ADDRESSOF to reg.
+
 Sun Jan 25 22:14:28 1998  Richard Henderson  <rth@cygnus.com>
 
        * toplev.c (get_run_time): Make sure each case gets its variables.
index 859683a..0762de4 100644 (file)
@@ -1614,6 +1614,12 @@ alpha_expand_block_move (operands)
   if (bytes > MAX_MOVE_WORDS*8)
     return 0;
 
+  /* Ideally we would do nice things when noticing the addressof.  */
+  if (GET_CODE (XEXP (orig_src, 0)) == ADDRESSOF)
+    orig_src = copy_addr_to_reg (XEXP (orig_src, 0));
+  if (GET_CODE (XEXP (orig_dst, 0)) == ADDRESSOF)
+    orig_dst = copy_addr_to_reg (XEXP (orig_dst, 0));
+
   /* Handle a block of contiguous words first.  */
 
   if (align >= 8 && bytes >= 8)