|
I would do what the standard tells me to do, which is to ignore the undefined behavior if I don't detect it. On most platforms, that would probably result in the return value of 3 (it would still be in AX, EAX, r0, x0, o0/i0, whatever, when execution hits the ret instruction or whatever that ISA/ABI uses to mark the end of the function). But it would be undefined. But that's fine. [EDIT: I misremembered the x86 calling convention, so my references to AX and EAX are wrong above. Mea culpa.] What isn't fine is ignoring the end of the function, not emitting a ret instruction, and letting execution fall through to the next label/function, which is what I suspect GCC does. |