On Jan 1, 2007, at 21:14, Ian Lance Taylor wrote:
[...] extern void bar (void); void foo (int m) { int i; for (i = 1; i < m; ++i) { if (i > 0) bar (); } }Here the limit for i without -fwrapv becomes (1, INF]. This enables VRP to eliminate the test "i > 0". With -fwrapv, this test of course can not be eliminated. VRP is the only optimization pass which is able to eliminate that test.
We should be able to optimize this even for -fwrapv. For i = 0, the loop will not execute at all, for other i, execution will stop when i == m, after m - 1 executions of the loop body. The condition i > 0 will never be true, regardless of -fwrapv as there won't be overflow. -Grt
