diff options
author | Sigrid Solveig Haflínudóttir <sigrid@ftrv.se> | 2023-03-17 22:10:42 +0000 |
---|---|---|
committer | Sigrid Solveig Haflínudóttir <sigrid@ftrv.se> | 2023-03-17 22:10:42 +0000 |
commit | cfebef4330c5197ea1f91747c570aa2788eaae53 (patch) | |
tree | 8ea676a899c6aa07439b1724ebed728aa3c75bdb /sys/src/cmd/cc | |
parent | 613fd6b4294ad3277a91c9a2e58b2b2d4f22ab1c (diff) |
cc: fndecls: use current fn node directly
Diffstat (limited to 'sys/src/cmd/cc')
-rw-r--r-- | sys/src/cmd/cc/cc.h | 3 | ||||
-rw-r--r-- | sys/src/cmd/cc/cc.y | 6 | ||||
-rw-r--r-- | sys/src/cmd/cc/dcl.c | 4 |
3 files changed, 7 insertions, 6 deletions
diff --git a/sys/src/cmd/cc/cc.h b/sys/src/cmd/cc/cc.h index 7f77e368d..83f2651ba 100644 --- a/sys/src/cmd/cc/cc.h +++ b/sys/src/cmd/cc/cc.h @@ -463,6 +463,7 @@ EXTERN Type* tufield; EXTERN int thechar; EXTERN char* thestring; EXTERN Type* thisfn; +EXTERN Node* thisfnnode; EXTERN Type* types[NTYPE]; EXTERN Type* fntypes[NTYPE]; EXTERN Node* initlist; @@ -583,7 +584,7 @@ Type* dotag(Sym*, int, int); void edecl(int, Type*, Sym*); Type* fnproto(Node*); Type* fnproto1(Node*); -void fndecls(Node*, int); +void fndecls(int); void markdcl(void); Type* paramconv(Type*, int); void pdecl(int, Type*, Sym*); diff --git a/sys/src/cmd/cc/cc.y b/sys/src/cmd/cc/cc.y index f50bf3531..7c234c4db 100644 --- a/sys/src/cmd/cc/cc.y +++ b/sys/src/cmd/cc/cc.y @@ -82,7 +82,7 @@ xdecl: { lastdcl = T; firstarg = S; - dodecl(xdecl, lastclass, lasttype, $2); + thisfnnode = dodecl(xdecl, lastclass, lasttype, $2); if(lastdcl == T || lastdcl->etype != TFUNC) { diag($2, "not a function"); lastdcl = types[TFUNC]; @@ -95,13 +95,13 @@ xdecl: pdecl { argmark($2, 1); - fndecls($2, 0); + fndecls(0); } block { Node *n; - fndecls($2, 1); + fndecls(1); n = revertdcl(); if(n) $6 = new(OLIST, n, $6); diff --git a/sys/src/cmd/cc/dcl.c b/sys/src/cmd/cc/dcl.c index 46a7430cd..0baa5b554 100644 --- a/sys/src/cmd/cc/dcl.c +++ b/sys/src/cmd/cc/dcl.c @@ -732,7 +732,7 @@ loop: } void -fndecls(Node *f, int pass) +fndecls(int pass) { static Sym *funcsym; Node *n; @@ -746,7 +746,7 @@ fndecls(Node *f, int pass) funcsym = dodecl(adecl, CLOCAL, n->type, n)->sym; }else if(funcsym->aused){ n = new(OSTRING, Z, Z); - n->cstring = f->left->sym->name; + n->cstring = thisfnnode->sym->name; n->type = copytyp(funcsym->type); n->type->width = strlen(n->cstring)+1; n->etype = TARRAY; |