http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56384
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> 2013-02-19 10:09:13 UTC --- Ok, so the issue here is that we value-number unsigned char b_20 = PHI <b_15(3), b_15(10), 1(7), 5(9)> int a.4_25 = PHI <a.4_16(3), a.4_16(10), 1(7), 5(9)> the same as value-numbers from BB 3 and BB 10 are still VN_TOP, so static int vn_phi_eq (const void *p1, const void *p2) { ... /* If the PHI nodes do not have compatible types they are not the same. */ if (!types_compatible_p (TREE_TYPE (vp1->phiargs[0]), TREE_TYPE (vp2->phiargs[0]))) return false; compares "garbage". I have a patch.