Merge branch 'master' of https://github.com/llvm/llvm-www
diff --git a/OpenProjects.html b/OpenProjects.html
index b434b68..81e1964 100755
--- a/OpenProjects.html
+++ b/OpenProjects.html
@@ -15,6 +15,15 @@
<li><a href="#llvm_ipo">Improve inter-procedural analyses and optimizations</a></li>
<li><a href="#llvm_par">Improve parallelism-aware analyses and optimizations</a></li>
<li><a href="#llvm_dbg_invariant">Make LLVM passes debug info invariant</a></li>
+ <li><a href="#llvm_mergesim">Improve MergeFunctions to incorporate MergeSimilarFunction patches and ThinLTO Support</a></li>
+ <li><a href="#llvm_dwarf_yaml2obj">Add DWARF support to yaml2obj</a></li>
+ <li><a href="#llvm_hotcold">Improve hot cold splitting to outline maximal SESE/SEME regions</a></li>
+ <li><a href="#llvm_pass_order">Advanced Heuristics for Ordering Compiler Optimization Passes</a></li>
+ <li><a href="#llvm_ml_scc">Machine learning and compiler optimizations: using inter-procedural analysis to select optimizations</a></li>
+ <li><a href="#llvm_postdominators">Add PostDominatorTree in LoopStandardAnalysisResults</a></li>
+ <li><a href="#llvm_loopnest">Create loop nest pass</a></li>
+ <li><a href="#llvm_instdump">Instruction properties dumper and checker</a></li>
+ <li><a href="#llvm_movecode">Unify ways to move code or check if code is safe to be moved</a></li>
</ul>
<li><a href="http://clang.llvm.org/"><b>Clang</b></a>
<ul>
@@ -323,6 +332,431 @@
</div>
<!-- *********************************************************************** -->
+
+<div class="www_subsubsection">
+ <a name="llvm_mergesim">Improve MergeFunctions to incorporate MergeSimilarFunction patches and ThinLTO Support</a>
+</div>
+<!-- *********************************************************************** -->
+
+ <div class="www_text">
+ <p><b>Description of the project:</b> MergeSimilarFunctions pass is able to
+ merge not just identical functions, but also functions with small differences in
+ their instructions to reduce code size. It does this by inserting control flow
+ and an additional argument in the merged function to account for the
+ differences.
+
+ This work was presented at
+ the <a href="http://llvm.org/devmtg/2013-11/#talk3">LLVM Dev Meeting in
+ 2013</a> A more detailed description was published in a paper at
+ <a href="http://dl.acm.org/citation.cfm?id=2597811">LCTES 2014</a>. The code
+ was released to the community at the time. Meanwhile, the pass has been in
+ production use at QuIC for the past few years and has been actively
+ maintained internally. In order to magnify the impact of
+ MergeSimilarFunctions, it has been ported to ThinLTO and the patches have
+ been upstreamed (see stack of 5 patches mentioned below). But instead of
+ replacing the existing MergeFunctions pass in LLVM-upstream the community
+ suggested we improve the existing one with the ideas from
+ MergeSimilarFunctions. And then leverage the ThinLTO on top of that. The
+ MergeSimilarFunction used in ThinLTO gives impressive code size reduction
+ across a wide range of workloads and the work was presented at
+ <a href="https://llvm.org/devmtg/2018-10/talk-abstracts.html#talk2">LLVM-dev
+ 2018</a>. The LLVM project would greatly benefit from this code size
+ optimization as most embedded systems (think SmartPhones) applications are
+ constrained on code-size.
+ </p>
+ <p><b>Preparation resources:</b>
+ <ul>
+ <li>
+ Stack of patches:
+ <ul>
+ <li>
+ <a href="https://reviews.llvm.org/D52896">MergeSimilarFunctions 1/n: a code size pass to merge functions with small differences</a>
+ </li>
+ <li>
+ <a href="https://reviews.llvm.org/D52898">[Porting MergeSimilarFunctions 2/n] Changes to DataLayout</a>
+ </li>
+ <li>
+ <a href="https://reviews.llvm.org/D52966">[Merge SImilar Function ThinLTO 3/n] Add hash code to function summary</a>
+ </li>
+ <li>
+ <a href="https://reviews.llvm.org/D53253">[Merge SImilar Function ThinLTO 4/n] Make merge function decisions before the thin-lto stage</a>
+ </li>
+ <li>
+ <a href="https://reviews.llvm.org/D53254">[Merge SImilar Function ThinLTO 5/n] Set up similar function to be imported</a>
+ </li>
+ </ul>
+ The paches can be easily applied to LLVM-trunk and would give a developer a decent head start ;).
+ </li>
+ <li>
+ <a href="http://dl.acm.org/citation.cfm?id=2597811">The original paper: LCTES 2014</a>
+ </li>
+ <li>
+ <a href="https://llvm.org/devmtg/2018-10/talk-abstracts.html#talk2">Video and slides of the presentation</a>
+ </li>
+ </ul>
+ </p>
+ <p><b>Expected results:</b>
+ <ul>
+ <li>
+ Improve MergeFunctions to have feature parity with MergeSimilarFunctions.
+ </li>
+ <li>
+ Enable MergeFunctions to ThinLTO.
+ </li>
+ </ul>
+ </p>
+
+ <p><b>Confirmed Mentors:</b>Aditya Kumar (hiraditya on IRC and phabricator)</p>
+
+ <p><b>Desirable skills:</b>
+ Course on compiler design, SSA Representation,
+ Intermediate knowledge of C++, Familiarity with LLVM Core.
+ </p>
+</div>
+
+<!-- *********************************************************************** -->
+<div class="www_subsubsection">
+ <a name="llvm_dwarf_yaml2obj">Add DWARF support to yaml2obj</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="www_text">
+ <p><b>Description of the project:</b>
+ LLVM provides a tool called yaml2obj which coverts a YAML document into an
+ object file, for various different file formats such as ELF, COFF and
+ Mach-O, along with obj2yaml which does the inverse. The tool is commonly
+ used to test parts of LLVM, as YAML is often easier to use to describe an
+ object file than raw assembly and more maintainable than a pre-built binary.
+ DWARF is a debugging file format commonly used by LLVM. Many of the tests
+ for LLVM’s DWARF emission are written in assembly, but it would be nicer to
+ write them in YAML. However, yaml2obj does not properly support emission of
+ DWARF sections. This project is to add functionality to yaml2obj to make
+ writing test inputs for DWARF tests simpler, particularly for ELF objects.
+ </p>
+
+ <p><b>Preparation resources:</b>
+ Reading up on the DWARF file format will be useful, in particular the
+ standards available at http://dwarfstd.org/Download.php. Also, familiarising
+ yourself with the basics of the ELF file format, as described here
+ https://www.sco.com/developers/gabi/latest/contents.html, may be beneficial.
+ </p>
+ <p><b>Expected results:</b>
+ The ability to use yaml2obj to generate DWARF sections for object files.
+ Particularly important is ensuring the input YAML can be more easily
+ understood than the equivalent assembly.
+ </p>
+
+ <p><b>Confirmed Mentors:</b> James Henderson</p>
+
+ <p><b>Desirable skills:</b>
+ Intermediate knowledge of C++.
+ </p>
+</div>
+
+<!-- *********************************************************************** -->
+
+<div class="www_subsubsection">
+ <a name="llvm_hotcold">Improve hot cold splitting to outline maximal SESE/SEME regions</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="www_text">
+ <p><b>Description of the project:</b> Hot Cold Splitting in LLVM is an IR level
+ function splitting transformation. The goal of hot/cold splitting is to improve
+ the memory locality of code and helps reduce startup working set. The splitting pass
+ does this by identifying cold blocks and moving them into separate functions. Because it
+ is implemented at the IR level all the back end target benefit from it.
+
+ It is a relatively new optimization and it was recently presented at
+ the <a href="https://llvm.org/devmtg/2019-10/talk-abstracts.html#tech8">LLVM Dev Meeting in
+ 2019</a> and the slides are <a href="https://llvm.org/devmtg/2019-10/slides/Kumar-HotColdSplitting.pdf">here</a>
+ Currently, hot cold splitting works as a greedy algorithm where a region found
+ by first cold basic block is given preference. When a new region is found which
+ intersects with an existing region, the new region is dropped. One approach
+ would be to first run an analysis pass to find a set of SESE/SEME regions and do
+ some bookkeeping to detect the most profitable ones. The goal should be to not
+ regress and keep the compile time linear. There are fast algorithms to detect
+ SESE regions as illustrated in
+ (http://impact.gforge.inria.fr/impact2016/papers/impact2016-kumar.pdf), we can
+ additionally leverage the existing RegionInfo as well if that has acceptable
+ compilation time complexity.
+ </p>
+ <p><b>Preparation resources:</b>
+ <ul>
+ <li>
+ <a href="http://lists.llvm.org/pipermail/llvm-dev/2019-January/129606.html">Update on hot cold splitting</a>
+ </li>
+ <li>
+ The following two papers provide earlier work on hot cold splitting. While these papers are a good start, LLVM's
+ HCS has completely different implementation in two aspects a) It is implemented at IR level and outlines basic
+ blocks as function rather than naked branches. b) It is based on regions and outlines a set of basic blocks.
+ <ul>
+ <li>
+ <a href="http://pages.cs.wisc.edu/~fischer/cs701.f05/code.positioning.pdf">Original paper on hot cold splitting by
+ Pettis and Hansen.</a>Section 5 on procedure splitting is interesting one. It has nice examples ;) to help
+ understand why HCS works.
+ </li>
+ <li>
+ <a href="https://www.cs.cmu.edu/afs/cs/academic/class/15745-s07/www/papers/p80-cohn.pdf">Paper on hot cold
+ splitting</a> The paper provides some details on one approach to split functions. This is helpful to get a
+ different perspective and may help get new ideas.
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="https://llvm.org/devmtg/2019-10/talk-abstracts.html#tech8">Video and slides of the presentation</a>
+ </li>
+ </ul>
+ </p>
+ <p><b>Expected results:</b>
+ <ul>
+ <li>
+ Improve Hot Cold Splitting to detect maximal SEME regions without incurring super linear compile time overhead.
+ In case compile time overhead becomes quadratic, come up with a cost model to detect when quadratic behavior
+ gets triggered and bail out based on a compiler flag.
+ </li>
+ </ul>
+ </p>
+
+ <p><b>Confirmed Mentors:</b>Aditya Kumar (hiraditya on IRC and phabricator)</p>
+
+ <p><b>Desirable skills:</b>
+ Course on compiler design, SSA Representation,
+ Intermediate knowledge of C++, Familiarity with LLVM Core.
+ </p>
+</div>
+
+<!-- *********************************************************************** -->
+
+<div class="www_subsubsection">
+ <a name="llvm_pass_order">Advanced Heuristics for Ordering Compiler Optimization Passes</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="www_text">
+ <p><b>Description of the project:</b>
+Selecting optimization passes for given application is very important but
+non-trivial problem because of the huge size of the compiler transformation
+space (incl. pass ordering). While the existing heuristics can provide high
+performance code for certain applications, they cannot easily benefit a wide
+range of application codes. The goal of the project is to learn the interplay
+between LLVM transformation passes and code structures, then improve the
+existing heuristics (or replace the heuristics with machine learning-based
+models) so that the LLVM compiler can provide a superior order of the passes
+customized per application.
+ </p>
+ <p><b>Expected results (possibilities):</b>
+ <ul>
+ <li>
+Insights about (implicit) dependences between existing passes.
+ </li>
+ <li>
+New pass pipelines (think -O3a, -O3b, ...) selectable by the user that tend to perform substantially better on certain kinds of programs.
+ </li>
+ <li>
+An improved LLVM pass heuristic or new machine learning-based models that can select
+the best order for LLVM transformation passes based on code structures.
+ </li>
+ </ul>
+ </p>
+
+ <p><b>Confirmed Mentors:</b>EJ Park, Giorgis Georgakoudis, Johannes Doerfert</p>
+
+ <p><b>Desirable skills:</b>
+ C++, Python, experience with LLVM and learning-based prediction preferable.
+ </p>
+</div>
+
+<!-- *********************************************************************** -->
+
+<div class="www_subsubsection">
+ <a name="llvm_ml_scc">Machine learning and compiler optimizations: using inter-procedural analysis to select optimizations</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="www_text">
+ <p><b>Description of the project:</b>
+Current machine learning models for compiler optimization select the best
+optimization strategies for functions based on isolated per function analysis.
+In this approach, the constructed models are not aware of any relationships
+with other functions around it (callers or callees) which can be helpful to
+decide the best optimization strategies for each function. In this project, we
+want to explore the SCC (Strongly Connected Components) call graph to add
+inter-procedural features in constructing machine learning-based models to find
+the best optimization strategies per function. Moreover, we want to explore the
+case that it is helpful to group strongly related functions together and
+optimize them as a group, instead of per function.
+ </p>
+ <p><b>Expected results (possibilities):</b>
+ <ul>
+ <li>
+Improved heuristics for existing (inter-procedural) passes, e.g. to weight inlining versus function cloning based on code features.
+ </li>
+ <li>
+Machine learning models to select the best optimizations using code features
+and inter-procedural analysis. This model can be used for functions in
+isolation or groups of functions, e.g., CGSCCs.
+ </li>
+ </ul>
+ </p>
+
+ <p><b>Confirmed Mentors:</b>EJ Park, Giorgis Georgakoudis, Johannes Doerfert</p>
+
+ <p><b>Desirable skills:</b>
+ C++, Python, experience with LLVM and learning-based prediction preferable.
+ </p>
+</div>
+
+<!-- *********************************************************************** -->
+
+<div class="www_subsubsection">
+ <a name="llvm_postdominators"></a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="www_text">
+ <p><b>Description of the project:</b>
+ There is currently no easy way to use the result of
+ PostDominatorTreeAnalysis in a loop pass, as PostDominatorTreeAnalysis is a
+ function analysis, and it is not included in LoopStandardAnalysisResults. If one adds
+ PostDominatorTreeAnalysis in LoopStandardAnalysisResults, then all loop passes
+ need to preserve it, meaning that all loop passes need to make sure the result is up to
+ date. In this project, we want to modify some commonly used utilities to generate a
+ list of updates, which can be consume by different updaters, e.g. DomTreeUpdater to
+ update DominatorTree and PostDominatorTree, and MSSAU to update MemorySSA,
+ etc, instead of only updating the DominatorTree. In additional, we want to change
+ existing loop passes to preserve the PostDominatorTree. Finally, adding
+ PostDominatorTree in LoopStandardAnalysisResults.
+ </p>
+ <p><b>Expected results (possibilities):</b>
+ PostDominatorTree added in LoopStandardAnalysisResults, and
+ can be used by loop passes. More common utilities change to generate list of updates
+ to be easily obtained by different updaters.
+ </p>
+ <p><b>Confirmed Mentors:</b>
+ Whitney Tsang, Ettore Tiotto, Bardia Mahjour
+ </p>
+ <p><b>Desirable skills:</b>
+ Intermediate knowledge of C++, self-motivation.
+ </p>
+ <p><b>Preparation resources:</b>
+ <a href="https://reviews.llvm.org/rL336163"></a>
+ <a href="http://llvm.org/doxygen/classllvm_1_1DomTreeUpdater.html"></a>
+ <a href="https://llvm.org/doxygen/classllvm_1_1PostDominatorTreeAnalysis.html"></a>
+ <a href="http://llvm.org/doxygen/structllvm_1_1LoopStandardAnalysisResults.html"></a>
+</div>
+
+<!-- *********************************************************************** -->
+
+<div class="www_subsubsection">
+ <a name="llvm_loopnest">Create LoopNest Pass</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="www_text">
+ <p><b>Description of the project:</b>
+ Currently if you want to write a pass that works on a loop
+ nest, you have to pick from either a function pass or a loop pass. If you chose to write
+ it as a function pass, then you lose the ability to add loops dynamically back to the
+ pipeline. If you decide to write it as a loop pass, then you are wasting compile time to
+ traverse to your pass and return right away when the given loop is not the outermost
+ loop. In this project, we want to create a LoopNestPass, where transformations
+ intended for loop nest can inherit from it, and have the same ability as the LoopPass to
+ dynamically add loops to the pipeline. In addition, create all the adaptors requires to
+ add loop nest passes at different points of the pass builder.
+ </p>
+ <p><b>Expected results (possibilities):</b>
+ Transformations/Analyses can be written as LoopNestPass,
+ without compromising compile time or usability.
+ </p>
+ <p><b>Confirmed Mentors:</b>
+ Whitney Tsang, Ettore Tiotto
+ </p>
+ <p><b>Desirable skills:</b>
+ Intermediate knowledge of C++, self-motivation.
+ </p>
+ <p><b>Preparation resources:</b>
+ <a href="https://reviews.llvm.org/D68789"</a>
+ <a href="https://llvm.org/doxygen/classllvm_1_1PassBuilder.html"</a>
+ </p>
+</div>
+
+<!-- *********************************************************************** -->
+
+<div class="www_subsubsection">
+ <a name="llvm_instdump">Instruction properties dumper and checker</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="www_text">
+ <p><b>Description of the project:</b>
+ TableGen is flexible and allow the end-user to define and set common properties of
+ records (instructions). Every target has dozens or hundreds of such instruction
+ properties. As target code evolve, the td files become more and more complicated,
+ it become harder to see whether the setting of some properties is necessary, even
+ correct or not. eg: whether hasSideEffects property is correctly set on all
+ instructions?
+
+ One can manually search through the TableGen-generated files; or write some
+ script to run TableGen and matching the output for some specific properties, but a
+ standalone utility that can dump and check instruction properties
+ systematically (eg: also allow target to define some verification rules) might be
+ better from a build-process-management standpoint. This can help to find quite
+ some hidden bugs and hence improve the overall codegen code quality. In
+ addition, the utility can be used to write regression tests for instruction
+ properties, which will increase the quality and precision of LLVM's
+ regression tests.
+ </p>
+ <p><b>Expected results (possibilities):</b>
+ A standalone llvm tool or utility that can dump and check instruction properties systematically
+ </p>
+ <p><b>Confirmed Mentors:</b>
+ Hal Finkel, Jinsong Ji , Qingshan Zhang
+ </p>
+ <p><b>Desirable skills:</b>
+ Intermediate knowledge of C++, self-motivation.
+ </p>
+</div>
+
+<!-- *********************************************************************** -->
+
+<div class="www_subsubsection">
+ <a name="llvm_movecode">Unify ways to move code or check if code is safe to be moved</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="www_text">
+ <p><b>Description of the project:</b>
+ Determining whether it is safe to move code around is
+ implemented in several transformations in LLVM (e.g. canSinkOrHoistInst in LICM,
+ or makeLoopInvariant in Loop). Each of these implementations may return different
+ results for a given query, making code motion safety checks inconsistent and
+ duplicated. On the other hand, the mechanism for doing the actual code motion is also
+ different in each transformation. Code duplication causes maintenance problems and
+ increases the time taken to write new transformation. In this project, we want to first
+ identify all the existing ways in loop transformations (could be function or loop pass)
+ to check if code is safe to move, and to move code, and create a standardize way to do
+ so.
+ </p>
+ <p><b>Expected results (possibilities):</b>
+ A standardize/superset of all the existing ways in loop
+ transformations of checking if code is safe to be moved and to move <code class=""></code>
+ </p>
+
+ <p><b>Confirmed Mentors:</b>
+ Whitney Tsang, Ettore Tiotto, Bardia Mahjour
+ </p>
+ <p><b>Desirable skills:</b>
+ Intermediate knowledge of C++, self-motivation.
+ </p>
+ <p><b>Preparation resources:</b>
+ <a href="https://github.com/llvm/llvm-project/blob/master/llvm/include/llvm/Transforms/Utils/CodeMoverUtils.h"></a>
+ <a href="https://llvm.org/doxygen/LICM_8cpp_source.html"></a>
+ <a href="https://llvm.org/doxygen/classllvm_1_1Loop.html"></a>
+ </p>
+</div>
+
+<!-- *********************************************************************** -->
<div class="www_subsection">
<a>MLIR</a>
</div>
@@ -477,8 +911,8 @@
<p>
This project is about implementing autosuggestions in LLDB's editline-based command shell.
</p>
- <p><b>Confirmed Mentor:</b>Jonas Devlieghere and <a href="mailto:teemperor@gmail.com?subject=[GSoC]%20Autosuggestions">Raphael Isemann</a></p>
-
+ <p><b>Confirmed Mentor:</b>
+ <a href="mailto:teemperor@gmail.com,jonas@devlieghere.com?subject=[GSoC]%20Autosuggestions">Jonas Devlieghere and Raphael Isemann</a></p>
<p><b>Desirable skills:</b>
Intermediate knowledge of C++.
</p>
diff --git a/devmtg/2019-10/index.html b/devmtg/2019-10/index.html
index 5e4cd19..fb19a00 100755
--- a/devmtg/2019-10/index.html
+++ b/devmtg/2019-10/index.html
@@ -157,7 +157,7 @@
<li>
<a href="talk-abstracts.html#tech8">
Hot Cold Splitting Optimization Pass In LLVM
- </a> - Aditya Kumar [ <a href="https://youtu.be/Q8rqGg6vHAE">Videos</a> ] [ Slides ]
+ </a> - Aditya Kumar [ <a href="https://youtu.be/Q8rqGg6vHAE">Videos</a> ] [<a href="https://llvm.org/devmtg/2019-10/slides/Kumar-HotColdSplitting.pdf"> Slides </a> ]
</li>
<li>
<a href="talk-abstracts.html#tech9">
diff --git a/devmtg/2019-10/slides/Kumar-HotColdSplitting.pdf b/devmtg/2019-10/slides/Kumar-HotColdSplitting.pdf
new file mode 100644
index 0000000..d968222
--- /dev/null
+++ b/devmtg/2019-10/slides/Kumar-HotColdSplitting.pdf
Binary files differ
diff --git a/devmtg/2019-10/talk-abstracts.html b/devmtg/2019-10/talk-abstracts.html
index 96548ef..78d75ba 100644
--- a/devmtg/2019-10/talk-abstracts.html
+++ b/devmtg/2019-10/talk-abstracts.html
@@ -124,7 +124,7 @@
<li>
<a id="tech8">
Hot Cold Splitting Optimization Pass In LLVM
- </a> [ <a href="https://youtu.be/Q8rqGg6vHAE">Videos</a> ] [ Slides ]
+ </a> [ <a href="https://youtu.be/Q8rqGg6vHAE">Videos</a> ] [<a href="https://llvm.org/devmtg/2019-10/slides/Kumar-HotColdSplitting.pdf"> Slides </a>]
<br />
<i>Aditya Kumar</i>
<p>
diff --git a/devmtg/2020-02-23/index.html b/devmtg/2020-02-23/index.html
index 5fb6cc9..bac703a 100755
--- a/devmtg/2020-02-23/index.html
+++ b/devmtg/2020-02-23/index.html
@@ -28,6 +28,7 @@
<ul>
<li><b>Conference Dates</b>: Sunday February 23rd, 2020</li>
<li><b>Location</b>: Hilton San Diego Resort and Spa, San Diego, CA, USA</li>
+ <li><b>Conference Room</b>: Portofino</li>
</ul>
</td>
</tr></table>
@@ -36,17 +37,15 @@
<div class="www_sectiontitle" id="#schedule">Preliminary Schedule</div>
<p>
<table width="100%">
- <tr><td><b>Time</b></td> <td><b>Room</b></td> <td><b>Speaker</b></td> <td><b>Title</b></td> <td> </td></tr>
+ <tr><td><b>Time</b></td> <td><b>Speaker</b></td> <td><b>Title</b></td> <td> </td></tr>
<tr>
<td>9:15-9:50</td>
- <td>tba</td>
<td>Simon Moll</td>
<td>An Overview of the Region Vectorizer</td>
<td><a href="#sm">[Abstract]</a> </td>
</tr>
<tr>
<td>9:50-10:15</td>
- <td>tba</td>
<td>Prithayan Barua</td>
<td>Optimized Memory Movement for OpenMp target offloading</td>
<td><a href="#pb">[Abstract]</a> </td>
@@ -58,22 +57,20 @@
</tr>
<tr>
- <td>10:30-10:45</td>
- <td>tba</td>
+ <td>10:30-11:05</td>
<td>Utpal Bora, Santanu Das, Pankaj Kureja, Saurabh Joshi, Ramakrishna Upadrasta and Sanjay Rajopadhye</td>
<td>LLOV: A Fast Static Data-Race Checker for OpenMP Programs</td>
<td><a href="#ub">[Abstract]</a> </td>
+ <td>[<a href="https://llvm.org/devmtg/2020-02-23/slides/Utpal-LLOV.pdf"> Slides </a> ]
</tr>
<tr>
- <td>10:45-11:30</td>
- <td>tba</td>
+ <td>11:05-11:30</td>
<td>Johannes Doerfert</td>
<td>OpenMP in LLVM --- A Design and Implementation Overview</td>
<td><a href="#jd1">[Abstract]</a> </td>
</tr>
<tr>
<td>11:30-12:00</td>
- <td>tba</td>
<td>-</td>
<td>Discussion Round --- Participating in LLVM - GSoC and other opportunities</td>
<td></td>
@@ -85,7 +82,6 @@
</tr>
<tr>
<td>13:30-14:30</td>
- <td>tba</td>
<td>William Moses and Johannes Doerfert</td>
<td>Keynote: "Header Time Optimization": Cross-Translation Unit Optimization via Annotated Headers</td>
<td><a href="#wm">[Abstract]</a>
@@ -93,10 +89,10 @@
</tr>
<tr>
<td>14:30-15:00</td>
- <td>tba</td>
<td>Shilei Tian, Johannes Doerfert and Barbara Chapman</td>
<td>Asynchronous OpenMP Offloading on NVIDIA GPUs</td>
<td><a href="#st">[Abstract]</a>
+ <td>[<a href="https://llvm.org/devmtg/2020-02-23/slides/Shilei-multistreams.pdf"> Slides </a> ]
</td>
</tr>
<tr>
@@ -106,28 +102,26 @@
</tr>
<tr>
<td>15:15-15:45</td>
- <td>tba</td>
<td>Kyungwoo Lee and Nikolai Tillmann</td>
<td>Global Machine Outliner for ThinLTO</td>
<td><a href="#kl">[Abstract]</a>
+ <td>[<a href="https://llvm.org/devmtg/2020-02-23/slides/Kyungwoo-GlobalMachineOutlinerForThinLTO.pdf"> Slides </a> ]
</tr>
<tr>
<td>15:45-16:15</td>
- <td>tba</td>
<td>Aditya Kumar, Ian Levesque, Sam Todd</td>
<td>Cheap function entry instrumentation to collect runtime metrics</td>
<td><a href="#ak">[Abstract]</a>
</tr>
<tr>
- <td>16:15-17:00</td>
- <td>tba</td>
+ <td>16:15-16:45</td>
<td>Johannes Doerfert</td>
<td>Interactive introduction: The Attributor: A Versatile Inter-procedural Fixpoint Iteration Framework</td>
<td> </td>
</tr>
<tr>
- <td>17:00-</td>
+ <td>16:45-</td>
<td> </td>
<td colspan=3>Open Discussion Round</td>
</tr>
diff --git a/devmtg/2020-02-23/slides/Kyungwoo-GlobalMachineOutlinerForThinLTO.pdf b/devmtg/2020-02-23/slides/Kyungwoo-GlobalMachineOutlinerForThinLTO.pdf
new file mode 100644
index 0000000..f914eef
--- /dev/null
+++ b/devmtg/2020-02-23/slides/Kyungwoo-GlobalMachineOutlinerForThinLTO.pdf
Binary files differ
diff --git a/devmtg/2020-02-23/slides/Shilei-multistreams.pdf b/devmtg/2020-02-23/slides/Shilei-multistreams.pdf
new file mode 100644
index 0000000..f1cf658
--- /dev/null
+++ b/devmtg/2020-02-23/slides/Shilei-multistreams.pdf
Binary files differ
diff --git a/devmtg/2020-02-23/slides/Utpal-LLOV.pdf b/devmtg/2020-02-23/slides/Utpal-LLOV.pdf
new file mode 100644
index 0000000..bf08b27
--- /dev/null
+++ b/devmtg/2020-02-23/slides/Utpal-LLOV.pdf
Binary files differ
diff --git a/devmtg/2020-04/index.html b/devmtg/2020-04/index.html
index 01c4479..30e20a7 100755
--- a/devmtg/2020-04/index.html
+++ b/devmtg/2020-04/index.html
@@ -115,7 +115,7 @@
<li><s>January 10, 2020 - Travel Grant Applications Open</s></li>
<li><s>January 24, 2020 - Presentation Acceptance Notification</s></li>
<li><s>January 26, 2020 - Travel Grant Application Deadline</s></li>
- <li>February 7, 2020 - Travel Grant Notification</li>
+ <li><s>February 7, 2020 - Travel Grant Notification</s></li>
<li>February 28, 2020 - Late Registration Starts</li>
<li>March 27, 2020 - Registration Closes</li>
<li>April 6-7, 2020 - LLVM Developers' Meeting</li>
@@ -769,12 +769,15 @@
interested in networking and meeting other new LLVM Developers, then you
should attend this session. Attending the newcomers session is free but
requires registration (for organizational purpose).</li>
-</ul>
-</p>
-
-<p>Coming soon:
-<ul>
- <li>Diversity and Inclusion in Compilers & Tools Workshop.</li>
+ <li><a href="https://www.eventbrite.com/e/94343837959">Diversity and Inclusion in Compilers & Tools Workshop.</a>
+ This event features speakers and discussion aiming to increase diversity
+ and inclusion within the LLVM community, attendee's workplace or
+ university, and within the field of compilers and tools. It is open to
+ anyone who is interested in these efforts. Our featured speaker this year
+ is Adelina Chalmers; she will be giving a talk entitled <b>"Don’t Let Fear of
+ Feedback Stop your Contributions: How to Respond to Negative Feedback"</b>. You
+ can find more about Adelina and her talk on the registration web page.
+ </li>
</ul>
</p>
diff --git a/foundation/documents/index.html b/foundation/documents/index.html
index b9c4666..e5334d7 100755
--- a/foundation/documents/index.html
+++ b/foundation/documents/index.html
@@ -16,6 +16,7 @@
Board Meeting Minutes
<ul>
+<li><a href="minutes/2020-02-07.pdf">February 7, 2020</a></li>
<li><a href="minutes/2020-01-10-LLVMFoundation-BoardMeetingMinutes.pdf">January 10, 2020</a></li>
<li><a href="minutes/2019-12-06-LLVMFoundation-BoardMeeting Minutes.pdf">December 6, 2019</a></li>
<li><a href="minutes/2019-11-01-LLVMFoundation-BoardMeetingMinutes.pdf">November 1,2019</a></li>
diff --git a/foundation/documents/minutes/2020-02-07.pdf b/foundation/documents/minutes/2020-02-07.pdf
new file mode 100644
index 0000000..9908c85
--- /dev/null
+++ b/foundation/documents/minutes/2020-02-07.pdf
Binary files differ
diff --git a/index.html b/index.html
index cf141e3..18ec0cb 100755
--- a/index.html
+++ b/index.html
@@ -79,6 +79,13 @@
<a href="http://clang.llvm.org/docs/DataFlowSanitizer.html">DataFlowSanitizer</a>.
</p></li>
+<li><p>The <b><a href="http://mlir.llvm.org">MLIR</a></b> subproject is a novel
+ approach to building reusable and extensible compiler infrastructure. MLIR
+ aims to address software fragmentation, improve compilation for heterogeneous
+ hardware, significantly reduce the cost of building domain specific compilers,
+ and aid in connecting existing compilers together.
+ </p></li>
+
<li><p>The <b><a href="http://openmp.llvm.org">OpenMP</a></b> subproject
provides an <a href="http://openmp.org">OpenMP</a> runtime for use with the
OpenMP implementation in Clang.</p></li>
@@ -175,7 +182,8 @@
<ul>
<li>Jan 15, 2020: branch, then rc1</li>
<li>Feb 11: rc2</li>
- <li>Feb 26: final tag</li>
+ <li>Mar 4: rc3</li>
+ <li>Soon: final tag</li>
</ul>
</li>