[compiler-rt] r237747 - Factor out LTO detection to common configuration.

Peter Collingbourne peter at pcc.me.uk
Tue May 19 16:50:13 PDT 2015


Author: pcc
Date: Tue May 19 18:50:13 2015
New Revision: 237747

URL: http://llvm.org/viewvc/llvm-project?rev=237747&view=rev
Log:
Factor out LTO detection to common configuration.

This will allow us to test other sanitizers with LTO.

Modified:
    compiler-rt/trunk/test/cfi/lit.cfg
    compiler-rt/trunk/test/lit.common.cfg

Modified: compiler-rt/trunk/test/cfi/lit.cfg
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/cfi/lit.cfg?rev=237747&r1=237746&r2=237747&view=diff
==============================================================================
--- compiler-rt/trunk/test/cfi/lit.cfg (original)
+++ compiler-rt/trunk/test/cfi/lit.cfg Tue May 19 18:50:13 2015
@@ -1,36 +1,15 @@
 import lit.formats
 import os
-import subprocess
-import sys
 
 config.name = 'cfi'
 config.suffixes = ['.cpp']
 config.test_source_root = os.path.dirname(__file__)
 
-def is_darwin_lto_supported():
-  return os.path.exists(os.path.join(config.llvm_shlib_dir, 'libLTO.dylib'))
-
-def is_linux_lto_supported():
-  if not os.path.exists(os.path.join(config.llvm_shlib_dir, 'LLVMgold.so')):
-    return False
-
-  ld_cmd = subprocess.Popen([config.gold_executable, '--help'], stdout = subprocess.PIPE)
-  ld_out = ld_cmd.stdout.read().decode()
-  ld_cmd.wait()
-
-  if not '-plugin' in ld_out:
-    return False
-
-  return True
-
 clangxx = ' '.join([config.clang] + config.cxx_mode_flags)
 
 config.substitutions.append((r"%clangxx ", clangxx + ' '))
-
-if sys.platform == 'darwin' and is_darwin_lto_supported():
-  config.substitutions.append((r"%clangxx_cfi ", 'env DYLD_LIBRARY_PATH=' + config.llvm_shlib_dir + ' ' + clangxx + ' -fsanitize=cfi '))
-elif sys.platform.startswith('linux') and is_linux_lto_supported():
-  config.substitutions.append((r"%clangxx_cfi ", clangxx + ' -fuse-ld=gold -fsanitize=cfi '))
+if config.lto_supported:
+  config.substitutions.append((r"%clangxx_cfi ", ' '.join(config.lto_launch + [clangxx] + config.lto_flags + ['-fsanitize=cfi '])))
 else:
   config.unsupported = True
 

Modified: compiler-rt/trunk/test/lit.common.cfg
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lit.common.cfg?rev=237747&r1=237746&r2=237747&view=diff
==============================================================================
--- compiler-rt/trunk/test/lit.common.cfg (original)
+++ compiler-rt/trunk/test/lit.common.cfg Tue May 19 18:50:13 2015
@@ -5,6 +5,7 @@
 # It is mostly copied from lit.cfg used by Clang.
 import os
 import platform
+import subprocess
 
 import lit.formats
 import lit.util
@@ -88,3 +89,30 @@ if not compiler_rt_debug:
   config.available_features.add('compiler-rt-optimized')
 
 lit.util.usePlatformSdkOnDarwin(config, lit_config)
+
+def is_darwin_lto_supported():
+  return os.path.exists(os.path.join(config.llvm_shlib_dir, 'libLTO.dylib'))
+
+def is_linux_lto_supported():
+  if not os.path.exists(os.path.join(config.llvm_shlib_dir, 'LLVMgold.so')):
+    return False
+
+  ld_cmd = subprocess.Popen([config.gold_executable, '--help'], stdout = subprocess.PIPE)
+  ld_out = ld_cmd.stdout.read().decode()
+  ld_cmd.wait()
+
+  if not '-plugin' in ld_out:
+    return False
+
+  return True
+
+if sys.platform == 'darwin' and is_darwin_lto_supported():
+  config.lto_supported = True
+  config.lto_launch = ["env", "DYLD_LIBRARY_PATH=" + config.llvm_shlib_dir]
+  config.lto_flags = []
+elif sys.platform.startswith('linux') and is_linux_lto_supported():
+  config.lto_supported = True
+  config.lto_launch = []
+  config.lto_flags = ["-fuse-ld=gold"]
+else:
+  config.lto_supported = False





More information about the llvm-commits mailing list