[Bug ipa/96503] New: attribute alloc_size effect lost after inlining
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Aug 6 15:51:12 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96503
Bug ID: 96503
Summary: attribute alloc_size effect lost after inlining
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: ipa
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
CC: marxin at gcc dot gnu.org
Target Milestone: ---
Similar to pr96502, the test case below shows that the effect of attribute
alloc_size on warnings is also lost after inlining. I open this as a separate
bug (and expect to raise others) because I expect the "fixes" to be different
in each case. Like pr96502, this also came up in the following discussion:
https://gcc.gnu.org/pipermail/gcc-patches/2020-August/551526.html
$ cat x.c && gcc -O2 -S -Wall -Wextra -fdump-tree-optimized=/dev/stdout x.c
int* f (int);
__attribute__ ((alloc_size (1), noinline)) int*
f0 (int n) { return f (n); }
void h0 (void)
{
int *p = f0 (3);
__builtin_memset (p, 0, 3 * sizeof p); // warning (good)
}
__attribute__ ((alloc_size (1))) int*
f1 (int n) { return f (n); }
void h1 (void)
{
int *p = f1 (3);
__builtin_memset (p, 0, 3 * sizeof p); // missing warning
}
x.c: In function ‘h0’:
x.c:9:3: warning: ‘__builtin_memset’ forming offset [3, 23] is out of the
bounds [0, 3] [-Warray-bounds]
9 | __builtin_memset (p, 0, 3 * sizeof p); // warning (good)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
More information about the Gcc-bugs
mailing list