*
* x_nc, y_ij \in N, w_ij \in R^+
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include "firm_config.h"
#ifdef WITH_ILP
bitset_pos_t col;
int cst_idx;
const arch_register_req_t *req;
- int curr_node_color = get_irn_col(ienv->co, irn);
+ int curr_node_color = get_irn_col(irn);
int node_nr = (int)get_irn_idx(irn);
local_env_t *lenv = ienv->env;
pmap_insert(lenv->nr_2_irn, INT_TO_PTR(node_nr), irn);
- req = arch_get_register_req(ienv->co->aenv, irn, -1);
+ req = arch_get_register_req_out(irn);
bitset_clear_all(colors);
}
}
-static void build_interference_cstr(ilp_env_t *ienv) {
- lpp_t *lpp = ienv->lp;
- local_env_t *lenv = ienv->env;
- be_ifg_t *ifg = ienv->co->cenv->ifg;
- int n_colors = lenv->n_colors;
- int i, col;
-
- void *iter = be_ifg_cliques_iter_alloca(ifg);
- ir_node **clique = alloca(sizeof(*clique) * n_colors);
- int size;
+static void build_interference_cstr(ilp_env_t *ienv)
+{
+ lpp_t *lpp = ienv->lp;
+ local_env_t *lenv = ienv->env;
+ be_ifg_t *ifg = ienv->co->cenv->ifg;
+ int n_colors = lenv->n_colors;
+ void *iter = be_ifg_cliques_iter_alloca(ifg);
+ ir_node **clique = ALLOCAN(ir_node*, n_colors);
+ int size;
+ int col;
+ int i;
char buf[16];
root = curr->nodes[0];
root_nr = (int) get_irn_idx(root);
- root_col = get_irn_col(ienv->co, root);
+ root_col = get_irn_col(root);
for (i = 1; i < curr->node_count; ++i) {
arg = curr->nodes[i];
arg_nr = (int) get_irn_idx(arg);
- arg_col = get_irn_col(ienv->co, arg);
+ arg_col = get_irn_col(arg);
/* add a new affinity variable */
y_idx = lpp_add_var(ienv->lp, name_cdd_sorted(buf, 'y', root_nr, arg_nr), lpp_binary, curr->costs[i]);
#define HASH_EDGE(e) (hash_irn((e)->n1) ^ hash_irn((e)->n2))
-static INLINE edge_t *add_edge(set *edges, ir_node *n1, ir_node *n2, int *counter) {
+static inline edge_t *add_edge(set *edges, ir_node *n1, ir_node *n2, int *counter) {
edge_t new_edge;
if (PTR_TO_INT(n1) < PTR_TO_INT(n2)) {
return set_insert(edges, &new_edge, sizeof(new_edge), HASH_EDGE(&new_edge));
}
-static INLINE edge_t *find_edge(set *edges, ir_node *n1, ir_node *n2) {
+static inline edge_t *find_edge(set *edges, ir_node *n1, ir_node *n2) {
edge_t new_edge;
if (PTR_TO_INT(n1) < PTR_TO_INT(n2)) {
return set_find(edges, &new_edge, sizeof(new_edge), HASH_EDGE(&new_edge));
}
-static INLINE void remove_edge(set *edges, ir_node *n1, ir_node *n2, int *counter) {
+static inline void remove_edge(set *edges, ir_node *n1, ir_node *n2, int *counter) {
edge_t new_edge, *e;
if (PTR_TO_INT(n1) < PTR_TO_INT(n2)) {
set *edges;
int i, o, n_nodes, n_edges;
- if (arch_irn_is(ienv->co->aenv, aff->irn, ignore))
+ if (arch_irn_is_ignore(aff->irn))
continue;
obstack_init(&ob);
/* get all affinity neighbours */
n_nodes = 0;
co_gs_foreach_neighb(aff, nbr) {
- if (!arch_irn_is(ienv->co->aenv, nbr->irn, ignore)) {
+ if (!arch_irn_is_ignore(nbr->irn)) {
obstack_ptr_grow(&ob, nbr->irn);
++n_nodes;
}
if (pdeq_contains(path, irn))
return;
- if (arch_irn_is(ienv->co->aenv, irn, ignore))
+ if (arch_irn_is_ignore(irn))
return;
/* insert the new irn */
/* check for forbidden interferences */
- len = pdeq_len(path);
- curr_path = alloca(len * sizeof(*curr_path));
+ len = pdeq_len(path);
+ curr_path = ALLOCAN(ir_node*, len);
pdeq_copyl(path, (const void **)curr_path);
for (i=1; i<len; ++i)
my.normal_colors = bitset_alloca(arch_register_class_n_regs(co->cls));
bitset_clear_all(my.normal_colors);
- arch_put_non_ignore_regs(co->aenv, co->cls, my.normal_colors);
+ arch_put_non_ignore_regs(co->cls, my.normal_colors);
my.n_colors = bitset_popcnt(my.normal_colors);
ienv = new_ilp_env(co, ilp2_build, ilp2_apply, &my);
#else /* WITH_ILP */
-static INLINE void only_that_you_can_compile_without_WITH_ILP_defined(void) {
+static inline void only_that_you_can_compile_without_WITH_ILP_defined(void) {
}
#endif /* WITH_ILP */