summaryrefslogtreecommitdiff
path: root/sys/src/cmd/cc
diff options
context:
space:
mode:
authorSigrid Solveig Haflínudóttir <sigrid@ftrv.se>2023-03-17 22:10:42 +0000
committerSigrid Solveig Haflínudóttir <sigrid@ftrv.se>2023-03-17 22:10:42 +0000
commitcfebef4330c5197ea1f91747c570aa2788eaae53 (patch)
tree8ea676a899c6aa07439b1724ebed728aa3c75bdb /sys/src/cmd/cc
parent613fd6b4294ad3277a91c9a2e58b2b2d4f22ab1c (diff)
cc: fndecls: use current fn node directly
Diffstat (limited to 'sys/src/cmd/cc')
-rw-r--r--sys/src/cmd/cc/cc.h3
-rw-r--r--sys/src/cmd/cc/cc.y6
-rw-r--r--sys/src/cmd/cc/dcl.c4
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;