A lot of undefined behaviour cannot be identified at compile time. For example, adding two signed integers is undefined if it overflows, but perfectly well defined if it does not.<p>A safe compiler will have to add checks to guard against undefined behaviour happening at runtime.