summaryrefslogtreecommitdiff
path: root/src/cmd/gc/const.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/gc/const.c')
-rw-r--r--src/cmd/gc/const.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/cmd/gc/const.c b/src/cmd/gc/const.c
index 9bd3e742e..12a7ef83b 100644
--- a/src/cmd/gc/const.c
+++ b/src/cmd/gc/const.c
@@ -140,12 +140,16 @@ evconst(Node *n)
}
if(wl != wr) {
- if(wl == Wlitfloat && wr == Wlitint)
- convlit(n->right, n->left->type);
- else
- if(wl == Wlitint && wr == Wlitfloat)
- convlit(n->left, n->right->type);
- else {
+ if(wl == Wlitfloat && wr == Wlitint) {
+ nr->val.dval = nr->val.vval;
+ nr->val.ctype = CTFLT;
+ wr = whatis(nr);
+ } else
+ if(wl == Wlitint && wr == Wlitfloat) {
+ nl->val.dval = nl->val.vval;
+ nl->val.ctype = CTFLT;
+ wl = whatis(nl);
+ } else {
yyerror("illegal combination of literals %d %d", nl->etype, nr->etype);
return;
}