Mercurial > hg > index.cgi
diff lwasm/pass1.c @ 336:30b2bad9b5eb
Factor some code for simplifying lines so it can be reused
author | William Astle <lost@l-w.ca> |
---|---|
date | Thu, 31 Jul 2014 17:20:11 -0600 |
parents | 507f442dc71e |
children | 98f3e016cfd8 |
line wrap: on
line diff
--- a/lwasm/pass1.c Fri May 02 21:30:25 2014 -0600 +++ b/lwasm/pass1.c Thu Jul 31 17:20:11 2014 -0600 @@ -338,8 +338,6 @@ if (as -> instruct == 0 || instab[opnum].flags & lwasm_insn_struct) { - struct line_expr_s *le; - cl -> len = -1; // call parse function debug_message(as, 100, "len = %d, dlen = %d", cl -> len, cl -> dlen); @@ -359,28 +357,7 @@ } /* do a reduction on the line expressions to avoid carrying excessive expression baggage if not needed */ - as -> cl = cl; - - // simplify address - lwasm_reduce_expr(as, cl -> addr); - - // simplify each expression - for (le = cl -> exprs; le; le = le -> next) - lwasm_reduce_expr(as, le -> expr); - - /* try resolving the instruction as well */ - if (cl -> insn >= 0 && instab[cl -> insn].resolve) - { - (instab[cl -> insn].resolve)(as, cl, 0); - if ((cl -> inmod == 0) && cl -> len >= 0 && cl -> dlen >= 0) - { - if (cl -> len == 0) - cl -> len = cl -> dlen; - else - cl -> dlen = cl -> len; - } - } - + lwasm_reduce_line_exprs(cl); } else if (as -> instruct == 1) {