https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86680
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |8.0 --- Comment #12 from Andrew Pinski <pinskia at gcc dot gnu.org> --- These days we get: _1 = (unsigned long) &__bss_end1; _7 = _1 + 18446744073709551615; _6 = (unsigned long) &__bss_start1; _11 = _7 - _6; _12 = _11 >> 3; _13 = _12 + 1; _14 = _13 * 8; __builtin_memset (&__bss_start1, 0, _14); [tail call] Or ((((end - 1) - start) >> 3) + 1) * 8 In theory (I think) we could do: (end - start + 7) & -8