https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110502
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I am trying to understand something here: ``` <bb 5> [local count: 8687547538]: _11 = j_lsm.17_4 + 1; _12 = s_lsm.19_35 > 2; _13 = s_lsm.19_35 == 0; _22 = _12 | _13; _30 = (int) _22; _15 = _30 * -3; _3 = _15 + s_lsm.19_35; b.8_16 = (unsigned char) s_lsm.19_35; _17 = b.8_16 + 5; _18 = (char) _17; _19 = (int) _18; <bb 6> [local count: 9761289362]: # g_lsm_flag.16_9 = PHI <0(3), 1(5)> # j_lsm.17_4 = PHI <j_lsm.17_39(3), _11(5)> # f_lsm.18_6 = PHI <_40(D)(3), _3(5)> # s_lsm.19_35 = PHI <-190201409(3), _19(5)> if (s_lsm.19_35 <= 4) goto <bb 5>; [89.00%] else goto <bb 7>; [11.00%] ``` Seems like we should have done a copy header here. But we don't have a ch for -Os in this case.