diff options
author | Richard Henderson <rth@cygnus.com> | 1998-01-25 14:22:29 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1998-01-25 14:22:29 -0800 |
commit | 153890758784e2cac8a3a42462d8907549964ae0 (patch) | |
tree | ca419e9e3896e28c19565383e60800f36ec757bd /gcc | |
parent | 83c8ddef65d203fb5f88d54ba13a2ec19be950a2 (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 6 |
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) |