https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90920
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- I did experiment with putting the range checks in *both* places, the std::rotate function and the std::__rotate helpers it calls. But there's still no guarantee you won't get a "bad" combination of definitions from objects built with e.g. 9.1 and 8.3 If we change the mangled names to make the "new" functions different that doesn't help, because the "old" functions will still be present in already-built objects. Basically nothing we can do will fix the code in already compiled objects. The only guaranteed way to avoid the problem is to recompile anything built with 9.1, and if you have to do that anyway, then the fix I put on trunk works fine. So I think I'll just backport the same fix, and 9.1 will be a blip.