Commit | Line | Data |
---|---|---|
7a6dbc2f SDJ |
1 | dnl Check for __builtin_expect. |
2 | ||
3 | dnl Copyright 2016-2018 Free Software Foundation, Inc. | |
4 | dnl This file is free software; the Free Software Foundation | |
5 | dnl gives unlimited permission to copy and/or distribute it, | |
6 | dnl with or without modifications, as long as this notice is preserved. | |
7 | ||
8 | dnl Written by Paul Eggert. | |
9 | ||
10 | AC_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 | ]) |