diff options
| author | Andrea Corallo | 2024-05-18 08:59:17 +0200 |
|---|---|---|
| committer | Andrea Corallo | 2024-05-18 09:03:53 +0200 |
| commit | 19c983ddedf083f82008472c13dfd08ec94b615f (patch) | |
| tree | f65cbb7f2eeffc21473a9ccf614d3c5e12cd6302 | |
| parent | db039399cccd38b767bf6a30ba6c5da593eb69cf (diff) | |
| download | emacs-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.h | 6 |
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 | ||
| 4484 | extern void garbage_collect (void); | 4490 | extern void garbage_collect (void); |