* alpha.c (alpha_expand_block_move): Copy ADDRESSOF to reg.
authorRichard Henderson <rth@cygnus.com>
Sun, 25 Jan 1998 22:22:29 +0000 (14:22 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Sun, 25 Jan 1998 22:22:29 +0000 (14:22 -0800)
From-SVN: r17485

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

index c0c433f8f540fe77212e28bfa2d84db7883a6256..48aa92cfb96bd49512482dcd91f617f5031d7579 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 859683af8e87c1ad8a54e17f0474564f358b7329..0762de4c46218308da5a143cf7bbd651bfb3afad 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)