Paul Eggert <[EMAIL PROTECTED]> writes: > Robert Dewar <[EMAIL PROTECTED]> writes: > > > We have not seen ONE imaginary example, let > > alone a real example, where the optimziation of loop invariants > > (by far the most important optimization in the class we are > > discussing) would break existing code. > > But didn't this thread get started by a real program that was broken > by an optimization of loop invariants? Certainly I got a real bug > report of a real problem, which you can see here: > > http://lists.gnu.org/archive/html/bug-gnulib/2006-12/msg00084.html > > Here is a bit more discussion: > > http://gcc.gnu.org/ml/gcc/2006-12/msg00607.html > > If this doesn't count as "optimization of loop invariants" > then what would count?
No. As I already explained in some detail, that was an example of a VRP (Value Range Propagation) optimization. VRP is not a loop based optimization. This is not an example of the kinds of loop optimizations gcc makes by assuming that signed overflow is undefined. The loop optimizer is not going to turn an apparently bounded loop into an infinite loop by relying on signed overflow, because that is a pointless optimization. For example, when not using -fwrapv, the loop optimizer can assume that this loop (on signed i): for (i = 0; i <= n; i++) will execute the same number of times as this loop: for (i = 0; i < n + 1; i++) and in particular that both loops will terminate. With -fwrapv the first loop will not terminate if n == INT_MAX. Ian