Call shouldOutlineFromFunctionByDefault, isFunctionSafeToOutlineFrom, getOutliningType, and getMachineOutlinerMBBFlags using the correct TargetInstrInfo. And don't create a MachineFunction for a function declaration.
The call to getOutliningCandidateInfo is still a little weird, but at least the weirdness is explicitly called out.
I think this sounds reasonable. TII seems like the wrong place for a lot of the outliner hooks at this point, since a good portion of them don't really have much to do with instructions anymore.