<div dir="ltr">lgtm'ed earlier, feel free to commit</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Oct 10, 2017 at 10:10 AM Francis Ricci via Phabricator <<a href="mailto:reviews@reviews.llvm.org">reviews@reviews.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">fjricci updated this revision to Diff 118413.<br>
fjricci added a comment.<br>
<br>
Improve warning messages<br>
<br>
<br>
<a href="https://reviews.llvm.org/D38703" rel="noreferrer" target="_blank">https://reviews.llvm.org/D38703</a><br>
<br>
Files:<br>
  utils/lit/lit/llvm/config.py<br>
<br>
<br>
Index: utils/lit/lit/llvm/config.py<br>
===================================================================<br>
--- utils/lit/lit/llvm/config.py<br>
+++ utils/lit/lit/llvm/config.py<br>
@@ -80,7 +80,8 @@<br>
<br>
         if target_triple:<br>
             if re.match(r'^x86_64.*-apple', target_triple):<br>
-                if 'address' in sanitizers:<br>
+                host_cxx = getattr(config, 'host_cxx', None)<br>
+                if 'address' in sanitizers and self.get_clang_has_lsan(host_cxx, target_triple):<br>
                     self.with_environment(<br>
                         'ASAN_OPTIONS', 'detect_leaks=1', append_path=True)<br>
             if re.match(r'^x86_64.*-linux', target_triple):<br>
@@ -200,6 +201,33 @@<br>
         # Ensure the result is an ascii string, across Python2.5+ - Python3.<br>
         return clang_dir<br>
<br>
+    # On macOS, LSan is only supported on clang versions 5 and higher<br>
+    def get_clang_has_lsan(self, clang, triple):<br>
+        if not clang:<br>
+            self.lit_config.warning(<br>
+                "config.host_cxx is unset but test suite is configured to use sanitizers.")<br>
+            return False<br>
+<br>
+        clang_binary = clang.split()[0]<br>
+        version_string, _ = self.get_process_output([clang_binary, '--version'])<br>
+        if not 'clang' in version_string:<br>
+            self.lit_config.warning(<br>
+                "compiler '%s' does not appear to be clang, " % clang_binary +<br>
+                "but test suite is configured to use sanitizers.")<br>
+            return False<br>
+<br>
+        if re.match(r'.*-linux', triple):<br>
+            return True<br>
+<br>
+        if re.match(r'^x86_64.*-apple', triple):<br>
+            version_number = int(re.search(r'version ([0-9]+)\.', version_string).group(1))<br>
+            if 'Apple LLVM' in version_string:<br>
+                return version_number >= 9<br>
+            else:<br>
+                return version_number >= 5<br>
+<br>
+        return False<br>
+<br>
     def make_itanium_abi_triple(self, triple):<br>
         m = re.match(r'(\w+)-(\w+)-(\w+)', triple)<br>
         if not m:<br>
<br>
<br>
</blockquote></div>