Sure, looks fine to me.<span></span><br><br>On Tuesday, December 3, 2013, NAKAMURA Takumi  wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi ddunbar,<br>
<br>
Add --assertion-mode to llvm-config. It emits ON of OFF according to NDEBUG.<br>
<br>
Consider if I wanted to execute one test (w/o llc) from clean build tree.<br>
<br>
$ make FileCheck && make opt && make llc && bin/llvm-lit /path/to/Transforms/test.ll<br>
<br>
It would spend time to build llc, only to know assertion mode.<br>
Instead of llc, we can use light-weight llvm-config.<br>
<br>
$ make FileCheck && make opt && make llvm-config && bin/llvm-lit /path/to/Transforms/test.ll<br>
<br>
Although it is trivial to avoid llc in check-llvm, llvm-config could be applicable to check-clang, too.<br>
(Then llvm-config provides also targets_to_build.)<br>
<br>
This would be helpful if we implemented "Lit Ninja Runner" in future.<br>
<br>
<a href="http://llvm-reviews.chandlerc.com/D2320" target="_blank">http://llvm-reviews.chandlerc.com/D2320</a><br>
<br>
Files:<br>
  llvm/test/CMakeLists.txt<br>
  llvm/test/lit.cfg<br>
  llvm/tools/llvm-config/llvm-config.cpp<br>
<br>
Index: llvm/test/CMakeLists.txt<br>
===================================================================<br>
--- llvm/test/CMakeLists.txt<br>
+++ llvm/test/CMakeLists.txt<br>
@@ -15,6 +15,7 @@<br>
 # Set the depends list as a variable so that it can grow conditionally.<br>
 # NOTE: Sync the substitutions in test/lit.cfg when adding to this list.<br>
 set(LLVM_TEST_DEPENDS<br>
+          llvm-config<br>
           UnitTests<br>
           BugpointPasses<br>
           LLVMHello<br>
Index: llvm/test/lit.cfg<br>
===================================================================<br>
--- llvm/test/lit.cfg<br>
+++ llvm/test/lit.cfg<br>
@@ -305,18 +305,19 @@<br>
 if config.host_triple == config.target_triple:<br>
     config.available_features.add("native")<br>
<br>
-# llc knows whether he is compiled with -DNDEBUG.<br>
+# Ask llvm-config about assertion mode.<br>
 import subprocess<br>
 try:<br>
-    llc_cmd = subprocess.Popen([os.path.join(llvm_tools_dir, 'llc'), '-version'],<br>
-                           stdout = subprocess.PIPE)<br>
+    llvm_config_cmd = subprocess.Popen(<br>
+        [os.path.join(llvm_tools_dir, 'llvm-config'), '--assertion-mode'],<br>
+        stdout = subprocess.PIPE)<br>
 except OSError:<br>
-    print("Could not find llc in " + llvm_tools_dir)<br>
+    print("Could not find llvm-config in " + llvm_tools_dir)<br>
     exit(42)<br>
<br>
-if re.search(r'with assertions', llc_cmd.stdout.read().decode('ascii')):<br>
+if re.search(r'ON', llvm_config_cmd.stdout.read().decode('ascii')):<br>
     config.available_features.add('asserts')<br>
-llc_cmd.wait()<br>
+llvm_config_cmd.wait()<br>
<br>
 if 'darwin' == sys.platform:<br>
     try:<br>
Index: llvm/tools/llvm-config/llvm-config.cpp<br>
===================================================================<br>
--- llvm/tools/llvm-config/llvm-config.cpp<br>
+++ llvm/tools/llvm-config/llvm-config.cpp<br>
@@ -154,6 +154,7 @@<br>
   --targets-built   List of all targets currently built.\n\<br>
   --host-target     Target triple used to configure LLVM.\n\<br>
   --build-mode      Print build mode of LLVM tree (e.g. Debug or Release).\n\<br>
+  --assertion-mode  Print assertion mode of LLVM tree (ON or OFF).\n\<br>
 Typical components:\n\<br>
   all               All LLVM libraries (default).\n\<br>
   engine            Either a native JIT or a bitcode interpreter.\n";<br>
@@ -306,6 +307,12 @@<br>
           build_mode = CMAKE_CFG_INTDIR;<br>
 #endif<br>
         OS << build_mode << '\n';<br>
+      } else if (Arg == "--assertion-mode") {<br>
+#if defined(NDEBUG)<br>
+        OS << "OFF\n";<br>
+#else<br>
+        OS << "ON\n";<br>
+#endif<br>
       } else if (Arg == "--obj-root") {<br>
         OS << LLVM_OBJ_ROOT << '\n';<br>
       } else if (Arg == "--src-root") {<br>
</blockquote>