This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/39117] missed strict-aliasing warning
- From: "egallager at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 25 Jul 2017 14:37:06 +0000
- Subject: [Bug c/39117] missed strict-aliasing warning
- Auto-submitted: auto-generated
- References: <bug-39117-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39117
Eric Gallager <egallager at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |diagnostic
CC| |egallager at gcc dot gnu.org
--- Comment #3 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Benjamin Kosnik from comment #0)
> From this thread:
> http://gcc.gnu.org/ml/gcc-patches/2009-02/msg00271.html
>
> Compiling with -c -g -O2 -Wall from r143978, I only get one warning, but
> should get two.
>
> struct A
> {
> int j;
> int i;
> };
>
> void foo()
> {
> char buf[sizeof(struct A)];
>
> // warns
> ((struct A*)buf)->i = 1;
>
> // does not warn
> struct A* p = (struct A*) buf;
> p->i = 4;
> }
>
> Gives:
> alias2.c: In function ‘void foo()’:
> alias2.c:12: warning: dereferencing type-punned pointer will break
> strict-aliasing rules
Trying again with newer trunk, and I don't even get the first warning! GCC is
completely silent with all of these:
$ /usr/local/bin/gcc -c -g -O2 -Wall 39117.c
$ /usr/local/bin/gcc -c -g -O2 -Wstrict-aliasing=1 39117.c
$ /usr/local/bin/gcc -c -g -O2 -Wstrict-aliasing=2 39117.c
$ /usr/local/bin/gcc -c -g -O2 -Wstrict-aliasing=3 39117.c
$ /usr/local/bin/gcc -c -g -O1 -Wall 39117.c
$ /usr/local/bin/gcc -c -g -O0 -Wall 39117.c
$ /usr/local/bin/gcc -c -g -Og -Wall 39117.c
$ /usr/local/bin/gcc -c -g -Os -Wall 39117.c
$ /usr/local/bin/gcc -c -g -O3 -Wall 39117.c
$ /usr/local/bin/gcc -c -g -Ofast -Wall 39117.c
$