fixed bug #504479
[fw/sdcc] / src / SDCCicode.h
index 7641d538499ef9f4d0afe0452f77cbbf910aa235..51301d88f69a35d669fafc4b1fea992e5fafc03c 100644 (file)
@@ -50,6 +50,8 @@ OPTYPE;
 
 #define IS_SYMOP(op) (op && op->type == SYMBOL)
 #define IS_VALOP(op) (op && op->type == VALUE)
+#define IS_TYPOP(op) (op && op->type == TYPE)
+
 #define ADDTOCHAIN(x) addSetHead(&iCodeChain,x)
 
 #define LRFTYPE       sym_link *ltype = operandType(left), \
@@ -130,6 +132,7 @@ typedef struct iCode
     unsigned supportRtn:1;     /* will cause a call to a support routine */
     unsigned regsSaved:1;      /* registers have been saved */
     unsigned bankSaved:1;      /* register bank has been saved */
+    unsigned builtinSEND:1;     /* SEND for parameter of builtin function */
 
     struct iCode *next;                /* next in chain */
     struct iCode *prev;                /* previous in chain */
@@ -182,6 +185,7 @@ typedef struct iCode
     
     int parmBytes;             /* if call/pcall, count of parameter bytes 
                                   on stack */
+    int eBBlockNum;             /* belongs to which eBBlock */
   }
 iCode;
 
@@ -214,6 +218,9 @@ iCodeTable;
                      SKIP_IC1(x)||  \
                      x->op == SEND         )
 
+#define SKIP_IC3(x) (SKIP_IC2(x) ||    \
+                    x->op == JUMPTABLE )
+
 #define IS_CONDITIONAL(x) (x->op == EQ_OP || \
                           x->op == '<'   || \
                           x->op == '>'   || \
@@ -305,9 +312,11 @@ int piCode (void *, FILE *);
 int printOperand (operand *, FILE *);
 void setOperandType (operand *, sym_link *);
 bool isOperandInFarSpace (operand *);
+bool isOperandInDirSpace (operand *);
 operand *opFromOpWithDU (operand *, bitVect *, bitVect *);
 iCode *copyiCode (iCode *);
 operand *newiTempFromOp (operand *);
+iCode *getBuiltinParms (iCode *,int *, operand **);
 /*-----------------------------------------------------------------*/
 /* declaration of exported variables                               */
 /*-----------------------------------------------------------------*/