Mercurial > hg > CbC > old > device
diff mc-codegen.c @ 388:245c6033683d
*** empty log message ***
author | kono |
---|---|
date | Tue, 24 Aug 2004 15:10:16 +0900 (2004-08-24) |
parents | c7abd48191b3 |
children | 33a09aa401ba |
line wrap: on
line diff
--- a/mc-codegen.c Sat Jul 31 01:03:04 2004 +0900 +++ b/mc-codegen.c Tue Aug 24 15:10:16 2004 +0900 @@ -422,7 +422,7 @@ if (caddr(e1)) { b_expr(cadr(e1),0,e2,0); g_expr0(caddr(e1)); - } else { + } else { // gcc extenstion a?:DEF bexpr(cadr(e1),0,e2); // value used } t = code_get_fixed_creg(USE_CREG,d); @@ -1879,9 +1879,12 @@ cond(int t,int e1,int e2,int e3) { if(car(e1)==CONST) { - if(cadr(e1)) {type=t;return e2;} else return e3; + if(cadr(e1)) {type=t;return e2?e2:e1;} else return e3; } #if FLOAT_CODE + if(car(e1)==DCONST) { + if(dcadr(e1)) {type=t;return e2?e2:e1;} else return e3; + } if(type==DOUBLE||t==DOUBLE) { e3=double_value(e3); type = t; if (e2) e2=double_value(e2); @@ -1894,6 +1897,9 @@ } #endif #if LONGLONG_CODE + if(car(e1)==LCONST) { + if(lcadr(e1)) {type=t;return e2?e2:e1;} else return e3; + } if(type==LONGLONG||t==LONGLONG) { e3=longlong_value(e3); type = t; if (e2) e2=longlong_value(e2);