- LC_OPT_ENT_ENUM_MASK("dump", "dump ifg before, after or after each cloud", &dump_var),
+ LC_OPT_ENT_ENUM_MASK("dump", "dump ifg cloud", &dump_var),
LC_OPT_ENT_INT ("dbg", "debug level for the Java coalescer", &dbg_level),
{ NULL }
};
LC_OPT_ENT_INT ("dbg", "debug level for the Java coalescer", &dbg_level),
{ NULL }
};
- lc_opt_entry_t *co3_grp = lc_opt_get_grp(grp, "co3");
+ lc_opt_entry_t *be_grp = lc_opt_get_grp(firm_opt_get_root(), "be");
+ lc_opt_entry_t *ra_grp = lc_opt_get_grp(be_grp, "ra");
+ lc_opt_entry_t *chordal_grp = lc_opt_get_grp(ra_grp, "chordal");
+ lc_opt_entry_t *co3_grp = lc_opt_get_grp(chordal_grp, "co3");
+
static void set_admissible_regs(be_java_coal_t *coal, copy_opt_t *co, ir_node *irn, int t_idx, int *col_map)
{
unsigned i;
arch_register_req_t req;
unsigned n_regs = co->cls->n_regs;
static void set_admissible_regs(be_java_coal_t *coal, copy_opt_t *co, ir_node *irn, int t_idx, int *col_map)
{
unsigned i;
arch_register_req_t req;
unsigned n_regs = co->cls->n_regs;
arch_get_register_req(co->aenv, &req, irn, BE_OUT_POS(0));
if(arch_register_req_is(&req, limited)) {
bitset_t *adm = bitset_alloca(n_regs);
req.limited(req.limited_env, adm);
for(i = 0; i < n_regs; ++i)
arch_get_register_req(co->aenv, &req, irn, BE_OUT_POS(0));
if(arch_register_req_is(&req, limited)) {
bitset_t *adm = bitset_alloca(n_regs);
req.limited(req.limited_env, adm);
for(i = 0; i < n_regs; ++i)
- if(!bitset_is_set(adm, i) && col_map[i] >= 0)
+ if(!bitset_is_set(adm, i) && col_map[i] >= 0) {
+ // printf("\tforbidding color: %d\n", i);
col_map = alloca(n_regs * sizeof(col_map[0]));
inv_col_map = alloca(n_regs * sizeof(inv_col_map[0]));
col_map = alloca(n_regs * sizeof(col_map[0]));
inv_col_map = alloca(n_regs * sizeof(inv_col_map[0]));
for(i = 0, j = 0; i < n_regs; ++i) {
const arch_register_t *reg = &co->cls->regs[i];
for(i = 0, j = 0; i < n_regs; ++i) {
const arch_register_t *reg = &co->cls->regs[i];
if(bitset_is_set(nodes, n_idx)) {
affinity_node_t *an = get_affinity_info(co, n);
if(bitset_is_set(nodes, n_idx)) {
affinity_node_t *an = get_affinity_info(co, n);
be_java_coal_set_color(coal, t_idx, col_map[arch_get_irn_register(co->aenv, n)->index]);
set_admissible_regs(coal, co, n, t_idx, col_map);
be_ifg_foreach_neighbour(ifg, neigh_it, n, m) {
be_java_coal_set_color(coal, t_idx, col_map[arch_get_irn_register(co->aenv, n)->index]);
set_admissible_regs(coal, co, n, t_idx, col_map);
be_ifg_foreach_neighbour(ifg, neigh_it, n, m) {
if(bitset_is_set(nodes, idx)) {
unsigned t_idx = node_map[idx];
unsigned col = inv_col_map[be_java_coal_get_color(coal, t_idx)];
if(bitset_is_set(nodes, idx)) {
unsigned t_idx = node_map[idx];
unsigned col = inv_col_map[be_java_coal_get_color(coal, t_idx)];