be_abi_put_ignore_regs returns now number of ignore registers as unsigned
[libfirm] / ir / be / bemain.c
index 2c3ab57..0b772df 100644 (file)
@@ -1,8 +1,28 @@
+/*
+ * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ *
+ * This file is part of libFirm.
+ *
+ * This file may be distributed and/or modified under the terms of the
+ * GNU General Public License version 2 as published by the Free Software
+ * Foundation and appearing in the file LICENSE.GPL included in the
+ * packaging of this file.
+ *
+ * Licensees holding valid libFirm Professional Edition licenses may use
+ * this file in accordance with the libFirm Commercial License.
+ * Agreement provided with the Software.
+ *
+ * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+ * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+
 /**
- * Backend driver.
- * @author Sebastian Hack
- * @date   25.11.2004
- * @cvsid  $Id$
+ * @file
+ * @brief       Main Backend driver.
+ * @author      Sebastian Hack
+ * @date        25.11.2004
+ * @version     $Id$
  */
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -45,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"
@@ -59,6 +78,7 @@
 #include "beverify.h"
 #include "beprofile.h"
 #include "be_dbgout.h"
+#include "beirg_t.h"
 
 #ifdef WITH_ILP
 #include "beilpsched.h"
@@ -348,7 +368,7 @@ static void be_main_loop(FILE *file_handle, const char *cup_name)
        char prof_filename[256];
        static const char suffix[] = ".prof";
        be_irg_t *birgs;
-       unsigned num_birgs;
+       int num_birgs;
        ir_graph **irg_list, **backend_irg_list;
 
        lc_timer_t *t_abi      = NULL;
@@ -512,11 +532,12 @@ 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);
-               }
+
+               be_live_chk_compare(birg);
 
                /* let backend prepare scheduling */
                BE_TIMER_PUSH(t_codegen);
@@ -795,14 +816,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);