diff options
| author | Gerd Möllmann | 2024-10-19 04:50:24 +0200 |
|---|---|---|
| committer | Gerd Möllmann | 2024-10-19 04:50:24 +0200 |
| commit | d864c26b207362b4591dc821fe8bae1394c61281 (patch) | |
| tree | 280fc2df9dd8a8065061387fe62eea82c32ebd7a /src/bytecode.c | |
| parent | 95a30325a84b9a3cefbfbd800141b6ffdfb3e26c (diff) | |
| parent | 1854f2751e3f73e1e5f12f6de993b6357de1766b (diff) | |
| download | emacs-d864c26b207362b4591dc821fe8bae1394c61281.tar.gz emacs-d864c26b207362b4591dc821fe8bae1394c61281.zip | |
Merge branch 'master' into scratch/igc
Diffstat (limited to 'src/bytecode.c')
| -rw-r--r-- | src/bytecode.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index 07104a4c80e..31f7404cbd1 100644 --- a/src/bytecode.c +++ b/src/bytecode.c | |||
| @@ -30,11 +30,6 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ | |||
| 30 | #include "window.h" | 30 | #include "window.h" |
| 31 | #include "puresize.h" | 31 | #include "puresize.h" |
| 32 | 32 | ||
| 33 | /* Work around GCC bug 54561. */ | ||
| 34 | #if GNUC_PREREQ (4, 3, 0) | ||
| 35 | # pragma GCC diagnostic ignored "-Wclobbered" | ||
| 36 | #endif | ||
| 37 | |||
| 38 | /* Define BYTE_CODE_SAFE true to enable some minor sanity checking, | 33 | /* Define BYTE_CODE_SAFE true to enable some minor sanity checking, |
| 39 | useful for debugging the byte compiler. It defaults to false. */ | 34 | useful for debugging the byte compiler. It defaults to false. */ |
| 40 | 35 | ||
| @@ -551,6 +546,12 @@ exec_byte_code (Lisp_Object fun, ptrdiff_t args_template, | |||
| 551 | for (ptrdiff_t i = nargs - rest; i < nonrest; i++) | 546 | for (ptrdiff_t i = nargs - rest; i < nonrest; i++) |
| 552 | PUSH (Qnil); | 547 | PUSH (Qnil); |
| 553 | 548 | ||
| 549 | unsigned char volatile saved_quitcounter; | ||
| 550 | #if GCC_LINT && __GNUC__ && !__clang__ | ||
| 551 | Lisp_Object *volatile saved_vectorp; | ||
| 552 | unsigned char const *volatile saved_bytestr_data; | ||
| 553 | #endif | ||
| 554 | |||
| 554 | while (true) | 555 | while (true) |
| 555 | { | 556 | { |
| 556 | int op; | 557 | int op; |
| @@ -982,15 +983,23 @@ exec_byte_code (Lisp_Object fun, ptrdiff_t args_template, | |||
| 982 | 983 | ||
| 983 | if (sys_setjmp (c->jmp)) | 984 | if (sys_setjmp (c->jmp)) |
| 984 | { | 985 | { |
| 986 | quitcounter = saved_quitcounter; | ||
| 985 | struct handler *c = handlerlist; | 987 | struct handler *c = handlerlist; |
| 986 | handlerlist = c->next; | 988 | handlerlist = c->next; |
| 987 | top = c->bytecode_top; | 989 | top = c->bytecode_top; |
| 988 | op = c->bytecode_dest; | 990 | op = c->bytecode_dest; |
| 991 | bc = ¤t_thread->bc; | ||
| 989 | struct bc_frame *fp = bc->fp; | 992 | struct bc_frame *fp = bc->fp; |
| 990 | 993 | ||
| 991 | Lisp_Object fun = fp->fun; | 994 | Lisp_Object fun = fp->fun; |
| 992 | Lisp_Object bytestr = AREF (fun, CLOSURE_CODE); | 995 | Lisp_Object bytestr = AREF (fun, CLOSURE_CODE); |
| 993 | Lisp_Object vector = AREF (fun, CLOSURE_CONSTANTS); | 996 | Lisp_Object vector = AREF (fun, CLOSURE_CONSTANTS); |
| 997 | #if GCC_LINT && __GNUC__ && !__clang__ | ||
| 998 | /* These useless assignments pacify GCC 14.2.1 x86-64 | ||
| 999 | <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=21161>. */ | ||
| 1000 | bytestr_data = saved_bytestr_data; | ||
| 1001 | vectorp = saved_vectorp; | ||
| 1002 | #endif | ||
| 994 | bytestr_data = SDATA (bytestr); | 1003 | bytestr_data = SDATA (bytestr); |
| 995 | vectorp = XVECTOR (vector)->contents; | 1004 | vectorp = XVECTOR (vector)->contents; |
| 996 | if (BYTE_CODE_SAFE) | 1005 | if (BYTE_CODE_SAFE) |
| @@ -1004,6 +1013,11 @@ exec_byte_code (Lisp_Object fun, ptrdiff_t args_template, | |||
| 1004 | goto op_branch; | 1013 | goto op_branch; |
| 1005 | } | 1014 | } |
| 1006 | 1015 | ||
| 1016 | saved_quitcounter = quitcounter; | ||
| 1017 | #if GCC_LINT && __GNUC__ && !__clang__ | ||
| 1018 | saved_vectorp = vectorp; | ||
| 1019 | saved_bytestr_data = bytestr_data; | ||
| 1020 | #endif | ||
| 1007 | NEXT; | 1021 | NEXT; |
| 1008 | } | 1022 | } |
| 1009 | 1023 | ||