EXPRESSION ,
STATEMENT ,
LEAF };
-enum optype {
+
+typedef enum {
SYMBOL =1,
VALUE ,
- TYPE };
+ TYPE
+} OPTYPE;
#define IS_SYMOP(op) (op && op->type == SYMBOL)
#define ADDTOCHAIN(x) addSetHead(&iCodeChain,x)
#define OP_LIVEFROM(op) op->operand.symOperand->liveFrom
#define OP_LIVETO(op) op->operand.symOperand->liveTo
#define OP_REQV(op) op->operand.symOperand->reqv
+#define OP_ISLIVE_FCALL(op) (IS_ITEMP(op) && OP_SYMBOL(op)->isLiveFcall)
/* typedef for operand */
typedef struct operand {
- unsigned int type: 6 ; /* type of operand */
+ OPTYPE type; /* type of operand */
unsigned int isaddr : 1; /* is an address */
unsigned int isvolatile: 1; /* is a volatile operand */
unsigned int isGlobal :1 ; /* is a global operand */
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 {
/* forward references for functions */
/*-----------------------------------------------------------------*/
iCode *reverseiCChain ( );
+bool isOperandOnStack (operand *);
int isOperandVolatile (operand *,bool);
int isOperandGlobal (operand *);
void printiCChain ( iCode * , FILE *);
operand *opFromOpWithDU (operand *,bitVect *,bitVect *);
iCode *copyiCode (iCode *);
operand *newiTempFromOp( operand *);
+/*-----------------------------------------------------------------*/
+/* declaration of exported variables */
+/*-----------------------------------------------------------------*/
+extern char *filename;
+extern int lineno;
#endif