[www] r294232 - Add GSoC projects for Clang SA.

Vassil Vassilev via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 6 12:23:50 PST 2017


Author: vvassilev
Date: Mon Feb  6 14:23:50 2017
New Revision: 294232

URL: http://llvm.org/viewvc/llvm-project?rev=294232&view=rev
Log:
Add GSoC projects for Clang SA.

Modified:
    www/trunk/OpenProjects.html

Modified: www/trunk/OpenProjects.html
URL: http://llvm.org/viewvc/llvm-project/www/trunk/OpenProjects.html?rev=294232&r1=294231&r2=294232&view=diff
==============================================================================
--- www/trunk/OpenProjects.html (original)
+++ www/trunk/OpenProjects.html Mon Feb  6 14:23:50 2017
@@ -10,6 +10,17 @@
           instantiations</a>
       </li>
     </ul>
+    <ul><a href="http://clang-analyzer.llvm.org/">Clang Static Analyzer</a>
+      <li><a href="#clang-sa-virt-calls">Warn if virtual calls are made from
+          constructors or destructors</a>
+      </li>
+      <li><a href="#clang-sa-atomics">Model C++11 and C11 atomics in the
+          analyzer</a>
+      </li>
+      <li><a href="#clang-sa-escape-analysis">Implement fast escape analysis for
+          clang AST</a>
+      </li>
+    </ul>
     <ul><a href="http://compiler-rt.llvm.org/">Compiler-rt</a>
       <li><a href="#compiler-rt-port-to-other-platforms">Port compiler-rt
           components to other platforms</a>
@@ -132,6 +143,73 @@ Welcome prospective Google Summer of Cod
 
 <!-- *********************************************************************** -->
 <div class="www_subsubsection">
+  <a name="clang-sa-virt-calls">Warn if virtual calls are made from constructors
+    or destructors.</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="www_text"> 	 
+  <p><b>Description of the project: </b>
+    Implement a path-sensitive checker that warns if virtual calls are made from
+    constructors and destructors, which is not valid in case of pure virtual
+    calls and could be a sign of user error in <a href="https://isocpp.org/wiki/faq/strange-inheritance#calling-virtuals-from-ctors">non-pure calls</a>.
+    <br />
+    The current virtual calls checker, implemented in VirtualCallChecker.cpp,
+    needs to be re-implemented in a path-sensitive way.  The lack of
+    path-sensitive reasoning may result in false positives in the
+    inter-procedural mode, which is disabled now for that reason.
+    The false positives could happen when a called function uses a member
+    variable flag to track whether initialization is complete and relies on the
+    flag to ensure that the virtual member function is not called during
+    initialization. Further, the path diagnostic should be used to highlight
+    both the virtual call and the path from the constructor. Last, we will need
+    to evaluate if the warning should be issued for both calls to pure virtual
+    functions (which is always an error) and non-pure virtual functions (which
+    is more of a code smell and may be a false positive). 
+  </p>
+  <p><b>Confirmed Mentor:</b>Anna Zaks</p>
+</div>
+
+<!-- *********************************************************************** -->
+<div class="www_subsubsection">
+  <a name="clang-sa-atomics">Model C++11 and C11 atomics in the analyzer.</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="www_text"> 	 
+  <p><b>Description of the project: </b>
+    Enhance the clang static analyzer by adding models of C++11 and C11 atomic
+    operations, such as std::atomic_compare_exchange_*. Currently, these
+    operations are being treated opaquely, which results in loss of precision
+    when analyzing the code that uses these instructions. To address the
+    problem, one would need to programmatically construct AST that simulates
+    these APIs to the BodyFarm of the analyzer. BodyFarm is the API used for
+    modeling system APIs. Finally, the work would also include writing tests
+    for the various APIs and checking that the analyzer correctly models
+    atomics. 
+  </p>
+  <p><b>Confirmed Mentor:</b>Anna Zaks</p>
+</div>
+
+<!-- *********************************************************************** -->
+<div class="www_subsubsection">
+  <a name="clang-sa-escape-analysis">Implement fast escape analysis for
+    clang AST.</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="www_text"> 	 
+  <p><b>Description of the project: </b>
+    The static analyzer and the compiler that operate on top of clang AST could
+    use the results of a fast pointer analysis such as "Points-to analysis in
+    almost linear time" by Bjarne Steensgaard. 
+  </p>
+  <p><b>Confirmed Mentor:</b>Devin Coughlin</p>
+</div>
+
+
+<!-- *********************************************************************** -->
+<div class="www_subsubsection">
   <a name="compiler-rt-port-to-other-platforms">Port compiler-rt components to
     other platforms.</a>
 </div>




More information about the llvm-commits mailing list