One major motivation for inline asm is wanting to use an insn which your toolchain doesn't know about (because it is too new, for instance). Inline also has to be able to handle cases like inline system call instructions -- in that case the clobbered registers are determined by the kernel syscall ABI, so it is impossible for a compiler to get them right by just looking at the asm insns.