Add support for writing -verify shell tests
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288743 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -20,14 +20,21 @@ class CXXCompiler(object):
|
||||
CM_Link = 3
|
||||
|
||||
def __init__(self, path, flags=None, compile_flags=None, link_flags=None,
|
||||
warning_flags=None, modules_flags=None, use_modules=False,
|
||||
warning_flags=None, verify_supported=None,
|
||||
verify_flags=None, use_verify=False,
|
||||
modules_flags=None, use_modules=False,
|
||||
use_ccache=False, use_warnings=False, compile_env=None,
|
||||
cxx_type=None, cxx_version=None):
|
||||
self.path = path
|
||||
self.flags = list(flags or [])
|
||||
self.compile_flags = list(compile_flags or [])
|
||||
self.warning_flags = list(warning_flags or [])
|
||||
self.link_flags = list(link_flags or [])
|
||||
self.warning_flags = list(warning_flags or [])
|
||||
self.verify_supported = verify_supported
|
||||
self.use_verify = use_verify
|
||||
self.verify_flags = list(verify_flags or [])
|
||||
assert not use_verify or verify_supported
|
||||
assert not use_verify or verify_flags is not None
|
||||
self.modules_flags = list(modules_flags or [])
|
||||
self.use_modules = use_modules
|
||||
assert not use_modules or modules_flags is not None
|
||||
@@ -46,12 +53,30 @@ class CXXCompiler(object):
|
||||
new_cxx = CXXCompiler(
|
||||
self.path, flags=self.flags, compile_flags=self.compile_flags,
|
||||
link_flags=self.link_flags, warning_flags=self.warning_flags,
|
||||
verify_supported=self.verify_supported,
|
||||
verify_flags=self.verify_flags, use_verify=self.use_verify,
|
||||
modules_flags=self.modules_flags, use_modules=self.use_modules,
|
||||
use_ccache=self.use_ccache, use_warnings=self.use_warnings,
|
||||
compile_env=self.compile_env, cxx_type=self.type,
|
||||
cxx_version=self.version)
|
||||
return new_cxx
|
||||
|
||||
def isVerifySupported(self):
|
||||
if self.verify_supported is None:
|
||||
self.verify_supported = self.hasCompileFlag(['-Xclang',
|
||||
'-verify-ignore-unexpected'])
|
||||
if self.verify_supported:
|
||||
self.verify_flags = [
|
||||
'-Xclang', '-verify',
|
||||
'-Xclang', '-verify-ignore-unexpected=note',
|
||||
'-ferror-limit=1024'
|
||||
]
|
||||
return self.verify_supported
|
||||
|
||||
def useVerify(self, value=True):
|
||||
self.use_verify = value
|
||||
assert not self.use_verify or self.verify_flags is not None
|
||||
|
||||
def useModules(self, value=True):
|
||||
self.use_modules = value
|
||||
assert not self.use_modules or self.modules_flags is not None
|
||||
@@ -108,6 +133,9 @@ class CXXCompiler(object):
|
||||
elif mode == self.CM_Compile:
|
||||
cmd += ['-c']
|
||||
cmd += self.flags
|
||||
if self.use_verify:
|
||||
cmd += self.verify_flags
|
||||
assert mode in [self.CM_Default, self.CM_Compile]
|
||||
if self.use_modules:
|
||||
cmd += self.modules_flags
|
||||
if mode != self.CM_Link:
|
||||
|
||||
Reference in New Issue
Block a user