diff mc-codegen.c @ 144:56211702f298

creg/freg continue
author kono
date Wed, 21 May 2003 21:41:06 +0900
parents 742224f4da02
children cb7aa0089681
line wrap: on
line diff
--- a/mc-codegen.c	Tue May 20 11:19:01 2003 +0900
+++ b/mc-codegen.c	Wed May 21 21:41:06 2003 +0900
@@ -14,7 +14,6 @@
 /*
     creg   currrent virtual register
     freg    current floating point register
-    fregv   calue in floating point register
  */
 
 static void remove0(int *parent,int e) ;
@@ -896,7 +895,6 @@
     g_expr(e2);
     tosop(car(e1),(e2=pop_register()));
     emit_pop_free(e2);
-    regv[creg]=1;
     return;
 }
 
@@ -913,7 +911,6 @@
     g_expr(e2);
     dtosop(car(e1),(e2=emit_dpop(d)));
     emit_dpop_free(e2,d);
-    fregv[freg]=1;
     return;
 }
 
@@ -1023,7 +1020,6 @@
     e2 = emit_pop(0);
     code_assign(e2,byte,creg);
     emit_pop_free(e2);
-    regv[creg]=1;
     return;
 }
 
@@ -1126,13 +1122,11 @@
     g_expr(e3);
     if (car(e2)==REGISTER) {
 	code_register_assop(cadr(e2),op,byte);
-	regv[creg]=1;
 	return;
     }
     emit_push();
     g_expr(e2);
     code_assop(op,byte);
-    regv[creg]=1;
     return;
 }
 
@@ -1151,8 +1145,12 @@
     g_expr(e3);
     emit_dpush(d);
     g_expr(e2);
+    if (car(e2)==DREGISTER||car(e2)==FREGISTER) {
+	/* code_register_dassop(cadr(e2),op,d); */
+	error(-1); /* unsupported now */
+	return;
+    }
     code_dassop(op,d);
-    regv[creg]=1;
     return;
 }