summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cmd/gc/const.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/cmd/gc/const.c b/src/cmd/gc/const.c
index ad8607794..a61ebe5ee 100644
--- a/src/cmd/gc/const.c
+++ b/src/cmd/gc/const.c
@@ -67,7 +67,7 @@ convlit(Node *n, Type *t)
break;
if(et == TINTER)
break;
- return;
+ goto bad1;
case Wlitstr:
if(isnilinter(t)) {
@@ -212,6 +212,7 @@ evconst(Node *n)
case Wlitfloat:
case Wlitbool:
case Wlitstr:
+ case Wlitnil:
break;
}
@@ -228,6 +229,7 @@ evconst(Node *n)
case Wlitfloat:
case Wlitbool:
case Wlitstr:
+ case Wlitnil:
break;
}
@@ -246,7 +248,7 @@ evconst(Node *n)
nl->val.ctype = CTFLT;
wl = whatis(nl);
} else {
- yyerror("illegal combination of literals %O %E, %E", n->op, wl, wr);
+ yyerror("illegal combination of literals %O %W, %W", n->op, wl, wr);
return;
}
}
@@ -264,7 +266,7 @@ evconst(Node *n)
switch(TUP(n->op, wl)) {
default:
- yyerror("illegal literal %O %E", n->op, wl);
+ yyerror("illegal literal %O %W", n->op, wl);
return;
case TUP(OADD, Wlitint):
@@ -312,6 +314,11 @@ evconst(Node *n)
mpdivfltflt(fval, nr->val.u.fval);
break;
+ case TUP(OEQ, Wlitnil):
+ goto settrue;
+ case TUP(ONE, Wlitnil):
+ goto setfalse;
+
case TUP(OEQ, Wlitint):
if(mpcmpfixfix(xval, nr->val.u.xval) == 0)
goto settrue;