This is undefined behavior. If CorP != CALL, then it's the same thing as saying staticint x = x;. It will compile and run but you don't know what it will do. What should the compiler do in this case? Leave x undefined maybe, but you can't guarantee that. Your second case does not exhibit any undefined behavior, hence it works as you expect.
All others conjectures were unsubstantiated as all the variables are *ALWAYS* known.
In the case when CorP != CALL in the first call to the function, then it is undefined behaviour. errx itself is not known until it is initialized. Trying to initialize it to itself doesn't make sense.
@paolopiace I believe you meant to say this at one point: "Thanks for trying to help. I really appreciate it."