From 253a4e7a9f26facc7e266f700832a213473d05f9 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Tue, 10 Jun 2008 13:00:27 -0700 Subject: [PATCH] Make it possible to use "inline" and "restrict" Put the appropriate machinery in place to be able to use the "inline" and "restrict" keywords with appropriate semantics. --- compiler.h | 16 ++++++++++++++-- configure.in | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/compiler.h b/compiler.h index 51f498380..82b0d7ae7 100644 --- a/compiler.h +++ b/compiler.h @@ -22,7 +22,17 @@ #ifdef HAVE_CONFIG_H # include "config.h" -#endif +/* autoconf doesn't define these if they are redundant, but we want to + be able to #ifdef them... */ +#else +/* Default these to unsupported unless we have config.h */ +# ifndef inline +# define inline +# endif +# ifndef restrict +# define restrict +# endif +#endif /* HAVE_CONFIG_H */ /* This is required to get the standard macros when compiling with a C++ compiler. This must be defined *before* is @@ -71,7 +81,9 @@ int vsnprintf(char *, size_t, const char *, va_list); # ifdef HAVE_STDBOOL_H # include # else -typedef enum { false, true } bool; +/* This is sort of dangerous, since casts will behave different than + casting to the standard boolean type. Always use !!, not (bool). */ +typedef enum bool { false, true } bool; # endif #endif diff --git a/configure.in b/configure.in index 9a735141f..155194893 100644 --- a/configure.in +++ b/configure.in @@ -92,6 +92,8 @@ AC_CHECK_HEADERS(stdbool.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST +AC_C_INLINE +AC_C_RESTRICT AC_TYPE_SIZE_T AC_C_BIGENDIAN(AC_DEFINE(WORDS_BIGENDIAN),AC_DEFINE(WORDS_LITTLEENDIAN)) AH_TEMPLATE(WORDS_BIGENDIAN,