[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] libjit ./ChangeLog tools/gen-sel-parser.y jit/j...
From: |
Aleksey Demakov |
Subject: |
[dotgnu-pnet-commits] libjit ./ChangeLog tools/gen-sel-parser.y jit/j... |
Date: |
Fri, 13 Jan 2006 20:26:19 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: libjit
Branch:
Changes by: Aleksey Demakov <address@hidden> 06/01/13 20:26:19
Modified files:
. : ChangeLog
tools : gen-sel-parser.y
jit : jit-reg-alloc.c jit-rules-x86.sel
Log message:
fix register allocation for long values
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/libjit/ChangeLog.diff?tr1=1.193&tr2=1.194&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/libjit/tools/gen-sel-parser.y.diff?tr1=1.14&tr2=1.15&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/libjit/jit/jit-reg-alloc.c.diff?tr1=1.19&tr2=1.20&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/libjit/jit/jit-rules-x86.sel.diff?tr1=1.38&tr2=1.39&r1=text&r2=text
Patches:
Index: libjit/ChangeLog
diff -u libjit/ChangeLog:1.193 libjit/ChangeLog:1.194
--- libjit/ChangeLog:1.193 Fri Jan 13 15:39:26 2006
+++ libjit/ChangeLog Fri Jan 13 20:26:19 2006
@@ -1,3 +1,12 @@
+2006-01-14 Aleksey Demakov <address@hidden>
+
+ * tools/gen-sel-parser.y: spilling a register which is the first
+ part of a register pair spill the other part too.
+
+ * jit/jit-reg-alloc.c (free_register_for_value):
+ * jit/jit-rules-x86.sel: if a register is the second part of a
+ register pair do not consider it free.
+
2006-01-13 Aleksey Demakov <address@hidden>
* jit/jit-insn.c: fix all descriptors of intrinsic functions that
Index: libjit/jit/jit-reg-alloc.c
diff -u libjit/jit/jit-reg-alloc.c:1.19 libjit/jit/jit-reg-alloc.c:1.20
--- libjit/jit/jit-reg-alloc.c:1.19 Thu Jun 24 04:11:46 2004
+++ libjit/jit/jit-reg-alloc.c Fri Jan 13 20:26:19 2006
@@ -994,7 +994,8 @@
else if(!need_pair)
{
if(gen->contents[reg].num_values == 0 &&
- !(gen->contents[reg].used_for_temp))
+ !(gen->contents[reg].used_for_temp) &&
+ !(gen->contents[reg].is_long_end))
{
return reg;
}
Index: libjit/jit/jit-rules-x86.sel
diff -u libjit/jit/jit-rules-x86.sel:1.38 libjit/jit/jit-rules-x86.sel:1.39
--- libjit/jit/jit-rules-x86.sel:1.38 Tue Jan 10 21:24:43 2006
+++ libjit/jit/jit-rules-x86.sel Fri Jan 13 20:26:19 2006
@@ -3055,7 +3055,8 @@
if(regi != reg && regi != reg2)
{
if(gen->contents[regi].num_values == 0
&&
- gen->contents[regi].used_for_temp ==
0)
+ !gen->contents[regi].used_for_temp &&
+ !gen->contents[reg].is_long_end)
{
reg3 = regi;
break;
@@ -3067,7 +3068,8 @@
}
}
if(gen->contents[reg3].num_values > 0 ||
- gen->contents[reg3].used_for_temp)
+ gen->contents[regi].used_for_temp ||
+ gen->contents[reg].is_long_end)
{
save_reg3 = 1;
}
@@ -3226,7 +3228,8 @@
if(regi != reg && regi != reg2)
{
if(gen->contents[regi].num_values == 0 &&
-
gen->contents[regi].used_for_temp == 0)
+
!gen->contents[regi].used_for_temp &&
+
!gen->contents[reg].is_long_end)
{
reg3 = regi;
break;
@@ -3238,7 +3241,8 @@
}
}
if(gen->contents[reg3].num_values > 0 ||
- gen->contents[reg3].used_for_temp)
+ gen->contents[regi].used_for_temp ||
+ gen->contents[reg].is_long_end)
{
save_reg3 = 1;
}
Index: libjit/tools/gen-sel-parser.y
diff -u libjit/tools/gen-sel-parser.y:1.14 libjit/tools/gen-sel-parser.y:1.15
--- libjit/tools/gen-sel-parser.y:1.14 Wed Jun 16 09:02:08 2004
+++ libjit/tools/gen-sel-parser.y Fri Jan 13 20:26:19 2006
@@ -808,7 +808,16 @@
printf("\t}\n");
printf("\telse\n");
printf("\t{\n");
- printf("\t\t_jit_gen_spill_reg(gen,
reg, -1, insn->dest);\n");
+ printf("\t\tint other_reg;\n");
+
printf("\t\tif(gen->contents[reg].is_long_start)\n");
+ printf("\t\t{\n");
+ printf("\t\t\tother_reg =
_jit_reg_info[reg].other_reg;\n");
+ printf("\t\t}\n");
+ printf("\t\telse\n");
+ printf("\t\t{\n");
+ printf("\t\t\tother_reg = -1;\n");
+ printf("\t\t}\n");
+ printf("\t\t_jit_gen_spill_reg(gen,
reg, other_reg, insn->dest);\n");
printf("\t\tif(insn->dest->has_global_register)\n");
printf("\t\t\tinsn->dest->in_global_register = 1;\n");
printf("\t\telse\n");
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] libjit ./ChangeLog tools/gen-sel-parser.y jit/j...,
Aleksey Demakov <=