#undef HAVE_ALLOCA_H
#ifndef NOT_C_CODE
-#ifdef __GNUC__
+#if defined (__CYGWIN__)
+/* We get complaints about redefinitions if we just use the __GNUC__
+ definition: stdlib.h also includes alloca.h, which defines it slightly
+ differently */
+#include <alloca.h>
+#elif defined (__GNUC__)
#define alloca __builtin_alloca
#elif defined __DECC
#include <alloca.h>
#pragma intrinsic(alloca)
+#elif defined __INTEL_COMPILER && defined HAVE_ALLOCA_H
+/* defer #include to end of file */
#elif defined HAVE_ALLOCA_H
#include <alloca.h>
#elif defined(_AIX)
#undef PDUMP
+#ifndef NOT_C_CODE
+#if defined __INTEL_COMPILER && defined HAVE_ALLOCA_H
+/* icc's alloca.h pulls in <features.h>,
+ but that must be done after _GNU_SOURCE and friends are defined */
+#include <alloca.h>
+#endif
+#endif /* C code */
+
#endif /* _SRC_CONFIG_H_ */