where if ref $cv->START eq 'B::NULL' in my, admittedly limited testing, is true only and only if a sub was only predeclared. It even filters out subs with no statements like sub x{}, exactly as I desire, unlike the former solution. My only gripe with this are possible differences across different Perl versions, but I couldn't find such info yet; I'm sticking to my current version anyway for the most part.

I've found it by a blind guess, I got pointed in the right direction by a book named "Perl Hacks: Tips & Tools for Programming, Debugging, and Surviving" by Chromatic, Damian Conway and Curtis Poe (link). It described how to find the largest subroutine in a module. So I hoped to rewrite the code to just get the size of a given subroutine, but the code was too heavy to be used in the project, including another CPAN module dependency. So I looked for another option, fiddled with CPAN B::TerseSize modules, until I found out they pretty much all use B in one way or another to do their thing. But looking at the documentation of the B module was a chore. Long story short, I just guessed START is the thing I'm looking for in the end, after furious printing of return values of various CV methods.

Email codedump link for Distinguishing empty subroutines from subroutines with at least some minimal code