[libcxx] r226575 - Address danalbert's post-commit review comments on D7019 and small fixes.

Eric Fiselier eric at efcs.ca
Tue Jan 20 08:14:18 PST 2015


Author: ericwf
Date: Tue Jan 20 10:14:18 2015
New Revision: 226575

URL: http://llvm.org/viewvc/llvm-project?rev=226575&view=rev
Log:
Address danalbert's post-commit review comments on D7019 and small fixes.

This patch addresses some comments on http://reviews.llvm.org/D7019.

- Move compiler.py to test/libcxx from test/libcxx/test.
- Make CXXCompiler.target None by default.
- Use `{}` instead of `dict()` to initialize an empty dict.
- Pass the -fsanitize options to both the compile and link commands.

Added:
    libcxx/trunk/test/libcxx/compiler.py
Removed:
    libcxx/trunk/test/libcxx/test/compiler.py
Modified:
    libcxx/trunk/test/libcxx/test/config.py

Added: libcxx/trunk/test/libcxx/compiler.py
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/compiler.py?rev=226575&view=auto
==============================================================================
--- libcxx/trunk/test/libcxx/compiler.py (added)
+++ libcxx/trunk/test/libcxx/compiler.py Tue Jan 20 10:14:18 2015
@@ -0,0 +1,113 @@
+
+import lit.util
+
+
+class CXXCompiler(object):
+    def __init__(self, path, flags=[], compile_flags=[], link_flags=[], use_ccache=False):
+        self.path = path
+        self.flags = list(flags)
+        self.compile_flags = list(compile_flags)
+        self.link_flags = list(link_flags)
+        self.use_ccache = use_ccache
+        self.type = None
+        self.version = None
+        self._initTypeAndVersion()
+
+    def _initTypeAndVersion(self):
+        # Get compiler type and version
+        macros = self.dumpMacros()
+        if macros is None:
+            return
+        compiler_type = None
+        major_ver = minor_ver = patchlevel = None
+        if '__clang__' in macros.keys():
+            compiler_type = 'clang'
+            # Treat apple's llvm fork differently.
+            if '__apple_build_version__' in macros.keys():
+                compiler_type = 'apple-clang'
+            major_ver = macros['__clang_major__']
+            minor_ver = macros['__clang_minor__']
+            patchlevel = macros['__clang_patchlevel__']
+        elif '__GNUC__' in macros.keys():
+            compiler_type = 'gcc'
+            major_ver = macros['__GNUC__']
+            minor_ver = macros['__GNUC_MINOR__']
+            patchlevel = macros['__GNUC_PATCHLEVEL__']
+        self.type = compiler_type
+        self.version = (major_ver, minor_ver, patchlevel)
+
+    def _basicCmd(self, infiles, out, is_link=False):
+        cmd = []
+        if self.use_ccache and not is_link:
+            cmd += ['ccache']
+        cmd += [self.path]
+        if out is not None:
+            cmd += ['-o', out]
+        if isinstance(infiles, list):
+            cmd += infiles
+        elif isinstance(infiles, str):
+            cmd += [infiles]
+        else:
+            raise TypeError('infiles must be a string or list')
+        return cmd
+
+    def preprocessCmd(self, infiles, out=None, flags=[]):
+        cmd = self._basicCmd(infiles, out) + ['-x', 'c++', '-E']
+        cmd += self.flags + self.compile_flags + flags
+        return cmd
+
+    def compileCmd(self, infiles, out=None, flags=[]):
+        cmd = self._basicCmd(infiles, out) + ['-x', 'c++', '-c']
+        cmd += self.flags + self.compile_flags + flags
+        return cmd
+
+    def linkCmd(self, infiles, out=None, flags=[]):
+        cmd = self._basicCmd(infiles, out, is_link=True)
+        cmd += self.flags + self.link_flags + flags
+        return cmd
+
+    def compileLinkCmd(self, infiles, out=None, flags=[]):
+        cmd = self._basicCmd(infiles, out, is_link=True) + ['-x', 'c++']
+        cmd += self.flags + self.compile_flags + self.link_flags + flags
+        return cmd
+
+    def preprocess(self, infiles, out=None, flags=[], env=None, cwd=None):
+        cmd = self.preprocessCmd(infiles, out, flags)
+        out, err, rc = lit.util.executeCommand(cmd, env=env, cwd=cwd)
+        return cmd, out, err, rc
+
+    def compile(self, infiles, out=None, flags=[], env=None, cwd=None):
+        cmd = self.compileCmd(infiles, out, flags)
+        out, err, rc = lit.util.executeCommand(cmd, env=env, cwd=cwd)
+        return cmd, out, err, rc
+
+    def link(self, infiles, out=None, flags=[], env=None, cwd=None):
+        cmd = self.linkCmd(infiles, out, flags)
+        out, err, rc = lit.util.executeCommand(cmd, env=env, cwd=cwd)
+        return cmd, out, err, rc
+
+    def compileLink(self, infiles, out=None, flags=[], env=None, cwd=None):
+        cmd = self.compileLinkCmd(infiles, out, flags)
+        out, err, rc = lit.util.executeCommand(cmd, env=env, cwd=cwd)
+        return cmd, out, err, rc
+
+    def dumpMacros(self, infiles=None, flags=[], env=None, cwd=None):
+        if infiles is None:
+            infiles = '/dev/null'
+        flags = ['-dM'] + flags
+        cmd, out, err, rc = self.preprocess(infiles, flags=flags, env=env,
+                                            cwd=cwd)
+        if rc != 0:
+            return None
+        parsed_macros = {}
+        lines = [l.strip() for l in out.split('\n') if l.strip()]
+        for l in lines:
+            assert l.startswith('#define ')
+            l = l[len('#define '):]
+            macro, _, value = l.partition(' ')
+            parsed_macros[macro] = value
+        return parsed_macros
+
+    def getTriple(self):
+        cmd = [self.path] + self.flags + ['-dumpmachine']
+        return lit.util.capture(cmd).strip()

Removed: libcxx/trunk/test/libcxx/test/compiler.py
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/test/compiler.py?rev=226574&view=auto
==============================================================================
--- libcxx/trunk/test/libcxx/test/compiler.py (original)
+++ libcxx/trunk/test/libcxx/test/compiler.py (removed)
@@ -1,113 +0,0 @@
-
-import lit.util
-
-
-class CXXCompiler(object):
-    def __init__(self, path, flags=[], compile_flags=[], link_flags=[], use_ccache=False):
-        self.path = path
-        self.flags = list(flags)
-        self.compile_flags = list(compile_flags)
-        self.link_flags = list(link_flags)
-        self.use_ccache = use_ccache
-        self.type = None
-        self.version = (None, None, None)
-        self._initTypeAndVersion()
-
-    def _initTypeAndVersion(self):
-        # Get compiler type and version
-        macros = self.dumpMacros()
-        if macros is None:
-            return
-        compiler_type = None
-        major_ver = minor_ver = patchlevel = None
-        if '__clang__' in macros.keys():
-            compiler_type = 'clang'
-            # Treat apple's llvm fork differently.
-            if '__apple_build_version__' in macros.keys():
-                compiler_type = 'apple-clang'
-            major_ver = macros['__clang_major__']
-            minor_ver = macros['__clang_minor__']
-            patchlevel = macros['__clang_patchlevel__']
-        elif '__GNUC__' in macros.keys():
-            compiler_type = 'gcc'
-            major_ver = macros['__GNUC__']
-            minor_ver = macros['__GNUC_MINOR__']
-            patchlevel = macros['__GNUC_PATCHLEVEL__']
-        self.type = compiler_type
-        self.version = (major_ver, minor_ver, patchlevel)
-
-    def _basicCmd(self, infiles, out, is_link=False):
-        cmd = []
-        if self.use_ccache and not is_link:
-            cmd += ['ccache']
-        cmd += [self.path]
-        if out is not None:
-            cmd += ['-o', out]
-        if isinstance(infiles, list):
-            cmd += infiles
-        elif isinstance(infiles, str):
-            cmd += [infiles]
-        else:
-            raise TypeError('infiles must be a string or list')
-        return cmd
-
-    def preprocessCmd(self, infiles, out=None, flags=[]):
-        cmd = self._basicCmd(infiles, out) + ['-x', 'c++', '-E']
-        cmd += self.flags + self.compile_flags + flags
-        return cmd
-
-    def compileCmd(self, infiles, out=None, flags=[]):
-        cmd = self._basicCmd(infiles, out) + ['-x', 'c++', '-c']
-        cmd += self.flags + self.compile_flags + flags
-        return cmd
-
-    def linkCmd(self, infiles, out=None, flags=[]):
-        cmd = self._basicCmd(infiles, out, is_link=True)
-        cmd += self.flags + self.link_flags + flags
-        return cmd
-
-    def compileLinkCmd(self, infiles, out=None, flags=[]):
-        cmd = self._basicCmd(infiles, out, is_link=True) + ['-x', 'c++']
-        cmd += self.flags + self.compile_flags + self.link_flags + flags
-        return cmd
-
-    def preprocess(self, infiles, out=None, flags=[], env=None, cwd=None):
-        cmd = self.preprocessCmd(infiles, out, flags)
-        out, err, rc = lit.util.executeCommand(cmd, env=env, cwd=cwd)
-        return cmd, out, err, rc
-
-    def compile(self, infiles, out=None, flags=[], env=None, cwd=None):
-        cmd = self.compileCmd(infiles, out, flags)
-        out, err, rc = lit.util.executeCommand(cmd, env=env, cwd=cwd)
-        return cmd, out, err, rc
-
-    def link(self, infiles, out=None, flags=[], env=None, cwd=None):
-        cmd = self.linkCmd(infiles, out, flags)
-        out, err, rc = lit.util.executeCommand(cmd, env=env, cwd=cwd)
-        return cmd, out, err, rc
-
-    def compileLink(self, infiles, out=None, flags=[], env=None, cwd=None):
-        cmd = self.compileLinkCmd(infiles, out, flags)
-        out, err, rc = lit.util.executeCommand(cmd, env=env, cwd=cwd)
-        return cmd, out, err, rc
-
-    def dumpMacros(self, infiles=None, flags=[], env=None, cwd=None):
-        if infiles is None:
-            infiles = '/dev/null'
-        flags = ['-dM'] + flags
-        cmd, out, err, rc = self.preprocess(infiles, flags=flags, env=env,
-                                            cwd=cwd)
-        if rc != 0:
-            return None
-        parsed_macros = dict()
-        lines = [l.strip() for l in out.split('\n') if l.strip()]
-        for l in lines:
-            assert l.startswith('#define ')
-            l = l[len('#define '):]
-            macro, _, value = l.partition(' ')
-            parsed_macros[macro] = value
-        return parsed_macros
-
-    def getTriple(self):
-        cmd = [self.path] + self.flags + ['-dumpmachine']
-        return lit.util.capture(cmd).strip()

Modified: libcxx/trunk/test/libcxx/test/config.py
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/test/config.py?rev=226575&r1=226574&r2=226575&view=diff
==============================================================================
--- libcxx/trunk/test/libcxx/test/config.py (original)
+++ libcxx/trunk/test/libcxx/test/config.py Tue Jan 20 10:14:18 2015
@@ -9,7 +9,7 @@ import lit.Test  # pylint: disable=impor
 import lit.util  # pylint: disable=import-error,no-name-in-module
 
 from libcxx.test.format import LibcxxTestFormat
-from libcxx.test.compiler import CXXCompiler
+from libcxx.compiler import CXXCompiler
 
 
 class Configuration(object):
@@ -95,8 +95,9 @@ class Configuration(object):
                                   '(e.g., --param=cxx_under_test=clang++)')
         self.cxx = CXXCompiler(cxx)
         cxx_type = self.cxx.type
-        maj_v, min_v, _ = self.cxx.version
         if cxx_type is not None:
+            assert self.cxx.version is not None
+            maj_v, min_v, _ = self.cxx.version
             self.config.available_features.add(cxx_type)
             self.config.available_features.add('%s-%s.%s' % (
                 cxx_type, maj_v, min_v))
@@ -413,24 +414,25 @@ class Configuration(object):
             if sys.platform.startswith('linux'):
                 self.cxx.link_flags += ['-ldl']
             if san == 'Address':
-                self.cxx.compile_flags += ['-fsanitize=address']
+                self.cxx.flags += ['-fsanitize=address']
                 if llvm_symbolizer is not None:
                     self.env['ASAN_SYMBOLIZER_PATH'] = llvm_symbolizer
                 self.config.available_features.add('asan')
             elif san == 'Memory' or san == 'MemoryWithOrigins':
-                self.cxx.compile_flags += ['-fsanitize=memory']
+                self.cxx.flags += ['-fsanitize=memory']
                 if san == 'MemoryWithOrigins':
                     self.cxx.compile_flags += ['-fsanitize-memory-track-origins']
                 if llvm_symbolizer is not None:
                     self.env['MSAN_SYMBOLIZER_PATH'] = llvm_symbolizer
                 self.config.available_features.add('msan')
             elif san == 'Undefined':
-                self.cxx.compile_flags += ['-fsanitize=undefined',
-                                       '-fno-sanitize=vptr,function',
-                                       '-fno-sanitize-recover', '-O3']
+                self.cxx.flags += ['-fsanitize=undefined',
+                                   '-fno-sanitize=vptr,function',
+                                   '-fno-sanitize-recover']
+                self.cxx.compile_flags += ['-O3']
                 self.config.available_features.add('ubsan')
             elif san == 'Thread':
-                self.cxx.compile_flags += ['-fsanitize=thread']
+                self.cxx.flags += ['-fsanitize=thread']
                 self.config.available_features.add('tsan')
             else:
                 self.lit_config.fatal('unsupported value for '





More information about the cfe-commits mailing list