diff options
Diffstat (limited to 'src/cmd/gc/const.c')
-rw-r--r-- | src/cmd/gc/const.c | 16 |
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; } |