Make sure the subVI is not broken after changing to subroutine, for example if it itself calls a non-subroutine VI.
How are you calling the subVI? If you call it indirectly (e.g. by using "call reference node" or "invoke node"), you might not notice if it is broken unless you wire the error output.
(Of course if the broken VI is placed on the main diagram directly, the main VI would also be broken.)