<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>