diff options
author | David Edelsohn <edelsohn@gnu.org> | 2005-08-27 15:44:26 +0000 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2005-08-27 11:44:26 -0400 |
commit | ec53fc93d0fbfac2037da571ce5e637ef0c437ee (patch) | |
tree | 09d930e41bb6768cf71d031b92a49802def3a753 | |
parent | f013cadc88f66b7ec44f58116f66f46e4fd2cc09 (diff) | |
download | gcc-ec53fc93d0fbfac2037da571ce5e637ef0c437ee.tar.gz |
re PR target/23539 (C & C++ compiler generating misaligned references regardless of compiler flags)
PR target/23539
* config/rs6000/rs6000.c (expand_block_clear): Use HImode when
bytes >= 2 not bytes == 2.
(expand_block_move): Same.
From-SVN: r103564
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 4 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c8123f27dc2..d37b25e7e30 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-08-27 David Edelsohn <edelsohn@gnu.org> + + PR target/23539 + * config/rs6000/rs6000.c (expand_block_clear): Use HImode when + bytes >= 2 not bytes == 2. + (expand_block_move): Same. + 2005-08-27 Richard Guenther <rguenther@suse.de> PR target/23575 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index edb3d84c522..2ec59fac883 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -9133,7 +9133,7 @@ expand_block_clear (rtx operands[]) clear_bytes = 4; mode = SImode; } - else if (bytes == 2 && (align >= 16 || !STRICT_ALIGNMENT)) + else if (bytes >= 2 && (align >= 16 || !STRICT_ALIGNMENT)) { /* move 2 bytes */ clear_bytes = 2; mode = HImode; @@ -9269,7 +9269,7 @@ expand_block_move (rtx operands[]) mode = SImode; gen_func.mov = gen_movsi; } - else if (bytes == 2 && (align >= 16 || !STRICT_ALIGNMENT)) + else if (bytes >= 2 && (align >= 16 || !STRICT_ALIGNMENT)) { /* move 2 bytes */ move_bytes = 2; mode = HImode; |