* src/mcs51/gen.c (genNearPointerGet, genNearPointerSet): fixed bug 1938300
[fw/sdcc] / src / mcs51 / gen.h
index c9bb7cc6893f4549c61a68c24844c201b7cd3564..3cd811f20c981f4ee3006a658e3be4948e2ba352 100644 (file)
@@ -31,7 +31,7 @@ enum
     AOP_REG, AOP_DIR,
     AOP_DPTR, AOP_R0, AOP_R1,
     AOP_STK, AOP_IMMD, AOP_STR,
-    AOP_CRY, AOP_ACC
+    AOP_CRY, AOP_ACC, AOP_DUMMY
   };
 
 /* type asmop : a homogenised type for 
@@ -53,19 +53,24 @@ typedef struct asmop
        AOP_CRY    -  carry contains the value of this
        AOP_STR    -  array of strings
        AOP_ACC    -  result is in the acc:b pair
+       AOP_DUMMY  -  read as 0, discard writes
     */
     short coff;                        /* current offset */
     short size;                        /* total size */
     unsigned code:1;           /* is in Code space */
     unsigned paged:1;          /* in paged memory  */
-    unsigned freed:1;          /* already freed    */
+    unsigned short allocated;  /* number of times allocated */
     union
       {
        value *aop_lit;         /* if literal */
        regs *aop_reg[4];       /* array of registers */
        char *aop_dir;          /* if direct  */
        regs *aop_ptr;          /* either -> to r0 or r1 */
-       char *aop_immd;         /* if immediate others are implied */
+       struct {
+               int  from_cast_remat;   /* cast remat created this : immd2 field used for highest order*/
+               char *aop_immd1;        /* if immediate others are implied */
+               char *aop_immd2;        /* cast remat will generate this   */
+       } aop_immd;
        int aop_stk;            /* stack offset when AOP_STK */
        char *aop_str[4];       /* just a string array containing the location */
       }
@@ -74,6 +79,7 @@ typedef struct asmop
 asmop;
 
 void gen51Code (iCode *);
+void mcs51_emitDebuggerSymbol (char *);
 
 //extern char *fReturn8051[];
 extern unsigned fReturnSizeMCS51;