projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
panic() instead of assert(0).
[libfirm]
/
ir
/
opt
/
scalar_replace.c
diff --git
a/ir/opt/scalar_replace.c
b/ir/opt/scalar_replace.c
index
b073688
..
eaa8ee6
100644
(file)
--- a/
ir/opt/scalar_replace.c
+++ b/
ir/opt/scalar_replace.c
@@
-131,7
+131,7
@@
static int is_const_sel(ir_node *sel) {
for (i = 0; i < n; ++i) {
ir_node *idx = get_Sel_index(sel, i);
for (i = 0; i < n; ++i) {
ir_node *idx = get_Sel_index(sel, i);
- if (
get_irn_op(idx) != op_Const
)
+ if (
!is_Const(idx)
)
return 0;
}
return 1;
return 0;
}
return 1;
@@
-301,7
+301,7
@@
static int find_possible_replacements(ir_graph *irg) {
int i;
int res = 0;
int i;
int res = 0;
-
set_using_irn_visited(irg
);
+
ir_reserve_resources(irg, IR_RESOURCE_IRN_VISITED
);
inc_irg_visited(irg);
/*
inc_irg_visited(irg);
/*
@@
-358,7
+358,7
@@
static int find_possible_replacements(ir_graph *irg) {
}
}
}
}
-
clear_using_irn_visited(irg
);
+
ir_free_resources(irg, IR_RESOURCE_IRN_VISITED
);
return res;
}
return res;
}
@@
-488,12
+488,11
@@
typedef struct _env_t {
*/
static void topologic_walker(ir_node *node, void *ctx) {
env_t *env = ctx;
*/
static void topologic_walker(ir_node *node, void *ctx) {
env_t *env = ctx;
- ir_op *op = get_irn_op(node);
ir_node *adr, *block, *mem, *val;
ir_mode *mode;
unsigned vnum;
ir_node *adr, *block, *mem, *val;
ir_mode *mode;
unsigned vnum;
- if (
op == op_Load
) {
+ if (
is_Load(node)
) {
/* a load, check if we can resolve it */
adr = get_Load_ptr(node);
/* a load, check if we can resolve it */
adr = get_Load_ptr(node);
@@
-514,6
+513,9
@@
static void topologic_walker(ir_node *node, void *ctx) {
DB((dbg, SET_LEVEL_3, "replacing by value %u\n", vnum));
DB((dbg, SET_LEVEL_3, "replacing by value %u\n", vnum));
+ block = get_nodes_block(node);
+ set_cur_block(block);
+
/* check, if we can replace this Load */
val = get_value(vnum, env->modes[vnum]);
/* check, if we can replace this Load */
val = get_value(vnum, env->modes[vnum]);
@@
-529,13
+531,12
@@
static void topologic_walker(ir_node *node, void *ctx) {
val = new_d_Conv(get_irn_dbg_info(node), val, mode);
mem = get_Load_mem(node);
val = new_d_Conv(get_irn_dbg_info(node), val, mode);
mem = get_Load_mem(node);
- block = get_nodes_block(node);
turn_into_tuple(node, pn_Load_max);
set_Tuple_pred(node, pn_Load_M, mem);
set_Tuple_pred(node, pn_Load_res, val);
turn_into_tuple(node, pn_Load_max);
set_Tuple_pred(node, pn_Load_M, mem);
set_Tuple_pred(node, pn_Load_res, val);
- set_Tuple_pred(node, pn_Load_X_regular, new_
r_Jmp(current_ir_graph, block
));
+ set_Tuple_pred(node, pn_Load_X_regular, new_
Jmp(
));
set_Tuple_pred(node, pn_Load_X_except, new_Bad());
set_Tuple_pred(node, pn_Load_X_except, new_Bad());
- } else if (
op == op_Store
) {
+ } else if (
is_Store(node)
) {
DB((dbg, SET_LEVEL_3, " checking %+F for replacement ", node));
/* a Store always can be replaced */
DB((dbg, SET_LEVEL_3, " checking %+F for replacement ", node));
/* a Store always can be replaced */
@@
-560,14
+561,15
@@
static void topologic_walker(ir_node *node, void *ctx) {
val = get_Store_value(node);
if (get_irn_mode(val) != env->modes[vnum])
val = new_d_Conv(get_irn_dbg_info(node), val, env->modes[vnum]);
val = get_Store_value(node);
if (get_irn_mode(val) != env->modes[vnum])
val = new_d_Conv(get_irn_dbg_info(node), val, env->modes[vnum]);
- set_value(vnum, val);
- mem = get_Store_mem(node);
block = get_nodes_block(node);
block = get_nodes_block(node);
+ set_cur_block(block);
+ set_value(vnum, val);
+ mem = get_Store_mem(node);
turn_into_tuple(node, pn_Store_max);
set_Tuple_pred(node, pn_Store_M, mem);
turn_into_tuple(node, pn_Store_max);
set_Tuple_pred(node, pn_Store_M, mem);
- set_Tuple_pred(node, pn_Store_X_regular, new_
r_Jmp(current_ir_graph, block
));
+ set_Tuple_pred(node, pn_Store_X_regular, new_
Jmp(
));
set_Tuple_pred(node, pn_Store_X_except, new_Bad());
}
}
set_Tuple_pred(node, pn_Store_X_except, new_Bad());
}
}
@@
-604,7
+606,7
@@
static void do_scalar_replacements(pset *sels, int nvals, ir_mode **modes) {
*
* @param irg The current ir graph.
*/
*
* @param irg The current ir graph.
*/
-
void
scalar_replacement_opt(ir_graph *irg) {
+
int
scalar_replacement_opt(ir_graph *irg) {
unsigned nvals;
int i;
scalars_t key, *value;
unsigned nvals;
int i;
scalars_t key, *value;
@@
-685,7
+687,7
@@
void scalar_replacement_opt(ir_graph *irg) {
set_irg_outs_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
set_irg_outs_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
- res = 1
+ res = 1
;
}
del_pset(sels);
del_set(set_ent);
}
del_pset(sels);
del_set(set_ent);