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.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c
index 951496e60..a79c75131 100644
--- a/src/cmd/gc/walk.c
+++ b/src/cmd/gc/walk.c
@@ -1138,7 +1138,7 @@ walkexpr(Node **np, NodeList **init)
case OMAKECHAN:
n = mkcall1(chanfn("makechan", 1, n->type), n->type, init,
typename(n->type->type),
- conv(n->left, types[TINT]));
+ conv(n->left, types[TINT64]));
goto ret;
case OMAKEMAP:
@@ -1151,18 +1151,22 @@ walkexpr(Node **np, NodeList **init)
n = mkcall1(fn, n->type, init,
typename(t->down), // key type
typename(t->type), // value type
- conv(n->left, types[TINT]));
+ conv(n->left, types[TINT64]));
goto ret;
case OMAKESLICE:
- // makeslice(nel int, max int, width int) (ary []any)
+ // makeslice(t *Type, nel int64, max int64) (ary []any)
+ l = n->left;
+ r = n->right;
+ if(r == nil)
+ l = r = safeexpr(l, init);
t = n->type;
fn = syslook("makeslice", 1);
argtype(fn, t->type); // any-1
n = mkcall1(fn, n->type, init,
typename(n->type),
- conv(n->left, types[TINT]),
- conv(n->right, types[TINT]));
+ conv(l, types[TINT64]),
+ conv(r, types[TINT64]));
goto ret;
case ORUNESTR: