Mercurial > hg > CbC > old > device
changeset 529:ad874ef77dde
use_input_reg...
author | kono |
---|---|
date | Thu, 29 Dec 2005 11:05:21 +0900 |
parents | d6fff671793a |
children | 58aceee8e4b4 |
files | .gdbinit Changes mc-code-arm.c mc-code-mips.c mc-code-powerpc.c mc-inline.c |
diffstat | 6 files changed, 26 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/.gdbinit Thu Dec 29 01:10:01 2005 +0900 +++ b/.gdbinit Thu Dec 29 11:05:21 2005 +0900 @@ -41,4 +41,5 @@ # run -s test/basic.c # run -s test/code-gen-all.c # run -s test/tmp7.c -run -s test/inline.c +# run -s test/inline.c +run -s test/code-gen-inline.c
--- a/Changes Thu Dec 29 01:10:01 2005 +0900 +++ b/Changes Thu Dec 29 11:05:21 2005 +0900 @@ -7657,8 +7657,15 @@ やっぱり、STRING は、"" で一つにして、複数つながる っていう構文にした方が良いね。 - list(STRINNG,value,continue) - -みたいな感じ。 - - + list(STRING,value,continue) + +みたいな感じ。でも、それだと変更が多い(何故か nptr にいれてた...) +ので、やっぱり、append しました。 + +Thu Dec 29 09:59:38 JST 2005 + +PowerPC の get_lregister が失敗するのが、まだ、微妙に残ってる。 +足りないはずないんだけどね。input register も探させちゃうか。 +そういえば、最初は input register は使わない方針だったけど、 +今は使ってもいいんじゃないの? +
--- a/mc-code-arm.c Thu Dec 29 01:10:01 2005 +0900 +++ b/mc-code-arm.c Thu Dec 29 11:05:21 2005 +0900 @@ -2310,7 +2310,7 @@ use_input_reg(regv_l(reg),0); } else if (is_float_reg(reg)) { if (freg&® == freg) { - if (creg==freg) creg = 0; + if (creg==freg) creg = ireg; freg = 0; } }
--- a/mc-code-mips.c Thu Dec 29 01:10:01 2005 +0900 +++ b/mc-code-mips.c Thu Dec 29 11:05:21 2005 +0900 @@ -643,7 +643,7 @@ } } /* 空いている場所がないなら、エラー (いったい誰が使ってるの?) */ - error(HPERR); return creg; + error(RGERR); return creg; } #if 0 @@ -1916,7 +1916,7 @@ use_input_reg(regv_l(reg),0); } else if (is_float_reg(reg)) { if (freg&® == freg) { - if (creg==freg) creg = 0; + if (creg==freg) creg = ireg; freg = 0; } }
--- a/mc-code-powerpc.c Thu Dec 29 01:10:01 2005 +0900 +++ b/mc-code-powerpc.c Thu Dec 29 11:05:21 2005 +0900 @@ -466,8 +466,8 @@ void code_gexpr(int e){ -// if (is_int_reg(creg) && creg!=ireg) error(-1); -// register_usage("code_gexpr"); + if (is_int_reg(creg) && creg!=ireg) error(-1); + register_usage("code_gexpr"); } @@ -1812,7 +1812,7 @@ if (regv_h(lreg)>reg&®s[regv_h(lreg)]==USING_REG) { free_register(regv_h(lreg)); } - if (creg==lreg) creg = 0; + if (creg==lreg) creg = ireg; free_register(lreg); lreg = 0; } else if (regv_h(lreg)==reg) { @@ -1820,7 +1820,7 @@ if (regv_h(lreg)>reg&®s[regv_l(lreg)]==USING_REG) { free_register(regv_l(lreg)); } - if (creg==lreg) creg = 0; + if (creg==lreg) creg = ireg; free_register(lreg); lreg = 0; } @@ -1830,7 +1830,7 @@ use_input_reg(regv_l(reg),0); } else if (is_float_reg(reg)) { if (freg&® == freg) { - if (creg==freg) creg = 0; + if (creg==freg) creg = ireg; freg = 0; } }
--- a/mc-inline.c Thu Dec 29 01:10:01 2005 +0900 +++ b/mc-inline.c Thu Dec 29 11:05:21 2005 +0900 @@ -591,7 +591,7 @@ switch(stmode) { case EXTRN: case EXTRN1: case STATIC: return pexpr(cadr(e)); -#if 0 +#if 1 case REGISTER: switch(n->ty) { case ULONGLONG: case LONGLONG: @@ -606,6 +606,7 @@ else error(TYERR); } + break; #endif default: v = list3(LVAR,new_lvar(size(n->ty)),(int)n); @@ -785,21 +786,13 @@ switch (car(e1)){ case GVAR: case RGVAR: case CRGVAR: case CURGVAR: case SRGVAR: case SURGVAR: case REGISTER: -#if FLOAT_CODE case DREGISTER: case FREGISTER: case FRGVAR: case DRGVAR: -#endif -#if LONGLONG_CODE case LREGISTER: case LRGVAR: case LURGVAR: -#endif case LABEL: case CONST: -#if FLOAT_CODE case DCONST: case FCONST: -#endif -#if LONGLONG_CODE case LCONST: -#endif case STRING: case FNAME: case FLABEL: @@ -807,12 +800,8 @@ return e1; case LVAR: case RLVAR: case CRLVAR: case CURLVAR: case SRLVAR: case SURLVAR: -#if FLOAT_CODE case FRLVAR: case DRLVAR: -#endif -#if LONGLONG_CODE case LRLVAR: case LURLVAR: -#endif return e1; case IVAR: return p_lvar(e1); @@ -827,12 +816,8 @@ case RINDIRECT: case URINDIRECT: case CRINDIRECT: case CURINDIRECT: case SRINDIRECT: case SURINDIRECT: -#if FLOAT_CODE case FRINDIRECT: case DRINDIRECT: -#endif -#if LONGLONG_CODE case LRINDIRECT: case LURINDIRECT: -#endif return prindirect(e1); case ADDRESS: return paddress(e1); @@ -1077,10 +1062,8 @@ arg = heap[pdisp+narg]=list3(LVAR,new_lvar(size(t)),0); inline_lvars = glist2(arg,inline_lvars); // should contain correct argument variable name - if (anptr) - printf("## var %s\n",anptr->nm); - else - printf("## var 0\n"); + // if (anptr) printf("## var %s\n",anptr->nm); + // else printf("## var 0\n"); g_expr_u(assign_expr0(arg,e4,t,t)); } narg ++;