The only thing that would avoid this is to either tell the compiler to
never put esi/edi in memory (which I think is not possibly across
different versions of gcc) or to always generate a single asm section
for all the different cases.

Use __asm__ ("%esi") and __asm__ ("%edi"). It is not guaranteed that they access the registers always (you can still have copy propagation etcetera); but, if your __asm__ statement constraints match the register you specify, then you can be reasonably sure that good code is produced.


Paolo



Reply via email to