From: Rémy Oudompheng Date: Tue, 19 Mar 2013 23:19:11 +0000 (+0100) Subject: cmd/gc: implement revised rule for shifts in equality. X-Git-Tag: go1.1rc2~434 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=465ff4cfc017360d5a9efbdadee7dbf431e4d69b;p=gostls13.git cmd/gc: implement revised rule for shifts in equality. R=rsc, daniel.morsing CC=golang-dev https://golang.org/cl/7613046 --- diff --git a/src/cmd/gc/const.c b/src/cmd/gc/const.c index db9693007d..add438daf8 100644 --- a/src/cmd/gc/const.c +++ b/src/cmd/gc/const.c @@ -1211,6 +1211,7 @@ void defaultlit2(Node **lp, Node **rp, int force) { Node *l, *r; + int lkind, rkind; l = *lp; r = *rp; @@ -1230,18 +1231,20 @@ defaultlit2(Node **lp, Node **rp, int force) convlit(lp, types[TBOOL]); convlit(rp, types[TBOOL]); } - if(isconst(l, CTCPLX) || isconst(r, CTCPLX)) { + lkind = idealkind(l); + rkind = idealkind(r); + if(lkind == CTCPLX || rkind == CTCPLX) { convlit(lp, types[TCOMPLEX128]); convlit(rp, types[TCOMPLEX128]); return; } - if(isconst(l, CTFLT) || isconst(r, CTFLT)) { + if(lkind == CTFLT || rkind == CTFLT) { convlit(lp, types[TFLOAT64]); convlit(rp, types[TFLOAT64]); return; } - if(isconst(l, CTRUNE) || isconst(r, CTRUNE)) { + if(lkind == CTRUNE || rkind == CTRUNE) { convlit(lp, runetype); convlit(rp, runetype); return;