diff mc-code-mips.c @ 266:86e315702d9e

*** empty log message ***
author kono
date Mon, 17 May 2004 04:18:12 +0900
parents b47a106a9bce
children e7ab23c992e5
line wrap: on
line diff
--- a/mc-code-mips.c	Mon May 17 03:21:32 2004 +0900
+++ b/mc-code-mips.c	Mon May 17 04:18:12 2004 +0900
@@ -1042,7 +1042,7 @@
     if (sign) {
         return sz==1?"lb":sz==SIZE_OF_SHORT?"lh":"lw"; 
     } else {
-        return sz==1?"lbu":sz==SIZE_OF_SHORT?"lhu":"lwu"; 
+        return sz==1?"lbu":sz==SIZE_OF_SHORT?"lhu":"lhu"; 
     }
 }
 
@@ -2383,7 +2383,8 @@
 	printf("\taddu %s,%s,-%d\n",crn,crn,v);
 	break;
     case CMP:
-      printf("\tslt %s,%s,%d\n",crn,crn,v);
+        printf("\tslt %s,%s,%d\n",crn,crn,v);
+        cmpreg = creg;
 	break;
     case BOR:
 	printf("\tori %s,%s,%d\n",crn,crn,v);
@@ -2429,6 +2430,7 @@
     rn = register_name(reg = get_register());
     printf("\tli %s,%d\n",rn,e);
     printf("\tsltu %s,%s,%s\n",rn,register_name(csreg),rn);
+    cmpreg=csreg;
     free_register(reg);
 }
 
@@ -2861,7 +2863,8 @@
     if (chk) return;
     if (n->dsp != -1) {
 	n->dsp = -1;   /* initiallized flag */
-	printf(".globl\t%s\n",name);
+	if (n->sc!=STATIC)
+	    printf(".globl\t%s\n",name);
 	data_mode(name);
 	align(t);
 	printf("%s:\n",name); 
@@ -3017,7 +3020,7 @@
 
 /* floating point */
 
-#define  set_double(freg) regs[freg]=USING_DREG
+#define  set_double(freg) if (regs[freg]) {regs[freg]=USING_DREG;}
 
 void
 code_cmp_dregister(int e2,int d)