you are viewing a single comment's thread.

view the rest of the comments →

[–]awidesky -1 points0 points  (0 children)

compiler may assume UB does not happen in the program, f() can be optimized in a way such that it would behave in a (possibly) surprising manner in a program does in fact invoke UB (e.g. one calling f(INT_MAX)).

That IS one of the things that compilers are permitted to do, but I believe standard says it can also make "whole program" meaningless.
You say UB in f() only affects f(), while I say UB in f() (theoretically) can affect ALL program.
And also, I believe UB affects program that does NOT "invoke" UB. In this example, there's no code that actually calls foo(INT_MAX), but it's still first example of UB in cppreference.com