1 /* PR target/78967 */
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 
foo(struct S1 a,size_t i)16 struct S1 foo (struct S1 a, size_t i)
17 {
18   register size_t _i __asm ("r10") = i;
19 
20   asm volatile ("" : "+r" (_i));
21   a.val = t[_i];
22 
23   return a;
24 }
25