Mercurial > hg > index.cgi
diff lwasm/pass5.c @ 142:697bc543368c
Implement distinction between . and * for OS9 modules
author | lost@l-w.ca |
---|---|
date | Fri, 19 Aug 2011 23:55:40 -0600 |
parents | 7317fbe024af |
children | 8764142b3192 |
line wrap: on
line diff
--- a/lwasm/pass5.c Fri Aug 19 20:36:43 2011 -0600 +++ b/lwasm/pass5.c Fri Aug 19 23:55:40 2011 -0600 @@ -77,6 +77,9 @@ lwasm_reduce_expr(as, cl -> addr); if (!exprok(as, cl -> addr)) cnt++; + lwasm_reduce_expr(as, cl -> daddr); + if (!exprok(as, cl -> daddr)) + cnt++; } sl = as -> line_head; @@ -85,7 +88,7 @@ ocnt = cnt; // find an unresolved address - for ( ; sl && exprok(as, sl -> addr); sl = sl -> next) + for ( ; sl && exprok(as, sl -> addr) && exprok(as, sl -> daddr); sl = sl -> next) /* do nothing */ ; // simplify address @@ -96,7 +99,13 @@ if (exprok(as, cl -> addr)) { - if (0 == --cnt); + if (0 == --cnt) + return; + } + lwasm_reduce_expr(as, sl -> daddr); + if (exprok(as, cl -> addr)) + { + if (0 == --cnt) return; } } @@ -114,6 +123,10 @@ { lwasm_register_error(as, cl, "Cannot resolve line address"); } + if (!exprok(as, cl -> daddr)) + { + lwasm_register_error(as, cl, "Cannot resolve line data address"); + } } } }