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