Applied patch #2762516
[fw/sdcc] / src / SDCCpeeph.h
index 4fa53a59042c69c45b3d94f9e40806b92fa2d450..0c1b2f85ed2ae75e5f25267a376db5156c9fbdfb 100644 (file)
 
 #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 **);