* iconv/gconv_simple.c: Add some branch prediction.

This commit is contained in:
Ulrich Drepper 2007-10-12 04:40:48 +00:00
parent 6dd3748b5d
commit 26a51060b1
2 changed files with 11 additions and 9 deletions

View File

@ -1,3 +1,7 @@
2007-10-11 Ulrich Drepper <drepper@redhat.com>
* iconv/gconv_simple.c: Add some branch prediction.
2007-10-12 Jakub Jelinek <jakub@redhat.com>
* locale/programs/ld-collate.c (collate_read): If ignore_content

View File

@ -1,5 +1,5 @@
/* Simple transformations functions.
Copyright (C) 1997-2003, 2004, 2005 Free Software Foundation, Inc.
Copyright (C) 1997-2003, 2004, 2005, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -880,7 +880,7 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
{ \
uint32_t wc = *((const uint32_t *) inptr); \
\
if (wc < 0x80) \
if (__builtin_expect (wc < 0x80, 1)) \
/* It's an one byte sequence. */ \
*outptr++ = (unsigned char) wc; \
else if (__builtin_expect (wc <= 0x7fffffff, 1)) \
@ -940,21 +940,19 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
#define LOOPFCT FROM_LOOP
#define BODY \
{ \
uint32_t ch; \
uint_fast32_t cnt; \
uint_fast32_t i; \
\
/* Next input byte. */ \
ch = *inptr; \
uint32_t ch = *inptr; \
\
if (ch < 0x80) \
if (__builtin_expect (ch < 0x80, 1)) \
{ \
/* One byte sequence. */ \
cnt = 1; \
++inptr; \
} \
else \
{ \
uint_fast32_t cnt; \
uint_fast32_t i; \
\
if (ch >= 0xc2 && ch < 0xe0) \
{ \
/* We expect two bytes. The first byte cannot be 0xc0 or 0xc1, \