xref: /llvm-project/lldb/test/API/lang/c/anonymous/main.c (revision 10df88de21772ff40818bec7eef6b099ba4279fb)
199451b44SJordan Rupprecht struct anonymous_nest {
299451b44SJordan Rupprecht   struct {
399451b44SJordan Rupprecht     struct {
499451b44SJordan Rupprecht       int a;
599451b44SJordan Rupprecht       int b;
699451b44SJordan Rupprecht     }; // anonymous
799451b44SJordan Rupprecht     struct {
899451b44SJordan Rupprecht       int c;
999451b44SJordan Rupprecht       int d;
1099451b44SJordan Rupprecht     } foo;
1199451b44SJordan Rupprecht   }; // anonymous
1299451b44SJordan Rupprecht };
1399451b44SJordan Rupprecht 
1499451b44SJordan Rupprecht struct anonymous_child {
1599451b44SJordan Rupprecht   struct {
1699451b44SJordan Rupprecht     struct {
1799451b44SJordan Rupprecht       int a;
1899451b44SJordan Rupprecht       int b;
1999451b44SJordan Rupprecht     } grandchild;
2099451b44SJordan Rupprecht     struct {
2199451b44SJordan Rupprecht       int c;
2299451b44SJordan Rupprecht       int d;
2399451b44SJordan Rupprecht     } foo;
2499451b44SJordan Rupprecht   }; // anonymous
2599451b44SJordan Rupprecht };
2699451b44SJordan Rupprecht 
2799451b44SJordan Rupprecht struct anonymous_grandchild {
2899451b44SJordan Rupprecht   struct {
2999451b44SJordan Rupprecht     struct {
3099451b44SJordan Rupprecht       int a;
3199451b44SJordan Rupprecht       int b;
3299451b44SJordan Rupprecht     }; // anonymous
3399451b44SJordan Rupprecht     struct {
3499451b44SJordan Rupprecht       int c;
3599451b44SJordan Rupprecht       int d;
3699451b44SJordan Rupprecht     } foo;
3799451b44SJordan Rupprecht   } child;
3899451b44SJordan Rupprecht };
3999451b44SJordan Rupprecht 
processor_nest(struct anonymous_nest * n)4099451b44SJordan Rupprecht int processor_nest (struct anonymous_nest *n)
4199451b44SJordan Rupprecht {
4299451b44SJordan Rupprecht   return n->foo.d + n->b; // Set breakpoint 0 here.
4399451b44SJordan Rupprecht }
4499451b44SJordan Rupprecht 
processor_child(struct anonymous_child * c)4599451b44SJordan Rupprecht int processor_child (struct anonymous_child *c)
4699451b44SJordan Rupprecht {
4799451b44SJordan Rupprecht   return c->foo.d + c->grandchild.b; // Set breakpoint 1 here.
4899451b44SJordan Rupprecht }
4999451b44SJordan Rupprecht 
processor_grandchild(struct anonymous_grandchild * g)5099451b44SJordan Rupprecht int processor_grandchild (struct anonymous_grandchild *g)
5199451b44SJordan Rupprecht {
5299451b44SJordan Rupprecht   return g->child.foo.d + g->child.b;
5399451b44SJordan Rupprecht }
5499451b44SJordan Rupprecht 
5599451b44SJordan Rupprecht 
5699451b44SJordan Rupprecht 
5799451b44SJordan Rupprecht typedef struct {
5899451b44SJordan Rupprecht     int dummy;
5999451b44SJordan Rupprecht } type_y;
6099451b44SJordan Rupprecht 
6199451b44SJordan Rupprecht typedef struct {
6299451b44SJordan Rupprecht     type_y y;
6399451b44SJordan Rupprecht } type_z;
6499451b44SJordan Rupprecht 
6599451b44SJordan Rupprecht 
6699451b44SJordan Rupprecht 
main()6799451b44SJordan Rupprecht int main()
6899451b44SJordan Rupprecht {
6999451b44SJordan Rupprecht   struct anonymous_nest n = { 0, 2, 0, 4 };
7099451b44SJordan Rupprecht   struct anonymous_child c = { 0, 2, 0, 4 };
7199451b44SJordan Rupprecht   struct anonymous_grandchild g = { 0, 2, 0, 4 };
7299451b44SJordan Rupprecht   type_z *pz = 0;
7399451b44SJordan Rupprecht   type_z z = {{2}};
7499451b44SJordan Rupprecht 
75*10df88deSRaphael Isemann   processor_nest(&n);
76*10df88deSRaphael Isemann   processor_child(&c);
77*10df88deSRaphael Isemann   processor_grandchild(&g); // Set breakpoint 2 here.
7899451b44SJordan Rupprecht 
7999451b44SJordan Rupprecht   return 0;
8099451b44SJordan Rupprecht }
81