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.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@226575 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Fiselier 2015-01-20 16:14:18 +00:00
parent 02f6369a6b
commit 9ef5d45b2c
2 changed files with 12 additions and 10 deletions

View File

@ -10,7 +10,7 @@ class CXXCompiler(object):
self.link_flags = list(link_flags) self.link_flags = list(link_flags)
self.use_ccache = use_ccache self.use_ccache = use_ccache
self.type = None self.type = None
self.version = (None, None, None) self.version = None
self._initTypeAndVersion() self._initTypeAndVersion()
def _initTypeAndVersion(self): def _initTypeAndVersion(self):
@ -99,7 +99,7 @@ class CXXCompiler(object):
cwd=cwd) cwd=cwd)
if rc != 0: if rc != 0:
return None return None
parsed_macros = dict() parsed_macros = {}
lines = [l.strip() for l in out.split('\n') if l.strip()] lines = [l.strip() for l in out.split('\n') if l.strip()]
for l in lines: for l in lines:
assert l.startswith('#define ') assert l.startswith('#define ')

View File

@ -9,7 +9,7 @@ import lit.Test # pylint: disable=import-error,no-name-in-module
import lit.util # pylint: disable=import-error,no-name-in-module import lit.util # pylint: disable=import-error,no-name-in-module
from libcxx.test.format import LibcxxTestFormat from libcxx.test.format import LibcxxTestFormat
from libcxx.test.compiler import CXXCompiler from libcxx.compiler import CXXCompiler
class Configuration(object): class Configuration(object):
@ -95,8 +95,9 @@ class Configuration(object):
'(e.g., --param=cxx_under_test=clang++)') '(e.g., --param=cxx_under_test=clang++)')
self.cxx = CXXCompiler(cxx) self.cxx = CXXCompiler(cxx)
cxx_type = self.cxx.type cxx_type = self.cxx.type
maj_v, min_v, _ = self.cxx.version
if cxx_type is not None: 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(cxx_type)
self.config.available_features.add('%s-%s.%s' % ( self.config.available_features.add('%s-%s.%s' % (
cxx_type, maj_v, min_v)) cxx_type, maj_v, min_v))
@ -413,24 +414,25 @@ class Configuration(object):
if sys.platform.startswith('linux'): if sys.platform.startswith('linux'):
self.cxx.link_flags += ['-ldl'] self.cxx.link_flags += ['-ldl']
if san == 'Address': if san == 'Address':
self.cxx.compile_flags += ['-fsanitize=address'] self.cxx.flags += ['-fsanitize=address']
if llvm_symbolizer is not None: if llvm_symbolizer is not None:
self.env['ASAN_SYMBOLIZER_PATH'] = llvm_symbolizer self.env['ASAN_SYMBOLIZER_PATH'] = llvm_symbolizer
self.config.available_features.add('asan') self.config.available_features.add('asan')
elif san == 'Memory' or san == 'MemoryWithOrigins': elif san == 'Memory' or san == 'MemoryWithOrigins':
self.cxx.compile_flags += ['-fsanitize=memory'] self.cxx.flags += ['-fsanitize=memory']
if san == 'MemoryWithOrigins': if san == 'MemoryWithOrigins':
self.cxx.compile_flags += ['-fsanitize-memory-track-origins'] self.cxx.compile_flags += ['-fsanitize-memory-track-origins']
if llvm_symbolizer is not None: if llvm_symbolizer is not None:
self.env['MSAN_SYMBOLIZER_PATH'] = llvm_symbolizer self.env['MSAN_SYMBOLIZER_PATH'] = llvm_symbolizer
self.config.available_features.add('msan') self.config.available_features.add('msan')
elif san == 'Undefined': elif san == 'Undefined':
self.cxx.compile_flags += ['-fsanitize=undefined', self.cxx.flags += ['-fsanitize=undefined',
'-fno-sanitize=vptr,function', '-fno-sanitize=vptr,function',
'-fno-sanitize-recover', '-O3'] '-fno-sanitize-recover']
self.cxx.compile_flags += ['-O3']
self.config.available_features.add('ubsan') self.config.available_features.add('ubsan')
elif san == 'Thread': elif san == 'Thread':
self.cxx.compile_flags += ['-fsanitize=thread'] self.cxx.flags += ['-fsanitize=thread']
self.config.available_features.add('tsan') self.config.available_features.add('tsan')
else: else:
self.lit_config.fatal('unsupported value for ' self.lit_config.fatal('unsupported value for '