/* isl_config.h.in.  Generated from configure.ac by autoheader.  */

/* Define if HeaderSearchOptions::AddPath takes 4 arguments */
#undef ADDPATH_TAKES_4_ARGUMENTS

/* Clang installation prefix */
#undef CLANG_PREFIX

/* Define if CompilerInstance::createDiagnostics takes argc and argv */
#undef CREATEDIAGNOSTICS_TAKES_ARG

/* Define if CompilerInstance::createPreprocessor takes TranslationUnitKind */
#undef CREATEPREPROCESSOR_TAKES_TUKIND

/* Define if TargetInfo::CreateTargetInfo takes pointer */
#undef CREATETARGETINFO_TAKES_POINTER

/* Define if TargetInfo::CreateTargetInfo takes shared_ptr */
#undef CREATETARGETINFO_TAKES_SHARED_PTR

/* Define if Driver constructor takes default image name */
#undef DRIVER_CTOR_TAKES_DEFAULTIMAGENAME

/* Define to Diagnostic for older versions of clang */
#undef DiagnosticsEngine

/* most gcc compilers know a function __attribute__((__warn_unused_result__))
   */
#undef GCC_WARN_UNUSED_RESULT

/* Define if llvm/ADT/OwningPtr.h exists */
#undef HAVE_ADT_OWNINGPTR_H

/* Define if clang/Basic/DiagnosticOptions.h exists */
#undef HAVE_BASIC_DIAGNOSTICOPTIONS_H

/* define if the compiler supports basic C++11 syntax */
#undef HAVE_CXX11

/* Define if Driver constructor takes CXXIsProduction argument */
#undef HAVE_CXXISPRODUCTION

/* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */
#undef HAVE_DECL_FFS

/* Define to 1 if you have the declaration of `mp_get_memory_functions', and
   to 0 if you don't. */
#undef HAVE_DECL_MP_GET_MEMORY_FUNCTIONS

/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
   don't. */
#undef HAVE_DECL_SNPRINTF

/* Define to 1 if you have the declaration of `strcasecmp', and to 0 if you
   don't. */
#undef HAVE_DECL_STRCASECMP

/* Define to 1 if you have the declaration of `strncasecmp', and to 0 if you
   don't. */
#undef HAVE_DECL_STRNCASECMP

/* Define to 1 if you have the declaration of `_BitScanForward', and to 0 if
   you don't. */
#undef HAVE_DECL__BITSCANFORWARD

/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you
   don't. */
#undef HAVE_DECL__SNPRINTF

/* Define to 1 if you have the declaration of `_stricmp', and to 0 if you
   don't. */
#undef HAVE_DECL__STRICMP

/* Define to 1 if you have the declaration of `_strnicmp', and to 0 if you
   don't. */
#undef HAVE_DECL__STRNICMP

/* Define to 1 if you have the declaration of `__builtin_ffs', and to 0 if you
   don't. */
#undef HAVE_DECL___BUILTIN_FFS

/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H

/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H

/* Define if Driver constructor takes IsProduction argument */
#undef HAVE_ISPRODUCTION

/* Define if clang/Lex/PreprocessorOptions.h exists */
#undef HAVE_LEX_PREPROCESSOROPTIONS_H

/* Define to 1 if you have the `gmp' library (-lgmp). */
#undef HAVE_LIBGMP

/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H

/* Define if SourceManager has a setMainFileID method */
#undef HAVE_SETMAINFILEID

/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H

/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H

/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H

/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H

/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H

/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H

/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H

/* define if your compiler has __attribute__ */
#undef HAVE___ATTRIBUTE__

/* Return type of HandleTopLevelDeclReturn */
#undef HandleTopLevelDeclContinue

/* Return type of HandleTopLevelDeclReturn */
#undef HandleTopLevelDeclReturn

/* Define to InputKind::C for newer versions of clang */
#undef IK_C

/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR

/* Name of package */
#undef PACKAGE

/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT

/* Define to the full name of this package. */
#undef PACKAGE_NAME

/* Define to the full name and version of this package. */
#undef PACKAGE_STRING

/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME

/* Define to the home page for this package. */
#undef PACKAGE_URL

/* Define to the version of this package. */
#undef PACKAGE_VERSION

/* Defined if CompilerInstance::setInvocation takes a shared_ptr */
#undef SETINVOCATION_TAKES_SHARED_PTR

/* Define if CompilerInvocation::setLangDefaults takes 5 arguments */
#undef SETLANGDEFAULTS_TAKES_5_ARGUMENTS

/* The size of `char', as computed by sizeof. */
#undef SIZEOF_CHAR

/* The size of `int', as computed by sizeof. */
#undef SIZEOF_INT

/* The size of `long', as computed by sizeof. */
#undef SIZEOF_LONG

/* The size of `short', as computed by sizeof. */
#undef SIZEOF_SHORT

/* The size of `void*', as computed by sizeof. */
#undef SIZEOF_VOIDP

/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS

/* Define if Driver::BuildCompilation takes ArrayRef */
#undef USE_ARRAYREF

/* use gmp to implement isl_int */
#undef USE_GMP_FOR_MP

/* use imath to implement isl_int */
#undef USE_IMATH_FOR_MP

/* Use small integer optimization */
#undef USE_SMALL_INT_OPT

/* Version number of package */
#undef VERSION

/* Define to getParamType for newer versions of clang */
#undef getArgType

/* Define to getHostTriple for older versions of clang */
#undef getDefaultTargetTriple

/* Define to getInstantiationLineNumber for older versions of clang */
#undef getExpansionLineNumber

/* Define to getImmediateInstantiationRange for older versions of clang */
#undef getImmediateExpansionRange

/* Define to getNumParams for newer versions of clang */
#undef getNumArgs

/* Define to getResultType for older versions of clang */
#undef getReturnType

/* Define to InitializeBuiltins for older versions of clang */
#undef initializeBuiltins

#include <isl_config_post.h>
