# HG changeset patch # User William Astle # Date 1331948652 21600 # Node ID 348e2816ce327d7ed78e0249faff2d875164af67 # Parent 3132b1742eca8debb76774424f4713bdf19342b4 Short ciruit some recursion in expression library diff -r 3132b1742eca -r 348e2816ce32 lwasm/lwasm.c --- a/lwasm/lwasm.c Fri Mar 16 17:29:53 2012 -0600 +++ b/lwasm/lwasm.c Fri Mar 16 19:44:12 2012 -0600 @@ -649,8 +649,7 @@ int lwasm_reduce_expr(asmstate_t *as, lw_expr_t expr) { - if (expr) - lw_expr_simplify(expr, as); + lw_expr_simplify(expr, as); return 0; } diff -r 3132b1742eca -r 348e2816ce32 lwasm/pass4.c --- a/lwasm/pass4.c Fri Mar 16 17:29:53 2012 -0600 +++ b/lwasm/pass4.c Fri Mar 16 19:44:12 2012 -0600 @@ -51,6 +51,8 @@ sl = as -> line_head; while (cnt > 0) { + debug_message(as, 60, "%d unresolved instructions", cnt); + // find an unresolved instruction for ( ; sl && sl -> len != -1; sl = sl -> next) { diff -r 3132b1742eca -r 348e2816ce32 lwlib/lw_expr.c --- a/lwlib/lw_expr.c Fri Mar 16 17:29:53 2012 -0600 +++ b/lwlib/lw_expr.c Fri Mar 16 19:44:12 2012 -0600 @@ -676,7 +676,8 @@ // simplify operands for (o = E -> operands; o; o = o -> next) - lw_expr_simplify_l(o -> p, priv); + if (o -> p -> type != lw_expr_type_int) + lw_expr_simplify_l(o -> p, priv); for (o = E -> operands; o; o = o -> next) { @@ -1070,6 +1071,8 @@ void lw_expr_simplify(lw_expr_t E, void *priv) { + if (E -> type == lw_expr_type_int) + return; lw_expr_simplify_l(E, priv); }