[PATCH] D11333: [libcxx] Add special warning flag detection logic to compiler.py
Eric Fiselier via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 26 12:58:01 PDT 2015
EricWF updated this revision to Diff 33236.
EricWF added a comment.
Remove unused "CompileString" functions. The reason they can't be used to implement `addWarningFlagIfSupported` is because we have to fuss with the flags before invoking the compiler .
http://reviews.llvm.org/D11333
Files:
test/libcxx/compiler.py
test/libcxx/test/config.py
Index: test/libcxx/test/config.py
===================================================================
--- test/libcxx/test/config.py
+++ test/libcxx/test/config.py
@@ -574,16 +574,15 @@
'-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER',
'-Wall', '-Werror'
]
- self.cxx.addCompileFlagIfSupported('-Wno-attributes')
- if self.cxx.type == 'clang' or self.cxx.type == 'apple-clang':
- self.cxx.addCompileFlagIfSupported('-Wno-pessimizing-move')
- self.cxx.addCompileFlagIfSupported('-Wno-c++11-extensions')
- self.cxx.addCompileFlagIfSupported('-Wno-user-defined-literals')
+ self.cxx.addWarningFlagIfSupported('-Wno-attributes')
+ self.cxx.addWarningFlagIfSupported('-Wno-pessimizing-move')
+ self.cxx.addWarningFlagIfSupported('-Wno-c++11-extensions')
+ self.cxx.addWarningFlagIfSupported('-Wno-user-defined-literals')
std = self.get_lit_conf('std', None)
if std in ['c++98', 'c++03']:
# The '#define static_assert' provided by libc++ in C++03 mode
# causes an unused local typedef whenever it is used.
- self.cxx.addCompileFlagIfSupported('-Wno-unused-local-typedef')
+ self.cxx.addWarningFlagIfSupported('-Wno-unused-local-typedef')
def configure_sanitizer(self):
san = self.get_lit_conf('use_sanitizer', '').strip()
Index: test/libcxx/compiler.py
===================================================================
--- test/libcxx/compiler.py
+++ test/libcxx/compiler.py
@@ -161,3 +161,28 @@
return True
else:
return False
+
+ def addWarningFlagIfSupported(self, flag):
+ """
+ addWarningFlagIfSupported - Add a warning flag if the compiler
+ supports it. Unlike addCompileFlagIfSupported, this function detects
+ when "-Wno-<warning>" flags are unsupported. If flag is a
+ "-Wno-<warning>" GCC will not emit an unknown option diagnostic unless
+ another error is triggered during compilation.
+ """
+ assert isinstance(flag, str)
+ if not flag.startswith('-Wno-'):
+ return self.addCompileFlagIfSupported(flag)
+ flags = ['-Werror', flag]
+ cmd = self.compileCmd('-', os.devnull, flags)
+ # Remove '-v' because it will cause the command line invocation
+ # to be printed as part of the error output.
+ # TODO(EricWF): Are there other flags we need to worry about?
+ if '-v' in cmd:
+ cmd.remove('-v')
+ out, err, rc = lit.util.executeCommand(cmd, input='#error\n')
+ assert rc != 0
+ if flag in err:
+ return False
+ self.compile_flags += [flag]
+ return True
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D11333.33236.patch
Type: text/x-patch
Size: 2827 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150826/951c4631/attachment.bin>
More information about the cfe-commits
mailing list