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;