/* symbol name is internal name */
if (!sym->level) /* local statics can come here */
- sprintf (sym->rname, "%s%s", port->fun_prefix, sym->name);
+ SNPRINTF (sym->rname, sizeof(sym->rname),
+ "%s%s", port->fun_prefix, sym->name);
/* add it to the operandKey reset */
- addSet (&operKeyReset, sym);
+ if (!isinSet (operKeyReset, sym)) {
+ addSet(&operKeyReset, sym);
+ }
/* if this is a literal e.g. enumerated type */
/* put it in the data segment & do nothing */
SPEC_SCLS (sym->etype) == S_SBIT)
{
- /* if both absolute address & initial */
- /* value specified then error */
- if (IS_ABSOLUTE (sym->etype) && sym->ival)
- {
- werror (E_SFR_INIT, sym->name);
- sym->ival = NULL;
- }
-
SPEC_OCLS (sym->etype) =
(SPEC_SCLS (sym->etype) == S_SFR ? sfr : sfrbit);
else
{ /* allocate them in the automatic space */
/* generate a unique name */
- sprintf (lval->sym->rname, "%s%s_PARM_%d", port->fun_prefix, currFunc->name, pNum);
+ SNPRINTF (lval->sym->rname, sizeof(lval->sym->rname),
+ "%s%s_PARM_%d", port->fun_prefix, currFunc->name, pNum);
strncpyz (lval->name, lval->sym->rname, sizeof(lval->name));
/* if declared in external storage */
addSym (SymbolTab, lval->sym, lval->sym->name,
lval->sym->level, lval->sym->block, 1);
lval->sym->_isparm = 1;
- addSet (&operKeyReset, lval->sym);
+ if (!isinSet (operKeyReset, lval->sym)) {
+ addSet(&operKeyReset, lval->sym);
+ }
}
}
{
/* generate an unique name */
- sprintf (sym->rname, "%s%s_%s_%d_%d",
- port->fun_prefix,
- currFunc->name, sym->name, sym->level, sym->block);
+ SNPRINTF (sym->rname, sizeof(sym->rname),
+ "%s%s_%s_%d_%d",
+ port->fun_prefix,
+ currFunc->name, sym->name, sym->level, sym->block);
sym->islocal = 1;
sym->localof = currFunc;
if (SPEC_SCLS (sym->etype) == S_SFR ||
SPEC_SCLS (sym->etype) == S_SBIT)
{
-
- /* if both absolute address & initial */
- /* value specified then error */
- if (IS_ABSOLUTE (sym->etype) && sym->ival)
- {
- werror (E_SFR_INIT, sym->name);
- sym->ival = NULL;
- }
-
SPEC_OCLS (sym->etype) =
(SPEC_SCLS (sym->etype) == S_SFR ? sfr : sfrbit);
/* then args processing */
if (funcInChain (csym->type))
{
-#if 1 // jwk: TODO should have been done already in addDecl() (oclass????)
processFuncArgs (csym);
-#endif
+
/* if register bank specified then update maxRegBank */
if (maxRegBank < FUNC_REGBANK (csym->type))
maxRegBank = FUNC_REGBANK (csym->type);
if (!sym->allocreq && sym->reqv)
{
int i;
+
sym = OP_SYMBOL (sym->reqv);
fprintf (of, "registers ");
for (i = 0; i < 4 && sym->regs[i]; i++)