Mercurial > hg > CbC > old > device
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)))) {