X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeirg.c;h=5bdd854e1cb0122e020d06cb1b2b468be396b850;hb=df2faee01a5832057bb3ca0ba5f67e979c916e19;hp=42460def68177161a93478e14464a4483352ffc7;hpb=863d31d7a5c8210432fef88b30fc3e8353131538;p=libfirm diff --git a/ir/be/beirg.c b/ir/be/beirg.c index 42460def6..5bdd854e1 100644 --- a/ir/be/beirg.c +++ b/ir/be/beirg.c @@ -1,61 +1,68 @@ /* - * Author: Matthias Braun - * Date: 13.12.2006 - * Copyright: (c) Universitaet Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. + */ + +/** + * @file + * @brief Backend irg - a ir_graph with additional analysis information. + * @author Matthias Braun + * @date 13.12.2006 */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif #include "execfreq.h" -#include "beirg_t.h" +#include "beirg.h" +#include "absgraph.h" +#include "belive.h" -void be_assure_liveness(be_irg_t *birg) +void be_invalidate_live_sets(ir_graph *irg) { - if(birg->lv != NULL) - return; - - birg->lv = be_liveness(birg->irg); + be_irg_t *birg = be_birg_from_irg(irg); + be_liveness_invalidate_sets(birg->lv); } -void be_invalidate_liveness(be_irg_t *birg) +void be_invalidate_live_chk(ir_graph *irg) { - if(birg->lv == NULL) - return; - - be_liveness_free(birg->lv); - birg->lv = NULL; + be_irg_t *birg = be_birg_from_irg(irg); + be_liveness_invalidate_chk(birg->lv); } -void be_assure_dom_front(be_irg_t *birg) +void be_assure_live_sets(ir_graph *irg) { - if(birg->dom_front != NULL) - return; - - birg->dom_front = be_compute_dominance_frontiers(birg->irg); + be_irg_t *birg = be_birg_from_irg(irg); + be_liveness_compute_sets(birg->lv); } -void be_invalidate_dom_front(be_irg_t *birg) +void be_assure_live_chk(ir_graph *irg) { - if(birg->dom_front == NULL) - return; - - be_free_dominance_frontiers(birg->dom_front); - birg->dom_front = NULL; + be_irg_t *birg = be_birg_from_irg(irg); + be_liveness_compute_chk(birg->lv); } -void be_free_birg(be_irg_t *birg) +void be_free_birg(ir_graph *irg) { - free_execfreq(birg->exec_freq); - birg->exec_freq = NULL; + be_irg_t *birg = be_birg_from_irg(irg); - if(birg->dom_front != NULL) { - be_free_dominance_frontiers(birg->dom_front); - birg->dom_front = NULL; - } - if(birg->lv != NULL) { + if (birg->lv != NULL) { be_liveness_free(birg->lv); birg->lv = NULL; } + + obstack_free(&birg->obst, NULL); + irg->be_data = NULL; }