summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2014-09-25 20:49:02 +0300
committerEli Zaretskii <eliz@gnu.org>2014-09-25 20:49:02 +0300
commit686b21966f812707e1d1c614ddd63d1d24fbdf18 (patch)
tree8bae22471f92a50249b97380143b6630cb6896a5
parent39234ddb3e95c7ec704b104220cdf4bb50768907 (diff)
downloademacs-686b21966f812707e1d1c614ddd63d1d24fbdf18.tar.gz
Don't use USE_STACK_LISP_OBJECTS on Windows with GCC older than 4.2.
src/lisp.h (USE_STACK_LISP_OBJECTS): Default to false for 32-bit MinGW builds that use GCC before 4.2. Fixes: debbugs:18559
-rw-r--r--src/ChangeLog3
-rw-r--r--src/lisp.h8
2 files changed, 10 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 9c360e64de0..87d33121495 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,8 @@
2014-09-25 Eli Zaretskii <eliz@gnu.org>
+ * lisp.h (USE_STACK_LISP_OBJECTS): Default to false for 32-bit
+ MinGW builds that use GCC before 4.2.
+
Default to stack objects on DOS_NT platforms as well.
* w32term.h (ALIGN_STACK) [__GNUC__]: Define to
__attribute__((force_align_arg_pointer)) for GCC 4.2 and later.
diff --git a/src/lisp.h b/src/lisp.h
index 82a99fcca34..b1f793c7282 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -286,7 +286,13 @@ error !;
http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00506.html. */
#ifndef USE_STACK_LISP_OBJECTS
# if defined __GNUC__ && !defined __clang__
-# define USE_STACK_LISP_OBJECTS true
+ /* 32-bit MinGW builds need at least GCC 4.2 to support this. */
+# if defined __MINGW32__ && !defined _W64 \
+ && __GNUC__ + (__GNUC_MINOR__ > 1) < 5
+# define USE_STACK_LISP_OBJECTS false
+# else /* !(__MINGW32__ && __GNUC__ < 4.2) */
+# define USE_STACK_LISP_OBJECTS true
+# endif
# else
# define USE_STACK_LISP_OBJECTS false
# endif