comparison lwasm/main.c @ 385:cf8c92d70eb1

Various bugfixes
author lost@starbug
date Sun, 16 May 2010 11:50:00 -0600
parents 38b50ce6967a
children a741d2e4869f
comparison
equal deleted inserted replaced
384:38b50ce6967a 385:cf8c92d70eb1
182 182
183 struct passlist_s 183 struct passlist_s
184 { 184 {
185 char *passname; 185 char *passname;
186 void (*fn)(asmstate_t *as); 186 void (*fn)(asmstate_t *as);
187 int fordep;
187 } passlist[] = { 188 } passlist[] = {
188 { "parse", do_pass1 }, 189 { "parse", do_pass1, 1 },
189 { "symcheck", do_pass2 }, 190 { "symcheck", do_pass2 },
190 { "resolve1", do_pass3 }, 191 { "resolve1", do_pass3 },
191 { "resolve2", do_pass4 }, 192 { "resolve2", do_pass4 },
192 { "addressresolve", do_pass5 }, 193 { "addressresolve", do_pass5 },
193 { "finalize", do_pass6 }, 194 { "finalize", do_pass6 },
223 224
224 input_init(&asmstate); 225 input_init(&asmstate);
225 226
226 for (passnum = 0; passlist[passnum].fn; passnum++) 227 for (passnum = 0; passlist[passnum].fn; passnum++)
227 { 228 {
229 if ((asmstate.flags & FLAG_DEPEND) && passlist[passnum].fordep == 0)
230 continue;
228 debug_message(&asmstate, 50, "Doing pass %d (%s)\n", passnum, passlist[passnum].passname); 231 debug_message(&asmstate, 50, "Doing pass %d (%s)\n", passnum, passlist[passnum].passname);
229 (passlist[passnum].fn)(&asmstate); 232 (passlist[passnum].fn)(&asmstate);
230 debug_message(&asmstate, 50, "After pass %d (%s)\n", passnum, passlist[passnum].passname); 233 debug_message(&asmstate, 50, "After pass %d (%s)\n", passnum, passlist[passnum].passname);
231 dump_state(&asmstate); 234 dump_state(&asmstate);
232 235