1dnl Check for __builtin_expect.
2
3dnl Copyright 2016-2018 Free Software Foundation, Inc.
4dnl This file is free software; the Free Software Foundation
5dnl gives unlimited permission to copy and/or distribute it,
6dnl with or without modifications, as long as this notice is preserved.
7
8dnl Written by Paul Eggert.
9
10AC_DEFUN([gl___BUILTIN_EXPECT],
11[
12  AC_CACHE_CHECK([for __builtin_expect],
13    [gl_cv___builtin_expect],
14    [AC_LINK_IFELSE(
15       [AC_LANG_SOURCE([[
16         int
17         main (int argc, char **argv)
18         {
19           argc = __builtin_expect (argc, 100);
20           return argv[argc != 100][0];
21         }]])],
22       [gl_cv___builtin_expect=yes],
23       [AC_LINK_IFELSE(
24          [AC_LANG_SOURCE([[
25             #include <builtins.h>
26             int
27             main (int argc, char **argv)
28             {
29               argc = __builtin_expect (argc, 100);
30               return argv[argc != 100][0];
31             }]])],
32          [gl_cv___builtin_expect="in <builtins.h>"],
33          [gl_cv___builtin_expect=no])])])
34  if test "$gl_cv___builtin_expect" = yes; then
35    AC_DEFINE([HAVE___BUILTIN_EXPECT], [1])
36  elif test "$gl_cv___builtin_expect" = "in <builtins.h>"; then
37    AC_DEFINE([HAVE___BUILTIN_EXPECT], [2])
38  fi
39  AH_VERBATIM([HAVE___BUILTIN_EXPECT],
40    [/* Define to 1 if the compiler supports __builtin_expect,
41   and to 2 if <builtins.h> does.  */
42#undef HAVE___BUILTIN_EXPECT
43#ifndef HAVE___BUILTIN_EXPECT
44# define __builtin_expect(e, c) (e)
45#elif HAVE___BUILTIN_EXPECT == 2
46# include <builtins.h>
47#endif
48    ])
49])
50