When you begin implementing -tailcallopt, this gets somewhat hairy. Refactor the call lowering code so that the tail call lowering stuff gets its own function.
There's still some refactoring that can be done here, but I'd rather do that after getting -tailcallopt + musttail working.