Index: utils/lit/lit/llvm/config.py =================================================================== --- utils/lit/lit/llvm/config.py +++ utils/lit/lit/llvm/config.py @@ -80,7 +80,7 @@ if target_triple: if re.match(r'^x86_64.*-apple', target_triple): - if 'address' in sanitizers: + if 'address' in sanitizers and get_clang_has_lsan(config.host_cxx, target_triple): self.with_environment( 'ASAN_OPTIONS', 'detect_leaks=1', append_path=True) if re.match(r'^x86_64.*-linux', target_triple): @@ -200,6 +200,21 @@ # Ensure the result is an ascii string, across Python2.5+ - Python3. return clang_dir + # On macOS, LSan is only supported on clang versions 5 and higher + def get_clang_has_lsan(self, clang, triple): + if re.match(r'*-linux', triple): + return True + + if re.match(r'^x86_64.*-apple', triple): + version_string, _ = self.get_process_output([clang, '--version']) + version_number = int(re.search( r'version (\number+)\.', version_string).group(1)) + if re.match(r'^Apple LLVM', version_string): + return version_number >= 9 + else: + return version_number >= 5 + + return False + def make_itanium_abi_triple(self, triple): m = re.match(r'(\w+)-(\w+)-(\w+)', triple) if not m: