CVSROOT: /sources/dotgnu-pnet
Module name: libjit
Branch:
Changes by: Aleksey Demakov <[EMAIL PROTECTED]> 06/05/24 18:56:32
Modified files:
. : ChangeLog
jit : jit-reg-alloc.c
Log message:
fix spill cost calculation problem
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/libjit/ChangeLog.diff?tr1=1.229&tr2=1.230&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/libjit/jit/jit-reg-alloc.c.diff?tr1=1.29&tr2=1.30&r1=text&r2=text
Patches:
Index: libjit/ChangeLog
diff -u libjit/ChangeLog:1.229 libjit/ChangeLog:1.230
--- libjit/ChangeLog:1.229 Sun May 21 13:17:19 2006
+++ libjit/ChangeLog Wed May 24 18:56:32 2006
@@ -1,3 +1,10 @@
+2006-05-25 Aleksey Demakov <[EMAIL PROTECTED]>
+
+ * jit/jit-reg-alloc.c (use_cheapest_register): fix cost calculation
+ that sometimes caused overlooking free registers. This was a serious
+ problem as there are some 'spill_before' rules that assume that the
+ allocator will always choose EAX as the first free register.
+
2006-05-21 Aleksey Demakov <[EMAIL PROTECTED]>
* jit/jit-reg-alloc.h: add _JIT_REGS_FREE_DEST flag to be used in
Index: libjit/jit/jit-reg-alloc.c
diff -u libjit/jit/jit-reg-alloc.c:1.29 libjit/jit/jit-reg-alloc.c:1.30
--- libjit/jit/jit-reg-alloc.c:1.29 Sat May 20 10:43:17 2006
+++ libjit/jit/jit-reg-alloc.c Wed May 24 18:56:32 2006
@@ -2504,7 +2504,7 @@
}
else
{
- cost = 10 + compute_spill_cost(gen, regs, reg,
other_reg);
+ cost = compute_spill_cost(gen, regs, reg, other_reg);
}
if(cost < suitable_cost
@@ -3562,6 +3562,7 @@
regs->on_stack = (flags & _JIT_REGS_STACK) != 0;
regs->x87_arith = (flags & _JIT_REGS_X87_ARITH) != 0;
regs->reversible = (flags & _JIT_REGS_REVERSIBLE) != 0;
+ regs->free_dest = (flags & _JIT_REGS_FREE_DEST) != 0;
regs->no_pop = 0;
regs->reverse_dest = 0;
_______________________________________________
dotgnu-pnet-commits mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/dotgnu-pnet-commits