This is a separate issue which really shouldn't have anything to do with
this, but is there a specific reason why:

void good1(int x, int y)
{
  _Bool pf;

  asm("cmpl %2,%1"
      : "=@ccp" (pf)
      : "r" (x), "g" (y));

  if (pf)
    beta();
}

... ends up generating a jump to a jump?

0000000000000000 <good1>:
   0:   39 f7                   cmp    %esi,%edi
   2:   7a 0c                   jp     10 <good1+0x10>
   4:   f3 c3                   repz retq
   6:   66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
   d:   00 00 00
  10:   e9 00 00 00 00          jmpq   15 <good1+0x15>
                        11: R_X86_64_PC32       beta-0x4
  15:   66 66 2e 0f 1f 84 00    data32 nopw %cs:0x0(%rax,%rax,1)
  1c:   00 00 00 00

Reply via email to