From cfebef4330c5197ea1f91747c570aa2788eaae53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sigrid=20Solveig=20Hafl=C3=ADnud=C3=B3ttir?= Date: Fri, 17 Mar 2023 22:10:42 +0000 Subject: cc: fndecls: use current fn node directly --- sys/src/cmd/cc/cc.h | 3 ++- sys/src/cmd/cc/cc.y | 6 +++--- sys/src/cmd/cc/dcl.c | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) (limited to 'sys/src/cmd/cc') 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; -- cgit v1.2.3