http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55011
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> 2012-10-22 10:03:56 UTC --- We are iterating between Visiting PHI node: s_56 = PHI <_53(3), _12(12)> Argument #0 (3 -> 4 executable) _53 Value: [63740, +INF] EQUIVALENCES: { _19 } (1 elements) Argument #1 (12 -> 4 executable) _12 Value: UNDEFINED Meeting [63740, +INF] EQUIVALENCES: { _19 } (1 elements) and UNDEFINED to [63740, +INF] EQUIVALENCES: { } (0 elements) Found new range for s_56: [63740, +INF] Simulating statement (from ssa_edges): s_56 = PHI <_53(3), _12(12)> Visiting PHI node: s_56 = PHI <_53(3), _12(12)> Argument #0 (3 -> 4 executable) _53 Value: UNDEFINED Argument #1 (12 -> 4 executable) _12 Value: UNDEFINED Meeting UNDEFINED and UNDEFINED to UNDEFINED Found new range for s_56: UNDEFINED Simulating statement (from ssa_edges): s_56 = PHI <_53(3), _12(12)> Visiting PHI node: s_56 = PHI <_53(3), _12(12)> Argument #0 (3 -> 4 executable) _53 Value: [63740, +INF] EQUIVALENCES: { _19 } (1 elements) Argument #1 (12 -> 4 executable) _12 Value: UNDEFINED Meeting [63740, +INF] EQUIVALENCES: { _19 } (1 elements) and UNDEFINED to [63740, +INF] EQUIVALENCES: { } (0 elements) Found new range for s_56: [63740, +INF] which means _53 has bogus transitions: Visiting statement: _53 = ASSERT_EXPR <_19, _19 > 63739>; Intersecting [63740, +INF] EQUIVALENCES: { _19 } (1 elements) and [0, +INF] to [63740, +INF] EQUIVALENCES: { _19 } (1 elements) Found new range for _53: [63740, +INF] Visiting statement: _53 = ASSERT_EXPR <_19, _19 > 63739>; Intersecting [63740, +INF] EQUIVALENCES: { _19 } (1 elements) and [15935, 32767] to UNDEFINED Found new range for _53: UNDEFINED I have a patch.