diff mc-code-mips.c @ 556:ef225b589888 s-dandy-work

s-dandy fix emit_copy register parallel rassign struct init alignment MIPS fregister save
author kono
date Fri, 06 Jan 2006 21:19:13 +0900 (2006-01-06)
parents ac181d7f9c82
children d6ff45d719a5
line wrap: on
line diff
--- a/mc-code-mips.c	Fri Jan 06 01:16:52 2006 +0900
+++ b/mc-code-mips.c	Fri Jan 06 21:19:13 2006 +0900
@@ -26,7 +26,7 @@
 #define __inline__\n\
 #define __STDC__ 1\n\
 #define __SIZE_TYPE__ int\n\
-#define __externsion__\n\
+#define __extension__\n\
 #define __attribute__(a)\n\
 #define __flexarr\n\
 #define __WCHAR_TYPE__ int\n\
@@ -1542,6 +1542,7 @@
     char *trn;
     char *drn;
     char *memmove = "memmove";
+    int l;
     int dreg = get_register(); if (!dreg) error(-1);
 
     drn	 = register_name(dreg);
@@ -1587,10 +1588,11 @@
 	}
 	clear_ptr_cache();
 	code_save_stacks();
+
+	l = list3(4,0,to);
+	l = list3(5,l,from);
+	parallel_rassign(l);
 	printf("\tli $6,%d\n",length>0?length:-length);
-	printf("\tmove $5,%s\n",frn);
-	// offset should not be used
-	printf("\tmove $4,%s\n",trn);
         /* overrap must be allowed */
 	if (is_code(fnptr)) {
 	    printf("\tla\t$25,%s\n",memmove);
@@ -5269,7 +5271,7 @@
     for(i=0;i<freg_sp;i++) {
         if ((reg=freg_stack[i])>=0) {
             code_dassign_lvar(
-                (freg_stack[i]=new_lvar(SIZE_OF_DOUBLE)),reg,1); 
+                (freg_stack[i]=new_lvar(SIZE_OF_FLOAT)),reg,0); 
             freg_stack[i]= freg_stack[i]-REG_LVAR_OFFSET;
 	    free_register(reg);
         }