1  /* { dg-do compile } */
       2  
       3  #include <stddef.h>
       4  
       5  typedef struct
       6  {
       7    int a;
       8  } my_structB_t;
       9  
      10  typedef struct
      11  {
      12    my_structB_t b;
      13  } __attribute__((uncached))  my_structA_t;
      14  
      15  typedef volatile struct
      16  {
      17    my_structA_t c;
      18  } my_type_t;
      19  
      20  my_type_t x;
      21  
      22  void foo (my_type_t *p)
      23  {
      24    p->c.b.a = 10;
      25  }
      26  
      27  void bar (void)
      28  {
      29    x.c.b.a = 10;
      30  }
      31  
      32  /* { dg-final { scan-assembler-times "st\.di" 2 { target { *-linux-* } } } } */
      33  /* { dg-final { scan-assembler-times "st\.di" 1 { target { *-elf32-* } } } } */
      34  /* { dg-final { scan-assembler-times "st\.as\.di" 1 { target { *-elf32-* } } } } */