http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57915
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Somewhat reduced... void bar (int *dst, int *src) { asm ("cld ; repne scasb %%es:(%%edi),%%al": "+c" (dst), "+DaX" (*src)); } struct { int a; int p[]; } s; void foo (void) { while (1) bar (0, s.p); }