I agree with you in sofar that both MvC -commit and helper - and me - author - (and some helpful others on the mailing list) would expect the code to use shortcut boolean evalutation if c is a constant value that does not need further evaluation if a resolves to c, assuming {$B+} state.
This seems currently not the case. OTOH the fact that c can be evaluated if it is not a constant makes the generic function still very valuable. Then again, b needs to be compiled anyway, since the function may rely also on runtime.
A small test in C shows that that behavior is the same. If c is a conditional expression the code is not optimized.
I did not test it otherwise, nor used compiler and/or linker optimizations, though.