projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bespillutil: Remove the unusd function be_add_reload_at_end().
[libfirm]
/
ir
/
be
/
beschedregpress.c
diff --git
a/ir/be/beschedregpress.c
b/ir/be/beschedregpress.c
index
42e0abe
..
49357c2
100644
(file)
--- a/
ir/be/beschedregpress.c
+++ b/
ir/be/beschedregpress.c
@@
-22,7
+22,6
@@
* @brief Register pressure node selector.
* @author Sebastian Hack
* @date 29.08.2006
* @brief Register pressure node selector.
* @author Sebastian Hack
* @date 29.08.2006
- * @version $Id$
*/
#include "config.h"
*/
#include "config.h"
@@
-31,6
+30,7
@@
#include "iredges_t.h"
#include "irgwalk.h"
#include "irtools.h"
#include "iredges_t.h"
#include "irgwalk.h"
#include "irtools.h"
+#include "util.h"
#include "besched.h"
#include "belistsched.h"
#include "besched.h"
#include "belistsched.h"
@@
-152,8
+152,6
@@
static int compute_max_hops(reg_pressure_selector_env_t *env, ir_node *irn)
ir_graph *irg = get_irn_irg(bl);
int res = 0;
ir_graph *irg = get_irn_irg(bl);
int res = 0;
- const ir_edge_t *edge;
-
foreach_out_edge(irn, edge) {
ir_node *user = get_edge_src_irn(edge);
unsigned visited_nr = get_irg_visited(irg) + 1;
foreach_out_edge(irn, edge) {
ir_node *user = get_edge_src_irn(edge);
unsigned visited_nr = get_irg_visited(irg) + 1;
@@
-176,7
+174,6
@@
static void *reg_pressure_graph_init(ir_graph *irg)
static void *reg_pressure_block_init(void *graph_env, ir_node *bl)
{
static void *reg_pressure_block_init(void *graph_env, ir_node *bl)
{
- ir_node *irn;
reg_pressure_selector_env_t *env = XMALLOC(reg_pressure_selector_env_t);
(void) graph_env;
reg_pressure_selector_env_t *env = XMALLOC(reg_pressure_selector_env_t);
(void) graph_env;
@@
-188,12
+185,7
@@
static void *reg_pressure_block_init(void *graph_env, ir_node *bl)
* Collect usage statistics.
*/
sched_foreach(bl, irn) {
* Collect usage statistics.
*/
sched_foreach(bl, irn) {
- int i, n;
- if (is_Proj(irn)
- || (arch_irn_get_flags(irn) & arch_irn_flags_not_scheduled))
- continue;
-
- for (i = 0, n = get_irn_arity(irn); i < n; ++i) {
+ for (int i = 0, n = get_irn_arity(irn); i < n; ++i) {
usage_stats_t *us = get_or_set_usage_stats(env, irn);
#if 0 /* Liveness is not computed here! */
if (is_live_end(bl, op))
usage_stats_t *us = get_or_set_usage_stats(env, irn);
#if 0 /* Liveness is not computed here! */
if (is_live_end(bl, op))
@@
-224,8
+216,6
@@
static int get_result_hops_sum(reg_pressure_selector_env_t *env, ir_node *irn)
{
int res = 0;
if (get_irn_mode(irn) == mode_T) {
{
int res = 0;
if (get_irn_mode(irn) == mode_T) {
- const ir_edge_t *edge;
-
foreach_out_edge(irn, edge)
res += get_result_hops_sum(env, get_edge_src_irn(edge));
}
foreach_out_edge(irn, edge)
res += get_result_hops_sum(env, get_edge_src_irn(edge));
}
@@
-246,7
+236,7
@@
static inline int reg_pr_costs(reg_pressure_selector_env_t *env, ir_node *irn)
ir_node *op = get_irn_n(irn, i);
if (is_Proj(op)
ir_node *op = get_irn_n(irn, i);
if (is_Proj(op)
- || (arch_
irn_get
_flags(op) & arch_irn_flags_not_scheduled))
+ || (arch_
get_irn
_flags(op) & arch_irn_flags_not_scheduled))
continue;
sum += compute_max_hops(env, op);
continue;
sum += compute_max_hops(env, op);
@@
-259,15
+249,13
@@
static inline int reg_pr_costs(reg_pressure_selector_env_t *env, ir_node *irn)
static ir_node *reg_pressure_select(void *block_env, ir_nodeset_t *ready_set)
{
static ir_node *reg_pressure_select(void *block_env, ir_nodeset_t *ready_set)
{
- ir_nodeset_iterator_t iter;
reg_pressure_selector_env_t *env = (reg_pressure_selector_env_t*)block_env;
reg_pressure_selector_env_t *env = (reg_pressure_selector_env_t*)block_env;
- ir_node *
irn, *res
= NULL;
- int
curr_cost
= INT_MAX;
+ ir_node *
res
= NULL;
+ int
curr_cost
= INT_MAX;
assert(ir_nodeset_size(ready_set) > 0);
assert(ir_nodeset_size(ready_set) > 0);
- ir_nodeset_iterator_init(&iter, ready_set);
- while ( (irn = ir_nodeset_iterator_next(&iter)) != NULL) {
+ foreach_ir_nodeset(ready_set, irn, iter) {
/*
Ignore branch instructions for the time being.
They should only be scheduled if there is nothing else.
/*
Ignore branch instructions for the time being.
They should only be scheduled if there is nothing else.
@@
-287,9
+275,7
@@
static ir_node *reg_pressure_select(void *block_env, ir_nodeset_t *ready_set)
*/
if (!res) {
*/
if (!res) {
- ir_nodeset_iterator_init(&iter, ready_set);
- res = ir_nodeset_iterator_next(&iter);
-
+ res = ir_nodeset_first(ready_set);
assert(res && "There must be a node scheduled.");
}
assert(res && "There must be a node scheduled.");
}