|
|
|
From 6806b6f3b4870204737e5d465bab2fdbc1c15de0 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Stefan Liebler <stli@linux.vnet.ibm.com>
|
|
|
|
Date: Mon, 7 Nov 2016 16:03:46 +0100
|
|
|
|
Subject: [PATCH 06/17] Use glibc_likely instead __builtin_expect.
|
|
|
|
|
|
|
|
Upstream commit a1ffb40e32741f992c743e7b16c061fefa3747ac
|
|
|
|
|
|
|
|
This part is a prerequirement for the s390 iconv patches.
|
|
|
|
---
|
|
|
|
sysdeps/s390/s390-64/utf16-utf32-z9.c | 10 +++++-----
|
|
|
|
sysdeps/s390/s390-64/utf8-utf16-z9.c | 26 +++++++++++++-------------
|
|
|
|
sysdeps/s390/s390-64/utf8-utf32-z9.c | 32 ++++++++++++++++----------------
|
|
|
|
3 files changed, 34 insertions(+), 34 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/sysdeps/s390/s390-64/utf16-utf32-z9.c b/sysdeps/s390/s390-64/utf16-utf32-z9.c
|
|
|
|
index 9eaa1a5..94a1a33 100644
|
|
|
|
--- a/sysdeps/s390/s390-64/utf16-utf32-z9.c
|
|
|
|
+++ b/sysdeps/s390/s390-64/utf16-utf32-z9.c
|
|
|
|
@@ -54,7 +54,7 @@
|
|
|
|
if (dir == to_utf16) \
|
|
|
|
{ \
|
|
|
|
/* Emit the UTF-16 Byte Order Mark. */ \
|
|
|
|
- if (__builtin_expect (outbuf + 2 > outend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (outbuf + 2 > outend)) \
|
|
|
|
return __GCONV_FULL_OUTPUT; \
|
|
|
|
\
|
|
|
|
put16u (outbuf, BOM_UTF16); \
|
|
|
|
@@ -63,7 +63,7 @@
|
|
|
|
else \
|
|
|
|
{ \
|
|
|
|
/* Emit the UTF-32 Byte Order Mark. */ \
|
|
|
|
- if (__builtin_expect (outbuf + 4 > outend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (outbuf + 4 > outend)) \
|
|
|
|
return __GCONV_FULL_OUTPUT; \
|
|
|
|
\
|
|
|
|
put32u (outbuf, BOM_UTF32); \
|
|
|
|
@@ -236,13 +236,13 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
{ \
|
|
|
|
/* An isolated low-surrogate was found. This has to be \
|
|
|
|
considered ill-formed. */ \
|
|
|
|
- if (__builtin_expect (u1 >= 0xdc00, 0)) \
|
|
|
|
+ if (__glibc_unlikely (u1 >= 0xdc00)) \
|
|
|
|
{ \
|
|
|
|
STANDARD_FROM_LOOP_ERR_HANDLER (2); \
|
|
|
|
} \
|
|
|
|
/* It's a surrogate character. At least the first word says \
|
|
|
|
it is. */ \
|
|
|
|
- if (__builtin_expect (inptr + 4 > inend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (inptr + 4 > inend)) \
|
|
|
|
{ \
|
|
|
|
/* We don't have enough input for another complete input \
|
|
|
|
character. */ \
|
|
|
|
@@ -306,7 +306,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
uint16_t out; \
|
|
|
|
\
|
|
|
|
/* Generate a surrogate character. */ \
|
|
|
|
- if (__builtin_expect (outptr + 4 > outend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (outptr + 4 > outend)) \
|
|
|
|
{ \
|
|
|
|
/* Overflow in the output buffer. */ \
|
|
|
|
result = __GCONV_FULL_OUTPUT; \
|
|
|
|
diff --git a/sysdeps/s390/s390-64/utf8-utf16-z9.c b/sysdeps/s390/s390-64/utf8-utf16-z9.c
|
|
|
|
index 9f59177..8e0515c 100644
|
|
|
|
--- a/sysdeps/s390/s390-64/utf8-utf16-z9.c
|
|
|
|
+++ b/sysdeps/s390/s390-64/utf8-utf16-z9.c
|
|
|
|
@@ -50,7 +50,7 @@
|
|
|
|
&& data->__invocation_counter == 0) \
|
|
|
|
{ \
|
|
|
|
/* Emit the UTF-16 Byte Order Mark. */ \
|
|
|
|
- if (__builtin_expect (outbuf + 2 > outend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (outbuf + 2 > outend)) \
|
|
|
|
return __GCONV_FULL_OUTPUT; \
|
|
|
|
\
|
|
|
|
put16u (outbuf, BOM_UTF16); \
|
|
|
|
@@ -197,7 +197,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
if ((inptr[i] & 0xc0) != 0x80) \
|
|
|
|
break; \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (inptr + i == inend, 1)) \
|
|
|
|
+ if (__glibc_likely (inptr + i == inend)) \
|
|
|
|
{ \
|
|
|
|
result = __GCONV_INCOMPLETE_INPUT; \
|
|
|
|
break; \
|
|
|
|
@@ -210,7 +210,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
/* Next input byte. */ \
|
|
|
|
uint16_t ch = *inptr; \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (ch < 0x80, 1)) \
|
|
|
|
+ if (__glibc_likely (ch < 0x80)) \
|
|
|
|
{ \
|
|
|
|
/* One byte sequence. */ \
|
|
|
|
++inptr; \
|
|
|
|
@@ -228,13 +228,13 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
cnt = 2; \
|
|
|
|
ch &= 0x1f; \
|
|
|
|
} \
|
|
|
|
- else if (__builtin_expect ((ch & 0xf0) == 0xe0, 1)) \
|
|
|
|
+ else if (__glibc_likely ((ch & 0xf0) == 0xe0)) \
|
|
|
|
{ \
|
|
|
|
/* We expect three bytes. */ \
|
|
|
|
cnt = 3; \
|
|
|
|
ch &= 0x0f; \
|
|
|
|
} \
|
|
|
|
- else if (__builtin_expect ((ch & 0xf8) == 0xf0, 1)) \
|
|
|
|
+ else if (__glibc_likely ((ch & 0xf8) == 0xf0)) \
|
|
|
|
{ \
|
|
|
|
/* We expect four bytes. */ \
|
|
|
|
cnt = 4; \
|
|
|
|
@@ -255,7 +255,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
STANDARD_FROM_LOOP_ERR_HANDLER (i); \
|
|
|
|
} \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (inptr + cnt > inend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (inptr + cnt > inend)) \
|
|
|
|
{ \
|
|
|
|
/* We don't have enough input. But before we report \
|
|
|
|
that check that all the bytes are correct. */ \
|
|
|
|
@@ -263,7 +263,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
if ((inptr[i] & 0xc0) != 0x80) \
|
|
|
|
break; \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (inptr + i == inend, 1)) \
|
|
|
|
+ if (__glibc_likely (inptr + i == inend)) \
|
|
|
|
{ \
|
|
|
|
result = __GCONV_INCOMPLETE_INPUT; \
|
|
|
|
break; \
|
|
|
|
@@ -278,7 +278,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
low) are needed. */ \
|
|
|
|
uint16_t zabcd, high, low; \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (outptr + 4 > outend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (outptr + 4 > outend)) \
|
|
|
|
{ \
|
|
|
|
/* Overflow in the output buffer. */ \
|
|
|
|
result = __GCONV_FULL_OUTPUT; \
|
|
|
|
@@ -368,7 +368,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
\
|
|
|
|
uint16_t c = get16 (inptr); \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (c <= 0x007f, 1)) \
|
|
|
|
+ if (__glibc_likely (c <= 0x007f)) \
|
|
|
|
{ \
|
|
|
|
/* Single byte UTF-8 char. */ \
|
|
|
|
*outptr = c & 0xff; \
|
|
|
|
@@ -378,7 +378,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
{ \
|
|
|
|
/* Two byte UTF-8 char. */ \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (outptr + 2 > outend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (outptr + 2 > outend)) \
|
|
|
|
{ \
|
|
|
|
/* Overflow in the output buffer. */ \
|
|
|
|
result = __GCONV_FULL_OUTPUT; \
|
|
|
|
@@ -397,7 +397,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
{ \
|
|
|
|
/* Three byte UTF-8 char. */ \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (outptr + 3 > outend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (outptr + 3 > outend)) \
|
|
|
|
{ \
|
|
|
|
/* Overflow in the output buffer. */ \
|
|
|
|
result = __GCONV_FULL_OUTPUT; \
|
|
|
|
@@ -419,14 +419,14 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
/* Four byte UTF-8 char. */ \
|
|
|
|
uint16_t low, uvwxy; \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (outptr + 4 > outend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (outptr + 4 > outend)) \
|
|
|
|
{ \
|
|
|
|
/* Overflow in the output buffer. */ \
|
|
|
|
result = __GCONV_FULL_OUTPUT; \
|
|
|
|
break; \
|
|
|
|
} \
|
|
|
|
inptr += 2; \
|
|
|
|
- if (__builtin_expect (inptr + 2 > inend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (inptr + 2 > inend)) \
|
|
|
|
{ \
|
|
|
|
result = __GCONV_INCOMPLETE_INPUT; \
|
|
|
|
break; \
|
|
|
|
diff --git a/sysdeps/s390/s390-64/utf8-utf32-z9.c b/sysdeps/s390/s390-64/utf8-utf32-z9.c
|
|
|
|
index a807980..c657a38 100644
|
|
|
|
--- a/sysdeps/s390/s390-64/utf8-utf32-z9.c
|
|
|
|
+++ b/sysdeps/s390/s390-64/utf8-utf32-z9.c
|
|
|
|
@@ -52,7 +52,7 @@
|
|
|
|
&& data->__invocation_counter == 0) \
|
|
|
|
{ \
|
|
|
|
/* Emit the Byte Order Mark. */ \
|
|
|
|
- if (__builtin_expect (outbuf + 4 > outend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (outbuf + 4 > outend)) \
|
|
|
|
return __GCONV_FULL_OUTPUT; \
|
|
|
|
\
|
|
|
|
put32u (outbuf, BOM); \
|
|
|
|
@@ -201,7 +201,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
if ((inptr[i] & 0xc0) != 0x80) \
|
|
|
|
break; \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (inptr + i == inend, 1)) \
|
|
|
|
+ if (__glibc_likely (inptr + i == inend)) \
|
|
|
|
{ \
|
|
|
|
result = __GCONV_INCOMPLETE_INPUT; \
|
|
|
|
break; \
|
|
|
|
@@ -214,7 +214,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
/* Next input byte. */ \
|
|
|
|
uint32_t ch = *inptr; \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (ch < 0x80, 1)) \
|
|
|
|
+ if (__glibc_likely (ch < 0x80)) \
|
|
|
|
{ \
|
|
|
|
/* One byte sequence. */ \
|
|
|
|
++inptr; \
|
|
|
|
@@ -232,25 +232,25 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
cnt = 2; \
|
|
|
|
ch &= 0x1f; \
|
|
|
|
} \
|
|
|
|
- else if (__builtin_expect ((ch & 0xf0) == 0xe0, 1)) \
|
|
|
|
+ else if (__glibc_likely ((ch & 0xf0) == 0xe0)) \
|
|
|
|
{ \
|
|
|
|
/* We expect three bytes. */ \
|
|
|
|
cnt = 3; \
|
|
|
|
ch &= 0x0f; \
|
|
|
|
} \
|
|
|
|
- else if (__builtin_expect ((ch & 0xf8) == 0xf0, 1)) \
|
|
|
|
+ else if (__glibc_likely ((ch & 0xf8) == 0xf0)) \
|
|
|
|
{ \
|
|
|
|
/* We expect four bytes. */ \
|
|
|
|
cnt = 4; \
|
|
|
|
ch &= 0x07; \
|
|
|
|
} \
|
|
|
|
- else if (__builtin_expect ((ch & 0xfc) == 0xf8, 1)) \
|
|
|
|
+ else if (__glibc_likely ((ch & 0xfc) == 0xf8)) \
|
|
|
|
{ \
|
|
|
|
/* We expect five bytes. */ \
|
|
|
|
cnt = 5; \
|
|
|
|
ch &= 0x03; \
|
|
|
|
} \
|
|
|
|
- else if (__builtin_expect ((ch & 0xfe) == 0xfc, 1)) \
|
|
|
|
+ else if (__glibc_likely ((ch & 0xfe) == 0xfc)) \
|
|
|
|
{ \
|
|
|
|
/* We expect six bytes. */ \
|
|
|
|
cnt = 6; \
|
|
|
|
@@ -271,7 +271,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
STANDARD_FROM_LOOP_ERR_HANDLER (i); \
|
|
|
|
} \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (inptr + cnt > inend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (inptr + cnt > inend)) \
|
|
|
|
{ \
|
|
|
|
/* We don't have enough input. But before we report \
|
|
|
|
that check that all the bytes are correct. */ \
|
|
|
|
@@ -279,7 +279,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
if ((inptr[i] & 0xc0) != 0x80) \
|
|
|
|
break; \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (inptr + i == inend, 1)) \
|
|
|
|
+ if (__glibc_likely (inptr + i == inend)) \
|
|
|
|
{ \
|
|
|
|
result = __GCONV_INCOMPLETE_INPUT; \
|
|
|
|
break; \
|
|
|
|
@@ -338,19 +338,19 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
cnt = 2; \
|
|
|
|
ch &= 0x1f; \
|
|
|
|
} \
|
|
|
|
- else if (__builtin_expect ((ch & 0xf0) == 0xe0, 1)) \
|
|
|
|
+ else if (__glibc_likely ((ch & 0xf0) == 0xe0)) \
|
|
|
|
{ \
|
|
|
|
/* We expect three bytes. */ \
|
|
|
|
cnt = 3; \
|
|
|
|
ch &= 0x0f; \
|
|
|
|
} \
|
|
|
|
- else if (__builtin_expect ((ch & 0xf8) == 0xf0, 1)) \
|
|
|
|
+ else if (__glibc_likely ((ch & 0xf8) == 0xf0)) \
|
|
|
|
{ \
|
|
|
|
/* We expect four bytes. */ \
|
|
|
|
cnt = 4; \
|
|
|
|
ch &= 0x07; \
|
|
|
|
} \
|
|
|
|
- else if (__builtin_expect ((ch & 0xfc) == 0xf8, 1)) \
|
|
|
|
+ else if (__glibc_likely ((ch & 0xfc) == 0xf8)) \
|
|
|
|
{ \
|
|
|
|
/* We expect five bytes. */ \
|
|
|
|
cnt = 5; \
|
|
|
|
@@ -431,7 +431,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
\
|
|
|
|
uint32_t wc = *((const uint32_t *) inptr); \
|
|
|
|
\
|
|
|
|
- if (__builtin_expect (wc <= 0x7f, 1)) \
|
|
|
|
+ if (__glibc_likely (wc <= 0x7f)) \
|
|
|
|
{ \
|
|
|
|
/* Single UTF-8 char. */ \
|
|
|
|
*outptr = (uint8_t)wc; \
|
|
|
|
@@ -440,7 +440,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
else if (wc <= 0x7ff) \
|
|
|
|
{ \
|
|
|
|
/* Two UTF-8 chars. */ \
|
|
|
|
- if (__builtin_expect (outptr + 2 > outend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (outptr + 2 > outend)) \
|
|
|
|
{ \
|
|
|
|
/* Overflow in the output buffer. */ \
|
|
|
|
result = __GCONV_FULL_OUTPUT; \
|
|
|
|
@@ -458,7 +458,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
else if (wc <= 0xffff) \
|
|
|
|
{ \
|
|
|
|
/* Three UTF-8 chars. */ \
|
|
|
|
- if (__builtin_expect (outptr + 3 > outend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (outptr + 3 > outend)) \
|
|
|
|
{ \
|
|
|
|
/* Overflow in the output buffer. */ \
|
|
|
|
result = __GCONV_FULL_OUTPUT; \
|
|
|
|
@@ -478,7 +478,7 @@ gconv_end (struct __gconv_step *data)
|
|
|
|
else if (wc <= 0x10ffff) \
|
|
|
|
{ \
|
|
|
|
/* Four UTF-8 chars. */ \
|
|
|
|
- if (__builtin_expect (outptr + 4 > outend, 0)) \
|
|
|
|
+ if (__glibc_unlikely (outptr + 4 > outend)) \
|
|
|
|
{ \
|
|
|
|
/* Overflow in the output buffer. */ \
|
|
|
|
result = __GCONV_FULL_OUTPUT; \
|
|
|
|
--
|
|
|
|
1.8.3.1
|
|
|
|
|