projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
arm: Simplify confusing condition.
[libfirm]
/
ir
/
ir
/
rm_bads.c
diff --git
a/ir/ir/rm_bads.c
b/ir/ir/rm_bads.c
index
81f3813
..
831a646
100644
(file)
--- a/
ir/ir/rm_bads.c
+++ b/
ir/ir/rm_bads.c
@@
-38,7
+38,7
@@
*/
static int count_non_bads(ir_node *node)
{
*/
static int count_non_bads(ir_node *node)
{
- int arity = get_
irn_arity
(node);
+ int arity = get_
Block_n_cfgpreds
(node);
int count = 0;
int i;
for (i = 0; i < arity; ++i) {
int count = 0;
int i;
for (i = 0; i < arity; ++i) {
@@
-55,7
+55,7
@@
static int count_non_bads(ir_node *node)
static void block_remove_bads(ir_node *block)
{
ir_graph *irg = get_irn_irg(block);
static void block_remove_bads(ir_node *block)
{
ir_graph *irg = get_irn_irg(block);
- const int max = get_
irn_arity
(block);
+ const int max = get_
Block_n_cfgpreds
(block);
const int new_max = count_non_bads(block);
ir_node **new_in = ALLOCAN(ir_node*, new_max);
int i;
const int new_max = count_non_bads(block);
ir_node **new_in = ALLOCAN(ir_node*, new_max);
int i;
@@
-68,7
+68,7
@@
static void block_remove_bads(ir_node *block)
/* 1. Create a new block without Bad inputs */
for (i = j = 0; i < max; ++i) {
/* 1. Create a new block without Bad inputs */
for (i = j = 0; i < max; ++i) {
- ir_node *
block_pred = get_irn_n
(block, i);
+ ir_node *
const block_pred = get_Block_cfgpred
(block, i);
if (!is_Bad(block_pred)) {
new_in[j++] = block_pred;
}
if (!is_Bad(block_pred)) {
new_in[j++] = block_pred;
}
@@
-97,8
+97,7
@@
static void block_remove_bads(ir_node *block)
assert(get_irn_arity(phi) == max);
for (i = j = 0; i < max; ++i) {
assert(get_irn_arity(phi) == max);
for (i = j = 0; i < max; ++i) {
- ir_node *block_pred = get_irn_n(block, i);
-
+ ir_node *const block_pred = get_Block_cfgpred(block, i);
if (!is_Bad(block_pred)) {
ir_node *pred = get_irn_n(phi, i);
new_in[j++] = pred;
if (!is_Bad(block_pred)) {
ir_node *pred = get_irn_n(phi, i);
new_in[j++] = pred;
@@
-118,20
+117,14
@@
static void collect(ir_node *node, void *env)
firm_collect_block_phis(node, NULL);
if (is_Block(node)) {
ir_node ***blocks_to_process = (ir_node***)env;
firm_collect_block_phis(node, NULL);
if (is_Block(node)) {
ir_node ***blocks_to_process = (ir_node***)env;
- int arity = get_
irn_arity
(node);
+ int arity = get_
Block_n_cfgpreds
(node);
int non_bads = count_non_bads(node);
if (arity != non_bads)
ARR_APP1(ir_node*, *blocks_to_process, node);
}
}
int non_bads = count_non_bads(node);
if (arity != non_bads)
ARR_APP1(ir_node*, *blocks_to_process, node);
}
}
-/* Remove Bad nodes from Phi and Block inputs.
- *
- * This does NOT remove unreachable code.
- *
- * Postcondition: No Bad nodes.
- */
-int remove_bads(ir_graph *irg)
+void remove_bads(ir_graph *irg)
{
size_t i;
size_t n_to_process;
{
size_t i;
size_t n_to_process;
@@
-149,10
+142,8
@@
int remove_bads(ir_graph *irg)
if (n_to_process > 0) {
edges_deactivate(irg);
if (n_to_process > 0) {
edges_deactivate(irg);
- clear_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_OUTS);
- clear_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_DOMINANCE);
- return 1;
+ clear_irg_properties(irg, IR_GRAPH_PROPERTY_CONSISTENT_OUTS);
+ clear_irg_properties(irg, IR_GRAPH_PROPERTY_CONSISTENT_DOMINANCE);
}
}
-
- return 0;
+ add_irg_properties(irg, IR_GRAPH_PROPERTY_NO_BADS);
}
}