1  /* PR target/78904 */
       2  /* { dg-do assemble { target { ! ia32 } } } */
       3  /* { dg-options "-O2" } */
       4  
       5  typedef __SIZE_TYPE__ size_t;
       6  
       7  struct S1
       8  {
       9    unsigned char pad1;
      10    unsigned char val;
      11    unsigned short pad2;
      12  };
      13  
      14  extern unsigned char t[256];
      15  
      16  void foo (struct S1 a, size_t i)
      17  {
      18    register size_t _i __asm ("r10") = i;
      19  
      20    asm volatile ("" : "+r" (_i));
      21    t[_i] = a.val;
      22  }