unsigned literalFromCast; /* true if this is an EX_VALUE of LITERAL
* type resulting from a typecast.
*/
+ int argreg; /* argreg number when operand type == EX_OPERAND */
}
values;
#define AST_VALUE(x) (x->opval.val)
#define AST_VALUES(x,y) (x->values.y)
#define AST_FOR(x,y) x->values.forVals.y
+#define AST_ARGREG(x) x->values.argreg
+
#define IS_AST_PARAM(x) (IS_AST_OP(x) && x->opval.op == PARAM)
#define CAN_EVAL(x) ( x == '[' || x == '.' || x == PTR_OP || \
void initAst ();
ast *newNode (long, ast *, ast *);
ast *copyAst (ast *);
+ast *removeIncDecOps (ast *);
value *sizeofOp (sym_link *);
value *evalStmnt (ast *);
ast *createFunction (symbol *, ast *);
ast *createLabel (symbol *, ast *);
ast *createCase (ast *, ast *, ast *);
ast *createDefault (ast *, ast *);
-ast *optimizeCompare (ast *);
ast *forLoopOptForm (ast *);
ast *argAst (ast *);
ast *resolveSymbols (ast *);
ast *createFor (symbol *, symbol *, symbol *, symbol *, ast *, ast *, ast *, ast *);
void eval2icode (ast *);
value *constExprValue (ast *, int);
+bool constExprTree (ast *);
+int setAstLineno (ast *, int);
symbol *funcOfType (char *, sym_link *, sym_link *, int, int);
+symbol * funcOfTypeVarg (char *, char * , int , char **);
ast *initAggregates (symbol *, initList *, ast *);
bool hasSEFcalls (ast *);
void addSymToBlock (symbol *, ast *);
+void freeStringSymbol(symbol *);
+DEFSETFUNC(resetParmKey);
// exported variables
extern set *operKeyReset;