diff mc-code-mips.c @ 583:421be86892b3

ia32 reorganization
author kono
date Tue, 17 Jan 2006 23:38:57 +0900
parents dbde3b869a0f
children c991b82e6849
line wrap: on
line diff
--- a/mc-code-mips.c	Mon Jan 16 00:52:56 2006 +0900
+++ b/mc-code-mips.c	Tue Jan 17 23:38:57 2006 +0900
@@ -1574,6 +1574,7 @@
     default:
         if (length <0) {
             if (length > -MAX_COPY_LEN) {
+		free_register(dreg); dreg = 0;
                 for(;length<=-4;length+=4,offset-=4)
                     emit_copy(from,to,-4,offset-4,0,det);
                 for(;length<=-2;length+=2,offset-=2)
@@ -1583,6 +1584,7 @@
                 break;
             }
 	} else if (length <=MAX_COPY_LEN) {
+	    free_register(dreg); dreg = 0;
 	    for(;length>=4;length-=4,offset+=4)
 		emit_copy(from,to,4,offset,0,det);
 	    for(;length>=2;length-=2,offset+=2)
@@ -1619,7 +1621,7 @@
 	    // set_ireg(to,1);
 	}
     }
-    free_register(dreg);
+    if (dreg) free_register(dreg);
 }
 
 int
@@ -2486,13 +2488,13 @@
 
 void
 code_assop(int op,int creg, int byte,int sign) {
-    char *xrn,*crn,*drn;
+    char *crn,*drn;
     int xreg;
     int edx = get_register(); if(!edx) error(-1);
     //  (*creg) op = pop()
 
     use_int(creg);
-    xrn = register_name(xreg = emit_pop(0));       /* pop e3 value */
+    xreg = emit_pop(0);       /* pop e3 value */
 #if 1
     set_ireg(edx,0);
     ld_indexx(byte,0,creg,ireg,sign);