[llvm-commits] Fix for MachineSink creating zombie defines

Jakob Stoklund Olesen stoklund at 2pi.dk
Sat Jul 30 09:55:02 PDT 2011


On Jul 30, 2011, at 9:05 AM, Jan Sjodin wrote:

>>>   I was unsure if this is desirable for the generic function. Is that the 
> 
>> better place for this?
>> 
>> I can't imagine any user of SplitCriticalEdge would not want to
>> preserve live-ins... and it looks like the other current caller,
>> MachineLICM, suffers from the same issue.
>> 
> 
> 
> I attached a modified patch.

The patch looks good, but please fix the problem with uint64-to-float.ll first. As you correctly note, EFLAGS should not be live-in to the new blocks. We discussed this not so long ago, look for the "MachineSink and EFLAGS" thread from around June 5.

> In MacineBasicBlock::SplitCriticalEdge it handles the case of LiveVariables,
> Why is there both LiveVariables and livins?

The live-in lists are only used for physical registers. They are valid during all the codegen passes, but they are not very convenient to work with.

The register allocators use LiveVariables and LiveIntervals to track the liveness of virtual registers as well. LiveIntervals in particular is much better for interference checking.

/jakob

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20110730/044d63c5/attachment.html>


More information about the llvm-commits mailing list