diff --git a/src/cmd/6g/cgen.c b/src/cmd/6g/cgen.c index 0ab1be5c102..228916417f7 100644 --- a/src/cmd/6g/cgen.c +++ b/src/cmd/6g/cgen.c @@ -415,6 +415,12 @@ agen(Node *n, Node *res) fatal("agen: unknown op %N", n); break; + case OCONV: + if(!eqtype(n->type, nl->type, 0)) + fatal("agen: non-trivial OCONV"); + agen(nl, res); + return; + case OCALLMETH: cgen_callmeth(n, 0); cgen_aret(n, res); diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c index e0eb6481757..cfc3154fdfd 100644 --- a/src/cmd/gc/walk.c +++ b/src/cmd/gc/walk.c @@ -563,8 +563,10 @@ loop: // nil conversion if(eqtype(t, l->type, 0)) { - if(l->op != ONAME) + if(l->op != ONAME) { indir(n, l); + n->type = t; + } goto ret; }