Mercurial > hg > CbC > old > device
changeset 413:d4dc6d99ffdb
*** empty log message ***
author | kono |
---|---|
date | Wed, 20 Oct 2004 00:32:36 +0900 |
parents | 6b3385124e5e |
children | 0a4416b34d4a |
files | Changes mc-code-arm.c |
diffstat | 2 files changed, 11 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/Changes Tue Oct 19 23:39:42 2004 +0900 +++ b/Changes Wed Oct 20 00:32:36 2004 +0900 @@ -6165,3 +6165,10 @@ ってことは、一時変数ではなく積極的にレジスタ変数を使った方が 良いわけだけど... + +save_stack で register var はsave する必要はない。けど... + +longlong_lib で creg は RET_LREG になっていたけど、その外で、 +emit_pop_free する時に、その一部がRET_LREGと重なっていて、 +一緒にfreeされてしまう。そうすると、次のemit_popで、上書きされてしまう。 +なので、RET_LREGにしないで、lmove してしまうのが良い。
--- a/mc-code-arm.c Tue Oct 19 23:39:42 2004 +0900 +++ b/mc-code-arm.c Wed Oct 20 00:32:36 2004 +0900 @@ -5053,10 +5053,10 @@ clear_ptr_cache(); set_operands(regv_l(reg),regv_h(reg),regv_l(oreg),regv_h(oreg)); extern_conv(lib); - set_lreg(RET_LREGISTER,0); -} - -#define check_lreg(reg) if (reg!=lreg) { lmove(reg,lreg); } + // set_lreg(RET_LREGISTER,0); +} + +#define check_lreg(reg) lmove(reg,RET_LREGISTER) void ltosop(int op,int reg,int oreg)