projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- add missing else
[libfirm]
/
ir
/
be
/
bessaconstr.c
diff --git
a/ir/be/bessaconstr.c
b/ir/be/bessaconstr.c
index
18d00c8
..
bf5ae96
100644
(file)
--- a/
ir/be/bessaconstr.c
+++ b/
ir/be/bessaconstr.c
@@
-46,9
+46,10
@@
* This function reroutes all uses of the original value to the copies in the
* corresponding dominance subtrees and creates Phi functions where necessary.
*/
* This function reroutes all uses of the original value to the copies in the
* corresponding dominance subtrees and creates Phi functions where necessary.
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
#include "config.h"
-#endif
+
+/* statev in this file is extensive, so only enable if needed */
+#define DISABLE_STATEV
#include "bessaconstr.h"
#include "bemodule.h"
#include "bessaconstr.h"
#include "bemodule.h"
@@
-115,8
+116,8
@@
ir_node *create_phi(be_ssa_construction_env_t *env, ir_node *block,
{
int i, n_preds = get_Block_n_cfgpreds(block);
ir_graph *irg = get_irn_irg(block);
{
int i, n_preds = get_Block_n_cfgpreds(block);
ir_graph *irg = get_irn_irg(block);
- ir_node *
phi
;
- ir_node
**ins = alloca(n_preds * sizeof(ins[0]))
;
+ ir_node *
*ins = ALLOCAN(ir_node*, n_preds)
;
+ ir_node
*phi
;
assert(n_preds > 1);
assert(n_preds > 1);
@@
-219,7
+220,7
@@
ir_node *search_def(be_ssa_construction_env_t *env, ir_node *at)
static
void introduce_def_at_block(ir_node *block, ir_node *def)
{
static
void introduce_def_at_block(ir_node *block, ir_node *def)
{
- if
(irn_visited
(block)) {
+ if
(irn_visited_else_mark
(block)) {
ir_node *node = block;
ir_node *current_def;
ir_node *node = block;
ir_node *current_def;
@@
-241,7
+242,6
@@
void introduce_def_at_block(ir_node *block, ir_node *def)
} else {
set_irn_link(block, def);
set_irn_link(def, NULL);
} else {
set_irn_link(block, def);
set_irn_link(def, NULL);
- mark_irn_visited(block);
}
}
}
}
@@
-265,9
+265,8
@@
void be_ssa_construction_init(be_ssa_construction_env_t *env, be_irg_t *birg)
env->new_phis = NEW_ARR_F(ir_node*, 0);
env->worklist = new_waitq();
env->new_phis = NEW_ARR_F(ir_node*, 0);
env->worklist = new_waitq();
- set_using_irn_visited(irg);
- set_using_block_visited(irg);
- set_using_irn_link(irg);
+ ir_reserve_resources(irg, IR_RESOURCE_IRN_VISITED
+ | IR_RESOURCE_BLOCK_VISITED | IR_RESOURCE_IRN_LINK);
/* we use the visited flag to indicate blocks in the dominance frontier
* and blocks that already have the relevant value at the end calculated */
/* we use the visited flag to indicate blocks in the dominance frontier
* and blocks that already have the relevant value at the end calculated */
@@
-283,9
+282,8
@@
void be_ssa_construction_destroy(be_ssa_construction_env_t *env)
del_waitq(env->worklist);
DEL_ARR_F(env->new_phis);
del_waitq(env->worklist);
DEL_ARR_F(env->new_phis);
- clear_using_irn_visited(env->irg);
- clear_using_block_visited(env->irg);
- clear_using_irn_link(env->irg);
+ ir_free_resources(env->irg, IR_RESOURCE_IRN_VISITED
+ | IR_RESOURCE_BLOCK_VISITED | IR_RESOURCE_IRN_LINK);
stat_ev_tim_pop("bessaconstr_total_time");
stat_ev_ctx_pop("bessaconstr");
stat_ev_tim_pop("bessaconstr_total_time");
stat_ev_ctx_pop("bessaconstr");
@@
-349,9
+347,9
@@
ir_node **be_ssa_construction_get_new_phis(be_ssa_construction_env_t *env)
void be_ssa_construction_fix_users_array(be_ssa_construction_env_t *env,
ir_node **nodes, size_t nodes_len)
{
void be_ssa_construction_fix_users_array(be_ssa_construction_env_t *env,
ir_node **nodes, size_t nodes_len)
{
- stat_ev_cnt_decl(uses);
const ir_edge_t *edge, *next;
size_t i;
const ir_edge_t *edge, *next;
size_t i;
+ stat_ev_cnt_decl(uses);
BE_TIMER_PUSH(t_ssa_constr);
BE_TIMER_PUSH(t_ssa_constr);
@@
-360,7
+358,6
@@
void be_ssa_construction_fix_users_array(be_ssa_construction_env_t *env,
env->iterated_domfront_calculated = 1;
}
env->iterated_domfront_calculated = 1;
}
- stat_ev_int("bessaconstr_domzone", env->max_dom - env->min_dom);
stat_ev_tim_push();
for(i = 0; i < nodes_len; ++i) {
ir_node *value = nodes[i];
stat_ev_tim_push();
for(i = 0; i < nodes_len; ++i) {
ir_node *value = nodes[i];
@@
-389,7
+386,7
@@
void be_ssa_construction_fix_users_array(be_ssa_construction_env_t *env,
def = search_def(env, at);
if(def == NULL) {
def = search_def(env, at);
if(def == NULL) {
- panic("no definition found for %+F at position %d
\n
", use, pos);
+ panic("no definition found for %+F at position %d", use, pos);
}
DBG((dbg, LEVEL_2, "\t%+F(%d) -> %+F\n", use, pos, def));
}
DBG((dbg, LEVEL_2, "\t%+F(%d) -> %+F\n", use, pos, def));