This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug other/52609] -Wstrict-aliasing / missed diagnostics


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52609

--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-03-19 10:54:24 UTC ---
(In reply to comment #2)
> (In reply to comment #1)
> > >accessing unsigned* via float* looks buggy
> > 
> > It does not have to be if the original argument was originally of type float.
> > Aliasing is not about type of pointers but the type which is used to access and
> > such.
> 
> ok, here's an updated testcase:
> 
> $ cat alias-bug.c
> unsigned buffer[1];
> 
> float bug1( unsigned u )
> {
>         buffer[0]=u;
>         return *(float*)(&buffer[0]); // warning.
> }
> 
> float bug2( unsigned u )
> {
>         buffer[0]=u;
>         float* ptr=(float*)&buffer[0];
>         return *ptr; // missed strict aliasing warning.
> }
> 
> gcc repots warning only for bug1() and misses warning for bug2():

There is a duplicate bug for this somewhere.  The warning machinery
only looks at a single stmt.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]