From fa0f6cd0c61e468475953b8ef982cfe004653a28 Mon Sep 17 00:00:00 2001 From: ceriel Date: Mon, 9 Mar 1987 10:15:51 +0000 Subject: [PATCH] Lindseys fix to a bug with nested procedures --- util/opt/backward.c | 10 ++++++---- util/opt/lookup.h | 1 + util/opt/process.c | 3 ++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/util/opt/backward.c b/util/opt/backward.c index ab842f843..eca9f9ece 100644 --- a/util/opt/backward.c +++ b/util/opt/backward.c @@ -32,10 +32,12 @@ static char rcsid[] = "$Header$"; * Author: Hans van Staveren */ -#define local(x) if (((x)->s_flags&SYMKNOWN) == 0)\ - x->s_flags &= ~ SYMGLOBAL -#define global(x) if(((x)->s_flags&SYMKNOWN) == 0)\ - x->s_flags |= SYMGLOBAL +#define local(x) ((((x)->s_flags&SYMKNOWN) == 0 && \ + ((x)->s_flags &= ~ SYMGLOBAL)),\ + (x)->s_flags |= SYMSEEN) +#define global(x) ((((x)->s_flags&SYMKNOWN) == 0 && \ + ((x)->s_flags |= SYMGLOBAL)), \ + (x)->s_flags |= SYMSEEN) #define DTYPHOL 1 #define DTYPBSS 2 diff --git a/util/opt/lookup.h b/util/opt/lookup.h index 0d36e3b41..9ec0a7ea9 100644 --- a/util/opt/lookup.h +++ b/util/opt/lookup.h @@ -17,6 +17,7 @@ struct sym { #define SYMKNOWN 000004 #define SYMOUT 000010 #define SYMDEF 000020 +#define SYMSEEN 000040 #define NSYMHASH 127 extern sym_p symhash[NSYMHASH],symlookup(); diff --git a/util/opt/process.c b/util/opt/process.c index 0c763d847..d6c606833 100644 --- a/util/opt/process.c +++ b/util/opt/process.c @@ -93,7 +93,8 @@ symknown() { for (spp = symhash; spp < &symhash[NSYMHASH]; spp++) for (sp = *spp; sp != (sym_p) 0; sp = sp->s_next) - sp->s_flags |= SYMKNOWN; + if (sp->s_flags & SYMSEEN) + sp->s_flags |= SYMKNOWN; } cleanlocals() { -- 2.34.1