Correct logic error with jit_live in jit_retr - lightning.git - Portable just-in-time compiler library

index : lightning.git
Portable just-in-time compiler library
summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorPaulo Andrade <pcpa@gnu.org>2018年02月22日 13:05:04 -0300
committerPaulo Andrade <pcpa@gnu.org>2018年02月22日 13:05:04 -0300
commit2cf092efe4d8333b4e5d1eecbda246ca7683f3b4 (patch)
tree0a898db14833c4721fe177c65a8d88d33e6fe2bd /lib
parent59f32e85c3c9df698d244f41ff56d3b3e4ecb0d8 (diff)
downloadlightning-2cf092efe4d8333b4e5d1eecbda246ca7683f3b4.tar.gz
Correct logic error with jit_live in jit_retr
* lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c: Correct wrong logic in usage of jit_live in jit_retr. The problem is that if a temporary is required during epilog, the return register might be allocated, so, jit_live must always be used.
Diffstat (limited to 'lib')
-rw-r--r--lib/jit_aarch64.c 3
-rw-r--r--lib/jit_alpha.c 5
-rw-r--r--lib/jit_arm.c 3
-rw-r--r--lib/jit_mips.c 3
-rw-r--r--lib/jit_ppc.c 3
-rw-r--r--lib/jit_sparc.c 3
-rw-r--r--lib/jit_x86.c 3
7 files changed, 8 insertions, 15 deletions
diff --git a/lib/jit_aarch64.c b/lib/jit_aarch64.c
index 6770f31..c1fb11d 100644
--- a/lib/jit_aarch64.c
+++ b/lib/jit_aarch64.c
@@ -263,8 +263,7 @@ _jit_retr(jit_state_t *_jit, jit_int32_t u)
jit_inc_synth_w(retr, u);
if (JIT_RET != u)
jit_movr(JIT_RET, u);
- else
- jit_live(JIT_RET);
+ jit_live(JIT_RET);
jit_ret();
jit_dec_synth();
}
diff --git a/lib/jit_alpha.c b/lib/jit_alpha.c
index 9d1d41e..90f8556 100644
--- a/lib/jit_alpha.c
+++ b/lib/jit_alpha.c
@@ -251,8 +251,7 @@ _jit_retr(jit_state_t *_jit, jit_int32_t u)
jit_inc_synth_w(retr, u);
if (JIT_RET != u)
jit_movr(JIT_RET, u);
- else
- jit_live(JIT_RET);
+ jit_live(JIT_RET);
jit_ret();
jit_dec_synth();
}
@@ -329,7 +328,7 @@ _jit_arg_register_p(jit_state_t *_jit, jit_node_t *u)
void
_jit_ellipsis(jit_state_t *_jit)
{
- jit_inc_synth(jit_code_ellipsis);
+ jit_inc_synth(ellipsis);
if (_jitc->prepare) {
jit_link_prepare();
assert(!(_jitc->function->call.call & jit_call_varargs));
diff --git a/lib/jit_arm.c b/lib/jit_arm.c
index 9230534..6e73b1d 100644
--- a/lib/jit_arm.c
+++ b/lib/jit_arm.c
@@ -331,8 +331,7 @@ _jit_retr(jit_state_t *_jit, jit_int32_t u)
jit_inc_synth_w(retr, u);
if (JIT_RET != u)
jit_movr(JIT_RET, u);
- else
- jit_live(JIT_RET);
+ jit_live(JIT_RET);
jit_ret();
jit_dec_synth();
}
diff --git a/lib/jit_mips.c b/lib/jit_mips.c
index 3e1658d..53fa22e 100644
--- a/lib/jit_mips.c
+++ b/lib/jit_mips.c
@@ -264,8 +264,7 @@ _jit_retr(jit_state_t *_jit, jit_int32_t u)
jit_inc_synth_w(retr, u);
if (JIT_RET != u)
jit_movr(JIT_RET, u);
- else
- jit_live(JIT_RET);
+ jit_live(JIT_RET);
jit_ret();
jit_dec_synth();
}
diff --git a/lib/jit_ppc.c b/lib/jit_ppc.c
index 52a37d3..2c8a814 100644
--- a/lib/jit_ppc.c
+++ b/lib/jit_ppc.c
@@ -246,8 +246,7 @@ _jit_retr(jit_state_t *_jit, jit_int32_t u)
jit_inc_synth_w(retr, u);
if (JIT_RET != u)
jit_movr(JIT_RET, u);
- else
- jit_live(JIT_RET);
+ jit_live(JIT_RET);
jit_ret();
jit_dec_synth();
}
diff --git a/lib/jit_sparc.c b/lib/jit_sparc.c
index 25e4caa..2df67e4 100644
--- a/lib/jit_sparc.c
+++ b/lib/jit_sparc.c
@@ -205,8 +205,7 @@ _jit_retr(jit_state_t *_jit, jit_int32_t u)
jit_inc_synth_w(retr, u);
if (JIT_RET != u)
jit_movr(JIT_RET, u);
- else
- jit_live(JIT_RET);
+ jit_live(JIT_RET);
jit_ret();
jit_dec_synth();
}
diff --git a/lib/jit_x86.c b/lib/jit_x86.c
index 7ec621a..0bbce1a 100644
--- a/lib/jit_x86.c
+++ b/lib/jit_x86.c
@@ -507,8 +507,7 @@ _jit_retr(jit_state_t *_jit, jit_int32_t u)
if (JIT_RET != u)
jit_movr(JIT_RET, u);
/* explicitly tell it is live */
- else
- jit_live(JIT_RET);
+ jit_live(JIT_RET);
jit_ret();
jit_dec_synth();
}
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月29日 15:29:36 +0000

AltStyle によって変換されたページ (->オリジナル) /