aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2009-01-09 21:03:37 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2009-01-09 21:03:37 +0100
commitc9da2ae8abcb55f016788007ed70f73c39775397 (patch)
tree9a81b9ec0c64137a909247d58cbe74b2f17f78d7
parenta174c19c0f7cecdb87f8da952d2fb916dfd7872c (diff)
downloadgcc-c9da2ae8abcb55f016788007ed70f73c39775397.zip
gcc-c9da2ae8abcb55f016788007ed70f73c39775397.tar.gz
gcc-c9da2ae8abcb55f016788007ed70f73c39775397.tar.bz2
i386.c (ix86_expand_movmem, [...]): Add zero guard even if align_bytes != 0 and count is smaller than size_needed.
* config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add zero guard even if align_bytes != 0 and count is smaller than size_needed. From-SVN: r143229
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d7cebcf..0f0331a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-01-09 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
+ zero guard even if align_bytes != 0 and count is smaller than
+ size_needed.
+
2008-01-09 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/38495
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index f44667f..b5fea23 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -17720,7 +17720,7 @@ ix86_expand_movmem (rtx dst, rtx src, rtx count_exp, rtx align_exp,
count -= align_bytes;
}
if (need_zero_guard
- && (!count
+ && (count < (unsigned HOST_WIDE_INT) size_needed
|| (align_bytes == 0
&& count < ((unsigned HOST_WIDE_INT) size_needed
+ desired_align - align))))
@@ -18112,7 +18112,7 @@ ix86_expand_setmem (rtx dst, rtx count_exp, rtx val_exp, rtx align_exp,
count -= align_bytes;
}
if (need_zero_guard
- && (!count
+ && (count < (unsigned HOST_WIDE_INT) size_needed
|| (align_bytes == 0
&& count < ((unsigned HOST_WIDE_INT) size_needed
+ desired_align - align))))