X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCast.h;h=a3fb3d3c7eead9aa1bd104d5c7ad74f1f8b00426;hb=2714a022b636517a7388d060577c68ca3016140f;hp=d46ad5f18c9076023ae5d1c96c556625bc9f39ad;hpb=67613b6eceb41c8a242c2556a0f59311adb0b388;p=fw%2Fsdcc diff --git a/src/SDCCast.h b/src/SDCCast.h index d46ad5f1..a3fb3d3c 100644 --- a/src/SDCCast.h +++ b/src/SDCCast.h @@ -49,6 +49,7 @@ typedef struct ast unsigned rvalue:1; unsigned lvalue:1; unsigned initMode:1; + unsigned reversed:1; int level; /* level for expr */ int block; /* block number */ int seqPoint; /* sequence point */ @@ -111,7 +112,7 @@ ast; /* easy access macros */ -#define IS_AST_OP(x) (x && x->type == EX_OP) +#define IS_AST_OP(x) ((x) && (x)->type == EX_OP) #define IS_CALLOP(x) (IS_AST_OP(x) && x->opval.op == CALL) #define IS_BITOR(x) (IS_AST_OP(x) && x->opval.op == '|') #define IS_BITAND(x) (IS_AST_OP(x) && x->opval.op == '&' && \ @@ -119,7 +120,7 @@ ast; #define IS_FOR_STMT(x) (IS_AST_OP(x) && x->opval.op == FOR) #define IS_LEFT_OP(x) (IS_AST_OP(x) && x->opval.op == LEFT_OP) #define IS_RIGHT_OP(x) (IS_AST_OP(x) && x->opval.op == RIGHT_OP) -#define IS_AST_VALUE(x) (x && x->type == EX_VALUE && x->opval.val) +#define IS_AST_VALUE(x) ((x) && (x)->type == EX_VALUE && (x)->opval.val) #define IS_AST_LINK(x) (x->type == EX_LINK) #define IS_AST_NOT_OPER(x) (x && IS_AST_OP(x) && x->opval.op == '!') #define IS_ARRAY_OP(x) (IS_AST_OP(x) && x->opval.op == '[') @@ -130,14 +131,14 @@ ast; x->opval.op == GE_OP || \ x->opval.op == EQ_OP || \ x->opval.op == NE_OP )) -#define IS_CAST_OP(x) (IS_AST_OP(x) && x->opval.op == CAST) +#define IS_CAST_OP(x) (IS_AST_OP(x) && (x)->opval.op == CAST) #define IS_TERNARY_OP(x) (IS_AST_OP(x) && x->opval.op == '?') #define IS_COLON_OP(x) (IS_AST_OP(x) && x->opval.op == ':') #define IS_ADDRESS_OF_OP(x) (IS_AST_OP(x) && \ x->opval.op == '&' && \ x->right == NULL ) #define IS_AST_LIT_VALUE(x) (IS_AST_VALUE(x) && \ - IS_LITERAL(x->opval.val->etype)) + IS_LITERAL((x)->opval.val->etype)) #define IS_AST_SYM_VALUE(x) (IS_AST_VALUE(x) && x->opval.val->sym) #define AST_LIT_VALUE(x) (floatFromVal(x->opval.val)) #define AST_SYMBOL(x) (x->opval.val->sym) @@ -188,6 +189,7 @@ ast *removePreIncDecOps (ast *); ast *removePostIncDecOps (ast *); value *sizeofOp (sym_link *); value *evalStmnt (ast *); +ast *createRMW (ast *, unsigned, ast *); ast *createFunction (symbol *, ast *); ast *createBlock (symbol *, ast *); ast *createLabel (symbol *, ast *);