From: ceriel Date: Thu, 16 Nov 1989 14:57:15 +0000 (+0000) Subject: bug fix: static link was not always removed X-Git-Tag: release-5-5~2076 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=e93e25651262724aae434802ae1230b8c9782cb1;p=ack.git bug fix: static link was not always removed --- diff --git a/lang/pc/comp/declar.g b/lang/pc/comp/declar.g index c04b2748a..4c7a007dc 100644 --- a/lang/pc/comp/declar.g +++ b/lang/pc/comp/declar.g @@ -320,7 +320,8 @@ ProcedureHeading(register struct node **pnd; register struct type **ptp;) | /* empty */ { *ptp = - proc_type((struct paramlist *)0, (arith) 0); + proc_type((struct paramlist *)0, + (proclevel > 1) ? pointer_size : (arith) 0); } ] ; @@ -383,7 +384,7 @@ FunctionHeading(register struct node **pnd; register struct type **ptp;) struct node *fpl = NULLNODE; struct type *tp; struct paramlist *pr = 0; - arith nb_pars = 0; + arith nb_pars = (proclevel > 1) ? pointer_size : 0; } : FUNCTION IDENT { *pnd = MkLeaf(Name, &dot); diff --git a/lang/pc/comp/def.c b/lang/pc/comp/def.c index 564d6af76..861acc914 100644 --- a/lang/pc/comp/def.c +++ b/lang/pc/comp/def.c @@ -157,7 +157,15 @@ DoDirective(directive, nd, tp, scl, function) df->df_type = tp; df->prc_vis = scl; df->prc_name = gen_proc_name(nd->nd_IDF, inp); - if( ext ) df->df_flags |= D_EXTERNAL; + if( ext ) { + if (!(df->df_flags & D_EXTERNAL) && proclevel > 1) + tp->prc_nbpar -= pointer_size; + /* was added for static link which is not needed now. + But make sure this is done only once (look at the + D_EXTERNAL flag). + */ + df->df_flags |= D_EXTERNAL; + } df->df_flags |= D_SET; } }