From 362c133139e49392bafd15a511c02786b5f7c1a0 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Sun, 29 Apr 2007 19:29:02 +0000 Subject: [PATCH] updated Header some doxygen comments added restructured [r13543] --- ir/opt/cfopt.c | 14 +++++--------- ir/opt/cfopt.h | 25 +++++++------------------ ir/opt/condeval.c | 41 ++++++++++++++++++++++------------------- ir/opt/condeval.h | 19 +++++++++++++++---- 4 files changed, 49 insertions(+), 50 deletions(-) diff --git a/ir/opt/cfopt.c b/ir/opt/cfopt.c index bf3806516..b91b61e4a 100644 --- a/ir/opt/cfopt.c +++ b/ir/opt/cfopt.c @@ -17,16 +17,12 @@ * PURPOSE. */ -/* - * Project: libFIRM - * File name: ir/opt/cfopt.c - * Purpose: control flow optimizations - * Author: - * Created: - * CVS-ID: $Id$ - * Copyright: (c) 1998-2004 Universität Karlsruhe +/** + * @file + * @brief Control flow optimizations. + * @author Goetz Lindenmaier, Michael Beck, Sebastian Hack + * @version $Id$ */ - #ifdef HAVE_CONFIG_H # include "config.h" #endif diff --git a/ir/opt/cfopt.h b/ir/opt/cfopt.h index db8319041..fbd552b27 100644 --- a/ir/opt/cfopt.h +++ b/ir/opt/cfopt.h @@ -17,25 +17,14 @@ * PURPOSE. */ -/* - * Project: libFIRM - * File name: ir/opt/cfopt.h - * Purpose: control flow optimizations - * Author: Goetz Lindenmaier - * Created: - * CVS-ID: $Id$ - * Copyright: (c) 1998-2004 Universität Karlsruhe - */ - /** - * @file cfopt.h - * - * Control flow optimization. - * - * @author Goetz Lindenmaier + * @file + * @brief Control flow optimizations. + * @author Goetz Lindenmaier, Michael Beck, Sebastian Hack + * @version $Id$ */ -#ifndef _CFOPT_H_ -#define _CFOPT_H_ +#ifndef FIRM_OPT_CFOPT_H +#define FIRM_OPT_CFOPT_H #include "irgraph.h" @@ -55,4 +44,4 @@ */ void optimize_cf(ir_graph *irg); -#endif /* _CFOPT_H_ */ +#endif /* FIRM_OPT_CFOPT_H */ diff --git a/ir/opt/condeval.c b/ir/opt/condeval.c index 8f138af5e..80feb3c70 100644 --- a/ir/opt/condeval.c +++ b/ir/opt/condeval.c @@ -17,14 +17,12 @@ * PURPOSE. */ -/* - * Project: libFIRM - * File name: ir/opt/cfopt.c - * Purpose: Partial condition evaluation - * Author: Christoph Mallon, Matthias Braun - * Created: 10. Sep. 2006 - * CVS-ID: $Id$ - * Copyright: (c) 1998-2006 Universität Karlsruhe +/** + * @file + * @brief Partial condition evaluation + * @date 10. Sep. 2006 + * @author Christoph Mallon, Matthias Braun + * @version $Id$ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -400,7 +398,7 @@ static ir_node *find_phi_with_const(ir_node *jump, ir_node *value, condeval_env_ /** - * Block-walker: searchs for the following construct + * Block-walker: searches for the following construct * * Const or Phi with constants * | @@ -518,35 +516,40 @@ static void cond_eval(ir_node* block, void* data) remove_pred(env.cnst_pred, env.cnst_pos); - // the graph is changed now + /* the graph is changed now */ *changed = 1; - set_irg_doms_inconsistent(irg); - set_irg_extblk_inconsistent(irg); - set_irg_loopinfo_inconsistent(irg); } } } void opt_cond_eval(ir_graph* irg) { - int changed; + int changed, rerun; FIRM_DBG_REGISTER(dbg, "firm.opt.condeval"); DB((dbg, LEVEL_1, "===> Performing condition evaluation on %+F\n", irg)); - edges_assure(irg); remove_critical_cf_edges(irg); - normalize_proj_nodes(irg); + edges_assure(irg); set_using_irn_link(irg); set_using_visited(irg); + changed = 0; do { - changed = 0; - irg_block_walk_graph(irg, cond_eval, NULL, &changed); - } while(changed); + rerun = 0; + irg_block_walk_graph(irg, cond_eval, NULL, &rerun); + changed |= rerun; + } while (rerun); + + if (changed) { + /* control flow changed, some blocks may become dead */ + set_irg_doms_inconsistent(irg); + set_irg_extblk_inconsistent(irg); + set_irg_loopinfo_inconsistent(irg); + } clear_using_visited(irg); clear_using_irn_link(irg); diff --git a/ir/opt/condeval.h b/ir/opt/condeval.h index dbb5ee7ae..6fbe911d0 100644 --- a/ir/opt/condeval.h +++ b/ir/opt/condeval.h @@ -17,11 +17,22 @@ * PURPOSE. */ -#ifndef FIRM_COND_EVAL_H -#define FIRM_COND_EVAL_H +/** + * @file + * @brief Partial condition evaluation + * @author Christoph Mallon, Matthias Braun + * @version $Id$ + */ +#ifndef FIRM_OPT_CONDEVAL_H +#define FIRM_OPT_CONDEVAL_H -#include "irgraph.h" +#include "firm_types.h" +/** + * Perform partial conditionla evaluation on the given graph. + * + * @param irg the graph + */ void opt_cond_eval(ir_graph* irg); -#endif /* FIRM_COND_EVAL_H */ +#endif /* FIRM_OPT_CONDEVAL_H */ -- 2.20.1