// { dg-do run } // { dg-options "-O2" } #ifndef T # if __SIZEOF_INT128__ && defined __SSE__ # define T __int128 # else # define T long # endif #endif #ifndef R # ifdef __SSE__ # define R "x" # else # define R "r" # endif #endif typedef T A; // #define T to long or __int128 struct B { char d; A c; } __attribute__((packed)); struct B b[50]; // many elements to avoid loop unrolling int main () { int i; for (i = 0; i < sizeof(b) / sizeof(*b); i++) { asm ("" : "+" R (b[i].c)); // #define R to "r" on ppc or "x" on x86_64 } }