[LLVMdev] Regression in 3.4's register allocator?

Jim Grosbach grosbach at apple.com
Tue Jun 17 09:56:14 PDT 2014


Glad to hear things are back to working for you. Most excellent.

llc is an interesting case because it used to do auto-detection, but was change to not do so. It’s purpose is as a test and development driver for LLVM backend work, and for that it’s very important that runs of the tool on different host machines generate the same results. CPU auto-detection is at strong cross purposes to that. Compiler drivers that are meant to be end-user facing have a different set of priorities and so different solutions are better.

-Jim


> On Jun 17, 2014, at 7:58 AM, Niklas Therning <niklas at therning.org> wrote:
> 
> Thanks guys! I did some experimenting and it turns out that if I just set a value for CPU in the call to LLVMCreateTargetMachine() the "ran out of registers" error disappears. Easy fix!
> 
> BTW, if it's up to the tools to do the auto-detection I guess llc in 3.4 is broken then since it fails too?
> 
> 
> On Mon, Jun 16, 2014 at 7:20 PM, Jim Grosbach <grosbach at apple.com> wrote:
> Yep, quite right, Evan. Any regalloc differences due to that patch are purely coincidence;
> 
> -Jim
> 
>> On Jun 16, 2014, at 10:13 AM, Evan Cheng <evan.cheng at apple.com> wrote:
>> 
>> Hi Niklas,
>> 
>> The attached patch has nothing to do with register allocation. r206094 changes how cpu auto-detection is done. I believe it's now the responsibility of the tools (e.g. llc) to detect the cpu. My guess is the proper fix is on the RoboVM side to handle the change.
>> 
>> Jim, can you confirm?
>> 
>> Evan
>> 
>> On Jun 1, 2014, at 1:45 PM, Niklas Therning <niklas at therning.org> wrote:
>> 
>>> I think we have located the revision which fixes this regression: r206094 (or commit 6bb00df in llvm-mirror on GitHub). I have attached a patch which can be applied to the current release_34 branch (tested against the release_34 branch in llvm-mirror). With this patch the attached reg-alloc-test.ll file doesn't fail with the "LLVM ERROR: ran out of registers during register allocation" error any longer. I haven't run any llvm tests to make sure this patch doesn't break anything else but as far as I can see it doesn't at least break anything when used in RoboVM.
>>> 
>>> Is it too late to get this into 3.4.2? Is there anything else I can do to make it easier for you to include this patch in 3.4.2 or the next possible point release?
>>> 
>>> 
>>> 
>>> On Wed, May 14, 2014 at 3:25 PM, Renato Golin <renato.golin at linaro.org> wrote:
>>> On 14 May 2014 14:15, Niklas Therning <niklas at therning.org> wrote:
>>> > I can confirm that this regression has been fixed in trunk. Should I report
>>> > this as a bug in 3.4?
>>> 
>>> The 3.4.2 release is coming, you might want to consider finding the
>>> patches responsible for the fix and proposing it for back-porting.
>>> 
>>> Please email Tom (cc'd) if you end up with a proposal.
>>> 
>>> cheers,
>>> --renato
>>> 
>>> <reg-alloc-regression.patch><reg-alloc-test.ll>_______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140617/c0757aa5/attachment.html>


More information about the llvm-dev mailing list