[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] libjit ChangeLog tools/gen-rules-parser.y
From: |
Aleksey Demakov |
Subject: |
[dotgnu-pnet-commits] libjit ChangeLog tools/gen-rules-parser.y |
Date: |
Mon, 12 Feb 2007 00:18:27 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: libjit
Changes by: Aleksey Demakov <avd> 07/02/12 00:18:27
Modified files:
. : ChangeLog
tools : gen-rules-parser.y
Log message:
change conditions for local and frame patterns to account for the case
when
the use of the value is compiled before its first definition
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.303&r2=1.304
http://cvs.savannah.gnu.org/viewcvs/libjit/tools/gen-rules-parser.y?cvsroot=dotgnu-pnet&r1=1.14&r2=1.15
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.303
retrieving revision 1.304
diff -u -b -r1.303 -r1.304
--- ChangeLog 11 Feb 2007 23:28:44 -0000 1.303
+++ ChangeLog 12 Feb 2007 00:18:27 -0000 1.304
@@ -15,6 +15,14 @@
(clobbers_register, spill_clobbered_register, _jit_regs_gen): fix
a problem that shows up with the new cleanup method.
+ * tools/gen-rules-parser.y (gensel_output_clauses): the conditions
+ for the local and frame patterns are changed. If the value is used
+ before it is defined then both in_frame and in_register flags are
+ clear. This situation is perfectly valid if there is a backward
+ branch form a point after the definition to a point before the use.
+ So if the value is not a constant and it is not in a register assume
+ that it is on the stack even if the in_frame flag is not set.
+
2007-02-10 Klaus Treichel <address@hidden>
* jit/jit-function.c: Use the on-demand compilation driver in
Index: tools/gen-rules-parser.y
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/tools/gen-rules-parser.y,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- tools/gen-rules-parser.y 17 Jan 2007 07:38:47 -0000 1.14
+++ tools/gen-rules-parser.y 12 Feb 2007 00:18:27 -0000 1.15
@@ -1104,8 +1104,9 @@
{
printf(" && ");
}
- printf("insn->%s->in_frame &&
!insn->%s->in_register",
- args[index], args[index]);
+ printf("!insn->%s->is_constant && ",
args[index]);
+ printf("!insn->%s->in_register && ",
args[index]);
+
printf("!insn->%s->has_global_register", args[index]);
seen_option = 1;
++index;
break;
@@ -1115,7 +1116,8 @@
{
printf(" && ");
}
- printf("!insn->%s->is_constant",
args[index]);
+ printf("!insn->%s->is_constant && ",
args[index]);
+
printf("!insn->%s->has_global_register", args[index]);
seen_option = 1;
++index;
break;
@@ -1281,15 +1283,18 @@
case GENSEL_PATT_IMMU8:
case GENSEL_PATT_IMMS16:
case GENSEL_PATT_IMMU16:
+ ++index;
+ break;
+
case GENSEL_PATT_LOCAL:
+ printf("\t\t_jit_gen_fix_value(insn->%s);\n",
args[index]);
++index;
break;
case GENSEL_PATT_FRAME:
printf("\t\t_jit_regs_force_out(gen, insn->%s,
%d);\n",
args[index], (free_dest && index == 0));
- printf("\t\t_jit_gen_fix_value(insn->%s);\n",
- args[index]);
+ printf("\t\t_jit_gen_fix_value(insn->%s);\n",
args[index]);
++index;
break;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] libjit ChangeLog tools/gen-rules-parser.y,
Aleksey Demakov <=