[PATCH] D20949: [AggressiveAntiDepBreaker] Don't change aliased registers of liveins to alive in StartBlock

Chuang-Yu Cheng via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 14 03:17:49 PDT 2016


cycheng added a comment.

[Discussion in mail]

Hal:
I think the real question here is, can you have:

  BB1:
    def r
    use r
  
  BB2:
    live-ins: R
    use R

or something along those lines? If so, does this work correctly?

CY:
Yes, it is still work correctly! Because:

Case1:

  BB1:
    def R => R=g0 (Now, R is dead, i.e. enter into new life cycle)
    use R => use: R=g0 (because R is live)
    def r   => (assume this is the last define) r=gM -> g0 (via R)
    use r  => last use: g0 -> gM
  
  BB2:
    live-ins: R
    use R

Case2:

  BB1:
  ln1  def r   => r=g0
  ln2  use r  => use: g0 (it is live because of ln7)
  ln3
  ln4  def R => R=gM->g0 (via r) 
  ln5  use R => use: R=g0->gM (last use)
  ln6
  ln7  def R => R=g0 (Now, R is dead, i.e. enter into new life cycle, update alias' live-info)
  ln8  use R => use: R=g0 (because R is live)
  
  BB2:
    live-ins: R
    use R


http://reviews.llvm.org/D20949





More information about the llvm-commits mailing list