summaryrefslogtreecommitdiff
path: root/src/cmd/6g/gsubr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/6g/gsubr.c')
-rw-r--r--src/cmd/6g/gsubr.c14
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;