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