Question about -Wstrict-overflow=2

Andrew Haley
Sun Mar 7 11:37:35 GMT 2021

On 3/6/21 12:03 PM, Alexander Motzkau via Gcc-help wrote:
> Andrew Haley wrote:
>> The compiler is telling you that it's assuming that expbuf + 120
>> does not wrap around. There's nothing really mysterious about it.
> But should that warning only occur on -Wstrict-overflow=3 or higher?
> Why does it occur on -Wstrict-overflow=2?

-Wstrict-overflow=2 triggers when GCC encounters expressions that
reduce to a constant, where that evaluation depends on overflow not
occuring. In this case the expression is

   expbuf + 120 > get_buf()

This exact phrase doesn't occur in your program, but GCC generates it
while optimizing.

> I usually compile my software with -Werror (so that warnings won't be
> ignored anymore) and so this information from the compiler broke the build
> when going from GCC 8 to GCC 9. It seems -Wstrict-overflow=2 there is not
> fit to be used with -Werror anymore. Am I correct?

I doubt that it ever was. -Wstrict-overflow=2 is informative, for the
programmer. It doesn't suggest that anything is questionable  about the
program, and in this case it's difficult or impossible to avoid.

Re upgrading: over time, GCC gets better and better at diagnosing and
providing information. This inevitably means that programmers using
-Werror with high levels of warnings have to change their programs
when a new GCC is used.

Andrew Haley  (he/him)
Java Platform Lead Engineer
Red Hat UK Ltd. <>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671

More information about the Gcc-help mailing list