X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCpeeph.h;h=0c1b2f85ed2ae75e5f25267a376db5156c9fbdfb;hb=4f59e9748a5ba3638324cf2ada80152975eca459;hp=a53adc21c768302c3a8e483aa8c747bceb5cacbb;hpb=c819b1e06a731b497ea9e0bfbb6b3b753306a190;p=fw%2Fsdcc diff --git a/src/SDCCpeeph.h b/src/SDCCpeeph.h index a53adc21..0c1b2f85 100644 --- a/src/SDCCpeeph.h +++ b/src/SDCCpeeph.h @@ -28,30 +28,55 @@ #define MAX_PATTERN_LEN 128 +struct asmLineNode; /* defined in each port */ +struct lineNode; + typedef struct lineNode -{ - char *line ; + { + 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; -} lineNode; + } +lineNode; typedef struct peepRule -{ - lineNode *match ; - lineNode *replace ; - unsigned int restart : 1; + { + lineNode *match; + lineNode *replace; + unsigned int restart:1; char *cond; hTab *vars; struct peepRule *next; -} peepRule; + } +peepRule; + +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 *,FILE *); -lineNode *newLineNode (char *); -lineNode *connectLine (lineNode *,lineNode *); -void initPeepHole(void); +void printLine (lineNode *, struct dbuf_s *); +lineNode *newLineNode (const char *); +lineNode *connectLine (lineNode *, lineNode *); +void initPeepHole (void); void peepHole (lineNode **); #endif