https://gcc.gnu.org/bugzilla/show_bug.cgi?id=33315
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenth at gcc dot gnu.org Component|middle-end |tree-optimization Summary|If condition not getting |stores not commoned by |eliminated |sinking --- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- comment#4 is long fixed (in DOM). In the original testcase the redundant conditons are eliminated but we retain test () { int i; <bb 2>: i_8 = num; if (i_8 == 1) goto <bb 3>; else goto <bb 6>; <bb 3>: MEM[(int *)&a] = 0; MEM[(int *)&a + 4B] = 0; goto <bb 5>; <bb 4>: MEM[(int *)&a + 4B] = 0; <bb 5>: MEM[(int *)&a + 8B] = 0; return; <bb 6>: MEM[(int *)&a] = 0; if (i_8 == 2) goto <bb 4>; else goto <bb 7>; <bb 7>: MEM[(int *)&a + 4B] = 0; goto <bb 5>; because nothing sinks the common stores and tail-merging does only obfuscate the CFG. So this didn't really have sth to do with PR23286. But the complaint that the if condition is not eliminated is no longer true. transmogrifying bug.