changeset 473:f8ba383dbc39 mips-float-arg-fix

MIPS float arg/int arg mix fix.
author kono
date Tue, 08 Nov 2005 16:55:51 +0900
parents 834b5792bc5f
children 33735a212eff
files mc-code-arm.c mc-code-mips.c test/float.c
diffstat 3 files changed, 11 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/mc-code-arm.c	Tue Nov 08 12:14:44 2005 +0900
+++ b/mc-code-arm.c	Tue Nov 08 16:55:51 2005 +0900
@@ -185,12 +185,12 @@
 #define lregister_name_low(i) reg_name[regv_l(i)]
 #define lregister_name_high(i) reg_name[regv_h(i)]
 
-char *rn(i) { return register_name(i); }
-char *fn(i) { return fregister_name(i); }
-char *lln(i) { return lregister_name_low(i); }
-char *lhn(i) { return lregister_name_high(i); }
-int ll(i) { return regv_l(i); }
-int lh(i) { return regv_h(i); }
+char *rn(int i) { return register_name(i); }
+char *fn(int i) { return fregister_name(i); }
+char *lln(int i) { return lregister_name_low(i); }
+char *lhn(int i) { return lregister_name_high(i); }
+int ll(int i) { return regv_l(i); }
+int lh(int i) { return regv_h(i); }
 
 #define is_int_reg(i)  (0<=i&&i<REAL_MAX_REGISTER)
 #define is_float_reg(i)  (arch_mode&UseFPP?(REAL_MAX_REGISTER<=i&&i<REAL_MAX_FREGISTER+REAL_MAX_REGISTER):is_int_reg(i))
--- a/mc-code-mips.c	Tue Nov 08 12:14:44 2005 +0900
+++ b/mc-code-mips.c	Tue Nov 08 16:55:51 2005 +0900
@@ -553,6 +553,7 @@
                 n->dsp = cadr(reg);
                 regs[n->dsp]= INPUT_REG;
                 reg_var++;
+                freg_var++;
                 cadddr(args)=SIZE_OF_INT;
             }
         } else if (type==FLOAT) {
@@ -560,6 +561,7 @@
                 n->sc = FREGISTER;
                 n->dsp = cadr(reg);
                 regs[n->dsp]= INPUT_REG;
+                reg_var++;
                 freg_var++;
                 cadddr(args)=size(type);
             }
@@ -1802,7 +1804,7 @@
 	    t = n->ty;
 	    if(t==FLOAT) {
 		offset+=SIZE_OF_FLOAT; reg_offset+=1;
-		if (reg==6||reg==7) {   // int register case
+		if (reg==5||reg==6||reg==7) {   // int register case
 		    tag = REGISTER; t = INT;
 		}
 	    }
--- a/test/float.c	Tue Nov 08 12:14:44 2005 +0900
+++ b/test/float.c	Tue Nov 08 16:55:51 2005 +0900
@@ -375,7 +375,7 @@
 }
 
 double
-test2(double f,int i)
+test9(double f,int i)
 {
     double g,h;
   
@@ -385,7 +385,7 @@
 #endif
     g =  f*2;
     h =  f-0.5;
-    return h/3-(3.0-(g+3)*test2(f*0.5,i-1)/(h-1));
+    return h/3-(3.0-(g+3)*test9(f*0.5,i-1)/(h-1));
 }