From: ceriel Date: Mon, 23 Oct 1989 13:45:19 +0000 (+0000) Subject: improvements for the , (comma) operator X-Git-Tag: release-5-5~2176 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=788788edc0bc9059411372abf0f5509eca6d368d;p=ack.git improvements for the , (comma) operator --- diff --git a/lang/cem/cemcom/arith.c b/lang/cem/cemcom/arith.c index 19a9a9fa2..0a169c5cc 100644 --- a/lang/cem/cemcom/arith.c +++ b/lang/cem/cemcom/arith.c @@ -412,10 +412,17 @@ opnd2test(expp, oper) register struct expr **expp; { opnd2logical(expp, oper); - if ((*expp)->ex_class == Oper && is_test_op((*expp)->OP_OPER)) - { /* It is already a test */ } - else - ch7bin(expp, NOTEQUAL, intexpr((arith)0, INT)); + if ((*expp)->ex_class == Oper) { + if (is_test_op((*expp)->OP_OPER)) { + /* It is already a test */ + return; + } + if ((*expp)->OP_OPER == ',') { + opnd2test(&((*expp)->OP_RIGHT), oper); + return; + } + } + ch7bin(expp, NOTEQUAL, intexpr((arith)0, INT)); } int diff --git a/lang/cem/cemcom/eval.c b/lang/cem/cemcom/eval.c index 352d10a49..6478a2a0a 100644 --- a/lang/cem/cemcom/eval.c +++ b/lang/cem/cemcom/eval.c @@ -526,7 +526,7 @@ EVAL(expr, val, code, true_label, false_label) break; case ',': EVAL(left, RVAL, FALSE, NO_LABEL, NO_LABEL); - EVAL(right, RVAL, gencode, NO_LABEL, NO_LABEL); + EVAL(right, RVAL, gencode, true_label, false_label); break; case '~': EVAL(right, RVAL, gencode, NO_LABEL, NO_LABEL);