Modern compilers are smarter than the old ones. Most of them when they see and infinite loop, will not compile anything in the function that follows that loop.

Also, if a return is placed in the middle of the function, th rest of the function may be dropped. You can check this in the debugger by placing a breakpoint beyond the return. You will neverbe able to get t the breakpoint because there is no code in the executable.