summaryrefslogtreecommitdiff
path: root/src/cmd/gc/walk.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/gc/walk.c')
-rw-r--r--src/cmd/gc/walk.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c
index abbd37335..e5aa1e726 100644
--- a/src/cmd/gc/walk.c
+++ b/src/cmd/gc/walk.c
@@ -713,6 +713,16 @@ walkexpr(Node **np, NodeList **init)
case OCONV:
case OCONVNOP:
+ if(thechar == '5') {
+ if(isfloat[n->left->type->etype] && (n->type->etype == TINT64)) {
+ n = mkcall("float64toint64", n->type, init, conv(n->left, types[TFLOAT64]));
+ goto ret;
+ }
+ if((n->left->type->etype == TINT64) && isfloat[n->type->etype]) {
+ n = mkcall("int64tofloat64", n->type, init, conv(n->left, types[TINT64]));
+ goto ret;
+ }
+ }
walkexpr(&n->left, init);
goto ret;