1 // { dg-do run }
2 // { dg-options "-O2" }
3 
4 #ifndef T
5 # if __SIZEOF_INT128__ && defined __SSE__
6 #  define T __int128
7 # else
8 #  define T long
9 # endif
10 #endif
11 #ifndef R
12 # ifdef __SSE__
13 #  define R "x"
14 # else
15 #  define R "r"
16 # endif
17 #endif
18 
19 
20 typedef T A; // #define T to long or __int128
21 struct B { char d; A c; } __attribute__((packed));
22 struct B b[50]; // many elements to avoid loop unrolling
23 
main()24 int main () {
25   int i;
26   for (i = 0; i < sizeof(b) / sizeof(*b); i++) {
27     asm ("" : "+" R (b[i].c)); // #define R to "r" on ppc or "x" on x86_64
28   }
29 }
30