SPEC_OCLS (sym->etype) = code;
/* if this is an interrupt service routine
then put it in the interrupt service array */
- if (FUNC_ISISR (sym->type) && !options.noiv)
+ if (FUNC_ISISR (sym->type) && !options.noiv
+ && (FUNC_INTNO (sym->type) != INTNO_UNSPEC))
{
-
if (interrupts[FUNC_INTNO (sym->type)])
werror (E_INT_DEFINED,
FUNC_INTNO (sym->type),
allocIntoSeg (sym);
}
- setToNull ((void **) &overlay->syms);
+ setToNull ((void *) &overlay->syms);
}
addSet (&oset, sym);
}
- setToNull ((void **) &overlay->syms);
+ setToNull ((void *) &overlay->syms);
addSet (&ovrSetSets, oset);
}
if (csym && csym->level == sym->level)
werror (E_DUPLICATE_TYPEDEF, sym->name);
+ SPEC_EXTR (sym->etype) = 0;
addSym (TypedefTab, sym, sym->name, sym->level, sym->block, 0);
continue; /* go to the next one */
}
return;
if (!map->syms)
return;
-
+
for (sym = setFirstItem (map->syms); sym;
sym = setNextItem (map->syms))
{
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)
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);
}
}
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);
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");
}