Compiler projects using llvm
// It is important to have a definition *after* non-definition declaration.
typedef struct _Buffer Buffer;
struct _Buffer {
  int a;
  int b;
  int c;
};

typedef struct _AnonymousStruct AnonymousStruct;
struct _AnonymousStruct {
  struct {
    int x;
    int y;
  };
};

typedef union _UnionRecord UnionRecord;
union _UnionRecord {
  int u: 2;
  int v: 4;
};