about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--sysdeps/i386/i686/strcmp.S6
2 files changed, 10 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 721da0933a..380f4c2260 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2000-06-30  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/i386/i686/strcmp.S: Little optimization in non-BP case.
+
 2000-06-30  Greg McGary  <greg@mcgary.org>
 
 	* sysdeps/powerpc/stpcpy.S: Define & use symbolic register names.
diff --git a/sysdeps/i386/i686/strcmp.S b/sysdeps/i386/i686/strcmp.S
index b353db7e9d..eeaa393c26 100644
--- a/sysdeps/i386/i686/strcmp.S
+++ b/sysdeps/i386/i686/strcmp.S
@@ -51,6 +51,11 @@ L(oop):	movb	(%ecx), %al
 	CHECK_BOUNDS_HIGH (%edx, STR2(%esp), jbe)
 	jmp	L(out)
 
+#ifndef __BOUNDED_POINTERS__
+L(neq):	movl	$1, %eax
+	movl	$-1, %ecx
+	cmovbl	%ecx, %eax
+#else
 L(neq):	movl	$1, %eax
 	ja	L(chk)
 	negl	%eax
@@ -58,6 +63,7 @@ L(neq):	movl	$1, %eax
 	   the unequal characters.  */
 L(chk):	CHECK_BOUNDS_HIGH (%ecx, STR1(%esp), jb)
 	CHECK_BOUNDS_HIGH (%edx, STR2(%esp), jb)
+#endif
 
 L(out):	LEAVE
 	ret