------- Comment #2 from rguenth at gcc dot gnu dot org 2009-07-18 09:15 ------- asm("movw %4, %%fs\n" "movl %%esp, %0\n" "pushw %%fs\n" "movl %%esp, %1\n" "popw %%fs\n" "movl %%esp, %2\n" "movw %%fs, %3\n" : "=m" (sp1), "=m" (sp2), "=m" (sp3), "=m" (fs2) : "m" (fs1) : "ax" );
As you access sp2 in memory after modifying the stack pointer you get a wrong stack slot location because sp2 lives at 12(%esp) from the compilers view. Either don't mess with the stack or use register input/output constraints. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40795