LWenH wrote:

> > Shouldn't we forget about L1 when we get to L2?
> 
> I agree with we should forget about L1 when we get to L2. The semantic of 
> `Copies[Unit].DefRegs` should be Registers defined by `Unit` in COPY 
> instructions, we want to keep this invariant during tracking. I think it's 
> appropriate to keep this property during `trackCopy`. After L2, `Copies[<r9's 
> units>].DefRegs` still containing `r0` is violating this property.

Address @qcolombet and @bzEq 's comments,  after more carefully 
reconsideration, I think we could always do this DefRegs record elimination 
when we inivoke the **clobberRegister** routine.  

When we clobber a single register(Def), the semantic of Src's **DefRegs** to 
contain Def is no longer effectual, because the **DefRegs** is always used in 
**findCopyDefViaUnit**  during the **BackwardCopyPropagateBlock** function.  
After we clobbering a single register, the Src is no longer propagatable 
either. In other word, we don't need to keep this record in the tracker after 
we clobbering a **Def** register.



https://github.com/llvm/llvm-project/pull/70778
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to