summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Nicolaescu <dann@ics.uci.edu>2010-11-13 12:22:52 -0500
committerChong Yidong <cyd@stupidchicken.com>2010-11-13 12:22:52 -0500
commit4d613e98a7ca89dbebbcc1a2865f8df04bf888f8 (patch)
treeb5abd818b623806a41023f2c549c24b17ca343b9
parentcdf015b1880d94bc414188ec5980171adc48bed2 (diff)
downloademacs-4d613e98a7ca89dbebbcc1a2865f8df04bf888f8.tar.gz
Backport fix for Bug#6170 from trunk.
Fix alloca definition when using gcc on non-gnu systems. * configure.in: Use the code sequence indicated by "info autoconf" for alloca (bug#6170).
-rw-r--r--ChangeLog6
-rw-r--r--configure.in22
-rw-r--r--src/config.in22
3 files changed, 32 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 75813c9e7aa..a6b47ed9415 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-11-13 Dan Nicolaescu <dann@ics.uci.edu>
+
+ Fix alloca definition when using gcc on non-gnu systems.
+ * configure.in: Use the code sequence indicated by "info autoconf"
+ for alloca (bug#6170).
+
2010-11-08 Stefan Monnier <monnier@iro.umontreal.ca>
* .dir-locals.el (log-edit-mode): Set log-edit-rewrite-fixes.
diff --git a/configure.in b/configure.in
index ca68db1b83d..b9e183cad3e 100644
--- a/configure.in
+++ b/configure.in
@@ -2927,15 +2927,19 @@ extern char *getenv ();
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
-#ifndef __GNUC__
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else /* AIX files deal with #pragma. */
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-# endif
-# endif /* HAVE_ALLOCA_H */
-#endif /* __GNUC__ */
+#ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+#elif defined __GNUC__
+# define alloca __builtin_alloca
+#elif defined _AIX
+# define alloca __alloca
+#else
+# include <stddef.h>
+# ifdef __cplusplus
+extern "C"
+# endif
+void *alloca (size_t);
+#endif
#ifndef HAVE_SIZE_T
typedef unsigned size_t;
#endif
diff --git a/src/config.in b/src/config.in
index 4667c0feb28..90098719511 100644
--- a/src/config.in
+++ b/src/config.in
@@ -1178,15 +1178,19 @@ extern char *getenv ();
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
-#ifndef __GNUC__
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else /* AIX files deal with #pragma. */
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-# endif
-# endif /* HAVE_ALLOCA_H */
-#endif /* __GNUC__ */
+#ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+#elif defined __GNUC__
+# define alloca __builtin_alloca
+#elif defined _AIX
+# define alloca __alloca
+#else
+# include <stddef.h>
+# ifdef __cplusplus
+extern "C"
+# endif
+void *alloca (size_t);
+#endif
#ifndef HAVE_SIZE_T
typedef unsigned size_t;
#endif