[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