* @date 14.04.2006
* @version $Id$
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include "lc_opts.h"
#include "lc_opts_enum.h"
return ci->tmp_fixed ? ci->tmp_col : ci->orig_col;
}
-static INLINE int color_is_fix(co2_t *env, const ir_node *irn)
+static inline int color_is_fix(co2_t *env, const ir_node *irn)
{
co2_irn_t *ci = get_co2_irn(env, irn);
return ci->fixed || ci->tmp_fixed;
}
-static INLINE bitset_t *get_adm(co2_t *env, co2_irn_t *ci)
+static inline bitset_t *get_adm(co2_t *env, co2_irn_t *ci)
{
if(ci->adm_cache == NULL) {
const arch_register_req_t *req;
ci->adm_cache = bitset_obstack_alloc(phase_obst(&env->ph), env->n_regs);
- req = arch_get_register_req(ci->irn, BE_OUT_POS(0));
+ req = arch_get_register_req_out(ci->irn);
if(arch_register_req_is(req, limited)) {
int i, n;
return ci->adm_cache;
}
-static INLINE bitset_t *admissible_colors(co2_t *env, co2_irn_t *ci, bitset_t *bs)
+static inline bitset_t *admissible_colors(co2_t *env, co2_irn_t *ci, bitset_t *bs)
{
bitset_copy(bs, get_adm(env, ci));
return bs;
}
-static INLINE int is_color_admissible(co2_t *env, co2_irn_t *ci, col_t col)
+static inline int is_color_admissible(co2_t *env, co2_irn_t *ci, col_t col)
{
bitset_t *bs = get_adm(env, ci);
return bitset_is_set(bs, col);
}
-static INLINE int is_constrained(co2_t *env, co2_irn_t *ci)
+static inline int is_constrained(co2_t *env, co2_irn_t *ci)
{
if(!ci->adm_cache)
get_adm(env, ci);
static void incur_constraint_costs(co2_t *env, const ir_node *irn, col_cost_pair_t *col_costs, int costs)
{
- const arch_register_req_t *req;
-
- req = arch_get_register_req(irn, BE_OUT_POS(0));
+ const arch_register_req_t *req = arch_get_register_req_out(irn);
if (arch_register_req_is(req, limited)) {
unsigned n_regs = env->co->cls->n_regs;
/* The node has the color it should not have _and_ has not been visited yet. */
if(!color_is_fix(env, irn)) {
int n_regs = env->co->cls->n_regs;
- col_cost_pair_t *csts = alloca(n_regs * sizeof(csts[0]));
+ col_cost_pair_t *csts = ALLOCAN(col_cost_pair_t, n_regs);
/* Get the costs for giving the node a specific color. */
determine_color_costs(env, ci, csts);
if(!color_is_fix(env, irn) && is_color_admissible(env, ci, tgt_col)) {
int n_regs = env->co->cls->n_regs;
- col_cost_pair_t *seq = alloca(n_regs * sizeof(seq[0]));
+ col_cost_pair_t *seq = ALLOCAN(col_cost_pair_t, n_regs);
/* Get the costs for giving the node a specific color. */
single_color_cost(env, ci, tgt_col, seq);
static int coalesce_top_down(co2_cloud_irn_t *ci, int child_nr, int depth)
{
co2_t *env = ci->cloud->env;
- col_cost_pair_t *seq = alloca(env->n_regs * sizeof(seq[0]));
+ col_cost_pair_t *seq = ALLOCAN(col_cost_pair_t, env->n_regs);
int is_root = ci->mst_parent == ci;
col_t parent_col = is_root ? (col_t) -1 : get_col(env, ci->mst_parent->inh.irn);
int min_badness = INT_MAX;
static const char *get_dot_color_name(size_t col)
{
- static const char *names[] = {
+ static const char *const names[] = {
"blue",
"red",
"green",
static const char *get_dot_shape_name(co2_irn_t *ci)
{
- const arch_register_req_t *req;
+ const arch_register_req_t *req = arch_get_register_req_out(ci->irn);
- req = arch_get_register_req(ci->irn, BE_OUT_POS(0));
if(arch_register_req_is(req, limited))
return "diamond";
static int ifg_is_dump_node(void *self, ir_node *irn)
{
+ const arch_register_req_t *req = arch_get_register_req_out(irn);
(void)self;
- return !arch_irn_is(irn, ignore);
+ return !(req->type & arch_register_req_type_ignore);
}
static void ifg_dump_node_attr(FILE *f, void *self, ir_node *irn)