aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-01-25 14:22:29 -0800
committerRichard Henderson <rth@gcc.gnu.org>1998-01-25 14:22:29 -0800
commit153890758784e2cac8a3a42462d8907549964ae0 (patch)
treeca419e9e3896e28c19565383e60800f36ec757bd /gcc
parent83c8ddef65d203fb5f88d54ba13a2ec19be950a2 (diff)
downloadgcc-153890758784e2cac8a3a42462d8907549964ae0.zip
gcc-153890758784e2cac8a3a42462d8907549964ae0.tar.gz
gcc-153890758784e2cac8a3a42462d8907549964ae0.tar.bz2
* alpha.c (alpha_expand_block_move): Copy ADDRESSOF to reg.
From-SVN: r17485
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/alpha/alpha.c6
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c0c433f..48aa92c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 859683a..0762de4 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -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)