fixed bug: Wrong opcode range was requested in be
[libfirm] / ir / be / bemain.c
index c51f65d..f277074 100644 (file)
@@ -65,7 +65,6 @@
 #include "belive_t.h"
 #include "bespillbelady.h"
 #include "bera.h"
-#include "beraextern.h"
 #include "bechordal_t.h"
 #include "beifg.h"
 #include "beifg_impl.h"
@@ -313,8 +312,9 @@ static void initialize_birg(be_irg_t *birg, ir_graph *irg, be_main_env_t *env)
        /* Normalize proj nodes. */
        normalize_proj_nodes(irg);
 
-       /* Make just one return node. */
-       normalize_one_return(irg);
+       /* create multiple return nodes */
+       /* TODO: find out why this does nothing */
+       normalize_n_returns(irg);
 
        /* Remove critical edges */
        remove_critical_cf_edges(irg);
@@ -533,11 +533,14 @@ static void be_main_loop(FILE *file_handle, const char *cup_name)
                /**
                 * Create execution frequencies from profile data or estimate some
                 */
-               if (be_profile_has_data()) {
+               if (be_profile_has_data())
                        birg->exec_freq = be_create_execfreqs_from_profile(irg);
-               } else {
+               else
                        birg->exec_freq = compute_execfreq(irg, 10);
-               }
+
+
+               /* disabled for now, fails for EmptyFor.c and XXEndless.c */
+               /* be_live_chk_compare(birg); */
 
                /* let backend prepare scheduling */
                BE_TIMER_PUSH(t_codegen);
@@ -816,14 +819,14 @@ const char *be_retrieve_dbg_info(const dbg_info *dbg, unsigned *line) {
        return NULL;
 }
 
-int be_put_ignore_regs(const be_irg_t *birg, const arch_register_class_t *cls, bitset_t *bs)
+unsigned be_put_ignore_regs(const be_irg_t *birg, const arch_register_class_t *cls, bitset_t *bs)
 {
-       if(bs == NULL)
+       if (bs == NULL)
                bs = bitset_alloca(cls->n_regs);
        else
                bitset_clear_all(bs);
 
-       assert(bitset_size(bs) == (unsigned) cls->n_regs);
+       assert(bitset_size(bs) == (unsigned)cls->n_regs);
        arch_put_non_ignore_regs(birg->main_env->arch_env, cls, bs);
        bitset_flip_all(bs);
        be_abi_put_ignore_regs(birg->abi, cls, bs);