Since
605bfb3, block_drop_unreferenced actually reverses the order of
instructions in the block it's run against. This bug was hidden by the
fact that normally it's run *twice* against the main program, flipping
it back, and that order of function definitionss doesn't really matter
after symbol resolution.
if (curr->bound_by == curr && !curr->referenced) {
inst_free(curr);
} else {
- refd = BLOCK(inst_block(curr), refd);
+ refd = BLOCK(refd, inst_block(curr));
}
}
return refd;