https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105424
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed|2022-04-28 00:00:00 |2025-04-02 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 --- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- The code has: const value_type *const beg_raw = boost::movelib::iterator_to_raw_pointer(f); const value_type *const end_raw = boost::movelib::iterator_to_raw_pointer(l); if(__builtin_expect(beg_raw != end_raw && dest_raw && beg_raw, 1)){ const std::size_t n = std::size_t(end_raw - beg_raw) ; std::memmove(dest_raw, beg_raw, sizeof(value_type)*n); r += static_cast<r_difference_type>(n); } I tried adding: if (end_raw < beg_raw) __builtin_unreachable(); But it didn't make any difference.