summaryrefslogtreecommitdiff
path: root/src/cmd/8g/gsubr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/8g/gsubr.c')
-rwxr-xr-xsrc/cmd/8g/gsubr.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cmd/8g/gsubr.c b/src/cmd/8g/gsubr.c
index f5fbc17fe..77a4532f0 100755
--- a/src/cmd/8g/gsubr.c
+++ b/src/cmd/8g/gsubr.c
@@ -959,6 +959,8 @@ int
ismem(Node *n)
{
switch(n->op) {
+ case OLEN:
+ case OCAP:
case OINDREG:
case ONAME:
case OPARAM:
@@ -1762,6 +1764,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;