added compile only flag to eccp (-c)
[libfirm] / ir / be / bechordal_main.c
index 7041706..62dbe32 100644 (file)
@@ -61,6 +61,7 @@
 #include "bespillbelady.h"
 #include "bespillmorgan.h"
 #include "bespillslots.h"
+#include "bespilloptions.h"
 #include "belower.h"
 
 #ifdef WITH_ILP
@@ -133,9 +134,6 @@ static be_ra_chordal_opts_t options = {
        BE_CH_VRFY_WARN,
 };
 
-/* coalesce spill slots */
-static int coalesce_spill_slots = 1;
-
 /** The name of the file where the statistics are put to. */
 static char stat_file_name[2048];
 
@@ -233,12 +231,11 @@ static lc_opt_enum_int_var_t be_ch_vrfy_var = {
 
 static const lc_opt_table_entry_t be_chordal_options[] = {
        LC_OPT_ENT_STR      ("statfile",      "the name of the statisctics file", stat_file_name, sizeof(stat_file_name)),
-       LC_OPT_ENT_BOOL     ("spill.coal",    "coalesce the spill slots (default: yes)", &coalesce_spill_slots),
-       LC_OPT_ENT_ENUM_INT ("spill",         "spill method (belady, morgan or remat)", &spill_var),
-       LC_OPT_ENT_ENUM_PTR ("ifg",           "interference graph flavour (std, fast, clique, pointer, list, check)", &ifg_flavor_var),
-       LC_OPT_ENT_ENUM_PTR ("perm",          "perm lowering options (copy or swap)", &lower_perm_var),
+       LC_OPT_ENT_ENUM_INT ("spill",         "spill method", &spill_var),
+       LC_OPT_ENT_ENUM_PTR ("ifg",           "interference graph flavour", &ifg_flavor_var),
+       LC_OPT_ENT_ENUM_PTR ("perm",          "perm lowering options", &lower_perm_var),
        LC_OPT_ENT_ENUM_MASK("dump",          "select dump phases", &dump_var),
-       LC_OPT_ENT_ENUM_PTR ("vrfy",          "verify options (off, warn, assert)", &be_ch_vrfy_var),
+       LC_OPT_ENT_ENUM_PTR ("vrfy",          "verify options", &be_ch_vrfy_var),
        LC_OPT_ENT_BOOL     ("elrsplit",      "enable extreme live range splitting", &be_elr_split),
        LC_OPT_ENT_INT      ("loop_weight",   "assumed amount of loop iterations for guessing the execution frequency", &be_loop_weight),
        { NULL }
@@ -263,6 +260,7 @@ static void be_ra_chordal_register_options(lc_opt_entry_t *grp)
 #ifdef WITH_ILP
                be_spill_remat_register_options(chordal_grp);
 #endif
+               be_spill_register_options(chordal_grp);
        }
 }
 #endif /* WITH_LIBCORE */
@@ -346,9 +344,12 @@ static void memory_operand_walker(ir_node *irn, void *env) {
        if (! be_is_Reload(irn))
                return;
 
-       // only use memory operands, if the reload is only used by 1 node
+       /* always use addressmode, it's good for x86 */
+#if 0
+       /* only use memory operands, if the reload is only used by 1 node */
        if(get_irn_n_edges(irn) > 1)
                return;
+#endif
 
        spill = be_get_Reload_mem(irn);
        block = get_nodes_block(irn);
@@ -787,7 +788,7 @@ static be_ra_timer_t *be_ra_chordal_main(const be_irg_t *bi)
 
        BE_TIMER_PUSH(ra_timer.t_spillslots);
 
-       be_coalesce_spillslots(&chordal_env, coalesce_spill_slots);
+       be_coalesce_spillslots(&chordal_env);
        dump(BE_CH_DUMP_SPILLSLOTS, irg, NULL, "-spillslots", dump_ir_block_graph_sched);
 
        BE_TIMER_POP(ra_timer.t_spillslots);
@@ -833,8 +834,8 @@ static be_ra_timer_t *be_ra_chordal_main(const be_irg_t *bi)
 const be_ra_t be_ra_chordal_allocator = {
 #ifdef WITH_LIBCORE
        be_ra_chordal_register_options,
-       be_ra_chordal_main
 #else
-       0
+       NULL,
 #endif
+       be_ra_chordal_main,
 };