>From b96858242b326999c8bac2949a85d02a0706a3a3 Mon Sep 17 00:00:00 2001
From: Paul Eggert
Date: Fri, 16 Dec 2016 18:20:21 -0800
Subject: [PATCH] builtin-expect: improve port to IBM XL C
Problem reported for z/OS by Daniel Richard G. in:
http://lists.gnu.org/archive/html/bug-gnulib/2016-12/msg00079.html
* m4/builtin-expect.m4 (gl___BUILTIN_EXPECT):
Test for directly.
---
ChangeLog | 6 ++++++
m4/builtin-expect.m4 | 22 ++++++++++++++++++----
2 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 2c44748..fc8bef9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2016-12-16 Paul Eggert
+ builtin-expect: improve port to IBM XL C
+ Problem reported for z/OS by Daniel Richard G. in:
+ http://lists.gnu.org/archive/html/bug-gnulib/2016-12/msg00079.html
+ * m4/builtin-expect.m4 (gl___BUILTIN_EXPECT):
+ Test for directly.
+
builtin-expect: port to IBM XL C
Problem reported for z/OS by Daniel Richard G. in:
http://lists.gnu.org/archive/html/bug-gnulib/2016-12/msg00074.html
diff --git a/m4/builtin-expect.m4 b/m4/builtin-expect.m4
index ce048ae..e448066 100644
--- a/m4/builtin-expect.m4
+++ b/m4/builtin-expect.m4
@@ -12,7 +12,7 @@ AC_DEFUN([gl___BUILTIN_EXPECT],
AC_CACHE_CHECK([for __builtin_expect],
[gl_cv___builtin_expect],
[AC_LINK_IFELSE(
- [AC_LANG_SOURCE([AC_INCLUDES_DEFAULT[
+ [AC_LANG_SOURCE([[
int
main (int argc, char **argv)
{
@@ -20,16 +20,30 @@ AC_DEFUN([gl___BUILTIN_EXPECT],
return argv[argc != 100][0];
}]])],
[gl_cv___builtin_expect=yes],
- [gl_cv___builtin_expect=no])])
+ [AC_LINK_IFELSE(
+ [AC_LANG_SOURCE([[
+ #include
+ int
+ main (int argc, char **argv)
+ {
+ argc = __builtin_expect (argc, 100);
+ return argv[argc != 100][0];
+ }]])],
+ [gl_cv___builtin_expect="in "],
+ [gl_cv___builtin_expect=no])])])
if test "$gl_cv___builtin_expect" = yes; then
AC_DEFINE([HAVE___BUILTIN_EXPECT], [1])
+ elif test "$gl_cv___builtin_expect" = "in "; then
+ AC_DEFINE([HAVE___BUILTIN_EXPECT], [2])
fi
AH_VERBATIM([HAVE___BUILTIN_EXPECT],
- [/* Define to 1 if the compiler or standard include files support
- __builtin_expect. */
+ [/* Define to 1 if the compiler supports __builtin_expect,
+ and to 2 if does. */
#undef HAVE___BUILTIN_EXPECT
#ifndef HAVE___BUILTIN_EXPECT
# define __builtin_expect(e, c) (e)
+#elif HAVE___BUILTIN_EXPECT == 2
+# include
#endif
])
])
--
2.7.4