mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-16 08:40:19 +02:00
Implement the "live" code to explicitly tell a register is live.
*include/lightning.h, lib/lightning.c: Add the new jit_live code to explicitly mark a register as live. It is required to avoid assuming functions always return a value in the gpr and fpr return register, and to avoid the need of some very specialized codes that vary too much from backend to backend, to instruct the optimization code the return register is live. * lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_print.c, lib/jit_x86.c: Update for the new jit_live code. * check/ret.ok, check/ret.tst: New files implementing a simple test case that would previously fail at least in ix86/x86_64. * check/Makefile.am: Update for new "ret" test case.
This commit is contained in:
parent
7b2c9cfb2a
commit
60c1c545fc
12 changed files with 140 additions and 32 deletions
|
@ -101,6 +101,8 @@ typedef struct jit_state jit_state_t;
|
|||
typedef enum {
|
||||
#define jit_data(u,v,w) _jit_data(_jit,u,v,w)
|
||||
jit_code_data,
|
||||
#define jit_live(u) jit_new_node_w(jit_code_live, u)
|
||||
jit_code_live,
|
||||
jit_code_save, jit_code_load,
|
||||
#define jit_name(u) _jit_name(_jit,u)
|
||||
jit_code_name,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue