#include "beutil.h"
#include "benumb_t.h"
#include "belive_t.h"
-#include "bera_t.h"
#include "bechordal_t.h"
#include "bearch.h"
* Data representing the problem of copy minimization.
*/
typedef struct _copy_opt_t {
+ be_chordal_env_t *chordal_env;
ir_graph *irg; /**< the irg to process */
char *name; /**< ProgName__IrgName__RegClass */
const arch_env_t *env; /**< Environment (isa + handlers) */
/**
* Generate the problem. Collect all infos and optimizable nodes.
*/
-copy_opt_t *new_copy_opt(ir_graph *irg, const arch_env_t *env, const arch_register_class_t *cls);
+copy_opt_t *new_copy_opt(be_chordal_env_t *chordal_env,
+ const arch_env_t *env, const arch_register_class_t *cls);
/**
* Free the space...
/**
* Checks if the irn is a non-interfering argument of a node which 'is_optimizable'
*/
-int is_optimizable_arg(ir_node *irn);
+int is_optimizable_arg(const copy_opt_t *co, ir_node *irn);
/**
* Returns the current number of copies needed
*/
-int co_get_copy_count(copy_opt_t *co);
+int co_get_copy_count(const copy_opt_t *co);
/**
* IMPORTANT: Available only iff heuristic has run!
* Returns a lower bound for the number of copies needed based on interfering
* arguments and the size of a max indep. set (only ifg-edges) of the other args.
*/
-int co_get_lower_bound(copy_opt_t *co);
+int co_get_lower_bound(const copy_opt_t *co);
/**
* Returns the number of arguments interfering with their root node. This also
* is a (worse) lower bound for the number of copies needed.
*/
-int co_get_interferer_count(copy_opt_t *co);
+int co_get_interferer_count(const copy_opt_t *co);
/**
* Solves the problem using a heuristic approach