projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
simplify and speedup belady/loopana a bit
[libfirm]
/
ir
/
be
/
belower.c
diff --git
a/ir/be/belower.c
b/ir/be/belower.c
index
3b2b47a
..
44a310b
100644
(file)
--- a/
ir/be/belower.c
+++ b/
ir/be/belower.c
@@
-38,6
+38,7
@@
#include "irgmod.h"
#include "iredges_t.h"
#include "irgwalk.h"
#include "irgmod.h"
#include "iredges_t.h"
#include "irgwalk.h"
+#include "array_t.h"
#include "bearch_t.h"
#include "belower.h"
#include "bearch_t.h"
#include "belower.h"
@@
-364,8
+365,6
@@
static void lower_perm_node(ir_node *irn, void *walk_env) {
real_size = n - get_n_checked_pairs(pairs, n);
real_size = n - get_n_checked_pairs(pairs, n);
- be_do_stat_perm(reg_class->name, reg_class->n_regs, irn, block, n, real_size);
-
/* check for cycles and chains */
while (get_n_checked_pairs(pairs, n) < n) {
i = n_ops = 0;
/* check for cycles and chains */
while (get_n_checked_pairs(pairs, n) < n) {
i = n_ops = 0;
@@
-495,8
+494,6
@@
static void lower_perm_node(ir_node *irn, void *walk_env) {
}
}
}
}
- be_do_stat_permcycle(reg_class->name, irn, block, cycle->type == PERM_CHAIN, cycle->n_elems, n_ops);
-
free((void *) cycle->elems);
free(cycle);
}
free((void *) cycle->elems);
free(cycle);
}
@@
-620,7
+617,8
@@
static void gen_assure_different_pattern(ir_node *irn, ir_node *other_different,
*/
static void assure_different_constraints(ir_node *irn, constraint_env_t *env) {
const arch_register_req_t *req;
*/
static void assure_different_constraints(ir_node *irn, constraint_env_t *env) {
const arch_register_req_t *req;
- const arch_env_t *arch_env = be_get_birg_arch_env(env->birg);
+ const arch_env_t *arch_env = be_get_birg_arch_env(env->birg);
+ ir_node *skipped_irn = belower_skip_proj(irn);
req = arch_get_register_req(arch_env, irn, -1);
req = arch_get_register_req(arch_env, irn, -1);
@@
-639,14
+637,14
@@
static void assure_different_constraints(ir_node *irn, constraint_env_t *env) {
* We can safely ignore a should_be_same x must_be_different y
* IFF both inputs are equal!
*/
* We can safely ignore a should_be_same x must_be_different y
* IFF both inputs are equal!
*/
- if (get_irn_n(
irn, idx_other) == get_irn_n(
irn, idx_same)) {
+ if (get_irn_n(
skipped_irn, idx_other) == get_irn_n(skipped_
irn, idx_same)) {
return;
}
}
}
for (i = 0; 1U << i <= other; ++i) {
if (other & (1U << i)) {
return;
}
}
}
for (i = 0; 1U << i <= other; ++i) {
if (other & (1U << i)) {
- ir_node *different_from = get_irn_n(
belower_skip_proj(irn)
, i);
+ ir_node *different_from = get_irn_n(
skipped_irn
, i);
gen_assure_different_pattern(irn, different_from, env);
}
}
gen_assure_different_pattern(irn, different_from, env);
}
}
@@
-800,8
+798,6
@@
void assure_constraints(be_irg_t *birg) {
ir_node **nodes;
FIRM_DBG_REGISTER(firm_dbg_module_t *mod, "firm.be.lower.constr");
ir_node **nodes;
FIRM_DBG_REGISTER(firm_dbg_module_t *mod, "firm.be.lower.constr");
- be_assure_dom_front(birg);
-
DEBUG_ONLY(cenv.dbg = mod;)
cenv.birg = birg;
cenv.op_set = new_pset(cmp_op_copy_assoc, 16);
DEBUG_ONLY(cenv.dbg = mod;)
cenv.birg = birg;
cenv.op_set = new_pset(cmp_op_copy_assoc, 16);