int fred() { int src; int dst; asm volatile ( "mov %1, %0\n\t" "add $1, %0" : : : ); asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=" "r" (dst)); asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=r" (dst) : "r" (src)); asm ( "mov %1, %0\n\t" "add $1, %0" : "=r" (dst), "=r" (src) : [src] "r" (dst) : "r0"); L1: L2: asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5" : /* No outputs. */ : "r"(src), "r"(&dst) : "r5", "memory" : L1, L2 ); }