diff mc-parse.c @ 276:ebaec1ae566e

MIPS double/longlong lib operand register conflict
author kono
date Fri, 21 May 2004 18:59:56 +0900
parents 8f09f8bbc494
children 5b50813d0c45
line wrap: on
line diff
--- a/mc-parse.c	Fri May 21 14:00:02 2004 +0900
+++ b/mc-parse.c	Fri May 21 18:59:56 2004 +0900
@@ -2121,7 +2121,8 @@
     if(scalar(type)) return e2;
 #if FLOAT_CODE
     if (car(e2)==DCONST||car(e2)==FCONST)  return list2(CONST,(int)dcadr(e2));
-    if(type==FLOAT||type==DOUBLE) return list3(CONV,rvalue_t(e2,type),D2I);
+    if(type==FLOAT) return list3(CONV,rvalue_t(e2,type),F2I);
+    if(type==DOUBLE) return list3(CONV,rvalue_t(e2,type),D2I);
 #endif
 #if LONGLONG_CODE
     if (car(e2)==LCONST)  return list2(CONST,(int)lcadr(e2));
@@ -2138,7 +2139,8 @@
     if(scalar(type)) return e2;
 #if FLOAT_CODE
     if (car(e2)==DCONST||car(e2)==FCONST)  return list2(CONST,(unsigned)dcadr(e2));
-    if(type==FLOAT||type==DOUBLE) return list3(CONV,rvalue_t(e2,type),D2U);
+    if(type==FLOAT) return list3(CONV,rvalue_t(e2,type),F2U);
+    if(type==DOUBLE) return list3(CONV,rvalue_t(e2,type),D2U);
 #endif
 #if LONGLONG_CODE
     if(type==LONGLONG) return list3(CONV,rvalue_t(e2,type),LL2U);
@@ -2247,7 +2249,9 @@
 	t=type;
 	getsym(0);
 	e2=rvalue(expr1());
-	return assign_expr(e1,e2,t,type);
+	e1 =  assign_expr(e1,e2,t,type);
+	type = t;
+	return e1;
     case RSHIFT+AS: case LSHIFT+AS: case BAND+AS: 
     case EOR+AS: case BOR+AS: case MOD+AS:
 	no_float = 1;