diff options
Diffstat (limited to 'src/cmd/6g/gsubr.c')
-rw-r--r-- | src/cmd/6g/gsubr.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cmd/6g/gsubr.c b/src/cmd/6g/gsubr.c index 0c5141d9b..5ed0a8105 100644 --- a/src/cmd/6g/gsubr.c +++ b/src/cmd/6g/gsubr.c @@ -417,6 +417,8 @@ int ismem(Node *n) { switch(n->op) { + case OLEN: + case OCAP: case OINDREG: case ONAME: case OPARAM: @@ -1012,6 +1014,18 @@ naddr(Node *n, Addr *a) } fatal("naddr: OADDR\n"); + case OLEN: + // len of string or slice + naddr(n->left, a); + a->offset += Array_nel; + break; + + case OCAP: + // cap of string or slice + naddr(n->left, a); + a->offset += Array_cap; + break; + // case OADD: // if(n->right->op == OLITERAL) { // v = n->right->vconst; |