This makes "conditional rules" easier to implement and clearer to the
reader.

Signed-off-by: Arthur Huillet <arthur.huil...@free.fr>
---
 arch/x86/insn-selector_32.brg |    2 ++
 arch/x86/insn-selector_64.brg |    1 +
 monoburg/monoburg.c           |    2 +-
 3 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/arch/x86/insn-selector_32.brg b/arch/x86/insn-selector_32.brg
index edbdeac..027976c 100644
--- a/arch/x86/insn-selector_32.brg
+++ b/arch/x86/insn-selector_32.brg
@@ -44,6 +44,8 @@
 #define MONOBURG_LOG 1
 #define HAVE_ARRAY_ELEM_INIT 1
 
+#define MB_DISCARD_RULE 65535
+
 static void select_insn(struct basic_block *bb, struct tree_node *tree,
                        struct insn *instruction);
 static void select_exception_test(struct basic_block *bb,
diff --git a/arch/x86/insn-selector_64.brg b/arch/x86/insn-selector_64.brg
index cc35f6f..28abf90 100644
--- a/arch/x86/insn-selector_64.brg
+++ b/arch/x86/insn-selector_64.brg
@@ -55,6 +55,7 @@
 #define MONOBURG_LOG 1
 #define HAVE_ARRAY_ELEM_INIT 1
 
+#define MB_DISCARD_RULE 65535
 %%
 
 %termprefix EXPR_ OP_ STMT_
diff --git a/monoburg/monoburg.c b/monoburg/monoburg.c
index 94b0f9d..c1234f4 100644
--- a/monoburg/monoburg.c
+++ b/monoburg/monoburg.c
@@ -450,7 +450,7 @@ emit_cond_assign (Rule *rule, char *cost, char *fill)
                rc = g_strdup ("c");
 
 
-       output ("%sif (%s < p->cost[MB_NTERM_%s]) {\n", fill, rc, 
rule->lhs->name);
+       output ("%sif (%s < p->cost[MB_NTERM_%s] && %s != MB_DISCARD_RULE) 
{\n", fill, rc, rule->lhs->name, rc);
 
        output ("%s\tp->cost[MB_NTERM_%s] = %s;\n", fill, rule->lhs->name, rc);
 
-- 
1.6.3.3



------------------------------------------------------------------------------
_______________________________________________
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel

Reply via email to