diff gcc/testsuite/c-c++-common/Waddress-of-packed-member-2.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/c-c++-common/Waddress-of-packed-member-2.c	Thu Feb 13 11:34:05 2020 +0900
@@ -0,0 +1,58 @@
+/* { dg-do compile } */
+/* { dg-options "-Waddress-of-packed-member" } */
+
+struct r {
+  int a[10];
+  int b[10][10];
+  int ****i4;
+};
+
+struct s {
+  char c;
+  struct r p;
+} __attribute__((packed));
+
+struct t {
+  char c;
+  struct r p __attribute__((packed));
+  struct r u;
+};
+
+struct s s0;
+struct t t0;
+int *i0;
+
+void foo (void)
+{
+  i0 = s0.p.a;               /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = t0.p.a;               /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = s0.p.b[0];            /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = t0.p.b[0];            /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = &s0.p.a[0];           /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = &t0.p.a[0];           /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = &s0.p.b[0][0];        /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = &t0.p.b[0][0];        /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = *s0.p.b;              /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = *t0.p.b;              /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = &**s0.p.b;            /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = &**t0.p.b;            /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = **&s0.p.b;            /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = **&t0.p.b;            /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = &*s0.p.a;             /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = &*t0.p.a;             /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = *&s0.p.a;             /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = *&t0.p.a;             /* { dg-warning "may result in an unaligned pointer value" } */
+  i0 = t0.u.a;                 /* { dg-bogus "may result in an unaligned pointer value" } */
+  i0 = t0.u.b[0];              /* { dg-bogus "may result in an unaligned pointer value" } */
+  i0 = &t0.u.a[0];             /* { dg-bogus "may result in an unaligned pointer value" } */
+  i0 = &t0.u.b[0][0];          /* { dg-bogus "may result in an unaligned pointer value" } */
+  i0 = *t0.u.b;                /* { dg-bogus "may result in an unaligned pointer value" } */
+  i0 = &*t0.u.a;               /* { dg-bogus "may result in an unaligned pointer value" } */
+  i0 = &**t0.u.b;              /* { dg-bogus "may result in an unaligned pointer value" } */
+  i0 = ***s0.p.i4;             /* { dg-bogus "may result in an unaligned pointer value" } */
+  i0 = ***t0.p.i4;             /* { dg-bogus "may result in an unaligned pointer value" } */
+  i0 = ****&s0.p.i4;           /* { dg-bogus "may result in an unaligned pointer value" } */
+  i0 = ****&t0.p.i4;           /* { dg-bogus "may result in an unaligned pointer value" } */
+  i0 = &****s0.p.i4;           /* { dg-bogus "may result in an unaligned pointer value" } */
+  i0 = &****t0.p.i4;           /* { dg-bogus "may result in an unaligned pointer value" } */
+}