dotgnu-pnet-commits
[Top][All Lists]
Advanced

[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;
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]