New GCC 7 -Wformat-truncation suppressed by (and only by) -Og?
Stephan Bergmann
sbergman@redhat.com
Thu Feb 23 14:03:00 GMT 2017
On 02/23/2017 02:51 PM, Stephan Bergmann wrote:
> At least with a recent GCC 7 trunk build ("gcc (GCC) 7.0.1 20170221
> (experimental)"), I noticed that -Wformat-truncation warnings happen to
> not be emitted if and only if -Og is given:
>
>> $ cat test.c
>> #include <stdio.h>
>> int main() {
>> char buf[3];
>> snprintf(buf, sizeof buf, "%s", "foo");
>> return 0;
>> }
>> $ gcc -Wformat-truncation -Og ~/test.c
>> $ gcc -Wformat-truncation -O ~/test.c
>> test.c: In function âmainâ:
>> test.c:4:34: warning: âsnprintfâ output truncated before the last
>> format character [-Wformat-truncation=]
>> snprintf(buf, sizeof buf, "%s", "foo");
>> ^
>> test.c:4:5: note: âsnprintfâ output 4 bytes into a destination of size 3
>> snprintf(buf, sizeof buf, "%s", "foo");
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Any other optimization level (-O1..3/s/fast) does emit the warning. The
-O0..3, even
> documentation makes it clear that the behavior of that warning may be
> coupled to the optimization level, but this difference between -Og and
> everything else still looks somewhat odd. Could it be by mistake?
More information about the Gcc
mailing list