20020527-1.c   [plain text]


/* PR c/6660
   Test whether an unnamed field with user defined type - struct or union is
   accepted.  */
/* { dg-do compile } */
/* { dg-options "-fms-extensions" } */

typedef struct {
  unsigned short a;
  unsigned short b;
} __attribute__ ((__packed__)) A;

typedef struct B_ {
  unsigned int c;
  unsigned int d;
} B;

typedef struct C_ {
  B;
  unsigned int e;
  unsigned int f;
} C;

typedef C D;

typedef struct {
  A;
  D;
  struct {
    unsigned short g;
    unsigned short h;
  } __attribute__ ((__packed__));
  union {
    int i;
    long j;
  };
  int k;
} __attribute__ ((__packed__)) E;

E x;

void foo (void)
{
  x.a = 1;
  x.b = 2;
  x.c = 3;
  x.d = 4;
  x.e = 5;
  x.f = 6;
  x.g = 7;
  x.h = 8;
  x.i = 9;
  x.j = 10;
  x.k = 11;
}