[Bug c/71924] New: missing -Wreturn-local-addr returning alloca result
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jul 19 00:37:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71924
Bug ID: 71924
Summary: missing -Wreturn-local-addr returning alloca result
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
All three functions defined in the following example return an address of a
stack object, but GCC only issues a -Wreturn-local-addr warning for two of them
and not for the one where alloca was used to allocated the stack object. The
warning should be issued for all three functions.
Note that the warning comes and goes with the value of the size argument, and
is not issued when the argument is not constant (the warning is, however,
issued for VLAs).
Also, the note printed following the second warning is wrong (the object isn't
declared) and points to the wrong location (to be useful, it should point to
the line containing either the declaration of the local object or the
invocation of the alloca function).
$ cat walloca.c && /build/gcc-walloca/gcc/xgcc -B /build/gcc-walloca/gcc -S
-Wall -Wextra -Wpedantic walloca.c
void* foo (void)
{
char a [4];
return a;
}
void* bar (void)
{
void *a = __builtin_alloca (4);
return a;
}
void* baz (void)
{
void *a = __builtin_alloca_with_align (4, 8);
return a;
}
walloca.c: In function ‘foo’:
walloca.c:4:10: warning: function returns address of local variable
[-Wreturn-local-addr]
return a;
^
walloca.c: In function ‘baz’:
walloca.c:16:10: warning: function returns address of local variable
[-Wreturn-local-addr]
return a;
^
walloca.c:17:1: note: declared here
}
^
More information about the Gcc-bugs
mailing list