X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firprog.c;h=1fbcf35c7962a7f054d8cfc384a49283ab51183d;hb=08bbce22c14cb73b1550debc6754228b0cc5a14d;hp=13de012633b42a970cbb0a5c1c1e40e815d231a9;hpb=7a483ab981d403222150c320242adaad13d60af9;p=libfirm diff --git a/ir/ir/irprog.c b/ir/ir/irprog.c index 13de01263..1fbcf35c7 100644 --- a/ir/ir/irprog.c +++ b/ir/ir/irprog.c @@ -99,7 +99,6 @@ static void complete_ir_prog(ir_prog *irp, const char *module_name) set_class_final(irp->segment_types[IR_SEGMENT_GLOBAL], 1); irp->const_code_irg = new_const_code_irg(); - irp->phase_state = phase_building; irp->class_cast_state = ir_class_casts_transitive; irp->globals_entity_usage_state = ir_entity_usage_not_computed; #undef IDENT @@ -126,6 +125,9 @@ ir_prog *new_ir_prog(const char *name) void free_ir_prog(void) { + if (irp == NULL) + return; + size_t i; /* must iterate backwards here */ for (i = get_irp_n_irgs(); i > 0;) @@ -197,7 +199,7 @@ void add_irp_irg(ir_graph *irg) ARR_APP1(ir_graph *, irp->graphs, irg); } -void remove_irp_irg_from_list(ir_graph *irg) +void remove_irp_irg(ir_graph *irg) { size_t i, l; @@ -214,12 +216,6 @@ void remove_irp_irg_from_list(ir_graph *irg) } } -void remove_irp_irg(ir_graph *irg) -{ - free_ir_graph(irg); - remove_irp_irg_from_list(irg); -} - size_t (get_irp_n_irgs)(void) { return get_irp_n_irgs_(); @@ -306,57 +302,6 @@ ir_graph *(get_const_code_irg)(void) return get_const_code_irg_(); } -irg_phase_state get_irp_phase_state(void) -{ - return irp->phase_state; -} - -void set_irp_phase_state(irg_phase_state s) -{ - irp->phase_state = s; -} - -typedef struct pass_t { - ir_prog_pass_t pass; - irg_phase_state state; -} pass_t; - -/** - * Wrapper for setting the state of a whole ir_prog. - */ -static int set_irp_phase_state_wrapper(ir_prog *irp, void *context) -{ - pass_t *pass = (pass_t *)context; - irg_phase_state state = pass->state; - size_t i, n; - - (void)irp; - - /* set the phase of all graphs */ - for (i = 0, n = get_irp_n_irgs(); i < n; ++i) - set_irg_phase_state(get_irp_irg(i), state); - - /* set the irp phase */ - set_irp_phase_state(state); - - return 0; -} - -ir_prog_pass_t *set_irp_phase_state_pass(const char *name, irg_phase_state state) -{ - struct pass_t *pass = XMALLOCZ(struct pass_t); - - def_prog_pass_constructor( - &pass->pass, name ? name : "set_irp_phase", set_irp_phase_state_wrapper); - pass->state = state; - - /* no dump/verify */ - pass->pass.verify_irprog = ir_prog_no_verify; - pass->pass.dump_irprog = ir_prog_no_dump; - - return &pass->pass; -} - void set_irp_ip_outedges(ir_node ** ip_outedges) { irp->ip_outedges = ip_outedges;