#endif
/*-----------------------------------------------------------------*/
-/* pcDistance - afinds a label back ward or forward */
+/* pcDistance - finds a label backward or forward */
/*-----------------------------------------------------------------*/
static int
SNPRINTF (buff, sizeof(buff), "%s:", lbl);
while (pl)
{
-
if (pl->line &&
!pl->isComment &&
!pl->isLabel &&
- !pl->isDebug) {
- if (port->peep.getSize) {
- dist += port->peep.getSize(pl);
- } else {
- dist += 3;
- }
+ !pl->isDebug)
+ {
+ if (port->peep.getSize)
+ {
+ dist += port->peep.getSize(pl);
+ }
+ else
+ {
+ dist += 3;
+ }
}
if (strncmp (pl->line, buff, strlen (buff)) == 0)
return FALSE;
/* calculate the label distance : the jump for reladdr can be
- +/- 127 bytes, here Iam assuming that an average 8051
+ +/- 127 bytes, here I am assuming that an average 8051
instruction is 2 bytes long, so if the label is more than
63 intructions away, the label is considered out of range
for a relative jump. we could get more precise this will
return FALSE;
}
+/*-----------------------------------------------------------------*/
+/* notUsed - Check, if value in register is not read again */
+/*-----------------------------------------------------------------*/
+FBYNAME (notUsed)
+{
+ const char *what;
+
+ if(cmdLine[0] != '\'')
+ what = hTabItemWithKey (vars, 1);
+ else
+ {
+ cmdLine[strlen(cmdLine) - 1] = 0;
+ what = cmdLine + 1;
+ }
+
+ if (port->peep.notUsed)
+ return port->peep.notUsed (what, endPl, head);
+
+ fprintf (stderr, "Function notUsed not initialized in port structure\n");
+ return FALSE;
+}
+
/*-----------------------------------------------------------------*/
/* operandsNotSame - check if %1 & %2 are the same */
/*-----------------------------------------------------------------*/
op = IC_COND (cl->ic);
if (IS_SYMOP (op) &&
( !strcmp(OP_SYMBOL (op)->rname, symname) ||
- (OP_SYMBOL (op)->isspilt && !strcmp(SPIL_LOC (op)->rname, symname)) ))
+ (OP_SYMBOL (op)->isspilt &&
+ SPIL_LOC (op) &&
+ !strcmp(SPIL_LOC (op)->rname, symname)) ))
{
return !op->isvolatile;
}
op = IC_JTCOND (cl->ic);
if (IS_SYMOP (op) &&
( !strcmp(OP_SYMBOL (op)->rname, symname) ||
- (OP_SYMBOL (op)->isspilt && !strcmp(SPIL_LOC (op)->rname, symname)) ))
+ (OP_SYMBOL (op)->isspilt &&
+ SPIL_LOC (op) &&
+ !strcmp(SPIL_LOC (op)->rname, symname)) ))
{
return !op->isvolatile;
}
op = IC_LEFT (cl->ic);
if (IS_SYMOP (op) &&
( !strcmp(OP_SYMBOL (op)->rname, symname) ||
- (OP_SYMBOL (op)->isspilt && !strcmp(SPIL_LOC (op)->rname, symname)) ))
+ (OP_SYMBOL (op)->isspilt &&
+ SPIL_LOC (op) &&
+ !strcmp(SPIL_LOC (op)->rname, symname)) ))
{
return !op->isvolatile;
}
op = IC_RIGHT (cl->ic);
if (IS_SYMOP (op) &&
( !strcmp(OP_SYMBOL (op)->rname, symname) ||
- (OP_SYMBOL (op)->isspilt && !strcmp(SPIL_LOC (op)->rname, symname)) ))
+ (OP_SYMBOL (op)->isspilt &&
+ SPIL_LOC (op) &&
+ !strcmp(SPIL_LOC (op)->rname, symname)) ))
{
return !op->isvolatile;
}
op = IC_RESULT (cl->ic);
if (IS_SYMOP (op) &&
( !strcmp(OP_SYMBOL (op)->rname, symname) ||
- (OP_SYMBOL (op)->isspilt && !strcmp(SPIL_LOC (op)->rname, symname)) ))
+ (OP_SYMBOL (op)->isspilt &&
+ SPIL_LOC (op) &&
+ !strcmp(SPIL_LOC (op)->rname, symname)) ))
{
return !op->isvolatile;
}
return "a";
if (!strncmp (op, "ar", 2) && ISCHARDIGIT(*(op+2)) && !*(op+3))
return op+1;
+ // bug 1739475, temp fix
+ if (op[0] == '@')
+ return operandBaseName(op+1);
}
return op;
},
{
"useAcallAjmp", useAcallAjmp
+ },
+ {
+ "notUsed", notUsed
}
};
/*-----------------------------------------------------------------*/
static int
callFuncByName (char *fname,
hTab * vars,
- lineNode * currPl,
- lineNode * endPl,
+ lineNode * currPl, /* first source line matched */
+ lineNode * endPl, /* last source line matched */
lineNode * head)
{
int i;