From fd0914b3fadd0733e1ee1b4cd380e795ee5b330c Mon Sep 17 00:00:00 2001 From: johanknol Date: Thu, 17 Jan 2002 11:38:45 +0000 Subject: [PATCH] fixed bug #504479 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1808 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/SDCCast.c | 7 +++++++ src/SDCCglue.c | 21 +++------------------ 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/src/SDCCast.c b/src/SDCCast.c index 7092d9ea..1d3ef845 100644 --- a/src/SDCCast.c +++ b/src/SDCCast.c @@ -950,6 +950,13 @@ createIvalCharPtr (ast * sym, sym_link * type, ast * iexpr) newNode ('[', sym, newAst_VALUE (valueFromLit ((float) i))), newAst_VALUE (valueFromLit (*s)))); + + // now we don't need iexpr's symbol anymore + { + symbol *sym=AST_SYMBOL(iexpr); + memmap *segment=SPEC_OCLS(sym->etype); + deleteSetItem(&segment->syms, sym); + } return decorateType (resolveSymbols (rast)); } diff --git a/src/SDCCglue.c b/src/SDCCglue.c index 78ea8bfa..53f2d85e 100644 --- a/src/SDCCglue.c +++ b/src/SDCCglue.c @@ -154,9 +154,8 @@ aopLiteral (value * val, int offset) static void emitRegularMap (memmap * map, bool addPublics, bool arFlag) { - symbol *sym, *symIval; + symbol *sym; ast *ival = NULL; - memmap *segment; if (!map) return; @@ -242,10 +241,8 @@ emitRegularMap (memmap * map, bool addPublics, bool arFlag) sprintf (newSym->rname,"__xinit_%s", sym->rname); SPEC_CONST(newSym->etype)=1; SPEC_STAT(newSym->etype)=1; - //addSym (SymbolTab, newSym, newSym->name, 0, 0, 1); - if (!IS_AGGREGATE(sym->type)) { - resolveIvalSym(newSym->ival); - } + resolveIvalSym(newSym->ival); + // add it to the "XINIT (CODE)" segment addSet(&xinit->syms, newSym); sym->ival=NULL; @@ -275,18 +272,6 @@ emitRegularMap (memmap * map, bool addPublics, bool arFlag) allocInfo = 1; } } - - /* if the ival is a symbol assigned to an aggregate, - (bug #458099 -> #462479) - we don't need it anymore, so delete it from its segment */ - if (sym->ival && sym->ival->type == INIT_NODE && - IS_AST_SYM_VALUE(sym->ival->init.node) && - IS_AGGREGATE (sym->type) ) { - symIval=AST_SYMBOL(sym->ival->init.node); - segment = SPEC_OCLS (symIval->etype); - deleteSetItem (&segment->syms, symIval); - } - sym->ival = NULL; } -- 2.39.5