https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105338
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|needs-bisection | CC| |jakub at gcc dot gnu.org --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Started with r12-7687-g3a7ba8fd0cda387809e4902328af2473662b6a4a All the *.optimized dump differences with that change look like: @@ -8,14 +8,14 @@ int f (int i) <bb 2> [local count: 1073741824]: if (i_2(D) != 0) - goto <bb 4>; [35.00%] + goto <bb 3>; [35.00%] else - goto <bb 3>; [65.00%] + goto <bb 4>; [65.00%] - <bb 3> [local count: 697932184]: + <bb 3> [local count: 375809640]: <bb 4> [local count: 1073741824]: - # iftmp.0_1 = PHI <5(2), i_2(D)(3)> + # iftmp.0_1 = PHI <5(3), i_2(D)(2)> return iftmp.0_1; } i.e. swapping whether true or false edge goes through the empty bb. Wonder why we emit different code based on that...