<div dir="ltr"><div><br></div>Hi, <div><br></div><div>We are caching TripCount of a loop in  "EpilogueLoopVectorizationInfo.TripCount"  during first pass ( Main Loop) vectorization. <br></div><div>I see we use the cached value at "emitMinimumVectorEpilogueIterCountCheck" during the second pass( Epilog Vector loop).<br></div><div><br></div><div>--Snip--</div><div>BasicBlock *<br>EpilogueVectorizerEpilogueLoop::emitMinimumVectorEpilogueIterCountCheck(<br>    Loop *L, BasicBlock *Bypass, BasicBlock *Insert) {<br><br>  assert(EPI.TripCount &&<br>         "Expected trip count to have been safed in the first pass.");<br>  assert(<br>      (!isa<Instruction>(EPI.TripCount) ||<br>       DT->dominates(cast<Instruction>(EPI.TripCount)->getParent(), Insert)) &&<br>      "saved trip count does not dominate insertion point.");<br>  Value *TC = EPI.TripCount;<br></div><div> --Snip--</div><div><div><br></div><div>Can  that be used in other places also in second pass?   (<b>TripCount = EPI.TripCount</b>).  In the trunk I see we are recomputing again via getOrCreateTripCount(L)  during the second pass (Epilog vector loop) </div><div>is it guaranteed that trip count will always dominate the epilog vector loop  and scalar loop ?</div><div><br></div><div>regards,</div></div><div>Venkat.</div></div>