[Bug sanitizer/81986] sanitizer detects negation of large number in string.c
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Aug 29 18:43:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81986
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Vittorio Zecca from comment #2)
> I do not know if this is a libgfortran or a sanitizer bug.
>
> What I do know is that changing string.c:199 from
>
> t = - n;
>
> into
>
> t = -(GFC_UINTEGER_LARGEST)n;
This is of course the right fix, negation of smallest signed number is UB in C,
while it is well defined when the negation is performed in corresponding
unsigned type.
More information about the Gcc-bugs
mailing list