There are 2 such base cases: indirect calls and calls to functions external to the module; and then any musttail calls to live functions (because of the first 2 reasons or otherwise).
The IR validator reports, in these cases, that it "cannot guarantee tail call due to mismatched parameter counts".
The fix is two-fold: first, we mark as "live" (i.e. non-DAE-able) functions that make an indirect musttail call. Then, we propagate live-ness to musttail callers of live functions.
Declared functions are already marked "live".
Is isDeclaration() the right criterion here? Shouldn't we be checking for hasLocalLinkage()?