the code ------------------------------------ void frame_dummy (void) { void (*register_classes) (void *) = 0; __asm ("" : "+r" (register_classes)); } ------------------------------------ produces the following error: --------------------------------------------- Couldn't allocate output reg for contraint 'r'! ---------------------------------------------
Created attachment 498 [details] test.ll
setting a breakpoint in SelectionDAGLowering::GetRegistersForValue shows that ConstrCode is "r". The code seems to expect that a constraint is braced with "{}"....
Created attachment 499 [details] add the 64bit registers for the "r" constraint
Patch applied, thanks Rafael! Patch here: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20061204/040773.html Testcase here: Regression/CodeGen/X86/x86-64-asm.ll -Chris