X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbechordal_draw.c;h=2239fa5f9011250a2cb7353496197df5fe005609;hb=a4c23fb5fdcaf600f18b4fa7b7e104fa9b7dc514;hp=6f4ef2f16dd0c500ed8193734444f77817b17418;hpb=2254965b85c90a6a96bcd742a02c45033c54523e;p=libfirm diff --git a/ir/be/bechordal_draw.c b/ir/be/bechordal_draw.c index 6f4ef2f16..2239fa5f9 100644 --- a/ir/be/bechordal_draw.c +++ b/ir/be/bechordal_draw.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -75,6 +75,7 @@ static int get_width(const plotter_t *_self) { } static void plotter_default_free(plotter_t *self) { + (void) self; } typedef struct { @@ -322,7 +323,7 @@ static void layout(const draw_chordal_env_t *env, ir_node *bl, int x) dims->box.x = x + doz(rect->w, dims->box.w) / 2; dims->box.y = rect->h + v_space; - rect->h += dims->box.h + v_space; + rect->h = dims->box.y + dims->box.h; } static void set_y(const draw_chordal_env_t *env, ir_node *bl, int up) @@ -348,6 +349,8 @@ static color_t *reg_to_color(const draw_chordal_env_t *env, { int phi_arg = 0; const ir_edge_t *edge; + (void) env; + (void) rel_bl; foreach_out_edge(irn, edge) phi_arg |= is_Phi(edge->src); @@ -375,21 +378,20 @@ static void draw_block(ir_node *bl, void *data) static const color_t black = { 0, 0, 0 }; const draw_chordal_env_t *env = data; const be_lv_t *lv = be_get_birg_liveness(env->chordal_env->birg); - pset *live_in = be_lv_pset_put_in(lv, bl, pset_new_ptr_default()); struct list_head *head = get_block_border_head(env->chordal_env, bl); ir_node *dom = get_Block_idom(bl); const draw_chordal_opts_t *opts = env->opts; struct block_dims *dims = pmap_get(env->block_dims, bl); char buf[64]; - ir_node *irn; border_t *b; + int idx; ir_snprintf(buf, sizeof(buf), "%F", bl); env->plotter->vtab->set_color(env->plotter, &black); env->plotter->vtab->box(env->plotter, &dims->box); -#if 0 +#if 1 env->plotter->vtab->text(env->plotter, dims->box.x, dims->box.y, buf); #endif @@ -420,8 +422,9 @@ static void draw_block(ir_node *bl, void *data) if (dom) { struct block_dims *dom_dims = pmap_get(env->block_dims, dom); - for (irn = pset_first(live_in); irn; irn = pset_next(live_in)) { - if (arch_irn_has_reg_class(env->arch_env, irn, -1, env->cls)) { + be_lv_foreach(lv, bl, be_lv_state_in, idx) { + ir_node *irn = be_lv_get_irn(lv, bl, idx); + if (arch_irn_consider_in_reg_alloc(env->arch_env, env->cls, irn)) { const arch_register_t *reg = arch_get_irn_register(env->arch_env, irn); int col = arch_register_get_index(reg); int x = (col + 1) * opts->h_inter_gap; @@ -438,20 +441,21 @@ static void draw_block(ir_node *bl, void *data) } } } - - del_pset(live_in); } static void draw(draw_chordal_env_t *env, const rect_t *start_box) { plotter_t *p = env->plotter; + be_lv_t *lv; rect_t bbox; bbox.x = bbox.y = 0; bbox.w = start_box->w + 2 * env->opts->x_margin; bbox.h = start_box->h + 2 * env->opts->y_margin; - be_assure_liveness(env->chordal_env->birg); + lv = be_assure_liveness(env->chordal_env->birg); + be_liveness_assure_sets(lv); + be_liveness_assure_chk(lv); p->vtab->begin(p, &bbox); irg_block_walk_graph(env->chordal_env->irg, draw_block, NULL, env);