fixed bug #462479
authorjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Tue, 18 Sep 2001 09:36:50 +0000 (09:36 +0000)
committerjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Tue, 18 Sep 2001 09:36:50 +0000 (09:36 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1284 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/SDCCglue.c

index 10843a5e93589797127f8964dc526d00644c1432..b75c37ba866a17917f63f9fd270a8012856aeeca 100644 (file)
@@ -256,12 +256,14 @@ emitRegularMap (memmap * map, bool addPublics, bool arFlag)
 
          // set ival's lineno to where the symbol was defined
          if (ival) ival->lineno=sym->lineDef;
-
          eBBlockFromiCode (iCodeFromAst (ival));
          allocInfo = 1;
 
-         /* if the ival was a symbol, delete it from its segment */
-         if (IS_AST_SYM_VALUE(sym->ival->init.node)) {
+         /* 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 (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);