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>&nbsp;</td></tr>
+   <tr><td><b>Time</b></td> <td><b>Speaker</b></td> <td><b>Title</b></td> <td>&nbsp;</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>&nbsp;</td>
   </tr>
 
   <tr>
-    <td>17:00-</td>
+    <td>16:45-</td>
     <td>&nbsp;</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 &amp; Tools Workshop.</li>
+  <li><a href="https://www.eventbrite.com/e/94343837959">Diversity and Inclusion in Compilers &amp; 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>