// RUN: clang %s -emit-llvm struct { int x; int y; } point; void fn1() { point.x = 42; } /* Nested member */ struct { struct { int a; int b; } p1; } point2; void fn2() { point2.p1.a = 42; } /* Indirect reference */ typedef struct __sf { unsigned char *c; short flags; } F; typedef struct __sf2 { F *ff; } F2; int fn3(F2 *c) { if (c->ff->c >= 0) return 1; else return 0; } /* Nested structs */ typedef struct NA { int data; struct NA *next; } NA; void f1() { NA a; } typedef struct NB { int d1; struct _B2 { int d2; struct NB *n2; } B2; } NB; void f2() { NB b; }