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