PowerPC: fix POWER7 memrchr for some large inputs
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>
Thu, 5 Sep 2013 14:32:56 +0000 (09:32 -0500)
committerAdhemerval Zanella <azanella@linux.vnet.ibm.com>
Thu, 5 Sep 2013 14:32:56 +0000 (09:32 -0500)
ChangeLog
sysdeps/powerpc/powerpc32/power7/memrchr.S
sysdeps/powerpc/powerpc64/power7/memrchr.S

index 9392693..2403463 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2013-09-05  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
+       * sysdeps/powerpc/powerpc32/power7/memrchr.S (__memrchr): Fix invalid
+       memory access for final bytes in some large inputs.
+       * sysdeps/powerpc/powerpc64/power7/memrchr.S (__memrchr): Likewise.
+
+2013-09-05  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+
        * string/test-memrchr.c: New file.
        * string/test-memrchr-ifunc.c: New file.
        * string/Makefile: Add new memrchr testcase.
index d1e3fda..defd832 100644 (file)
@@ -101,8 +101,8 @@ L(loop):
        /* We're here because the counter reached 0, and that means we
           didn't have any matches for BYTE in the whole range.  Just return
           the original range.  */
-       addi    r9,r8,4
-       cmplw   cr6,r9,r7
+       addi    r8,r8,4
+       cmplw   cr6,r8,r7
        bgt     cr6,L(loop_small)
        b       L(null)
 
index d24fbbb..c499952 100644 (file)
@@ -102,8 +102,8 @@ L(loop):
        /* We're here because the counter reached 0, and that means we
           didn't have any matches for BYTE in the whole range.  Just return
           the original range.  */
-       addi    r9,r8,8
-       cmpld   cr6,r9,r7
+       addi    r8,r8,8
+       cmpld   cr6,r8,r7
        bgt     cr6,L(loop_small)
        b       L(null)