<div dir="ltr">Hi,<div><br></div><div>I wanted to give a heads-up that I've been looking into replacing the AliasSetTracker(AST) with MemorySSA in the Loop Invariant Code Motion (LICM) pass.</div><div>I would love to get feedback on the best way to incrementally push in this change.</div><div><br></div><div>Motivation:</div><div>There has been an outstanding issue with using the Alias Set Tracker due to its expensive construction time (quadratic). </div><div>We've had test cases take forever to compile, where the largest time was spent constructing the AST in LICM.</div><div>We've also had to degrade the AST results as a temporary fix to resolve this (D23432).</div><div>The hope is that by using MemorySSA instead, which has linear construction time, we can avoid this issues and decrease compile times.</div><div><br></div><div>Some initial discussion points: </div><div>1. As a first step, I'm looking at having MemorySSA as a dependency only for LICM, in the old pass manager.</div><div>2. In the future, MemorySSA may become one of the loop passes that's readily available for all loops in the new pass manager. This will be a more extensive change and it may require analyzing the overhead of preserving MemorySSA by all loop passes.</div><div>3. As was pointed out in an earlier thread, MemorySSA could be used to implement AliasSetTracker. I am not looking into that. I'm looking into explicitly using MemorySSA, instead of the AliasSetTracker.</div><div>If there are issues with this choice, please raise them here.</div><div><br></div><div>As this is still work in progress, the feedback received will help shape how the replacement gets implemented and merged in.</div><div><br></div><div>Best,</div><div>Alina</div></div>