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

             Bug #: 55040
           Summary: dereferencing type-punned pointer
    Classification: Unclassified
           Product: gcc
           Version: 4.7.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: dilyan.palau...@aegee.org


Compiling

root@home:~ # cat strict-aliasing.c
 #include <stdio.h>
#include <string.h>

int main() {
  char x[10];
  float y = 1.28;
  float *z = (float*)x;
  memcpy(x, &y, sizeof(float));
  printf("%f\n", *(float*)x);
  printf("%f\n", *z);
  return 0;
}

with gcc -O2 -Wall strict-aliasing.c -o strict-aliasing
prints:
  strict-aliasing.c: In function ‘main’:
  strict-aliasing.c:9:3: warning: dereferencing type-punned pointer will break
strict-aliasing rules [-Wstrict-aliasing]

which is a warning for the first printf, but not for the second printf. 
According to my understanding, there is no difference between the first and
second printf, so there shall be even number of warnings.

Reply via email to