The main issue is nested function usage which Clang doesn't support (BZ #27220). Other issues include: * Clang's asm label cannot be added after the declaration is first referenced [1] * Clang parses inline asm and is stricter than GCC. asm("@@@ ...") trick can cause compile errors. * LLVM's integrated assembler may not support some directives * PowerPC64 -mlong-double-128 support may not be on par with GCC Severe issues may deserve its own bug. This can be used by miscellaneous small fixes. [1]: void bar(); void foo() { bar(); } void bar() asm("bar1"); GCC happily redirects the bar call to bar1. Clang rejects this x.c:5:6: error: cannot apply asm label to function after its first use void bar() asm("bar1"); ^ ~~~~~~