* support/regression/tests/fetchoverlap.c: Added new test case.
[fw/sdcc] / src / SDCCicode.h
index ca4142468909f2360c6d76b290d1a2eb437c619a..12d31f035b2877a2348e2433661208030dd451b0 100644 (file)
@@ -84,10 +84,8 @@ typedef struct operand
     unsigned int isGptr:1;     /* is a generic pointer  */
     unsigned int isParm:1;     /* is a parameter        */
     unsigned int isLiteral:1;  /* operand is literal    */
-    unsigned int noSpilLoc:1;  /* cannot be assigned a spil location */
 
     unsigned key;
-    int parmBytes;
     union
       {
        struct symbol *symOperand;      /* operand is of type symbol */
@@ -113,6 +111,7 @@ operand;
 #define IC_JTCOND(x) (x)->ulrrcnd.jmpTab.condition
 #define IC_JTLABELS(x) (x)->ulrrcnd.jmpTab.labels
 #define IC_INLINE(x) (x)->inlineAsm
+#define IC_ARRAYILIST(x) (x)->arrayInitList
 
 typedef struct iCode
   {
@@ -173,9 +172,13 @@ typedef struct iCode
     argLabel;
 
     char *inlineAsm;           /* pointer to inline assembler code */
+    literalList *arrayInitList; /* point to array initializer list. */
 
     int lineno;                        /* file & lineno for debug information */
     char *filename;
+    
+    int parmBytes;             /* if call/pcall, count of parameter bytes 
+                                  on stack */
   }
 iCode;
 
@@ -204,6 +207,7 @@ iCodeTable;
                       x->op == IPOP     ||     \
                       x->op == JUMPTABLE ||    \
                       x->op == RECEIVE  ||     \
+                     x->op == ARRAYINIT ||    \
                      SKIP_IC1(x)||  \
                      x->op == SEND         )
 
@@ -269,7 +273,7 @@ bool isOperandOnStack (operand *);
 int isOperandVolatile (operand *, bool);
 int isOperandGlobal (operand *);
 void printiCChain (iCode *, FILE *);
-operand *ast2iCode (ast *);
+operand *ast2iCode (ast *,int);
 operand *geniCodeCast (sym_link *, operand *, bool);
 operand *geniCodePtrPtrSubtract (operand *, operand *);
 void initiCode ();
@@ -280,7 +284,7 @@ iCodeTable *getTableEntry (int);
 int isOperandLiteral (operand *);
 operand *operandOperation (operand *, operand *, int, sym_link *);
 double operandLitValue (operand *);
-operand *operandFromLit (float);
+operand *operandFromLit (double);
 operand *operandFromOperand (operand *);
 int isParameterToCall (value *, operand *);
 iCode *newiCodeLabelGoto (int, symbol *);