]> git.gag.com Git - fw/sdcc/commitdiff
fixed bug #458099 (again, but now better)
authorjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 24 Jan 2003 16:42:12 +0000 (16:42 +0000)
committerjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 24 Jan 2003 16:42:12 +0000 (16:42 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2170 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/SDCCast.c
src/SDCCglue.c

index a7440963a73d1a0979efc099a30dbdd2575c866b..f16d4ca76b29bcdfcc4996ba099a173559d8f23a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 2003-01-24    <johan@CP255758-A>
 
+       * src/SDCCglue.c (emitRegularMap): fixed bug #458099 again
        * src/SDCCast.c (createIvalCharPtr): fixed bug #661910
 
 2003-01-24  Bernhard Held <bernhard@bernhardheld.de>
index 3651b7866debdbfbc77bb4325f0fa5796627834b..8ecb5709f50d3f73748d269d3b943d1a8cbaedb8 100644 (file)
@@ -966,7 +966,14 @@ createIvalCharPtr (ast * sym, sym_link * type, ast * iexpr)
                                   newAst_VALUE (valueFromLit ((float) i))),
                               newAst_VALUE (valueFromLit (*s))));
 
-      return decorateType (resolveSymbols (rast));
+      // 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));
     }
 
   return NULL;
@@ -1226,6 +1233,10 @@ bool constExprTree (ast *cexpr) {
        // a function's address will never change
        return TRUE;
       }
+      if (IS_AST_SYM_VALUE(cexpr) && IS_ARRAY(AST_SYMBOL(cexpr)->type)) {
+       // an array's address will never change
+       return TRUE;
+      }
       if (IS_AST_SYM_VALUE(cexpr) && 
          IN_CODESPACE(SPEC_OCLS(AST_SYMBOL(cexpr)->etype))) {
        // a symbol in code space will never change
index 59f82998c0ae74494db1f6ab87f58f442fff2a36..6b100947609d50c93f57cd255e586c900ac944ab 100644 (file)
@@ -256,7 +256,6 @@ emitRegularMap (memmap * map, bool addPublics, bool arFlag)
          sprintf (newSym->rname,"__xinit_%s", sym->rname);
          SPEC_CONST(newSym->etype)=1;
          SPEC_STAT(newSym->etype)=1;
-         resolveIvalSym(newSym->ival);
 
          // add it to the "XINIT (CODE)" segment
          addSet(&xinit->syms, newSym);