https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51628

--- Comment #33 from H.J. Lu <hjl.tools at gmail dot com> ---
[hjl@gnu-skl-1 gcc]$ cat x.c
#include <stdio.h>
#include <stddef.h>
typedef int aligned_int __attribute__((warn_if_not_aligned(4)));
int main(void)
{
    struct foo {
        char c;
        aligned_int x;
    } __attribute__((packed));
    struct foo arr[2] = { { 'a', 10 }, {'b', 20 } };
    int *p0 = &arr[0].x;
    int *p1 = &arr[1].x;
    printf("sizeof(struct foo) = %d\n",
           (int)sizeof(struct foo));
    printf("offsetof(struct foo, c) = %d\n",
           (int)offsetof(struct foo, c));
    printf("offsetof(struct foo, x) = %d\n",
           (int)offsetof(struct foo, x));
    printf("arr[0].x = %d\n", arr[0].x);
    printf("arr[1].x = %d\n", arr[1].x);
    printf("p0 = %p\n", (void*)p0);
    printf("p1 = %p\n", (void*)p1);
    printf("*p0 = %d\n", *p0);
    printf("*p1 = %d\n", *p1);
    return 0;
}
[hjl@gnu-skl-1 gcc]$ ./xgcc -B./ -S x.c -Wall 
x.c: In function \u2018main\u2019:
x.c:9:5: warning: alignment 1 of \u2018struct foo\u2019 is less than 4
[-Wif-not-aligned]
     } __attribute__((packed));
     ^
x.c:8:14: warning: \u2018x\u2019 offset 1 in \u2018struct foo\u2019 isn't
aligned to 4 [-Wif-not-aligned]
  aligned_int x;
              ^
[hjl@gnu-skl-1 gcc]$

Reply via email to