[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] libjit ChangeLog jit/jit-reg-alloc.c
From: |
Aleksey Demakov |
Subject: |
[dotgnu-pnet-commits] libjit ChangeLog jit/jit-reg-alloc.c |
Date: |
Sun, 06 Jul 2008 09:07:18 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: libjit
Changes by: Aleksey Demakov <avd> 08/07/06 09:07:18
Modified files:
. : ChangeLog
jit : jit-reg-alloc.c
Log message:
fix problem with global registers and commutative ops
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.382&r2=1.383
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-reg-alloc.c?cvsroot=dotgnu-pnet&r1=1.58&r2=1.59
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.382
retrieving revision 1.383
diff -u -b -r1.382 -r1.383
--- ChangeLog 29 May 2008 21:03:30 -0000 1.382
+++ ChangeLog 6 Jul 2008 09:07:18 -0000 1.383
@@ -1,3 +1,11 @@
+2008-07-06 Juan Jesus Garcia de Soria <address@hidden>
+
+ * jit/jit-reg-alloc.c (choose_input_order): take into account global
+ registers to see if it is suitable to exchange input values. This
+ fixes a problem that took place when a commutative op is applied to
+ a value that resides in a global register and is both the dest and
+ the second source value of the op.
+
2008-05-30 Aleksey Demakov <address@hidden>
* include/jit/jit-common.h: remove unused jit_function_compiled_t
Index: jit/jit-reg-alloc.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-reg-alloc.c,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -b -r1.58 -r1.59
--- jit/jit-reg-alloc.c 8 May 2008 06:39:51 -0000 1.58
+++ jit/jit-reg-alloc.c 6 Jul 2008 09:07:18 -0000 1.59
@@ -1219,6 +1219,8 @@
{
if(regs->commutative)
{
+ /* This depends on
choose_input_order()
+ doing its job on the next
step. */
use_cost = 0;
}
else
@@ -1273,11 +1275,15 @@
{
if(regs->commutative)
{
+ /* This depends on choose_input_order()
+ doing its job on the next step. */
use_cost = 0;
}
#ifdef JIT_REG_STACK
else if(regs->reversible && regs->no_pop)
{
+ /* This depends on choose_input_order()
+ doing its job on the next step. */
use_cost = 0;
}
#endif
@@ -1336,10 +1342,14 @@
static void
choose_input_order(jit_gencode_t gen, _jit_regs_t *regs)
{
- if(regs->descs[2].value
- && regs->descs[2].value->in_register
- && regs->descs[2].value->reg == regs->descs[0].reg
- && regs->descs[2].value != regs->descs[1].value)
+ jit_value_t value;
+
+ value = regs->descs[2].value;
+ if(value && value != regs->descs[1].value
+ && ((value->in_register
+ && value->reg == regs->descs[0].reg)
+ || (value->in_global_register
+ && value->global_reg == regs->descs[0].reg)))
{
#ifdef JIT_REG_STACK
if(regs->reversible && regs->no_pop)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] libjit ChangeLog jit/jit-reg-alloc.c,
Aleksey Demakov <=