Added spillA - flag set when spilt by register allocator
[fw/sdcc] / src / SDCCsymt.h
index 6ff6e0a72addecde9906c0d4dd7fe5f953c11a28..9b72775c22a91f24107be7dd842baf0cb09a3be4 100644 (file)
@@ -210,7 +210,6 @@ typedef struct symbol
     unsigned isinvariant:1;    /* is a loop invariant  */
     unsigned isstrlit:1;       /* is a string literal  */
     unsigned cdef:1;           /* compiler defined symbol */
-    unsigned allocreq:1;       /* allocation is required for this variable */
     unsigned addrtaken:1;      /* address of the symbol was taken */
     unsigned isreqv:1;         /* is the register quivalent of a symbol */
     unsigned udChked:1;                /* use def checking has been already done */
@@ -220,6 +219,7 @@ typedef struct symbol
        if a better scheme for backend is thought of */
     unsigned isLiveFcall:1;    /* is live at or across a function call */
     unsigned isspilt:1;                /* has to be spilt */
+    unsigned spillA:1;         /* spilt be register allocator */
     unsigned remat:1;          /* can be remateriazed */
     unsigned isptr:1;          /* is a pointer */
     unsigned uptr:1;           /* used as a pointer */
@@ -240,6 +240,7 @@ typedef struct symbol
                                   is quite similar.
                                 */
 
+    int allocreq ;             /* allocation is required for this variable */
     int stack;                 /* offset on stack      */
     int xstack;                        /* offset on xternal stack */
     short nRegs;               /* number of registers required */
@@ -273,6 +274,7 @@ typedef struct symbol
     int liveTo;                        /* live to sequence number */
     int used;                  /* no. of times this was used */
     int recvSize;              /* size of first argument  */
+    struct bitVect *clashes;    /* overlaps with what other symbols */
   }
 symbol;
 
@@ -469,7 +471,7 @@ void addSymChain (symbol *);
 sym_link *structElemType (sym_link *, value *);
 symbol *getStructElement (structdef *, symbol *);
 sym_link *computeType (sym_link *, sym_link *);
-void processFuncArgs (symbol *, int);
+void processFuncArgs (symbol *);
 int isSymbolEqual (symbol *, symbol *);
 int powof2 (unsigned long);
 void printTypeChain (sym_link *, FILE *);