diff mc-parse.c @ 62:129f4802b027

separation done
author kono
date Thu, 20 Feb 2003 05:27:29 +0900
parents 8ffb8ca3fe34
children 8ad746efa4f8
line wrap: on
line diff
--- a/mc-parse.c	Thu Feb 20 03:29:15 2003 +0900
+++ b/mc-parse.c	Thu Feb 20 05:27:29 2003 +0900
@@ -1709,9 +1709,9 @@
 	getsym();
 	e2=rvalue(expr10());
 	if(t==INT&&type==INT) 
-	    e1=list3(op,e1,e2);
+	    e1=binop(op,e1,e2,t,type);
 	else 
-	    e1=list3(op+US,e1,e2);
+	    e1=binop(op+US,e1,e2,t,type);
 	type= INT;
     }
     return e1;
@@ -2137,10 +2137,28 @@
 	case RSHIFT:
 	    e=e1>>e2;break;
 	case LSHIFT:
-	    e=e1<<e2;
+	    e=e1<<e2;break;
+	case GT:
+	    e=(e1>e2);break;
+	case GE:
+	    e=(e1>=e2);break;
+	case LT:
+	    e=(e1<e2);break;
+	case LE:
+	    e=(e1<=e2);break;
+	case UGT:
+	    e=((unsigned)e1>(unsigned)e2);break;
+	case UGE:
+	    e=((unsigned)e1>=(unsigned)e2);break;
+	case ULT:
+	    e=((unsigned)e1<(unsigned)e2);break;
+	case ULE:
+	    e=((unsigned)e1<=(unsigned)e2);break;
 	}
 	return list2(CONST,e);
     }
+    if(op==GT||op==GE||op==LT||op==LE||op==UGT||op==UGE||op==ULT||op==ULE)
+	return(list3(op,e1,e2));
     if((op==ADD||op==MUL||op==BOR||op==EOR||op==BAND)&&
 	(car(e1)==CONST||(car(e2)!=CONST&&
 	(car(e1)==RGVAR||car(e1)==RLVAR)))) {