* sysdeps/i386/bits/string.h (__memrchr): Do addition in assembler
	to make it conforming C.
	* sysdeps/i386/i486/bits/string.h (__memrchr): Likewise.
This commit is contained in:
Andreas Jaeger 2003-09-05 10:03:19 +00:00
parent 6ae3b383a5
commit b7f75e247b
3 changed files with 13 additions and 6 deletions

View File

@ -1,5 +1,9 @@
2003-09-05 Andreas Jaeger <aj@suse.de>
* sysdeps/i386/bits/string.h (__memrchr): Do addition in assembler
to make it conforming C.
* sysdeps/i386/i486/bits/string.h (__memrchr): Likewise.
* sysdeps/unix/sysv/linux/i386/fcntl.c (__fcntl_nocancel): Change
prototype to use variable argument lists and get the possible one
argument via va_arg.

View File

@ -1,5 +1,5 @@
/* Optimized, inlined string functions. i386 version.
Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1997,1998,1999,2000,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -321,11 +321,12 @@ __memrchr (__const void *__s, int __c, size_t __n)
"repne; scasb\n\t"
"je 1f\n\t"
"orl $-1,%0\n"
"1:\tcld"
"1:\tcld\n\t"
"incl %0"
: "=D" (__res), "=&c" (__d0)
: "a" (__c), "0" (__s + __n - 1), "1" (__n)
: "cc");
return __res + 1;
return __res;
}
# ifdef __USE_GNU
# define memrchr(s, c, n) __memrchr (s, c, n)

View File

@ -484,7 +484,8 @@ __memrchr (__const void *__s, int __c, size_t __n)
("std\n\t"
"repne; scasb\n\t"
"cmovne %2,%0\n\t"
"cld"
"cld\n\t"
"incl %0"
: "=D" (__res), "=&c" (__d0), "=&r" (__d1)
: "a" (__c), "0" (__s + __n - 1), "1" (__n), "2" (-1),
"m" ( *(struct { __extension__ char __x[__n]; } *)__s)
@ -495,13 +496,14 @@ __memrchr (__const void *__s, int __c, size_t __n)
"repne; scasb\n\t"
"je 1f\n\t"
"orl $-1,%0\n"
"1:\tcld"
"1:\tcld\n\t"
"incl %0"
: "=D" (__res), "=&c" (__d0)
: "a" (__c), "0" (__s + __n - 1), "1" (__n),
"m" ( *(struct { __extension__ char __x[__n]; } *)__s)
: "cc");
# endif
return __res + 1;
return __res;
}
# ifdef __USE_GNU
# define memrchr(s, c, n) __memrchr ((s), (c), (n))