1  /* PR debug/48466 */
       2  /* { dg-do run } */
       3  /* { dg-options "-g" } */
       4  /* { dg-skip-if "" { *-*-* }  { "*" } { "-O0" } } */
       5  
       6  struct S { unsigned int a; unsigned int *b; };
       7  struct T { struct S a; struct S b; };
       8  struct U { const char *u; };
       9  int n[10];
      10  volatile int v;
      11  
      12  struct U
      13  foo (const char *s)
      14  {
      15    struct U r;
      16    r.u = s;
      17    return r;
      18  }
      19  
      20  void
      21  bar (struct T *s, int a, int b)
      22  {
      23    s->a.a = a;
      24    s->a.b = &s->a.a;
      25    s->b.a = b;
      26    s->b.b = &s->b.a;
      27  }
      28  
      29  int
      30  main ()
      31  {
      32    struct T t;
      33    struct U x = foo ("this is x");
      34    struct S y, z;
      35    y.b = n;		/* { dg-final { gdb-test .+3 "t.a.a" "17" } } */
      36    y.a = 0;		/* { dg-final { gdb-test .+2 "*t.a.b" "17" } } */
      37    bar (&t, 17, 21);	/* { dg-final { gdb-test .+1 "t.b.a" "21" } } */
      38    v++;			/* { dg-final { gdb-test . "*t.b.b" "21" } } */
      39    z = y;
      40    return 0;
      41  }