Mercurial > hg > CbC > old > device
changeset 709:8b54c40081de
*** empty log message ***
author | kono |
---|---|
date | Wed, 24 Oct 2007 21:54:26 +0900 |
parents | cd4aac9abd5e |
children | 4348f61a5e54 |
files | Changes Makefile mc-code-ia32.c mc-code-powerpc.c mc-code-spu.c mc-inline.c mc.h |
diffstat | 7 files changed, 22 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/Changes Wed Oct 24 16:23:52 2007 +0900 +++ b/Changes Wed Oct 24 21:54:26 2007 +0900 @@ -9597,3 +9597,18 @@ Wed Oct 24 08:33:49 JST 2007 switch をparse mode で二回 inline 展開すると破綻するらしい。 + +Wed Oct 24 11:06:55 JST 2007 + +parse mode は出来ました。長かった... + +macro / inmode の干渉が macro_if で起きるとは意外でした。 + +pexpr で、stack がどんどん深くなるのは良くない... + +pexpr は、parse にappend するべきなんでしょう。reverse がうるさいが。 + +adhoc に code_save_register_stack とか使ったけど、本当は、 +削除出来るんだろ。 + +
--- a/Makefile Wed Oct 24 16:23:52 2007 +0900 +++ b/Makefile Wed Oct 24 21:54:26 2007 +0900 @@ -281,4 +281,3 @@ # DO NOT DELETE -
--- a/mc-code-ia32.c Wed Oct 24 16:23:52 2007 +0900 +++ b/mc-code-ia32.c Wed Oct 24 21:54:26 2007 +0900 @@ -2426,6 +2426,7 @@ jmp(int l) { printf("\tjmp\t_%d\n",l); + control = 0; /* align? */ /* this is not allowed because of ? operator
--- a/mc-code-powerpc.c Wed Oct 24 16:23:52 2007 +0900 +++ b/mc-code-powerpc.c Wed Oct 24 21:54:26 2007 +0900 @@ -2289,8 +2289,8 @@ } } } else if (is_longlong_reg(reg)) { - use_input_reg(regv_h(reg),0); - use_input_reg(regv_l(reg),0); + use_input_reg(regv_h(reg),mode); + use_input_reg(regv_l(reg),mode); } else if (is_float_reg(reg)) { if (freg&® == freg) { if (creg==freg) creg = ireg; @@ -2305,10 +2305,10 @@ int t=caddr(e3); int e4 = car(e3); reg_arg_list = list2(arg,reg_arg_list); - g_expr_u(assign_expr0(arg,e4,t,t)); if (car(arg)==REGISTER||car(arg)==DREGISTER|| car(arg)==FREGISTER||car(arg)==LREGISTER) use_input_reg(cadr(arg),1); + g_expr_u(assign_expr0(arg,e4,t,t)); car(e3) = arg; return reg_arg_list; }
--- a/mc-code-spu.c Wed Oct 24 16:23:52 2007 +0900 +++ b/mc-code-spu.c Wed Oct 24 21:54:26 2007 +0900 @@ -511,7 +511,7 @@ lvar_address(int l,int creg) { //int label,disp; - int disp; + int tmp = -1; char *trn; if (is_code(fnptr)) {
--- a/mc-inline.c Wed Oct 24 16:23:52 2007 +0900 +++ b/mc-inline.c Wed Oct 24 21:54:26 2007 +0900 @@ -1508,7 +1508,7 @@ } } // we need real local variable for this inline - arg = heap[pdisp+narg]=list3(LVAR,new_lvar(size(t)),0); + arg = heap[pdisp+narg]=list3(LVAR,new_lvar(size(t)),(int)anptr); inline_lvars = glist2(arg,inline_lvars); evals=list2(assign_expr0(arg,e4,anptr->ty,t),evals); return evals;