* src/SDCCsymt.h: added IS_AUTO(symbol) test macro
[fw/sdcc] / src / SDCCmem.c
index 4c62eb07069b1456a912a6b10206cb719f75b84e..dc0982b44137381faf5189e571f0a864e171194a 100644 (file)
@@ -766,7 +766,7 @@ overlay2data ()
       allocIntoSeg (sym);
     }
 
-  setToNull ((void **) &overlay->syms);
+  setToNull ((void *) &overlay->syms);
 
 }
 
@@ -787,7 +787,7 @@ overlay2Set ()
       addSet (&oset, sym);
     }
 
-  setToNull ((void **) &overlay->syms);
+  setToNull ((void *) &overlay->syms);
   addSet (&ovrSetSets, oset);
 
 }
@@ -976,7 +976,7 @@ printAllocInfoSeg (memmap * map, symbol * func, FILE * of)
     return;
   if (!map->syms)
     return;
-
+  
   for (sym = setFirstItem (map->syms); sym;
        sym = setNextItem (map->syms))
     {
@@ -985,7 +985,8 @@ printAllocInfoSeg (memmap * map, symbol * func, FILE * of)
        continue;
       if (sym->localof != func)
        continue;
-      fprintf (of, ";%-25s Allocated to ", sym->name);
+      
+      fprintf (of, ";%-25s Allocated ", sym->name);
 
       /* if assigned to registers */
       if (!sym->allocreq && sym->reqv)
@@ -993,22 +994,29 @@ printAllocInfoSeg (memmap * map, symbol * func, FILE * of)
          int i;
 
          sym = OP_SYMBOL (sym->reqv);
-         fprintf (of, "registers ");
-         for (i = 0; i < 4 && sym->regs[i]; i++)
-           fprintf (of, "%s ", port->getRegName (sym->regs[i]));
-         fprintf (of, "\n");
-         continue;
+         if (!sym->isspilt || sym->remat)
+           {
+             fprintf (of, "to registers ");
+             for (i = 0; i < 4 && sym->regs[i]; i++)
+               fprintf (of, "%s ", port->getRegName (sym->regs[i]));
+             fprintf (of, "\n");
+             continue;
+           }
+         else
+           {
+             sym = sym->usl.spillLoc;
+           }
        }
 
       /* if on stack */
       if (sym->onStack)
        {
-         fprintf (of, "stack - offset %d\n", sym->stack);
+         fprintf (of, "to stack - offset %d\n", sym->stack);
          continue;
        }
 
       /* otherwise give rname */
-      fprintf (of, "in memory with name '%s'\n", sym->rname);
+      fprintf (of, "with name '%s'\n", sym->rname);
     }
 }
 
@@ -1090,7 +1098,7 @@ printAllocInfo (symbol * func, FILE * of)
     
   if (!of)
     of = stdout;
-    
+
   /* must be called after register allocation is complete */
   fprintf (of, ";------------------------------------------------------------\n");
   fprintf (of, ";Allocation info for local variables in function '%s'\n", func->name);
@@ -1104,5 +1112,20 @@ printAllocInfo (symbol * func, FILE * of)
   printAllocInfoSeg (idata, func, of);
   printAllocInfoSeg (sfr, func, of);
   printAllocInfoSeg (sfrbit, func, of);
+  
+  {
+    set *ovrset;
+    set *tempOverlaySyms = overlay->syms;
+    
+    /* search the set of overlay sets for local variables/parameters */
+    for (ovrset = setFirstItem (ovrSetSets); ovrset;
+         ovrset = setNextItem (ovrSetSets))
+      {
+        overlay->syms = ovrset;
+        printAllocInfoSeg (overlay, func, of);
+      }
+    overlay->syms = tempOverlaySyms;
+  }
+  
   fprintf (of, ";------------------------------------------------------------\n");
 }