A program with corrupted state can essentially do anything. Yes it's still a question of run-time checks the runtime has to protect against it. But the compiler is probably deriving a lot of assumptions from the assumption that there wasn't overflow.
“Undefined behavior” is a term of art in programming languages that means something more specific than “the program may do something odd.”
The compiler is not allowed to derive any assumptions from it. It only could if it were UB.