How reuse inline assembler conditionals?

Benjamin K. bkausbk@web.de
Mon Jun 30 21:32:00 GMT 2003


Example (need x86 compatible system):

int Increment(int a){
    int tmp;
    asm volatile(
    "inc %0\n"
    : "=r" (tmp)
    : "0" (a)
    );
    return tmp;
}

x86 cpu will set conditional flags after using INC
instruction, but this conditional will no be used by
gcc, why?

Gcc will produce something like:

if (Increment(10)==0) {
}

mov eax,10
inc eax
test eax,eax
jnz Lxx

But "test eax,eax" isn't needed here.
How can the function be declared to reuse asm conditional flags?

Benjamin Kalytta



More information about the Gcc mailing list