[Bug lto/79062] New: -Wformat-length warnings disabled by -flto
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Jan 11 17:42:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79062
Bug ID: 79062
Summary: -Wformat-length warnings disabled by -flto
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: lto
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
The following enhanced test case shows that with r244326 committed to resolve
bug 78768, even though the gimple-ssa-sprintf pass seems to run with -flto,
-Wformat-length (and likely -Wformat-truncation) still doesn't work for some
reason.
$ (set -x; for o in '' '-flto'; do /build/gcc-svn/gcc/xgcc -B
/build/gcc-svn/gcc -O2 -Wall -Wextra -Wpedantic -Walloca-larger-than=1
-Wformat-length=1 $o -fpic -shared -o foo.so -fdump-tree-optimized t.c; cat
t.c.*.optimized; done)
+ for o in ''\'''\''' ''\''-flto'\'''
+ /build/gcc-svn/gcc/xgcc -B /build/gcc-svn/gcc -O2 -Wall -Wextra -Wpedantic
-Walloca-larger-than=1 -Wformat-length=1 -fpic -shared -o foo.so
-fdump-tree-optimized t.c
t.c: In function ‘f’:
t.c:3:9: warning: argument to ‘alloca’ is too large [-Walloca-larger-than=]
char *d = (char *)__builtin_alloca (2);
^
t.c:3:9: note: limit is 1 bytes, but argument is 2
t.c:4:33: warning: ‘%i’ directive writing 3 bytes into a region of size 2
[-Wformat-length=]
return __builtin_sprintf (d, "%i", 123);
^~
t.c:4:10: note: format output 4 bytes into a destination of size 2
return __builtin_sprintf (d, "%i", 123);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ cat t.c.227t.optimized
;; Function f (f, funcdef_no=0, decl_uid=1795, cgraph_uid=0, symbol_order=0)
f ()
{
char * d;
int _5;
<bb 2> [100.00%]:
d_3 = __builtin_alloca (2);
_5 = __builtin_sprintf (d_3, "%i", 123);
return _5;
}
;; Function g (g, funcdef_no=1, decl_uid=1799, cgraph_uid=1, symbol_order=1)
g ()
{
<bb 2> [100.00%]:
return 3;
}
+ for o in ''\'''\''' ''\''-flto'\'''
+ /build/gcc-svn/gcc/xgcc -B /build/gcc-svn/gcc -O2 -Wall -Wextra -Wpedantic
-Walloca-larger-than=1 -Wformat-length=1 -flto -fpic -shared -o foo.so
-fdump-tree-optimized t.c
t.c: In function ‘f’:
t.c:3:9: warning: argument to ‘alloca’ is too large [-Walloca-larger-than=]
char *d = (char *)__builtin_alloca (2);
^
t.c:3:9: note: limit is 1 bytes, but argument is 2
+ cat t.c.227t.optimized
;; Function f (f, funcdef_no=0, decl_uid=1795, cgraph_uid=0, symbol_order=0)
f ()
{
char * d;
int _5;
<bb 2> [100.00%]:
d_3 = __builtin_alloca (2);
_5 = __builtin_sprintf (d_3, "%i", 123);
return _5;
}
;; Function g (g, funcdef_no=1, decl_uid=1799, cgraph_uid=1, symbol_order=1)
g ()
{
<bb 2> [100.00%]:
return 3;
}
More information about the Gcc-bugs
mailing list