http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59014
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- I'd say this is .vrp1. In .mergephi2, we have <bb 4>: a.1_11 = a.1_5; d = a.1_11; return 0; but in .vrp1: <bb 4>: a.1_13 = 0; a.1_11 = 0; d = 0; return 0; And yeah, the bug goes away with -fno-tree-vrp.