fixed bug #458099/2
authorjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 5 Sep 2001 12:06:39 +0000 (12:06 +0000)
committerjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 5 Sep 2001 12:06:39 +0000 (12:06 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1227 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/SDCCglue.c

index 523bbc300a2715e794d2e7be229a325ae4be35e8..2657dbfaf0c8409f9ea28cf7d7f47e93a7aa9c20 100644 (file)
@@ -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;
        }
     }