From 4eee1f5d91f90e8b3e24168c0f14a4d771adc697 Mon Sep 17 00:00:00 2001 From: johanknol Date: Wed, 5 Sep 2001 12:06:39 +0000 Subject: [PATCH] fixed bug #458099/2 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1227 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/SDCCglue.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/SDCCglue.c b/src/SDCCglue.c index 523bbc30..2657dbfa 100644 --- a/src/SDCCglue.c +++ b/src/SDCCglue.c @@ -149,8 +149,9 @@ aopLiteral (value * val, int offset) static void emitRegularMap (memmap * map, bool addPublics, bool arFlag) { - symbol *sym; + symbol *sym, *symIval; ast *ival = NULL; + memmap *segment; if (addPublics) { @@ -244,7 +245,6 @@ emitRegularMap (memmap * map, bool addPublics, bool arFlag) it is a global variable */ if (sym->ival && sym->level == 0) { - if (IS_AGGREGATE (sym->type)) ival = initAggregates (sym, sym->ival, NULL); else @@ -258,6 +258,12 @@ emitRegularMap (memmap * map, bool addPublics, bool arFlag) eBBlockFromiCode (iCodeFromAst (ival)); allocInfo = 1; + + /* if the ival was a symbol, delete it from its segment */ + if (symIval=AST_SYMBOL(sym->ival->init.node)) { + segment = SPEC_OCLS (symIval->etype); + deleteSetItem (&segment->syms, symIval); + } sym->ival = NULL; } } -- 2.47.2