Commit 538472cf authored by Adam Szalkowski's avatar Adam Szalkowski
Browse files

another bug fixed

parent c2433fa1
...@@ -790,7 +790,7 @@ can_remat_before(const spill_ilp_t * si, const remat_t * remat, const ir_node * ...@@ -790,7 +790,7 @@ can_remat_before(const spill_ilp_t * si, const remat_t * remat, const ir_node *
if(opt_no_enlarge_liveness) { if(opt_no_enlarge_liveness) {
if(has_reg_class(si, arg) && live) { if(has_reg_class(si, arg) && live) {
res &= pset_find_ptr(live, arg)?1:0; res &= pset_find_ptr((pset*)live, arg)?1:0;
} else { } else {
res &= value_is_defined_before(si, pos, arg); res &= value_is_defined_before(si, pos, arg);
} }
...@@ -2647,6 +2647,7 @@ values_interfere_in_block(const spill_ilp_t * si, const ir_node * bb, const ir_n ...@@ -2647,6 +2647,7 @@ values_interfere_in_block(const spill_ilp_t * si, const ir_node * bb, const ir_n
if(get_nodes_block(user) == bb if(get_nodes_block(user) == bb
&& !is_Phi(user) && !is_Phi(user)
&& b != user && b != user
&& !pset_find_ptr(si->inverse_ops, user)
&& value_dominates(b, user)) && value_dominates(b, user))
return 1; return 1;
} }
...@@ -2670,7 +2671,7 @@ luke_interferencewalker(ir_node * bb, void * data) ...@@ -2670,7 +2671,7 @@ luke_interferencewalker(ir_node * bb, void * data)
/* a is only interesting if it is in my register class and if it is inside a phi class */ /* a is only interesting if it is in my register class and if it is inside a phi class */
if (has_reg_class(si, a) && get_phi_class(a)) { if (has_reg_class(si, a) && get_phi_class(a)) {
if(a_op->is_remat) if(a_op->is_remat || pset_find_ptr(si->inverse_ops, a))
continue; continue;
for(l2=_be_lv_next_irn(si->lv, bb, 0xff, l1+1); l2>=0; l2=_be_lv_next_irn(si->lv, bb, 0xff, l2+1)) { for(l2=_be_lv_next_irn(si->lv, bb, 0xff, l1+1); l2>=0; l2=_be_lv_next_irn(si->lv, bb, 0xff, l2+1)) {
...@@ -2680,7 +2681,7 @@ luke_interferencewalker(ir_node * bb, void * data) ...@@ -2680,7 +2681,7 @@ luke_interferencewalker(ir_node * bb, void * data)
/* a and b are only interesting if they are in the same phi class */ /* a and b are only interesting if they are in the same phi class */
if(has_reg_class(si, b) && get_phi_class(a) == get_phi_class(b)) { if(has_reg_class(si, b) && get_phi_class(a) == get_phi_class(b)) {
if(b_op->is_remat) if(b_op->is_remat || pset_find_ptr(si->inverse_ops, b))
continue; continue;
if(values_interfere_in_block(si, bb, a, b)) { if(values_interfere_in_block(si, bb, a, b)) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment