[LLVMdev] Def/Kill flags for subregisters

Evan Cheng evan.cheng at apple.com
Wed Apr 22 09:42:49 PDT 2009


On Apr 22, 2009, at 9:25 AM, Jakob Stoklund Olesen wrote:

> Evan, thanks for clarifying.
>
> On 22/04/2009, at 17.45, Evan Cheng wrote:
>
>> I think you have probably run into a bug in one of the passes. It's
>> probably the coalescer. It's tricky to get the sub-register liveness
>> right.
>
> I think you are right. The bad kill seems to be introduced by the
> coalescer. I will take a look at it.
>
> I have written a machine code verifier pass that checks the def/kill
> rules, see PR408. Currently it finds a lot of multiply defined
> registers in targets using subregisters (X86 and Blackfin).
>
> I would like to fix this in LiveVariables / LiveIntervals. Are there
> any major roadblocks I should be aware of?

We have (sort of) plans to replace LiveVariables. One of which is  
splitting it into two (physical register liveness and virtual register  
liveness). The reason being virtual register liveness is computation  
is done globally while the physical register liveness is local. That  
may allow us to run the later multiple times without incurring too  
high a compile time cost (and simplify other passes).

The other idea is to replace liveness computation with a lazy / on  
demand version. You can search the archive for some discussions.

Of course, neither of these should stop you from fixing existing  
bugs. :-)

Evan

>
> /jakob
>
> _______________________________________________
> 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