diff options
| author | Damien George <damien@micropython.org> | 2024-03-19 15:08:42 +1100 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2024-03-25 11:52:26 +1100 |
| commit | 35f3f0a87db2580041dd0f7dfd4361df48887796 (patch) | |
| tree | e8d5fdd45ec51539c0bbae538a1f131d0ca8c0ec | |
| parent | 35b2edfc240050fc5310093db29927f6226c3157 (diff) | |
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 #14115.
Signed-off-by: Damien George <damien@micropython.org>
| -rw-r--r-- | py/nlraarch64.c | 2 | ||||
| -rw-r--r-- | py/nlrmips.c | 2 | ||||
| -rw-r--r-- | py/nlrpowerpc.c | 4 | ||||
| -rw-r--r-- | py/nlrthumb.c | 2 | ||||
| -rw-r--r-- | py/nlrx64.c | 2 | ||||
| -rw-r--r-- | py/nlrx86.c | 2 | ||||
| -rw-r--r-- | py/nlrxtensa.c | 2 |
7 files changed, 8 insertions, 8 deletions
diff --git a/py/nlraarch64.c b/py/nlraarch64.c index fcc318f2d..d6d87ebc5 100644 --- a/py/nlraarch64.c +++ b/py/nlraarch64.c @@ -75,7 +75,7 @@ NORETURN void nlr_jump(void *val) { "ret \n" : : "r" (top) - : + : "memory" ); MP_UNREACHABLE diff --git a/py/nlrmips.c b/py/nlrmips.c index bd5d73b6f..cba52b16a 100644 --- a/py/nlrmips.c +++ b/py/nlrmips.c @@ -78,7 +78,7 @@ NORETURN void nlr_jump(void *val) { "nop \n" : : "r" (top) - : + : "memory" ); MP_UNREACHABLE } diff --git a/py/nlrpowerpc.c b/py/nlrpowerpc.c index 448459216..8a69fe1ee 100644 --- a/py/nlrpowerpc.c +++ b/py/nlrpowerpc.c @@ -114,7 +114,7 @@ NORETURN void nlr_jump(void *val) { "blr ;" : : "r" (&top->regs) - : + : "memory" ); MP_UNREACHABLE; @@ -203,7 +203,7 @@ NORETURN void nlr_jump(void *val) { "blr ;" : : "r" (&top->regs) - : + : "memory" ); MP_UNREACHABLE; diff --git a/py/nlrthumb.c b/py/nlrthumb.c index a8ffecc47..a22c5df5b 100644 --- a/py/nlrthumb.c +++ b/py/nlrthumb.c @@ -132,7 +132,7 @@ NORETURN void nlr_jump(void *val) { "bx lr \n" // return : // output operands : "r" (top) // input operands - : // clobbered registers + : "memory" // clobbered registers ); MP_UNREACHABLE diff --git a/py/nlrx64.c b/py/nlrx64.c index 6b7d0262f..d1ad91ff7 100644 --- a/py/nlrx64.c +++ b/py/nlrx64.c @@ -123,7 +123,7 @@ NORETURN void nlr_jump(void *val) { "ret \n" // return : // output operands : "r" (top) // input operands - : // clobbered registers + : "memory" // clobbered registers ); MP_UNREACHABLE diff --git a/py/nlrx86.c b/py/nlrx86.c index f658d4191..085e30d20 100644 --- a/py/nlrx86.c +++ b/py/nlrx86.c @@ -95,7 +95,7 @@ NORETURN void nlr_jump(void *val) { "ret \n" // return : // output operands : "r" (top) // input operands - : // clobbered registers + : "memory" // clobbered registers ); MP_UNREACHABLE diff --git a/py/nlrxtensa.c b/py/nlrxtensa.c index abe9042af..ff7af6ede 100644 --- a/py/nlrxtensa.c +++ b/py/nlrxtensa.c @@ -74,7 +74,7 @@ NORETURN void nlr_jump(void *val) { "ret.n \n" // return : // output operands : "r" (top) // input operands - : // clobbered registers + : "memory" // clobbered registers ); MP_UNREACHABLE |
