const char *label, *p;
const lineNode *pl;
int len;
+ char * retInst;
label = hTabItemWithKey (vars, 5);
if (!label) return FALSE;
len = strlen(label);
for(pl = currPl; pl; pl = pl->next) {
- if (pl->line && !pl->isDebug &&
+ if (pl->line && !pl->isDebug && !pl->isComment &&
pl->line[strlen(pl->line)-1] == ':') {
if (strncmp(pl->line, label, len) == 0) break; /* Found Label */
if (strlen(pl->line) != 7 || !isdigit(*(pl->line)) ||
}
if (!pl) return FALSE; /* did not find the label */
pl = pl->next;
+ while (pl && (pl->isDebug || pl->isComment))
+ pl = pl->next;
if (!pl || !pl->line || pl->isDebug) return FALSE; /* next line not valid */
p = pl->line;
for (p = pl->line; *p && isspace(*p); p++)
;
- if (strcmp(p, "ret") == 0) return TRUE;
+
+ retInst = "ret";
+ if (TARGET_IS_HC08)
+ retInst = "rts";
+ if (strcmp(p, retInst) == 0) return TRUE;
return FALSE;
}
memcpy (entry->name, label, labelLen);
entry->name[labelLen] = 0;
entry->refCount = -1;
+
+ /* Assume function entry points are referenced somewhere, */
+ /* even if we can't find a reference (might be from outside */
+ /* the function) */
+ if (line->ic && (line->ic->op == FUNCTION))
+ entry->refCount++;
hTabAddItem (&labelHash, hashSymbolName (entry->name), entry);
}