projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
never CSE nodes which have no stack entities assigned yet but need them later (this...
[libfirm]
/
ir
/
ir
/
ircons.c
diff --git
a/ir/ir/ircons.c
b/ir/ir/ircons.c
index
feec913
..
7cbd797
100644
(file)
--- a/
ir/ir/ircons.c
+++ b/
ir/ir/ircons.c
@@
-104,7
+104,7
@@
new_bd_##instr(dbg_info *db, ir_node *block, \
#define NEW_BD_DIVOP(instr) \
static ir_node * \
new_bd_##instr(dbg_info *db, ir_node *block, \
#define NEW_BD_DIVOP(instr) \
static ir_node * \
new_bd_##instr(dbg_info *db, ir_node *block, \
- ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) \
+ ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) \
{ \
ir_node *in[3]; \
ir_node *res; \
{ \
ir_node *in[3]; \
ir_node *res; \
@@
-113,7
+113,7
@@
new_bd_##instr(dbg_info *db, ir_node *block, \
in[1] = op1; \
in[2] = op2; \
res = new_ir_node(db, irg, block, op_##instr, mode_T, 3, in); \
in[1] = op1; \
in[2] = op2; \
res = new_ir_node(db, irg, block, op_##instr, mode_T, 3, in); \
- res->attr.divmod.exc.pin_state =
op_pin_state_pinned;
\
+ res->attr.divmod.exc.pin_state =
state;
\
res->attr.divmod.res_mode = mode; \
res = optimize_node(res); \
IRN_VRFY_IRG(res, irg); \
res->attr.divmod.res_mode = mode; \
res = optimize_node(res); \
IRN_VRFY_IRG(res, irg); \
@@
-152,12
+152,12
@@
new_rd_##instr(dbg_info *db, ir_graph *irg, ir_node *block, \
#define NEW_RD_DIVOP(instr) \
ir_node * \
new_rd_##instr(dbg_info *db, ir_graph *irg, ir_node *block, \
#define NEW_RD_DIVOP(instr) \
ir_node * \
new_rd_##instr(dbg_info *db, ir_graph *irg, ir_node *block, \
- ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) \
+ ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) \
{ \
ir_node *res; \
ir_graph *rem = current_ir_graph; \
current_ir_graph = irg; \
{ \
ir_node *res; \
ir_graph *rem = current_ir_graph; \
current_ir_graph = irg; \
- res = new_bd_##instr(db, block, memop, op1, op2, mode
);
\
+ res = new_bd_##instr(db, block, memop, op1, op2, mode
, state);
\
current_ir_graph = rem; \
return res; \
}
current_ir_graph = rem; \
return res; \
}
@@
-194,12
+194,14
@@
new_bd_Block(dbg_info *db, int arity, ir_node **in) {
res->attr.block.is_dead = 0;
res->attr.block.is_mb_head = 1;
res->attr.block.is_dead = 0;
res->attr.block.is_mb_head = 1;
+ res->attr.block.has_label = 0;
res->attr.block.irg = irg;
res->attr.block.backedge = new_backedge_arr(irg->obst, arity);
res->attr.block.in_cg = NULL;
res->attr.block.cg_backedge = NULL;
res->attr.block.extblk = NULL;
res->attr.block.mb_depth = 0;
res->attr.block.irg = irg;
res->attr.block.backedge = new_backedge_arr(irg->obst, arity);
res->attr.block.in_cg = NULL;
res->attr.block.cg_backedge = NULL;
res->attr.block.extblk = NULL;
res->attr.block.mb_depth = 0;
+ res->attr.block.label = 0;
set_Block_matured(res, 1);
set_Block_block_visited(res, 0);
set_Block_matured(res, 1);
set_Block_block_visited(res, 0);
@@
-414,8
+416,8
@@
new_bd_Jmp(dbg_info *db, ir_node *block) {
ir_node *res;
ir_graph *irg = current_ir_graph;
ir_node *res;
ir_graph *irg = current_ir_graph;
- res = new_ir_node
(db, irg, block, op_Jmp, mode_X, 0, NULL);
- res = optimize_node
(res);
+ res = new_ir_node(db, irg, block, op_Jmp, mode_X, 0, NULL);
+ res = optimize_node(res);
IRN_VRFY_IRG(res, irg);
return res;
} /* new_bd_Jmp */
IRN_VRFY_IRG(res, irg);
return res;
} /* new_bd_Jmp */
@@
-425,12
+427,9
@@
new_bd_IJmp(dbg_info *db, ir_node *block, ir_node *tgt) {
ir_node *res;
ir_graph *irg = current_ir_graph;
ir_node *res;
ir_graph *irg = current_ir_graph;
- res = new_ir_node
(db, irg, block, op_IJmp, mode_X, 1, &tgt);
- res = optimize_node
(res);
+ res = new_ir_node(db, irg, block, op_IJmp, mode_X, 1, &tgt);
+ res = optimize_node(res);
IRN_VRFY_IRG(res, irg);
IRN_VRFY_IRG(res, irg);
-
- if (get_irn_op(res) == op_IJmp) /* still an IJmp */
- keep_alive(res);
return res;
} /* new_bd_IJmp */
return res;
} /* new_bd_IJmp */
@@
-439,11
+438,11
@@
new_bd_Cond(dbg_info *db, ir_node *block, ir_node *c) {
ir_node *res;
ir_graph *irg = current_ir_graph;
ir_node *res;
ir_graph *irg = current_ir_graph;
- res = new_ir_node
(db, irg, block, op_Cond, mode_T, 1, &c);
+ res = new_ir_node(db, irg, block, op_Cond, mode_T, 1, &c);
res->attr.cond.kind = dense;
res->attr.cond.default_proj = 0;
res->attr.cond.pred = COND_JMP_PRED_NONE;
res->attr.cond.kind = dense;
res->attr.cond.default_proj = 0;
res->attr.cond.pred = COND_JMP_PRED_NONE;
- res = optimize_node
(res);
+ res = optimize_node(res);
IRN_VRFY_IRG(res, irg);
return res;
} /* new_bd_Cond */
IRN_VRFY_IRG(res, irg);
return res;
} /* new_bd_Cond */
@@
-504,6
+503,7
@@
new_bd_Load(dbg_info *db, ir_node *block,
res->attr.load.exc.pin_state = op_pin_state_pinned;
res->attr.load.load_mode = mode;
res->attr.load.volatility = volatility_non_volatile;
res->attr.load.exc.pin_state = op_pin_state_pinned;
res->attr.load.load_mode = mode;
res->attr.load.volatility = volatility_non_volatile;
+ res->attr.load.aligned = align_is_aligned;
res = optimize_node(res);
IRN_VRFY_IRG(res, irg);
return res;
res = optimize_node(res);
IRN_VRFY_IRG(res, irg);
return res;
@@
-522,6
+522,7
@@
new_bd_Store(dbg_info *db, ir_node *block,
res = new_ir_node(db, irg, block, op_Store, mode_T, 3, in);
res->attr.store.exc.pin_state = op_pin_state_pinned;
res->attr.store.volatility = volatility_non_volatile;
res = new_ir_node(db, irg, block, op_Store, mode_T, 3, in);
res->attr.store.exc.pin_state = op_pin_state_pinned;
res->attr.store.volatility = volatility_non_volatile;
+ res->attr.store.aligned = align_is_aligned;
res = optimize_node(res);
IRN_VRFY_IRG(res, irg);
return res;
res = optimize_node(res);
IRN_VRFY_IRG(res, irg);
return res;
@@
-1525,20
+1526,20
@@
ir_node *new_r_Mul(ir_graph *irg, ir_node *block,
return new_rd_Mul(NULL, irg, block, op1, op2, mode);
}
ir_node *new_r_Quot(ir_graph *irg, ir_node *block,
return new_rd_Mul(NULL, irg, block, op1, op2, mode);
}
ir_node *new_r_Quot(ir_graph *irg, ir_node *block,
- ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) {
- return new_rd_Quot(NULL, irg, block, memop, op1, op2, mode);
+ ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) {
+ return new_rd_Quot(NULL, irg, block, memop, op1, op2, mode
, state
);
}
ir_node *new_r_DivMod(ir_graph *irg, ir_node *block,
}
ir_node *new_r_DivMod(ir_graph *irg, ir_node *block,
- ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) {
- return new_rd_DivMod(NULL, irg, block, memop, op1, op2, mode);
+ ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) {
+ return new_rd_DivMod(NULL, irg, block, memop, op1, op2, mode
, state
);
}
ir_node *new_r_Div(ir_graph *irg, ir_node *block,
}
ir_node *new_r_Div(ir_graph *irg, ir_node *block,
- ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) {
- return new_rd_Div(NULL, irg, block, memop, op1, op2, mode);
+ ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) {
+ return new_rd_Div(NULL, irg, block, memop, op1, op2, mode
, state
);
}
ir_node *new_r_Mod(ir_graph *irg, ir_node *block,
}
ir_node *new_r_Mod(ir_graph *irg, ir_node *block,
- ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) {
- return new_rd_Mod(NULL, irg, block, memop, op1, op2, mode);
+ ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) {
+ return new_rd_Mod(NULL, irg, block, memop, op1, op2, mode
, state
);
}
ir_node *new_r_Abs(ir_graph *irg, ir_node *block,
ir_node *op, ir_mode *mode) {
}
ir_node *new_r_Abs(ir_graph *irg, ir_node *block,
ir_node *op, ir_mode *mode) {
@@
-1816,9
+1817,9
@@
Phi_in_stack *
new_Phi_in_stack(void) {
Phi_in_stack *res;
new_Phi_in_stack(void) {
Phi_in_stack *res;
- res = (Phi_in_stack *)
malloc ( sizeof
(Phi_in_stack));
+ res = (Phi_in_stack *)
xmalloc(sizeof
(Phi_in_stack));
- res->stack = NEW_ARR_F
(ir_node *, 0);
+ res->stack = NEW_ARR_F(ir_node *, 0);
res->pos = 0;
return res;
res->pos = 0;
return res;
@@
-2661,9
+2662,9
@@
static void allocate_frag_arr(ir_node *res, ir_op *op, ir_node ***frag_store) {
} /* allocate_frag_arr */
ir_node *
} /* allocate_frag_arr */
ir_node *
-new_d_Quot(dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) {
+new_d_Quot(dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) {
ir_node *res;
ir_node *res;
- res = new_bd_Quot(db, current_ir_graph->current_block, memop, op1, op2, mode);
+ res = new_bd_Quot(db, current_ir_graph->current_block, memop, op1, op2, mode
, state
);
#if PRECISE_EXC_CONTEXT
allocate_frag_arr(res, op_Quot, &res->attr.except.frag_arr); /* Could be optimized away. */
#endif
#if PRECISE_EXC_CONTEXT
allocate_frag_arr(res, op_Quot, &res->attr.except.frag_arr); /* Could be optimized away. */
#endif
@@
-2672,9
+2673,9
@@
new_d_Quot(dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mo
} /* new_d_Quot */
ir_node *
} /* new_d_Quot */
ir_node *
-new_d_DivMod(dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) {
+new_d_DivMod(dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) {
ir_node *res;
ir_node *res;
- res = new_bd_DivMod(db, current_ir_graph->current_block, memop, op1, op2, mode);
+ res = new_bd_DivMod(db, current_ir_graph->current_block, memop, op1, op2, mode
, state
);
#if PRECISE_EXC_CONTEXT
allocate_frag_arr(res, op_DivMod, &res->attr.except.frag_arr); /* Could be optimized away. */
#endif
#if PRECISE_EXC_CONTEXT
allocate_frag_arr(res, op_DivMod, &res->attr.except.frag_arr); /* Could be optimized away. */
#endif
@@
-2683,9
+2684,9
@@
new_d_DivMod(dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *
} /* new_d_DivMod */
ir_node *
} /* new_d_DivMod */
ir_node *
-new_d_Div(dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) {
+new_d_Div(dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) {
ir_node *res;
ir_node *res;
- res = new_bd_Div(db, current_ir_graph->current_block, memop, op1, op2, mode);
+ res = new_bd_Div(db, current_ir_graph->current_block, memop, op1, op2, mode
, state
);
#if PRECISE_EXC_CONTEXT
allocate_frag_arr(res, op_Div, &res->attr.except.frag_arr); /* Could be optimized away. */
#endif
#if PRECISE_EXC_CONTEXT
allocate_frag_arr(res, op_Div, &res->attr.except.frag_arr); /* Could be optimized away. */
#endif
@@
-2694,9
+2695,9
@@
new_d_Div(dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mod
}
ir_node *
}
ir_node *
-new_d_Mod(dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) {
+new_d_Mod(dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) {
ir_node *res;
ir_node *res;
- res = new_bd_Mod(db, current_ir_graph->current_block, memop, op1, op2, mode);
+ res = new_bd_Mod(db, current_ir_graph->current_block, memop, op1, op2, mode
, state
);
#if PRECISE_EXC_CONTEXT
allocate_frag_arr(res, op_Mod, &res->attr.except.frag_arr); /* Could be optimized away. */
#endif
#if PRECISE_EXC_CONTEXT
allocate_frag_arr(res, op_Mod, &res->attr.except.frag_arr); /* Could be optimized away. */
#endif
@@
-2959,6
+2960,7
@@
new_d_immBlock(dbg_info *db) {
res->attr.block.is_matured = 0;
res->attr.block.is_dead = 0;
res->attr.block.is_mb_head = 1;
res->attr.block.is_matured = 0;
res->attr.block.is_dead = 0;
res->attr.block.is_mb_head = 1;
+ res->attr.block.has_label = 0;
res->attr.block.irg = current_ir_graph;
res->attr.block.backedge = NULL;
res->attr.block.in_cg = NULL;
res->attr.block.irg = current_ir_graph;
res->attr.block.backedge = NULL;
res->attr.block.in_cg = NULL;
@@
-2966,6
+2968,7
@@
new_d_immBlock(dbg_info *db) {
res->attr.block.extblk = NULL;
res->attr.block.region = NULL;
res->attr.block.mb_depth = 0;
res->attr.block.extblk = NULL;
res->attr.block.region = NULL;
res->attr.block.mb_depth = 0;
+ res->attr.block.label = 0;
set_Block_block_visited(res, 0);
set_Block_block_visited(res, 0);
@@
-3215,17
+3218,17
@@
ir_node *new_Minus(ir_node *op, ir_mode *mode) {
ir_node *new_Mul(ir_node *op1, ir_node *op2, ir_mode *mode) {
return new_d_Mul(NULL, op1, op2, mode);
}
ir_node *new_Mul(ir_node *op1, ir_node *op2, ir_mode *mode) {
return new_d_Mul(NULL, op1, op2, mode);
}
-ir_node *new_Quot(ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) {
- return new_d_Quot(NULL, memop, op1, op2, mode);
+ir_node *new_Quot(ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) {
+ return new_d_Quot(NULL, memop, op1, op2, mode
, state
);
}
}
-ir_node *new_DivMod(ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) {
- return new_d_DivMod(NULL, memop, op1, op2, mode);
+ir_node *new_DivMod(ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) {
+ return new_d_DivMod(NULL, memop, op1, op2, mode
, state
);
}
}
-ir_node *new_Div(ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) {
- return new_d_Div(NULL, memop, op1, op2, mode);
+ir_node *new_Div(ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) {
+ return new_d_Div(NULL, memop, op1, op2, mode
, state
);
}
}
-ir_node *new_Mod(ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) {
- return new_d_Mod(NULL, memop, op1, op2, mode);
+ir_node *new_Mod(ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode
, op_pin_state state
) {
+ return new_d_Mod(NULL, memop, op1, op2, mode
, state
);
}
ir_node *new_Abs(ir_node *op, ir_mode *mode) {
return new_d_Abs(NULL, op, mode);
}
ir_node *new_Abs(ir_node *op, ir_mode *mode) {
return new_d_Abs(NULL, op, mode);
@@
-3357,3
+3360,10
@@
ir_node *new_ASM(int arity, ir_node *in[], ir_asm_constraint *inputs,
int n_clobber, ident *clobber[], ident *asm_text) {
return new_d_ASM(NULL, arity, in, inputs, n_outs, outputs, n_clobber, clobber, asm_text);
}
int n_clobber, ident *clobber[], ident *asm_text) {
return new_d_ASM(NULL, arity, in, inputs, n_outs, outputs, n_clobber, clobber, asm_text);
}
+
+/* create a new anchor node */
+ir_node *new_Anchor(ir_graph *irg) {
+ ir_node *in[anchor_last];
+ memset(in, 0, sizeof(in));
+ return new_ir_node(NULL, irg, NULL, op_Anchor, mode_ANY, anchor_last, in);
+}