projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Example for optimizing non-strict programs using combo.
[libfirm]
/
ir
/
be
/
beifg.c
diff --git
a/ir/be/beifg.c
b/ir/be/beifg.c
index
0914d60
..
666954f
100644
(file)
--- a/
ir/be/beifg.c
+++ b/
ir/be/beifg.c
@@
-24,9
+24,7
@@
* @date 18.11.2005
* @version $Id$
*/
* @date 18.11.2005
* @version $Id$
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
#include "config.h"
-#endif
#include <stdlib.h>
#include <stdlib.h>
@@
-59,7
+57,6
@@
typedef struct _coloring_t coloring_t;
struct _coloring_t {
ir_phase ph;
struct _coloring_t {
ir_phase ph;
- const arch_env_t *arch_env;
ir_graph *irg;
};
ir_graph *irg;
};
@@
-80,16
+77,15
@@
size_t (be_ifg_cliques_iter_size)(const be_ifg_t *ifg)
static void *regs_irn_data_init(ir_phase *ph, const ir_node *irn, void *data)
{
static void *regs_irn_data_init(ir_phase *ph, const ir_node *irn, void *data)
{
-
coloring_t *coloring = (coloring_t *)
ph;
- (void)
data;
+
(void)
ph;
+ (void)data;
- return (void
*) arch_get_irn_register(coloring->arch_env,
irn);
+ return (void
*)arch_get_irn_register(
irn);
}
}
-
coloring_t *coloring_init(coloring_t *c, ir_graph *irg, const arch_env_t *aenv
)
+
static coloring_t *coloring_init(coloring_t *c, ir_graph *irg
)
{
phase_init(&c->ph, "regs_map", irg, PHASE_DEFAULT_GROWTH, regs_irn_data_init, NULL);
{
phase_init(&c->ph, "regs_map", irg, PHASE_DEFAULT_GROWTH, regs_irn_data_init, NULL);
- c->arch_env = aenv;
c->irg = irg;
return c;
}
c->irg = irg;
return c;
}
@@
-105,15
+101,15
@@
static void restore_irn_color(ir_node *irn, void *c)
coloring_t *coloring = c;
const arch_register_t *reg = phase_get_irn_data(&coloring->ph, irn);
if(reg)
coloring_t *coloring = c;
const arch_register_t *reg = phase_get_irn_data(&coloring->ph, irn);
if(reg)
- arch_set_irn_register(
coloring->arch_env,
irn, reg);
+ arch_set_irn_register(irn, reg);
}
}
-void coloring_save(coloring_t *c)
+
static
void coloring_save(coloring_t *c)
{
irg_walk_graph(c->irg, NULL, get_irn_color, c);
}
{
irg_walk_graph(c->irg, NULL, get_irn_color, c);
}
-void coloring_restore(coloring_t *c)
+
static
void coloring_restore(coloring_t *c)
{
irg_walk_graph(c->irg, NULL, restore_irn_color, c);
}
{
irg_walk_graph(c->irg, NULL, restore_irn_color, c);
}
@@
-184,7
+180,7
@@
int be_ifg_is_simplicial(const be_ifg_t *ifg, const ir_node *irn)
int degree = be_ifg_degree(ifg, irn);
void *iter = be_ifg_neighbours_iter_alloca(ifg);
int degree = be_ifg_degree(ifg, irn);
void *iter = be_ifg_neighbours_iter_alloca(ifg);
- ir_node **neighbours =
xmalloc(degree * sizeof(neighbours[0])
);
+ ir_node **neighbours =
XMALLOCN(ir_node*, degree
);
ir_node *curr;
int i, j;
ir_node *curr;
int i, j;
@@
-276,7
+272,7
@@
void be_ifg_check_sorted(const be_ifg_t *ifg)
const int node_count = be_ifg_check_get_node_count(ifg);
int i = 0;
const int node_count = be_ifg_check_get_node_count(ifg);
int i = 0;
- ir_node **all_nodes =
xmalloc(node_count * sizeof(all_nodes[0])
);
+ ir_node **all_nodes =
XMALLOCN(ir_node*, node_count
);
be_ifg_foreach_node(ifg, iter1, n)
{
be_ifg_foreach_node(ifg, iter1, n)
{
@@
-294,7
+290,7
@@
void be_ifg_check_sorted(const be_ifg_t *ifg)
for (i = 0; i < node_count; i++)
{
for (i = 0; i < node_count; i++)
{
- ir_node **neighbours =
xmalloc(node_count * sizeof(neighbours[0])
);
+ ir_node **neighbours =
XMALLOCN(ir_node*, node_count
);
int j = 0;
int k = 0;
int degree = 0;
int j = 0;
int k = 0;
int degree = 0;
@@
-334,7
+330,7
@@
void be_ifg_check_sorted_to_file(const be_ifg_t *ifg, FILE *f)
const int node_count = be_ifg_check_get_node_count(ifg);
int i = 0;
const int node_count = be_ifg_check_get_node_count(ifg);
int i = 0;
- ir_node **all_nodes =
xmalloc(node_count * sizeof(all_nodes[0])
);
+ ir_node **all_nodes =
XMALLOCN(ir_node*, node_count
);
be_ifg_foreach_node(ifg, iter1, n)
{
be_ifg_foreach_node(ifg, iter1, n)
{
@@
-352,7
+348,7
@@
void be_ifg_check_sorted_to_file(const be_ifg_t *ifg, FILE *f)
for (i = 0; i < node_count; i++)
{
for (i = 0; i < node_count; i++)
{
- ir_node **neighbours =
xmalloc(node_count * sizeof(neighbours[0])
);
+ ir_node **neighbours =
XMALLOCN(ir_node*, node_count
);
int j = 0;
int k = 0;
int degree = 0;
int j = 0;
int k = 0;
int degree = 0;
@@
-400,7
+396,7
@@
void be_ifg_check_performance(be_chordal_env_t *chordal_env)
if (get_irg_estimated_node_cnt(chordal_env->irg) >= BE_CH_PERFORMANCETEST_MIN_NODES)
{
if (get_irg_estimated_node_cnt(chordal_env->irg) >= BE_CH_PERFORMANCETEST_MIN_NODES)
{
- coloring_init(&coloring, chordal_env->irg
, &chordal_env->birg->main_env->arch_env
);
+ coloring_init(&coloring, chordal_env->irg);
coloring_save(&coloring);
ir_timer_reset(timer);
coloring_save(&coloring);
ir_timer_reset(timer);
@@
-640,15
+636,15
@@
void be_ifg_dump_dot(be_ifg_t *ifg, ir_graph *irg, FILE *file, const be_ifg_dump
bitset_free(nodes);
}
bitset_free(nodes);
}
-static void int_comp_rec(be_i
rg_t *birg, be_i
fg_t *ifg, ir_node *n, bitset_t *seen)
+static void int_comp_rec(be_ifg_t *ifg, ir_node *n, bitset_t *seen)
{
void *neigh_it = be_ifg_neighbours_iter_alloca(ifg);
ir_node *m;
be_ifg_foreach_neighbour(ifg, neigh_it, n, m) {
{
void *neigh_it = be_ifg_neighbours_iter_alloca(ifg);
ir_node *m;
be_ifg_foreach_neighbour(ifg, neigh_it, n, m) {
- if
(!bitset_contains_irn(seen, m) && !arch_irn_is(&birg->main_env->arch_env,
m, ignore)) {
+ if
(!bitset_contains_irn(seen, m) && !arch_irn_is(
m, ignore)) {
bitset_add_irn(seen, m);
bitset_add_irn(seen, m);
- int_comp_rec(
birg,
ifg, m, seen);
+ int_comp_rec(ifg, m, seen);
}
}
}
}
@@
-663,10
+659,10
@@
static int int_component_stat(be_irg_t *birg, be_ifg_t *ifg)
ir_node *n;
be_ifg_foreach_node(ifg, nodes_it, n) {
ir_node *n;
be_ifg_foreach_node(ifg, nodes_it, n) {
- if (!
bitset_contains_irn(seen, n) && ! arch_irn_is(&birg->main_env->arch_env,
n, ignore)) {
+ if (!
bitset_contains_irn(seen, n) && !arch_irn_is(
n, ignore)) {
++n_comp;
bitset_add_irn(seen, n);
++n_comp;
bitset_add_irn(seen, n);
- int_comp_rec(
birg,
ifg, n, seen);
+ int_comp_rec(ifg, n, seen);
}
}
}
}