New Iteration of subregister liveness patches

Quentin Colombet qcolombet at apple.com
Tue Dec 9 18:05:55 PST 2014


On Dec 9, 2014, at 5:32 PM, Matthias Braun <matze at braunis.de> wrote:

> Ok,
> 
> I just commited the changes to svn trunk. Thanks everyone, esp. Renato and Quentin, for the detailed reviews!
> 
> SubRegisterLiveness is available as a subtarget switch now, but not enabled by any of the targets yet, as most of them need some additional fixing/testcase changes which I'll address in subsequent commits.
> 
> For the record: I did fix many but not all issues mentioned in the reviews. The following is still missing:
> 
> - Manually creating a single linked list in the LiveInterval class. The alternatives to this are:
>    a) Using the double linked list provided by llvm.
>    b) Turning the manual single linked list into a full featued ADT in llvm.
>  Using a double linked list where a single linked list is wasteful, so I'm against a). Turning the thing into a full-blown ADT template class seemed like too much for a single user in the whole llvm codebase, but if others would prefer that over the current code I will do that.

Fair enough.

> - Sharing the LiveInterval::verify code with the MachineVerifier code. This is not as easy as it looks as you need a working MachineVerifier instance if you want to use the MachineVerifier elsewhere. Additionally that problem isn't introduced by my commits but already existed before... I may take a look into how to make the MachineVerifier more flexible to allow this, but this will be another patch series.

Please file a PR for that.

> - I clarified the comment in the updateLiveIns() function to explain the LiveOutData parameter, but did not add explanation to the other LiveOutData parameters yet. It seems like a better explanation at the point where the LiveOutData class is defined is the way to go instead of explaining the intention over and over again for each function having such a parameter. Anyway this is still TODO

SGTM.

> - The code duplication at places that match uses/defs to subranges and split the subranges on demand is still duplicated at several places in the register coalescer and I think even at other places. This is definitely TODO although not easy as all the appearances vary slightly.

Agree. Maybe file a PR for that one too.

Thanks Matthias,
-Quentin

> 
> Greetings
>    Matthias
> 
>> On Dec 5, 2014, at 1:23 PM, Quentin Colombet <qcolombet at apple.com> wrote:
>> 
>> 
>>> On Dec 5, 2014, at 1:20 PM, Renato Golin <renato.golin at linaro.org> wrote:
>>> 
>>> On 5 December 2014 at 19:19, Tom Stellard <tom at stellard.net> wrote:
>>>> I tested these patches a few months ago and there were some regressions
>>>> on R600.  I'm not sure when I'll get a chance to test them again, but I
>>>> am in favor of merging these patches as soon as possible, since sub-reg
>>>> liveness is hidden behind a subtarget flag and it's easier to fully test
>>>> once it is in ToT.
>>> 
>>> If this is not the default behaviour, and it can be turned on by just
>>> adding a flag, then I don't see why not, after addressing Quentin's
>>> comments. I agree it'll be much easier to test this once it lands.
>> 
>> Same here. And I would add, my concerns can be addressed by subsequent patches.
>> 
>> Cheers,
>> Q.
>> 
>>> 
>>> cheers,
>>> --renato
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 





More information about the llvm-commits mailing list