[LLVMdev] "ran out of registers during register allocation"

Reed Kotler rkotler at mips.com
Fri Jan 2 20:56:20 PST 2015


It should not be able to do any 64 bit integer arithmetic in mips 
fast-isel that is probably the issue; which is the only reason i think 
that it would need the multu or mult instructions.

On 01/02/2015 07:32 PM, reed kotler wrote:
> It seems like it might be a legitimate complaint from the register
> allocator.
>
> It's trying to get an accumulator (not a general purpose register) and
> the accumulator is 64 bit.
>
> It's using a part of the Mips backend that I have not worked in so I
> have to research this a bit.
>
> The multiply instruction is a pseudo multiply in the mips backend and it
> needs the accumulator which a special register
> and there is only one and it has special properties. This may normally
> be getting sorted out by some code which
> is not present during fast-isel.
>
>
>
> On 01/02/2015 02:41 PM, Philip Reames wrote:
>>
>> On 01/02/2015 02:24 PM, reed kotler wrote:
>>> I'm getting this error in RegAllocFast.cpp in compiling one source
>>> file in test-suite as the result of a new Mips fast-isel patch
>>> I was testing.
>>>
>>> It apparently just generates bad code and continues?
>>>
>>>   // Nothing we can do. Report an error and keep going with a bad
>>> allocation.
>>>   if (MI->isInlineAsm())
>>>     MI->emitError("inline assembly requires more registers than
>>> available");
>>>   else
>>>     MI->emitError("ran out of registers during register allocation");
>>>
>>>
>>> How is it possible to run out of registers during register
>>> allocation? Lol.
>> This seems to be one of the more common errors when you get a MI
>> instruction definition wrong.  In particular, I saw this a lot when
>> experimenting with various lowering strategies for the statepoint
>> work.  I'd suggest trying to reduce the example using bugpoint and
>> looking closely at the machine instructions.
>>>
>>> Reed
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>




More information about the llvm-dev mailing list