X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCpeeph.h;h=0c1b2f85ed2ae75e5f25267a376db5156c9fbdfb;hb=259fb25d65ee3cd76034fce37e3e8cbffb2aa566;hp=4fa53a59042c69c45b3d94f9e40806b92fa2d450;hpb=29779804200986ce903b5086441b49265a122dc5;p=fw%2Fsdcc diff --git a/src/SDCCpeeph.h b/src/SDCCpeeph.h index 4fa53a59..0c1b2f85 100644 --- a/src/SDCCpeeph.h +++ b/src/SDCCpeeph.h @@ -28,12 +28,19 @@ #define MAX_PATTERN_LEN 128 +struct asmLineNode; /* defined in each port */ +struct lineNode; + typedef struct lineNode { char *line; + iCode *ic; unsigned int isInline:1; unsigned int isComment:1; unsigned int isDebug:1; + unsigned int isLabel:1; + unsigned int visited:1; + struct asmLineNode *aln; struct lineNode *prev; struct lineNode *next; } @@ -50,8 +57,24 @@ typedef struct peepRule } peepRule; -void printLine (lineNode *, FILE *); -lineNode *newLineNode (char *); +typedef struct + { + char name[SDCC_NAME_MAX + 1]; + int refCount; + /* needed for deadMove: */ + bool passedLabel; + int jmpToCount; + } +labelHashEntry; + +bool isLabelDefinition (const char *line, const char **start, int *len, + bool isPeepRule); + +extern hTab *labelHash; +labelHashEntry *getLabelRef (const char *label, lineNode *head); + +void printLine (lineNode *, struct dbuf_s *); +lineNode *newLineNode (const char *); lineNode *connectLine (lineNode *, lineNode *); void initPeepHole (void); void peepHole (lineNode **);