<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Aug 14, 2018, at 2:17 PM, Reid Kleckner <<a href="mailto:rnk@google.com" class="">rnk@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">After this, check-clang no longer worked, it emitted a fatal error because USE_Z3_SOLVER was not in lit_config.params. I worked around it in r339728, but you might want to double check it.</div></div></blockquote><div><br class=""></div><div>Hm that’s strange, it works for me, and the buildbots are quiet this time.</div><div>Sorry for the trouble.</div><div>Your change seems safe in either case.</div><br class=""><blockquote type="cite" class=""><div class=""><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Mon, Aug 13, 2018 at 4:13 PM George Karpenkov via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" class="">cfe-commits@lists.llvm.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: george.karpenkov<br class="">
Date: Mon Aug 13 16:12:43 2018<br class="">
New Revision: 339629<br class="">
<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=339629&view=rev" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=339629&view=rev</a><br class="">
Log:<br class="">
[analyzer] [NFC] Introduce separate targets for testing the analyzer: check-clang-analyzer and check-clang-analyzer-z3<br class="">
<br class="">
Current testing setup for analyzer tests with Z3 is rather inconvenient:<br class="">
<br class="">
There's no way to run the analyzer tests separately (I use<br class="">
LIT_FILTER=Analysis ninja check-clang, but a direct target is nicer).<br class="">
<br class="">
When Clang is built with Z3 support, there's no way to *not* run tests<br class="">
with Z3 solver, and this is often desired, as tests with Z3 solver take<br class="">
a very long time.<br class="">
<br class="">
This patch introduces two extra targets:<br class="">
<br class="">
 - check-clang-analyzer<br class="">
 - check-clang-analyzer-z3<br class="">
<br class="">
which solve those problems.<br class="">
<br class="">
Differential Revision: <a href="https://reviews.llvm.org/D50594" rel="noreferrer" target="_blank" class="">https://reviews.llvm.org/D50594</a><br class="">
<br class="">
Modified:<br class="">
    cfe/trunk/test/Analysis/analyzer_test.py<br class="">
    cfe/trunk/test/Analysis/lit.local.cfg<br class="">
    cfe/trunk/test/CMakeLists.txt<br class="">
    cfe/trunk/test/<a href="http://lit.site.cfg.py.in/" rel="noreferrer" target="_blank" class="">lit.site.cfg.py.in</a><br class="">
<br class="">
Modified: cfe/trunk/test/Analysis/analyzer_test.py<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/analyzer_test.py?rev=339629&r1=339628&r2=339629&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/analyzer_test.py?rev=339629&r1=339628&r2=339629&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/Analysis/analyzer_test.py (original)<br class="">
+++ cfe/trunk/test/Analysis/analyzer_test.py Mon Aug 13 16:12:43 2018<br class="">
@@ -4,6 +4,10 @@ import lit.TestRunner<br class="">
 # Custom format class for static analyzer tests<br class="">
 class AnalyzerTest(lit.formats.ShTest):<br class="">
<br class="">
+    def __init__(self, execute_external, use_z3_solver=False):<br class="">
+        super(AnalyzerTest, self).__init__(execute_external)<br class="">
+        self.use_z3_solver = use_z3_solver<br class="">
+<br class="">
     def execute(self, test, litConfig):<br class="">
         results = []<br class="">
<br class="">
@@ -19,7 +23,8 @@ class AnalyzerTest(lit.formats.ShTest):<br class="">
                 return results[-1]<br class="">
<br class="">
         # If z3 backend available, add an additional run line for it<br class="">
-        if test.config.clang_staticanalyzer_z3 == '1':<br class="">
+        if self.use_z3_solver == '1':<br class="">
+            assert(test.config.clang_staticanalyzer_z3 == '1')<br class="">
             results.append(self.executeWithAnalyzeSubstitution(<br class="">
                 saved_test, litConfig, '-analyzer-constraints=z3 -DANALYZER_CM_Z3'))<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/Analysis/lit.local.cfg<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/lit.local.cfg?rev=339629&r1=339628&r2=339629&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/lit.local.cfg?rev=339629&r1=339628&r2=339629&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/Analysis/lit.local.cfg (original)<br class="">
+++ cfe/trunk/test/Analysis/lit.local.cfg Mon Aug 13 16:12:43 2018<br class="">
@@ -7,7 +7,7 @@ import site<br class="">
 site.addsitedir(os.path.dirname(__file__))<br class="">
 import analyzer_test<br class="">
 config.test_format = analyzer_test.AnalyzerTest(<br class="">
-        config.test_format.execute_external)<br class="">
+        config.test_format.execute_external, config.use_z3_solver)<br class="">
<br class="">
 if not config.root.clang_staticanalyzer:<br class="">
     config.unsupported = True<br class="">
<br class="">
Modified: cfe/trunk/test/CMakeLists.txt<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CMakeLists.txt?rev=339629&r1=339628&r2=339629&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CMakeLists.txt?rev=339629&r1=339628&r2=339629&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CMakeLists.txt (original)<br class="">
+++ cfe/trunk/test/CMakeLists.txt Mon Aug 13 16:12:43 2018<br class="">
@@ -88,8 +88,15 @@ endif ()<br class="">
<br class="">
 set(CLANG_TEST_PARAMS<br class="">
   clang_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg<br class="">
+  USE_Z3_SOLVER=0<br class="">
   )<br class="">
<br class="">
+set(ANALYZER_TEST_PARAMS<br class="">
+  USE_Z3_SOLVER=0)<br class="">
+<br class="">
+set(ANALYZER_TEST_PARAMS_Z3<br class="">
+  USE_Z3_SOLVER=1)<br class="">
+<br class="">
 if( NOT CLANG_BUILT_STANDALONE )<br class="">
   list(APPEND CLANG_TEST_DEPS<br class="">
     llvm-config<br class="">
@@ -126,6 +133,24 @@ add_lit_testsuite(check-clang "Running t<br class="">
   )<br class="">
 set_target_properties(check-clang PROPERTIES FOLDER "Clang tests")<br class="">
<br class="">
+if (CLANG_ENABLE_STATIC_ANALYZER)<br class="">
+  add_lit_testsuite(check-clang-analyzer "Running the Clang analyzer tests"<br class="">
+    ${CMAKE_CURRENT_BINARY_DIR}/Analysis<br class="">
+    PARAMS ${ANALYZER_TEST_PARAMS}<br class="">
+    DEPENDS ${CLANG_TEST_DEPS})<br class="">
+  set_target_properties(check-clang-analyzer PROPERTIES FOLDER "Clang tests")<br class="">
+<br class="">
+<br class="">
+  if (CLANG_ANALYZER_WITH_Z3)<br class="">
+    add_lit_testsuite(check-clang-analyzer-z3 "Running the Clang analyzer tests, using Z3 as a solver"<br class="">
+      ${CMAKE_CURRENT_BINARY_DIR}/Analysis<br class="">
+      PARAMS ${ANALYZER_TEST_PARAMS_Z3}<br class="">
+      DEPENDS ${CLANG_TEST_DEPS})<br class="">
+    set_target_properties(check-clang-analyzer-z3 PROPERTIES FOLDER "Clang tests")<br class="">
+  endif()<br class="">
+<br class="">
+endif()<br class="">
+<br class="">
 add_lit_testsuites(CLANG ${CMAKE_CURRENT_SOURCE_DIR}<br class="">
   PARAMS ${CLANG_TEST_PARAMS}<br class="">
   DEPENDS ${CLANG_TEST_DEPS}<br class="">
<br class="">
Modified: cfe/trunk/test/<a href="http://lit.site.cfg.py.in/" rel="noreferrer" target="_blank" class="">lit.site.cfg.py.in</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/lit.site.cfg.py.in?rev=339629&r1=339628&r2=339629&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/lit.site.cfg.py.in?rev=339629&r1=339628&r2=339629&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/<a href="http://lit.site.cfg.py.in/" rel="noreferrer" target="_blank" class="">lit.site.cfg.py.in</a> (original)<br class="">
+++ cfe/trunk/test/<a href="http://lit.site.cfg.py.in/" rel="noreferrer" target="_blank" class="">lit.site.cfg.py.in</a> Mon Aug 13 16:12:43 2018<br class="">
@@ -26,6 +26,7 @@ config.enable_shared = @ENABLE_SHARED@<br class="">
 config.enable_backtrace = @ENABLE_BACKTRACES@<br class="">
 config.host_arch = "@HOST_ARCH@"<br class="">
 config.python_executable = "@PYTHON_EXECUTABLE@"<br class="">
+config.use_z3_solver = "@USE_Z3_SOLVER@"<br class="">
<br class="">
 # Support substitution of the tools and libs dirs with user parameters. This is<br class="">
 # used when we can't determine the tool dir at configuration time.<br class="">
@@ -34,6 +35,7 @@ try:<br class="">
     config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params<br class="">
     config.llvm_shlib_dir = config.llvm_shlib_dir % lit_config.params<br class="">
     config.llvm_libs_dir = config.llvm_libs_dir % lit_config.params<br class="">
+    config.use_z3_solver = lit_config.params['USE_Z3_SOLVER']<br class="">
 except KeyError:<br class="">
     e = sys.exc_info()[1]<br class="">
     key, = e.args<br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
cfe-commits mailing list<br class="">
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank" class="">cfe-commits@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br class="">
</blockquote></div>
</div></blockquote></div><br class=""></body></html>