X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=src%2FSDCCicode.h;h=a7534ecca0151ab617cff4f1c51c7efb23d673ce;hb=e81ca578f55d85dd8838732e85f380091fd0b0be;hp=d94c8de517b0dec8e9076df91f7078e26b75dd91;hpb=f61f15d2fcba8d632ad59335615fb1fa4bdcdf6c;p=fw%2Fsdcc diff --git a/src/SDCCicode.h b/src/SDCCicode.h index d94c8de5..a7534ecc 100644 --- a/src/SDCCicode.h +++ b/src/SDCCicode.h @@ -49,6 +49,7 @@ typedef enum OPTYPE; #define IS_SYMOP(op) (op && op->type == SYMBOL) +#define IS_VALOP(op) (op && op->type == VALUE) #define ADDTOCHAIN(x) addSetHead(&iCodeChain,x) #define LRFTYPE sym_link *ltype = operandType(left), \ @@ -67,6 +68,7 @@ OPTYPE; #define OP_SYMBOL(op) op->operand.symOperand #define OP_SYM_TYPE(op) op->operand.symOperand->type #define OP_SYM_ETYPE(op) op->operand.symOperand->etype +#define OP_VALUE(op) op->operand.valOperand #define SPIL_LOC(op) op->operand.symOperand->usl.spillLoc #define OP_LIVEFROM(op) op->operand.symOperand->liveFrom #define OP_LIVETO(op) op->operand.symOperand->liveTo @@ -84,7 +86,6 @@ 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; union @@ -112,6 +113,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 { @@ -167,11 +169,12 @@ typedef struct iCode union { symbol *label; /* for a goto statement */ - value *args; + value *args; /* for a function */ } argLabel; char *inlineAsm; /* pointer to inline assembler code */ + literalList *arrayInitList; /* point to array initializer list. */ int lineno; /* file & lineno for debug information */ char *filename; @@ -206,6 +209,7 @@ iCodeTable; x->op == IPOP || \ x->op == JUMPTABLE || \ x->op == RECEIVE || \ + x->op == ARRAYINIT || \ SKIP_IC1(x)|| \ x->op == SEND )