https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108674
--- Comment #9 from Roman Lebedev <lebedev.ri at gmail dot com> --- (In reply to Jonathan Wakely from comment #7) > (In reply to Roman Lebedev from comment #0) > > I believe in the version 12, a new instance of such intentional wraparound > > was introduced into libstdc++: https://godbolt.org/z/rq153fxKW > > No, that code is from 2014-12-19. I agree that the _S_compare is rather old. What i'm saying is that i have never seen this issue before v12, so std::map implementation must have been refactored to use the function in question, and that "introduced" the issue. > > I understand that there is no UB there. > > I understand that you are doing this intentionally. > > The problem is that it is happening in a header, > > so it's effectively dictating everyone > > that they should not use that sanitizer. > > Well, they shouldn't use it *and expect everybody else's code to never rely > on unsigned wraparound*. If they want to write their own code to never rely > on that guaranteed feature of the language, that's fine. They don't get to > force that choice on everybody else. Right, of course. As i have said, if i was compiling gcc/libstdc++ itself with that "broken" sanitizer, closing as WONTFIX would be totally justified, but here we are in a bit of a gray area, because while that is for sure a part of implementation, it's rather a user-facing one. > > Silencing this kind of thing from user side is possible, > > but it's somewhat cumbersome: it requires compiling with > > `-fsanitize-recover=integer`, and supplying a run-time suppressions file. > > > > On the other hand, suppressing this in-source is trivial: > > https://godbolt.org/z/E7sEnvvrT > > ... all it would take is applying > > `__attribute__((no_sanitize("unsigned-integer-overflow")))` > > to `_S_compare` on line 483 in `basic_string.h`. > > > > I have tried that locally, and it works, but it seems it needs to be > > wrapped into `#if defined(__clang__)` preprocessor check: > > https://godbolt.org/z/5a7ox4EWv > > > > Forwarded from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1029970 > > So provide a patch then, instead of asking other people to work around this > sanitizer for you. :)