X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbecopyilp_t.h;h=1212fb6593dc4ba3c9acd5b63f84c14e6d19aa06;hb=e7ba741cdd9599ce05d7989bff60a1c6137ee0b5;hp=bf016d6db938970b371433157369b008c931473c;hpb=67b9a2ff3da2342b66b7124842ccd098df6fdbae;p=libfirm diff --git a/ir/be/becopyilp_t.h b/ir/be/becopyilp_t.h index bf016d6db..1212fb659 100644 --- a/ir/be/becopyilp_t.h +++ b/ir/be/becopyilp_t.h @@ -1,33 +1,34 @@ -/** - * Author: Daniel Grund - * Date: 28.02.2006 - * Copyright: (c) Universitaet Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. +/* + * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. * - * Common stuff used by all ILP fomulations. + * 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. */ -#ifndef _BECOPYILP_T_H -#define _BECOPYILP_T_H +/** + * @file + * @brief Common stuff used by all ILP formulations. + * @author Daniel Grund + * @date 28.02.2006 + * @version $Id$ + */ +#ifndef FIRM_BE_BECOPYILP_T_H +#define FIRM_BE_BECOPYILP_T_H #include "firm_config.h" - -#ifndef _WIN32 - #ifndef HAVE_ALLOCA_H - #define HAVE_ALLOCA_H 1 - #endif /* HAVE_ALLOC_H */ -#endif /* _WIN32 */ - -#ifdef HAVE_ALLOCA_H -#include -#endif - -#ifdef HAVE_MALLOC_H -#include -#endif - -#include "irnode_t.h" +#include "firm_types.h" #include "pset.h" #include "becopyopt_t.h" @@ -45,14 +46,14 @@ typedef struct _coloring_suffix_t coloring_suffix_t; struct _coloring_suffix_t { coloring_suffix_t *next; - ir_node *irn; + ir_node *irn; }; typedef struct _size_red_t { - copy_opt_t *co; - pset *all_removed; /**< All nodes removed during problem size reduction */ - coloring_suffix_t *col_suff; /**< Coloring suffix. Reverse would be a PEO prefix */ - struct obstack ob; + copy_opt_t *co; + pset *all_removed; /**< All nodes removed during problem size reduction */ + coloring_suffix_t *col_suff; /**< Coloring suffix. Reverse would be a PEO prefix */ + struct obstack ob; } size_red_t; /** @@ -87,14 +88,14 @@ void free_size_red(size_red_t *sr); * Is this necessary? */ static INLINE int co_ilp_get_costs(copy_opt_t *co, ir_node *root, ir_node *arg) { - int i; + int i; unit_t *curr; /* search optimization unit for phi */ list_for_each_entry(unit_t, curr, &co->units, units) if (curr->nodes[0] == root) { - for (i=1; inode_count; ++i) + for (i = 1; i < curr->node_count; ++i) if (curr->nodes[i] == arg) return curr->costs[i]; @@ -115,14 +116,13 @@ static INLINE int co_ilp_get_costs(copy_opt_t *co, ir_node *root, ir_node *arg) *****************************************************************************/ +#ifdef WITH_ILP #include -#undef LPP_SOLVE_NET +#define LPP_SOLVE_NET #ifdef LPP_SOLVE_NET # include -# define LPP_HOST "i44pc52" -# define LPP_SOLVER "cplex" #else # include #endif @@ -134,26 +134,27 @@ typedef struct _ilp_env_t ilp_env_t; typedef void(*ilp_callback)(ilp_env_t*); struct _ilp_env_t { - firm_dbg_module_t *dbg; - const copy_opt_t *co; /**< the copy opt problem */ - size_red_t *sr; /**< problem size reduction. removes simple nodes */ - lpp_t *lp; /**< the linear programming problem */ - void *env; - ilp_callback build; - ilp_callback apply; - + const copy_opt_t *co; /**< the copy opt problem */ + size_red_t *sr; /**< problem size reduction. removes simple nodes */ + lpp_t *lp; /**< the linear programming problem */ + void *env; + ilp_callback build; + ilp_callback apply; }; -ilp_env_t *new_ilp_env(copy_opt_t *co, firm_dbg_module_t *dbg, ilp_callback build, ilp_callback apply, void *env); +ilp_env_t *new_ilp_env(copy_opt_t *co, ilp_callback build, ilp_callback apply, void *env); -lpp_sol_state_t ilp_go(ilp_env_t *ienv, double time_limit); +lpp_sol_state_t ilp_go(ilp_env_t *ienv); void free_ilp_env(ilp_env_t *ienv); -/****************************************************************************** +#define name_cdd(buf, char1, int1, int2) \ + (snprintf(buf, sizeof(buf), "%c_%d_%d", char1, int1, int2), buf) +#define name_cdd_sorted(buf, char1, int1, int2) \ + name_cdd(buf, char1, MIN(int1, int2), MAX(int1, int2)) - *****************************************************************************/ +#endif /* WITH_ILP */ -#endif /* _BECOPYILP_T_H */ +#endif /* FIRM_BE_BECOPYILP_T_H */