On 20/11/15 01:23, David Wohlferd wrote: > I tried to picture the most basic case I can think of that uses > something clobber-able: > > for (int x=0; x < 1000; x++) > asm("#stuff"); > > This generates very simple and highly performant code: > > movl $1000, %eax > .L2: > #stuff > subl $1, %eax > jne .L2 > > Using extended asm to simulate the clobberall gives: > > movl $1000, 44(%rsp) > .L2: > #stuff > subl $1, 44(%rsp) > jne .L2 > > It allocates an extra 4 bytes, and changed everything to memory accesses > instead of using a register.
Can you show us your code? I get xx: movl $1000, %eax .L2: #stuff subl $1, %eax jne .L2 rep; ret for void xx() { for (int x=0; x < 1000; x++) asm volatile("#stuff" : : : "memory"); } What you're describing looks like a bug: x doesn't have its address taken. Andrew.