https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111118
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|patch | --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- _5 = MEM[(const struct vector *)this_2(D)].D.36316._M_impl.D.35789._M_start.D.21297._M_p; _6 = MEM[(const struct _Bvector_impl *)this_2(D)].D.35789._M_end_of_storage; _7 = _6 - _5; _8 = _7 * 8; _9 = (long unsigned int) _8; if (_9 <= 63) goto <bb 3>; [33.00%] else goto <bb 21>; [67.00%] <bb 3> [local count: 354334800]: _42 = operator new (8); SR.127_14 = MEM <_Bit_type * const> [(struct vector *)this_2(D) + 16B]; SR.128_15 = MEM <const unsigned int> [(struct vector *)this_2(D) + 24B]; _16 = MEM[(struct vector *)this_2(D)].D.36316._M_impl.D.35789._M_start.D.21297._M_p; _51 = SR.127_14 - _16; _148 = (long unsigned int) _51; if (_51 > 8) There is a missing optimization here.