[llvm-dev] [cfe-dev] Issue compiling x86 assembly code with clang

Joerg Sonnenberger via llvm-dev llvm-dev at lists.llvm.org
Thu Jul 20 11:54:56 PDT 2017


On Thu, Jul 20, 2017 at 02:54:07PM +0530, ROHIT KUMAR via cfe-dev wrote:
> Hey guys,
> 
> I am trying to compile *x86 assembly code* with clang, which gets compiled
> successfully with -O1 flag but fails with -O0 flag with below-mentioned
> error:
> 
> inline assembly requires more registers than available

Well, keep in mind that there are only six general purpose register on
i386 and %ebx might still be reserved for the GOT in PIC code. Combine
that with the fast register allocator and code generator being somewhat
dumb and I'm not surprised at all, that this is failing. Sorry, though
luck -- it is unlikely to be fixed really.

> Note: This assembly code works fine with gcc.

Across all reasonable set of versions and optimization levels? I would
be surprised. GCC has a long history of rejecting dumb cpuid inline
assembler macros. Your best bet is very likely to reduce the clobber
list further to give the compiler some breathing room.

Joerg


More information about the llvm-dev mailing list