<html><body><p><font size="2">-----------------</font><br><font size="2">Wed, Nov 20, 2019:</font><br><font size="2">-----------------</font><br><br><font size="2">Loop Trip Count Value Profiling - Wael Yehia</font><br><font size="2">  - Proposal is to associate value profiles to each loop using the </font><br><font size="2">    llvm.loop metadata. </font><br><font size="2">  - Suggestion for consideration: maybe value profiling should be done</font><br><font size="2">    more generally on branches (as an extension to the presented proposal).</font><br><br><font size="2">LoopDeletion</font><br><font size="2">  - Motivation: some passes cause/create empty loops, then instead of </font><br><font size="2">    running loop deletion as a pass for all loops we may want to only</font><br><font size="2">    run it on loop nests that contain empty ones.</font><br><font size="2">  - Could we refactor it to create a loop-deletion utility?</font><br><font size="2">  - Loop deletion has some special hand shake with the old pass manager. </font><br><font size="2">    Need to detect if new pass manager is in use (via checking updater </font><br><font size="2">    pointer).</font><br><br><font size="2">Loop Analysis</font><br><font size="2">  - It appears that invalidating the LoopInfo analysis in a loop pass </font><br><font size="2">    does not cause the analysis to be rerun on next query.</font><br><font size="2">  - This may be because it is not a well-defined concept for the loop</font><br><font size="2">    pass manager to be invalidating the structure of the loop in the</font><br><font size="2">    middle of iterating over it.</font><br><br><font size="2">Order of subloops and basic blocks in LoopInfo</font><br><font size="2">  - LoopInfoBase::analyze tries to put loops and basic blocks in </font><br><font size="2">    program order, however update functions don't preserve this order.</font><br><font size="2">  - Might be a bug, but fixing it requires a lot of effort and has </font><br><font size="2">    compile-time impact. It may be better to have the consumers that </font><br><font size="2">    care about the order sort the blocks.</font><br><br><font size="2">Loop Unswitching:</font><br><font size="2">  - when old unswitching partially unswitches it simplifies the </font><br><font size="2">    branches, but the new unswitching doesn't do that as much. </font><br><font size="2">    This causes SCEV to not be able to generate proper expressions</font><br><font size="2">    in some cases. Philip has a patch to improve SCEV to handle</font><br><font size="2">    these more complex cases.</font><br><br><font size="2">- Status Updates</font><br><font size="2">  - DomTreeUpdater investigation (Kit)</font><br><font size="2">    - no update and the problem seems to have been fixed!</font><br><font size="2">  - Data Dependence Graph (Bardia)</font><br><font size="2">    - New patch to do topological sort will be posted soon.</font><br><font size="2">  - Loop Nest Analysis (Ettore)</font><br><font size="2">    - Updated patch to be posted soon.</font><br><br><br><font size="2">-----------------------------------</font><br><font size="2">Tentative Agenda for Dec 4, 2019</font><br><font size="2">-----------------------------------</font><br><br><font size="2">Scalar Evolution Education (Philip Reames)</font><br><br><font size="2">- Status Updates</font><br><font size="2">  - Data Dependence Graph (Bardia)</font><br><font size="2">  - Loop Nest Analysis (Ettore)</font><br><font size="2">  - Follow up on multi-dimensional array indexing RFC (Siddharth)</font><br><font size="2">  - Impact of Loop Rotation on existing passes (Min-Yih)</font><br><font size="2">  - Bugzilla bugs update</font><br><br><br><font size="2">Bardia Mahjour<br>Compiler Optimizations<br>IBM Toronto Software Lab</font><BR>
</body></html>