Skip to content

Commit a543a60

Browse files
dpgeorgemmilata
authored andcommitted
py/nlr: Add "memory" to asm clobbers list in nlr_jump.
Newer versions of gcc (14 and up) have more sophisticated dead-code detection, and the asm clobbers list needs to contain "memory" to inform the compiler that the asm code actually does something. Tested that adding this "memory" line does not change the generated code on ARM Thumb2, x86-64 and Xtensa targets (using gcc 13.2). Fixes issue micropython#14115. Signed-off-by: Damien George <[email protected]> (cherry picked from commit 35f3f0a)
1 parent e4d81eb commit a543a60

File tree

5 files changed

+5
-5
lines changed

5 files changed

+5
-5
lines changed

py/nlraarch64.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ NORETURN void nlr_jump(void *val) {
7474
"ret \n"
7575
:
7676
: "r" (top)
77-
:
77+
: "memory"
7878
);
7979

8080
MP_UNREACHABLE

py/nlrthumb.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ NORETURN void nlr_jump(void *val) {
132132
"bx lr \n" // return
133133
: // output operands
134134
: "r" (top) // input operands
135-
: // clobbered registers
135+
: "memory" // clobbered registers
136136
);
137137

138138
MP_UNREACHABLE

py/nlrx64.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ NORETURN void nlr_jump(void *val) {
105105
"ret \n" // return
106106
: // output operands
107107
: "r" (top) // input operands
108-
: // clobbered registers
108+
: "memory" // clobbered registers
109109
);
110110

111111
MP_UNREACHABLE

py/nlrx86.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ NORETURN void nlr_jump(void *val) {
9595
"ret \n" // return
9696
: // output operands
9797
: "r" (top) // input operands
98-
: // clobbered registers
98+
: "memory" // clobbered registers
9999
);
100100

101101
MP_UNREACHABLE

py/nlrxtensa.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ NORETURN void nlr_jump(void *val) {
7474
"ret.n \n" // return
7575
: // output operands
7676
: "r" (top) // input operands
77-
: // clobbered registers
77+
: "memory" // clobbered registers
7878
);
7979

8080
MP_UNREACHABLE

0 commit comments

Comments
 (0)