projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
convert bitfield initializer tarvals before using them
[libfirm]
/
ir
/
be
/
bestate.c
diff --git
a/ir/be/bestate.c
b/ir/be/bestate.c
index
6963642
..
e5f3c5e
100644
(file)
--- a/
ir/be/bestate.c
+++ b/
ir/be/bestate.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (C) 1995-200
7
University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-200
8
University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*
* This file is part of libFirm.
*
@@
-186,7
+186,7
@@
void spill_phi(minibelady_env_t *env, ir_node *phi)
/* create a new phi-M with bad preds */
for(i = 0; i < arity; ++i) {
/* create a new phi-M with bad preds */
for(i = 0; i < arity; ++i) {
- in[i] = new_r_
Bad(irg
);
+ in[i] = new_r_
Unknown(irg, mode_M
);
}
DBG((dbg, LEVEL_2, "\tcreate Phi-M for %+F\n", phi));
}
DBG((dbg, LEVEL_2, "\tcreate Phi-M for %+F\n", phi));
@@
-315,6
+315,9
@@
block_info_t *compute_block_start_state(minibelady_env_t *env, ir_node *block)
be_lv_foreach(env->lv, block, be_lv_state_in, i) {
node = be_lv_get_irn(env->lv, block, i);
be_lv_foreach(env->lv, block, be_lv_state_in, i) {
node = be_lv_get_irn(env->lv, block, i);
+ if(!mode_is_data(get_irn_mode(node)))
+ continue;
+
if (arch_get_irn_register(env->arch_env, node) != env->reg)
continue;
if (arch_get_irn_register(env->arch_env, node) != env->reg)
continue;
@@
-400,13
+403,13
@@
void belady(minibelady_env_t *env, ir_node *block)
/* check which state is desired for the node */
arity = get_irn_arity(node);
for(i = 0; i < arity; ++i) {
/* check which state is desired for the node */
arity = get_irn_arity(node);
for(i = 0; i < arity; ++i) {
+ const arch_register_t *reg;
ir_node *in = get_irn_n(node, i);
if(!mode_is_data(get_irn_mode(in)))
continue;
ir_node *in = get_irn_n(node, i);
if(!mode_is_data(get_irn_mode(in)))
continue;
- const arch_register_t *reg =
- arch_get_irn_register(env->arch_env, in);
+ reg = arch_get_irn_register(env->arch_env, in);
if(reg == env->reg) {
assert(need_val == NULL);
need_val = in;
if(reg == env->reg) {
assert(need_val == NULL);
need_val = in;
@@
-427,13
+430,13
@@
void belady(minibelady_env_t *env, ir_node *block)
const ir_edge_t *edge;
foreach_out_edge(node, edge) {
const ir_edge_t *edge;
foreach_out_edge(node, edge) {
+ const arch_register_t *reg;
ir_node *proj = get_edge_src_irn(edge);
if(!mode_is_data(get_irn_mode(proj)))
continue;
ir_node *proj = get_edge_src_irn(edge);
if(!mode_is_data(get_irn_mode(proj)))
continue;
- const arch_register_t *reg =
- arch_get_irn_register(env->arch_env, proj);
+ reg = arch_get_irn_register(env->arch_env, proj);
if(reg == env->reg) {
current_state = proj;
DBG((dbg, LEVEL_3, "\t... current_state <- %+F\n", current_state));
if(reg == env->reg) {
current_state = proj;
DBG((dbg, LEVEL_3, "\t... current_state <- %+F\n", current_state));
@@
-539,7
+542,6
@@
void be_assure_state(be_irg_t *birg, const arch_register_t *reg, void *func_env,
be_lv_t *lv = be_assure_liveness(birg);
be_liveness_assure_sets(lv);
be_lv_t *lv = be_assure_liveness(birg);
be_liveness_assure_sets(lv);
- be_assure_dom_front(birg);
/* construct control flow loop tree */
if(! (get_irg_loopinfo_state(irg) & loopinfo_cf_consistent)) {
construct_cf_backedges(irg);
/* construct control flow loop tree */
if(! (get_irg_loopinfo_state(irg) & loopinfo_cf_consistent)) {
construct_cf_backedges(irg);
@@
-557,8
+559,7
@@
void be_assure_state(be_irg_t *birg, const arch_register_t *reg, void *func_env,
ir_nodemap_init(&env.spill_infos);
assure_doms(irg);
ir_nodemap_init(&env.spill_infos);
assure_doms(irg);
- set_using_visited(irg);
- set_using_irn_link(irg);
+ ir_reserve_resources(irg, IR_RESOURCE_IRN_VISITED | IR_RESOURCE_IRN_LINK);
inc_irg_visited(irg);
/* process blocks */
inc_irg_visited(irg);
/* process blocks */
@@
-567,8
+568,7
@@
void be_assure_state(be_irg_t *birg, const arch_register_t *reg, void *func_env,
/* fix block end_states that don't match the next blocks start_state */
irg_block_walk_graph(irg, fix_block_borders, NULL, &env);
/* fix block end_states that don't match the next blocks start_state */
irg_block_walk_graph(irg, fix_block_borders, NULL, &env);
- clear_using_visited(irg);
- clear_using_irn_link(irg);
+ ir_free_resources(irg, IR_RESOURCE_IRN_VISITED | IR_RESOURCE_IRN_LINK);
/* reconstruct ssa-form */
info = env.spills;
/* reconstruct ssa-form */
info = env.spills;