projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
made code C89 compliant
[libfirm]
/
ir
/
be
/
bechordal_main.c
diff --git
a/ir/be/bechordal_main.c
b/ir/be/bechordal_main.c
index
a77748e
..
0e5df3e
100644
(file)
--- a/
ir/be/bechordal_main.c
+++ b/
ir/be/bechordal_main.c
@@
-43,12
+43,15
@@
#include "beifg_impl.h"
#include "bespillbelady.h"
#include "beifg_impl.h"
#include "bespillbelady.h"
-#include "bespillilp.h"
#include "belower.h"
#include "belower.h"
+#ifdef WITH_ILP
+#include "bespillilp.h"
+#endif /* WITH_ILP */
+
+#include "becopystat.h"
#include "becopyopt.h"
#include "bessadestr.h"
#include "becopyopt.h"
#include "bessadestr.h"
-#include "becopystat.h"
void be_ra_chordal_check(be_chordal_env_t *chordal_env) {
void be_ra_chordal_check(be_chordal_env_t *chordal_env) {
@@
-164,13
+167,17
@@
static be_ra_chordal_opts_t options = {
#ifdef WITH_LIBCORE
static const lc_opt_enum_int_items_t spill_items[] = {
{ "belady", BE_CH_SPILL_BELADY },
#ifdef WITH_LIBCORE
static const lc_opt_enum_int_items_t spill_items[] = {
{ "belady", BE_CH_SPILL_BELADY },
+#ifdef WITH_ILP
{ "ilp", BE_CH_SPILL_ILP },
{ "ilp", BE_CH_SPILL_ILP },
+#endif
{ NULL, 0 }
};
static const lc_opt_enum_int_items_t copymin_items[] = {
{ "heur", BE_CH_COPYMIN_HEUR },
{ NULL, 0 }
};
static const lc_opt_enum_int_items_t copymin_items[] = {
{ "heur", BE_CH_COPYMIN_HEUR },
+#ifdef WITH_ILP
{ "ilp", BE_CH_COPYMIN_ILP },
{ "ilp", BE_CH_COPYMIN_ILP },
+#endif
{ NULL, 0 }
};
{ NULL, 0 }
};
@@
-229,15
+236,15
@@
static void dump(unsigned mask, ir_graph *irg,
const char *suffix,
void (*dump_func)(ir_graph *, const char *))
{
const char *suffix,
void (*dump_func)(ir_graph *, const char *))
{
- if(1 || (
options.dump_flags & mask) == mask
) {
+ if(1 || (
(options.dump_flags & mask) == mask)
) {
if(cls) {
char buf[256];
snprintf(buf, sizeof(buf), "-%s%s", cls->name, suffix);
if(cls) {
char buf[256];
snprintf(buf, sizeof(buf), "-%s%s", cls->name, suffix);
-
dump_func(irg, buf
);
+
be_dump(irg, buf, dump_func
);
}
else
}
else
-
dump_func(irg, suffix
);
+
be_dump(irg, suffix, dump_func
);
}
}
}
}
@@
-253,9
+260,9
@@
static void be_ra_chordal_main(const be_irg_t *bi)
chordal_env.opts = &options;
chordal_env.irg = irg;
chordal_env.opts = &options;
chordal_env.irg = irg;
- chordal_env.dbg = firm_dbg_register("firm.be.chordal");
- chordal_env.birg = bi;
+ chordal_env.birg = bi;
chordal_env.dom_front = be_compute_dominance_frontiers(irg);
chordal_env.dom_front = be_compute_dominance_frontiers(irg);
+ FIRM_DBG_REGISTER(chordal_env.dbg, "firm.be.chordal");
obstack_init(&chordal_env.obst);
obstack_init(&chordal_env.obst);
@@
-272,9
+279,11
@@
static void be_ra_chordal_main(const be_irg_t *bi)
case BE_CH_SPILL_BELADY:
be_spill_belady(&chordal_env);
break;
case BE_CH_SPILL_BELADY:
be_spill_belady(&chordal_env);
break;
+#ifdef WITH_ILP
case BE_CH_SPILL_ILP:
be_spill_ilp(&chordal_env);
break;
case BE_CH_SPILL_ILP:
be_spill_ilp(&chordal_env);
break;
+#endif /* WITH_ILP */
default:
fprintf(stderr, "no valid spiller selected. falling back to belady\n");
be_spill_belady(&chordal_env);
default:
fprintf(stderr, "no valid spiller selected. falling back to belady\n");
be_spill_belady(&chordal_env);
@@
-283,9
+292,6
@@
static void be_ra_chordal_main(const be_irg_t *bi)
be_liveness(irg);
be_check_pressure(&chordal_env);
be_liveness(irg);
be_check_pressure(&chordal_env);
- be_liveness(irg);
- be_check_pressure(&chordal_env);
-
/* Color the graph. */
be_ra_chordal_color(&chordal_env);
dump(BE_CH_DUMP_CONSTR, irg, chordal_env.cls, "-color", dump_ir_block_graph_sched);
/* Color the graph. */
be_ra_chordal_color(&chordal_env);
dump(BE_CH_DUMP_CONSTR, irg, chordal_env.cls, "-color", dump_ir_block_graph_sched);
@@
-295,8
+301,17
@@
static void be_ra_chordal_main(const be_irg_t *bi)
be_ifg_check(chordal_env.ifg);
/* copy minimization */
be_ifg_check(chordal_env.ifg);
/* copy minimization */
- copystat_collect_cls(&chordal_env);
+#ifdef COPYOPT_STAT
co_compare_solvers(&chordal_env);
co_compare_solvers(&chordal_env);
+#else
+ {
+ copy_opt_t *co = new_copy_opt(&chordal_env, co_get_costs_loop_depth);
+ co_build_ou_structure(co);
+ co_solve_heuristic(co);
+ co_free_ou_structure(co);
+ free_copy_opt(co);
+ }
+#endif
dump(BE_CH_DUMP_COPYMIN, irg, chordal_env.cls, "-copymin", dump_ir_block_graph_sched);
be_ra_chordal_check(&chordal_env);
dump(BE_CH_DUMP_COPYMIN, irg, chordal_env.cls, "-copymin", dump_ir_block_graph_sched);
be_ra_chordal_check(&chordal_env);