Mercurial > hg > CbC > old > device
changeset 370:c6c1323be02d
minor fix
author | kono |
---|---|
date | Thu, 08 Jul 2004 12:10:34 +0900 |
parents | cd2c80d8cf8b |
children | 238c3704ee3d |
files | Changes mc-codegen.c |
diffstat | 2 files changed, 20 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/Changes Wed Jul 07 23:55:54 2004 +0900 +++ b/Changes Thu Jul 08 12:10:34 2004 +0900 @@ -5562,3 +5562,18 @@ レジスタを使えるはず。 save_stack で、regisiter を解放するのを忘れてました。 + +parallel_rassign では、一つ解放したら、そこを他の依存ループ +を解決するのに使うのが良い。けど... + +どうも、余計に extsb しているみたいだな。 + +本来は必要な時に変換するべきだよね。でないと、 + lbz + extsb + stb +しちゃうから。 + +Thu Jul 8 02:31:03 JST 2004 + +ARMは、どうもadd, sub は、8bit 幅で定数を持てるみたいね。
--- a/mc-codegen.c Wed Jul 07 23:55:54 2004 +0900 +++ b/mc-codegen.c Thu Jul 08 12:10:34 2004 +0900 @@ -821,6 +821,7 @@ } } if (remains==0) { + if (tmp) free_lvar(tmp); return; } if (free) { // free target @@ -1744,7 +1745,7 @@ static int char_value(int e2) { - if (type!=CHAR) { + if (type!=CHAR&&type!=INT) { e2 = list3(CONV,int_value(rvalue(e2)),I2C); type = INT; } return e2; @@ -1753,7 +1754,7 @@ static int short_value(int e2) { - if (type!=SHORT) { + if (type!=SHORT&&type!=INT) { e2 = list3(CONV,int_value(rvalue(e2)),I2S); type = INT; } return e2; @@ -1789,7 +1790,7 @@ static int uchar_value(int e2) { - if (type!=UCHAR) { + if (type!=UCHAR&&type!=UNSIGNED) { e2 = list3(CONV,unsigned_value(rvalue(e2)),U2UC); type = UNSIGNED; } return e2; @@ -1798,7 +1799,7 @@ static int ushort_value(int e2) { - if (type!=USHORT) { + if (type!=USHORT&&type!=UNSIGNED) { e2 = list3(CONV,unsigned_value(rvalue(e2)),U2US); type = UNSIGNED; } return e2;