aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Corallo2024-05-18 08:59:17 +0200
committerAndrea Corallo2024-05-18 09:03:53 +0200
commit19c983ddedf083f82008472c13dfd08ec94b615f (patch)
treef65cbb7f2eeffc21473a9ccf614d3c5e12cd6302
parentdb039399cccd38b767bf6a30ba6c5da593eb69cf (diff)
downloademacs-19c983ddedf083f82008472c13dfd08ec94b615f.tar.gz
emacs-19c983ddedf083f82008472c13dfd08ec94b615f.zip
* Work around GCC bug affecting Garbage Collection (bug#65727).
* src/lisp.h (flush_stack_call_func): Prevent GCC sibling call optimization to run with an asm inline.
-rw-r--r--src/lisp.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/lisp.h b/src/lisp.h
index 41f8af35e8a..8ee37f5298a 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -4479,6 +4479,12 @@ flush_stack_call_func (void (*func) (void *arg), void *arg)
4479{ 4479{
4480 __builtin_unwind_init (); 4480 __builtin_unwind_init ();
4481 flush_stack_call_func1 (func, arg); 4481 flush_stack_call_func1 (func, arg);
4482 /* Work around GCC sibling call optimization making
4483 '__builtin_unwind_init' ineffective (bug#65727).
4484 See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115132>. */
4485#if defined __GNUC__ && !defined __clang__
4486 asm ("");
4487#endif
4482} 4488}
4483 4489
4484extern void garbage_collect (void); 4490extern void garbage_collect (void);