[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 413/437: Correct logic error with jit_live in jit_retr
From: |
Andy Wingo |
Subject: |
[Guile-commits] 413/437: Correct logic error with jit_live in jit_retr |
Date: |
Mon, 2 Jul 2018 05:15:06 -0400 (EDT) |
wingo pushed a commit to branch lightning
in repository guile.
commit 2cf092efe4d8333b4e5d1eecbda246ca7683f3b4
Author: Paulo Andrade <address@hidden>
Date: Thu Feb 22 13:05:04 2018 -0300
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.
---
ChangeLog | 9 +++++++++
lib/jit_aarch64.c | 3 +--
lib/jit_alpha.c | 5 ++---
lib/jit_arm.c | 3 +--
lib/jit_mips.c | 3 +--
lib/jit_ppc.c | 3 +--
lib/jit_sparc.c | 3 +--
lib/jit_x86.c | 3 +--
8 files changed, 17 insertions(+), 15 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index ef5af55..2c0a4ae 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2018-02-22 Paulo Andrade <address@hidden>
+
+ * 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.
+
2018-01-31 Paulo Andrade <address@hidden>
* lib/lightning.c: Avoid deep recursions when computing live
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();
}
- [Guile-commits] 369/437: Correct typo in x87.nodata test list, (continued)
- [Guile-commits] 369/437: Correct typo in x87.nodata test list, Andy Wingo, 2018/07/02
- [Guile-commits] 307/437: x86: Build and pass all tests on 32 bit cygwin, Andy Wingo, 2018/07/02
- [Guile-commits] 401/437: Implement a correct generation of Fibonacci numbers., Andy Wingo, 2018/07/02
- [Guile-commits] 318/437: Add label predicates, Andy Wingo, 2018/07/02
- [Guile-commits] 373/437: Update copyright date, Andy Wingo, 2018/07/02
- [Guile-commits] 403/437: Correct wrong movr simplification, Andy Wingo, 2018/07/02
- [Guile-commits] 324/437: misc: Enable silent rules to make warnings stick out, Andy Wingo, 2018/07/02
- [Guile-commits] 175/437: Make JIT_RET, JIT_FRET and JIT_SP private., Andy Wingo, 2018/07/02
- [Guile-commits] 430/437: Remove special cflags for obsolete Lightning targets, Andy Wingo, 2018/07/02
- [Guile-commits] 375/437: Update the correct fp offset and add assertions, Andy Wingo, 2018/07/02
- [Guile-commits] 413/437: Correct logic error with jit_live in jit_retr,
Andy Wingo <=
- [Guile-commits] 140/437: Add new test cases to exercise memory load/store., Andy Wingo, 2018/07/02
- [Guile-commits] 267/437: GNU lightning 2.0.2 release, Andy Wingo, 2018/07/02
- [Guile-commits] 275/437: GNU lightning 2.0.3 release, Andy Wingo, 2018/07/02
- [Guile-commits] 338/437: Add missing ellipsis mark to align.tst, Andy Wingo, 2018/07/02
- [Guile-commits] 269/437: ARM: Minor changes that should allow building on non gnu-linux/gcc., Andy Wingo, 2018/07/02
- [Guile-commits] 260/437: Correct source of the self test case and a missed check failure., Andy Wingo, 2018/07/02
- [Guile-commits] 216/437: Prepare for the first alpha release of lightning 2.0., Andy Wingo, 2018/07/02
- [Guile-commits] 385/437: ia64: Add initial jit_va_ calls to ia64, Andy Wingo, 2018/07/02
- [Guile-commits] 382/437: mips: Add initial jit_va_ calls to mips, Andy Wingo, 2018/07/02
- [Guile-commits] 353/437: Remove inconsistent, public jit_arg_reg_p macro, Andy Wingo, 2018/07/02