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)16struct 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