combos constant dataflow analysis has to be consistent with the localopt; this should...
[libfirm] / ir / be / beirgmod.c
index 35549b9..0005b7b 100644 (file)
@@ -60,7 +60,7 @@
 #include "bearch.h"
 #include "besched.h"
 #include "belive_t.h"
-#include "benode_t.h"
+#include "benode.h"
 #include "beutil.h"
 #include "beinsn_t.h"
 #include "bessaconstr.h"
@@ -97,7 +97,7 @@ ir_node *insert_Perm_after(be_irg_t *birg,
        be_liveness_nodes_live_at(lv, cls, pos, &live);
 
        n = ir_nodeset_size(&live);
-       if(n == 0) {
+       if (n == 0) {
                ir_nodeset_destroy(&live);
                return NULL;
        }
@@ -124,7 +124,7 @@ ir_node *insert_Perm_after(be_irg_t *birg,
                be_ssa_construction_env_t senv;
 
                ir_mode *mode = get_irn_mode(perm_op);
-               ir_node *proj = new_r_Proj(bl, perm, mode, i);
+               ir_node *proj = new_r_Proj(perm, mode, i);
                arch_set_irn_register(proj, reg);
 
                curr = proj;
@@ -164,7 +164,8 @@ static void remove_empty_block(ir_node *block)
                goto check_preds;
 
        sched_foreach(block, node) {
-               if (! is_Jmp(node))
+               if (! is_Jmp(node)
+                               && !(arch_irn_get_flags(node) & arch_irn_flags_simple_jump))
                        goto check_preds;
                if (jump != NULL) {
                        /* we should never have 2 jumps in a block */
@@ -242,7 +243,7 @@ static void remove_empty_block(ir_node *block)
 
 check_preds:
        arity = get_Block_n_cfgpreds(block);
-       for(i = 0; i < arity; ++i) {
+       for (i = 0; i < arity; ++i) {
                ir_node *pred = get_Block_cfgpred_block(block, i);
                remove_empty_block(pred);
        }
@@ -279,9 +280,8 @@ int be_remove_empty_blocks(ir_graph *irg)
        return blocks_removed;
 }
 
+BE_REGISTER_MODULE_CONSTRUCTOR(be_init_irgmod);
 void be_init_irgmod(void)
 {
        FIRM_DBG_REGISTER(dbg, "firm.be.irgmod");
 }
-
-BE_REGISTER_MODULE_CONSTRUCTOR(be_init_irgmod);