* src/z80/main.c (_process_pragma, _parseOptions): fixed bug 1583318
[fw/sdcc] / src / SDCCsymt.h
index 8455dbcfb2bdda4ae4b78b39ddd160253c0c336d..c30beab8c1570c0695023c74117c49828f037cab 100644 (file)
@@ -60,10 +60,17 @@ enum {
 };
 
 // values for first byte (or 3 most significant bits) of generic pointer.
+#if 0
 #define GPTYPE_FAR       0x00
 #define GPTYPE_NEAR      0x40
 #define GPTYPE_XSTACK    0x60
 #define GPTYPE_CODE      0x80
+#else
+#define GPTYPE_FAR     (port->gp_tags.tag_far)
+#define GPTYPE_NEAR    (port->gp_tags.tag_near)
+#define GPTYPE_XSTACK  (port->gp_tags.tag_xstack)
+#define GPTYPE_CODE    (port->gp_tags.tag_code)
+#endif
 
 #define HASHTAB_SIZE 256
 
@@ -129,6 +136,13 @@ typedef enum
   }
 STORAGE_CLASS;
 
+#define TYPE_TARGET_CHAR  TYPE_BYTE
+#define TYPE_TARGET_INT   TYPE_WORD
+#define TYPE_TARGET_LONG  TYPE_DWORD
+#define TYPE_TARGET_UCHAR TYPE_UBYTE
+#define TYPE_TARGET_UINT  TYPE_UWORD
+#define TYPE_TARGET_ULONG TYPE_UDWORD
+
 /* specifier is the last in the type-chain */
 typedef struct specifier
   {
@@ -154,14 +168,14 @@ typedef struct specifier
     int argreg;                         /* reg no for regparm         */
     union
       {                                 /* Values if constant or enum */
-        TYPE_WORD   v_int;              /* 2 bytes: int and char values           */
-        char       *v_char;             /*          character string              */
-        TYPE_UWORD  v_uint;             /* 2 bytes: unsigned int const value      */
-        TYPE_DWORD  v_long;             /* 4 bytes: long constant value           */
-        TYPE_UDWORD v_ulong;            /* 4 bytes: unsigned long constant value  */
-        double      v_float;            /*          floating point constant value */
-        TYPE_UDWORD v_fixed16x16;       /* 4 bytes: fixed floating point constant value */
-        struct symbol *v_enum;          /* ptr to enum_list if enum==1            */
+        TYPE_TARGET_INT   v_int;        /* 2 bytes: int and char values           */
+        char             *v_char;       /*          character string              */
+        TYPE_TARGET_UINT  v_uint;       /* 2 bytes: unsigned int const value      */
+        TYPE_TARGET_LONG  v_long;       /* 4 bytes: long constant value           */
+        TYPE_TARGET_ULONG v_ulong;      /* 4 bytes: unsigned long constant value  */
+        double            v_float;      /*          floating point constant value */
+        TYPE_TARGET_ULONG v_fixed16x16; /* 4 bytes: fixed floating point constant value */
+        struct symbol    *v_enum;       /* ptr to enum_list if enum==1            */
       }
     const_val;
     struct structdef *v_struct;         /* structure pointer      */
@@ -266,7 +280,7 @@ typedef struct symbol
     unsigned isinvariant:1;             /* is a loop invariant  */
     unsigned cdef:1;                    /* compiler defined symbol */
     unsigned addrtaken:1;               /* address of the symbol was taken */
-    unsigned isreqv:1;                  /* is the register quivalent of a symbol */
+    unsigned isreqv:1;                  /* is the register equivalent of a symbol */
     unsigned udChked:1;                 /* use def checking has been already done */
 
     /* following flags are used by the backend
@@ -594,7 +608,7 @@ sym_link *computeType (sym_link *, sym_link *, RESULT_TYPE, int);
 void processFuncPtrArgs (sym_link *);
 void processFuncArgs (symbol *);
 int isSymbolEqual (symbol *, symbol *);
-int powof2 (TYPE_UDWORD);
+int powof2 (TYPE_TARGET_ULONG);
 void printTypeChain (sym_link *, FILE *);
 void printTypeChainRaw (sym_link *, FILE *);
 void initCSupport ();