summaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-03 01:12:30 +0000
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-03 01:12:30 +0000
commit94ddd54cc3c6af8517588d040ddf0751295a4956 (patch)
tree133add5e2b46b695acf4c7786f543b47363997ff /gcc/config
parent7dab6ba6d5accc0a926df56d15fedc92b0dad48f (diff)
downloadgcc-94ddd54cc3c6af8517588d040ddf0751295a4956.tar.gz
* config/rs6000/rs6000.c (expand_block_move): Use SImode and
HImode with STRICT_ALIGNMENT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87021 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/rs6000/rs6000.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 335dbe3d16e..1881fc198c7 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -8510,13 +8510,13 @@ expand_block_move (rtx operands[])
move_bytes = (bytes > 8) ? 8 : bytes;
gen_func.movmemsi = gen_movmemsi_2reg;
}
- else if (bytes >= 4 && !STRICT_ALIGNMENT)
+ else if (bytes >= 4 && (align >= 32 || !STRICT_ALIGNMENT))
{ /* move 4 bytes */
move_bytes = 4;
mode = SImode;
gen_func.mov = gen_movsi;
}
- else if (bytes == 2 && !STRICT_ALIGNMENT)
+ else if (bytes == 2 && (align >= 16 || !STRICT_ALIGNMENT))
{ /* move 2 bytes */
move_bytes = 2;
mode = HImode;