Minor changes. Includes no$gmb sym name limit.
[fw/sdcc] / src / SDCCsymt.h
index 391bf5033e44ce4c00434b01372daf0c0a8a7c2c..504609c652cdcfdf4cb24684d2eefc8a4d0f6a34 100644 (file)
@@ -101,6 +101,7 @@ typedef struct specifier {
     unsigned   _typedef :1  ;  /* is typedefed               */
     unsigned   _isregparm:1 ;  /* is the first parameter     */
     unsigned   _isenum   :1 ;  /* is an enumerated type      */
+    unsigned    banked   :1      ;  /* function has banked attribute */
     unsigned   _IntNo       ;  /* 1=Interrupt svc routine    */
     short      _regbank     ;  /* register bank 2b used      */
     unsigned   _addr        ;  /* address of symbol          */
@@ -183,6 +184,7 @@ typedef struct symbol {
     unsigned isreqv     :1      ;  /* is the register quivalent of a symbol */
     unsigned hasFcall   :1      ;  /* for functions does it call other functions */
     unsigned calleeSave :1      ;  /* for functions uses callee save paradigm */
+    unsigned udChked    :1      ;  /* use def checking has been already done */
 
     /* following flags are used by the backend
        for code generation and can be changed
@@ -200,9 +202,13 @@ typedef struct symbol {
     unsigned onStack    :1      ;  /* this symbol allocated on the stack */
     unsigned iaccess    :1      ;  /* indirect access      */
     unsigned ruonly     :1      ;  /* used in return statement only */
-    unsigned accuse     :1      ;  /* can be left in the accumulator */
     unsigned spildir    :1      ;  /* spilt in direct space */
     unsigned ptrreg     :1      ;  /* this symbol assigned to a ptr reg */
+    unsigned accuse             ;  /* can be left in the accumulator
+                                     On the Z80 accuse is devided into
+                                     ACCUSE_A and ACCUSE_HL as the idea
+                                     is quite similar.
+                                  */
 
     int      stack              ;  /* offset on stack      */
     int      xstack             ;  /* offset on xternal stack */
@@ -273,6 +279,7 @@ typedef struct symbol {
 #define SPEC_STRUCT(x) x->select.s.v_struct
 #define SPEC_TYPEDEF(x) x->select.s._typedef
 #define SPEC_REGPARM(x) x->select.s._isregparm
+#define SPEC_BANKED(x) x->select.s.banked
 
 /* type check macros */
 #define IS_DECL(x)   ( x && x->class == DECLARATOR     )
@@ -319,6 +326,7 @@ typedef struct symbol {
 #define IS_LITERAL(x)   (IS_SPEC(x)  && x->select.s.sclass == S_LITERAL)
 #define IS_ISR(x)              (IS_SPEC(x)  && SPEC_INTRTN(x))
 #define IS_REGPARM(x)   (IS_SPEC(x) && SPEC_REGPARM(x))
+#define IS_BANKED(x)   (IS_SPEC(x) && SPEC_BANKED(x))
 
 /* forward declaration for the global vars */
 extern bucket *SymbolTab[] ;