summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2005-08-27 15:44:26 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2005-08-27 11:44:26 -0400
commitec53fc93d0fbfac2037da571ce5e637ef0c437ee (patch)
tree09d930e41bb6768cf71d031b92a49802def3a753
parentf013cadc88f66b7ec44f58116f66f46e4fd2cc09 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/rs6000/rs6000.c4
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;