I have a couple ideas, will try on the buildbot, since I don't have MSVC to try fixes locally.
On Wed, Feb 24, 2016 at 10:27 PM, Alexander Kornienko <ale...@google.com> wrote: > Looking into this... > > > On Wed, Feb 24, 2016 at 10:21 PM, Nico Weber <tha...@chromium.org> wrote: > >> This broke the Windows bot: >> http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/10093/steps/build%20stage%201/logs/stdio >> >> FAILED: C:\PROGRA~2\MICROS~1.0\VC\bin\amd64\cl.exe /nologo /TP /DWIN32 >> /D_WINDOWS /W4 -wd4141 -wd4146 -wd4180 -wd4244 -wd4258 -wd4267 -wd4291 >> -wd4345 -wd4351 -wd4355 -wd4456 -wd4457 -wd4458 -wd4459 -wd4503 -wd4624 >> -wd4722 -wd4800 -wd4100 -wd4127 -wd4512 -wd4505 -wd4610 -wd4510 -wd4702 >> -wd4245 -wd4706 -wd4310 -wd4701 -wd4703 -wd4389 -wd4611 -wd4805 -wd4204 >> -wd4577 -wd4091 -wd4592 -wd4319 -wd4324 -w14062 -we4238 /Zc:inline /Oi >> /Zc:rvalueCast /MD /O2 /Ob2 -Itools\clang\tools\extra\clang-tidy\modernize >> -ID:\buildslave\clang-x64-ninja-win7\llvm\tools\clang\tools\extra\clang-tidy\modernize >> -ID:\buildslave\clang-x64-ninja-win7\llvm\tools\clang\include >> -Itools\clang\include -Iinclude >> -ID:\buildslave\clang-x64-ninja-win7\llvm\include -UNDEBUG /EHs-c- /GR- >> /showIncludes -DCLANG_ENABLE_ARCMT -DCLANG_ENABLE_OBJC_REWRITER >> -DCLANG_ENABLE_STATIC_ANALYZER -DGTEST_HAS_RTTI=0 >> -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS >> -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS >> -D_DEBUG_POINTER_IMPL="" -D_GNU_SOURCE -D_HAS_EXCEPTIONS=0 >> -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS >> -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS >> /Fotools\clang\tools\extra\clang-tidy\modernize\CMakeFiles\clangTidyModernizeModule.dir\DeprecatedHeadersCheck.cpp.obj >> /Fdtools\clang\tools\extra\clang-tidy\modernize\CMakeFiles\clangTidyModernizeModule.dir\ >> /FS -c >> D:\buildslave\clang-x64-ninja-win7\llvm\tools\clang\tools\extra\clang-tidy\modernize\DeprecatedHeadersCheck.cpp >> D:\buildslave\clang-x64-ninja-win7\llvm\tools\clang\tools\extra\clang-tidy\modernize\DeprecatedHeadersCheck.cpp(72) >> : error C2668: >> 'llvm::StringMap<std::string,llvm::MallocAllocator>::StringMap' : ambiguous >> call to overloaded function >> >> D:\buildslave\clang-x64-ninja-win7\llvm\include\llvm/ADT/StringMap.h(399): >> could be >> 'llvm::StringMap<std::string,llvm::MallocAllocator>::StringMap(const >> llvm::StringMap<std::string,llvm::MallocAllocator> &)' >> >> D:\buildslave\clang-x64-ninja-win7\llvm\include\llvm/ADT/StringMap.h(242): >> or >> 'llvm::StringMap<std::string,llvm::MallocAllocator>::StringMap(llvm::StringMap<std::string,llvm::MallocAllocator> >> &&)' >> >> D:\buildslave\clang-x64-ninja-win7\llvm\include\llvm/ADT/StringMap.h(235): >> or >> 'llvm::StringMap<std::string,llvm::MallocAllocator>::StringMap(std::initializer_list<std::pair<llvm::StringRef,ValueTy>>)' >> with >> [ >> ValueTy=std::string >> ] >> >> D:\buildslave\clang-x64-ninja-win7\llvm\include\llvm/ADT/StringMap.h(228): >> or >> 'llvm::StringMap<std::string,llvm::MallocAllocator>::StringMap(AllocatorTy)' >> with >> [ >> AllocatorTy=llvm::MallocAllocator >> ] >> >> D:\buildslave\clang-x64-ninja-win7\llvm\include\llvm/ADT/StringMap.h(225): >> or >> 'llvm::StringMap<std::string,llvm::MallocAllocator>::StringMap(unsigned >> int)' >> while trying to match the argument list '(initializer-list)' >> Creating library lib\libclang.lib and object lib\libclang.exp >> >> >> On Wed, Feb 24, 2016 at 8:36 AM, Alexander Kornienko via cfe-commits < >> cfe-commits@lists.llvm.org> wrote: >> >>> Author: alexfh >>> Date: Wed Feb 24 07:36:34 2016 >>> New Revision: 261738 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=261738&view=rev >>> Log: >>> [clang-tidy] introduce modernize-deprecated-headers check >>> >>> Summary: >>> This patch introduces the modernize-deprecated-headers check, which is >>> supposed to replace deprecated C library headers with the C++ STL-ones. >>> >>> For information see documentation; for exmaples see the test cases. >>> >>> Reviewers: Eugene.Zelenko, LegalizeAdulthood, alexfh >>> >>> Subscribers: cfe-commits >>> >>> Patch by Kirill Bobyrev! >>> >>> Differential Revision: http://reviews.llvm.org/D17484 >>> >>> Added: >>> >>> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp >>> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h >>> >>> clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst >>> >>> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp >>> >>> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp >>> Modified: >>> clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt >>> clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp >>> clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst >>> >>> Modified: clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt >>> URL: >>> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt?rev=261738&r1=261737&r2=261738&view=diff >>> >>> ============================================================================== >>> --- clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt >>> (original) >>> +++ clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt Wed Feb >>> 24 07:36:34 2016 >>> @@ -1,6 +1,7 @@ >>> set(LLVM_LINK_COMPONENTS support) >>> >>> add_clang_library(clangTidyModernizeModule >>> + DeprecatedHeadersCheck.cpp >>> LoopConvertCheck.cpp >>> LoopConvertUtils.cpp >>> MakeUniqueCheck.cpp >>> >>> Added: >>> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp?rev=261738&view=auto >>> >>> ============================================================================== >>> --- >>> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp >>> (added) >>> +++ >>> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp Wed >>> Feb 24 07:36:34 2016 >>> @@ -0,0 +1,110 @@ >>> +//===--- DeprecatedHeadersCheck.cpp - >>> clang-tidy---------------------------===// >>> +// >>> +// The LLVM Compiler Infrastructure >>> +// >>> +// This file is distributed under the University of Illinois Open Source >>> +// License. See LICENSE.TXT for details. >>> +// >>> >>> +//===----------------------------------------------------------------------===// >>> + >>> +#include "DeprecatedHeadersCheck.h" >>> +#include "clang/Frontend/CompilerInstance.h" >>> +#include "clang/Lex/PPCallbacks.h" >>> +#include "clang/Lex/Preprocessor.h" >>> +#include "llvm/ADT/StringMap.h" >>> + >>> +#include <vector> >>> + >>> +namespace clang { >>> +namespace tidy { >>> +namespace modernize { >>> + >>> +namespace { >>> +class IncludeModernizePPCallbacks : public PPCallbacks { >>> +public: >>> + explicit IncludeModernizePPCallbacks(ClangTidyCheck &Check, >>> + LangOptions LangOpts); >>> + >>> + void InclusionDirective(SourceLocation HashLoc, const Token >>> &IncludeTok, >>> + StringRef FileName, bool IsAngled, >>> + CharSourceRange FilenameRange, const >>> FileEntry *File, >>> + StringRef SearchPath, StringRef RelativePath, >>> + const Module *Imported) override; >>> + >>> +private: >>> + ClangTidyCheck &Check; >>> + LangOptions LangOpts; >>> + llvm::StringMap<std::string> CStyledHeaderToCxx; >>> +}; >>> +} // namespace >>> + >>> +void DeprecatedHeadersCheck::registerPPCallbacks(CompilerInstance >>> &Compiler) { >>> + if (this->getLangOpts().CPlusPlus) { >>> + Compiler.getPreprocessor().addPPCallbacks( >>> + ::llvm::make_unique<IncludeModernizePPCallbacks>(*this, >>> + >>> this->getLangOpts())); >>> + } >>> +} >>> + >>> +IncludeModernizePPCallbacks::IncludeModernizePPCallbacks(ClangTidyCheck >>> &Check, >>> + LangOptions >>> LangOpts) >>> + : Check(Check), LangOpts(LangOpts), >>> + CStyledHeaderToCxx({{"assert.h", "cassert"}, >>> + {"complex.h", "ccomplex"}, >>> + {"ctype.h", "cctype"}, >>> + {"errno.h", "cerrno"}, >>> + {"float.h", "cfloat"}, >>> + {"inttypes.h", "cinttypes"}, >>> + {"iso646.h", "ciso646"}, >>> + {"limits.h", "climits"}, >>> + {"locale.h", "clocale"}, >>> + {"math.h", "cmath"}, >>> + {"setjmp.h", "csetjmp"}, >>> + {"signal.h", "csignal"}, >>> + {"stdarg.h", "cstdarg"}, >>> + {"stddef.h", "cstddef"}, >>> + {"stdint.h", "cstdint"}, >>> + {"stdio.h", "cstdio"}, >>> + {"stdlib.h", "cstdlib"}, >>> + {"string.h", "cstring"}, >>> + {"time.h", "ctime"}, >>> + {"wchar.h", "cwchar"}, >>> + {"wctype.h", "cwctype"}}) { >>> + // Add C++ 11 headers. >>> + if (LangOpts.CPlusPlus11) { >>> + for (const auto &it : std::vector<std::pair<std::string, >>> std::string>>( >>> + {{"fenv.h", "cfenv"}, >>> + {"stdalign.h", "cstdalign"}, >>> + {"stdbool.h", "cstdbool"}, >>> + {"tgmath.h", "ctgmath"}, >>> + {"uchar.h", "cuchar"}})) { >>> + CStyledHeaderToCxx.insert(it); >>> + } >>> + } >>> +} >>> + >>> +void IncludeModernizePPCallbacks::InclusionDirective( >>> + SourceLocation HashLoc, const Token &IncludeTok, StringRef FileName, >>> + bool IsAngled, CharSourceRange FilenameRange, const FileEntry *File, >>> + StringRef SearchPath, StringRef RelativePath, const Module >>> *Imported) { >>> + // FIXME: Take care of library symbols from the global namespace. >>> + // >>> + // Reasonable options for the check: >>> + // >>> + // 1. Insert std prefix for every such symbol occurance. >>> + // 2. Insert `using namespace std;` to the beginning of TU. >>> + // 3. Do nothing and let the user deal with the migration himself. >>> + if (CStyledHeaderToCxx.count(FileName) != 0) { >>> + std::string Replacement = >>> + (llvm::Twine("<") + CStyledHeaderToCxx[FileName] + ">").str(); >>> + Check.diag(FilenameRange.getBegin(), >>> + "inclusion of deprecated C++ header '%0'; consider using >>> '%1' instead") >>> + << FileName << CStyledHeaderToCxx[FileName] >>> + << FixItHint::CreateReplacement(FilenameRange.getAsRange(), >>> + Replacement); >>> + } >>> +} >>> + >>> +} // namespace modernize >>> +} // namespace tidy >>> +} // namespace clang >>> >>> Added: >>> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h?rev=261738&view=auto >>> >>> ============================================================================== >>> --- >>> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h >>> (added) >>> +++ >>> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h Wed >>> Feb 24 07:36:34 2016 >>> @@ -0,0 +1,42 @@ >>> +//===--- DeprecatedHeadersCheck.h - clang-tidy-------------------*- C++ >>> -*-===// >>> +// >>> +// The LLVM Compiler Infrastructure >>> +// >>> +// This file is distributed under the University of Illinois Open Source >>> +// License. See LICENSE.TXT for details. >>> +// >>> >>> +//===----------------------------------------------------------------------===// >>> + >>> +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_C_HEADERS_TO_CXX_H >>> +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_C_HEADERS_TO_CXX_H >>> + >>> +#include "../ClangTidy.h" >>> + >>> +namespace clang { >>> +namespace tidy { >>> +namespace modernize { >>> + >>> +/// This check replaces deprecated C library headers with their C++ STL >>> +/// alternatives. >>> +/// >>> +/// Before: >>> +/// #include <header.h> >>> +/// After: >>> +/// #include <cheader> >>> +/// >>> +/// Example: <stdio.h> => <cstdio> >>> +/// >>> +/// For the user-facing documentation see: >>> +/// >>> http://clang.llvm.org/extra/clang-tidy/checks/modernize-deprecated-headers.html >>> +class DeprecatedHeadersCheck : public ClangTidyCheck { >>> +public: >>> + DeprecatedHeadersCheck(StringRef Name, ClangTidyContext *Context) >>> + : ClangTidyCheck(Name, Context) {} >>> + void registerPPCallbacks(CompilerInstance &Compiler) override; >>> +}; >>> + >>> +} // namespace modernize >>> +} // namespace tidy >>> +} // namespace clang >>> + >>> +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_C_HEADERS_TO_CXX_H >>> >>> Modified: >>> clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp?rev=261738&r1=261737&r2=261738&view=diff >>> >>> ============================================================================== >>> --- clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp >>> (original) >>> +++ clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp >>> Wed Feb 24 07:36:34 2016 >>> @@ -10,6 +10,7 @@ >>> #include "../ClangTidy.h" >>> #include "../ClangTidyModule.h" >>> #include "../ClangTidyModuleRegistry.h" >>> +#include "DeprecatedHeadersCheck.h" >>> #include "LoopConvertCheck.h" >>> #include "MakeUniqueCheck.h" >>> #include "PassByValueCheck.h" >>> @@ -30,6 +31,8 @@ namespace modernize { >>> class ModernizeModule : public ClangTidyModule { >>> public: >>> void addCheckFactories(ClangTidyCheckFactories &CheckFactories) >>> override { >>> + CheckFactories.registerCheck<DeprecatedHeadersCheck>( >>> + "modernize-deprecated-headers"); >>> >>> CheckFactories.registerCheck<LoopConvertCheck>("modernize-loop-convert"); >>> >>> CheckFactories.registerCheck<MakeUniqueCheck>("modernize-make-unique"); >>> >>> CheckFactories.registerCheck<PassByValueCheck>("modernize-pass-by-value"); >>> >>> Modified: clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst >>> URL: >>> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst?rev=261738&r1=261737&r2=261738&view=diff >>> >>> ============================================================================== >>> --- clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst (original) >>> +++ clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst Wed Feb 24 >>> 07:36:34 2016 >>> @@ -74,6 +74,7 @@ Clang-Tidy Checks >>> misc-unused-parameters >>> misc-unused-raii >>> misc-virtual-near-miss >>> + modernize-deprecated-headers >>> modernize-loop-convert >>> modernize-make-unique >>> modernize-pass-by-value >>> >>> Added: >>> clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst >>> URL: >>> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst?rev=261738&view=auto >>> >>> ============================================================================== >>> --- >>> clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst >>> (added) >>> +++ >>> clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst >>> Wed Feb 24 07:36:34 2016 >>> @@ -0,0 +1,45 @@ >>> +.. title:: clang-tidy - modernize-deprecated-headers >>> + >>> +modernize-deprecated-headers >>> +========================== >>> + >>> +Some headers from C library were deprecated in C++ and are no longer >>> welcome in >>> +C++ codebases. For more details refer to the C++ 14 Standard >>> [depr.c.headers] >>> +section. >>> + >>> +This check replaces C standard library headers with their C++ >>> alternatives. >>> + >>> +Improtant note: the Standard doesn't guarantee that the C++ headers >>> declare all >>> +the same functions in the global namespace. The check in its current >>> form can >>> +break the code that uses library symbols from the global namespace. >>> + >>> +* `<assert.h>` >>> +* `<complex.h>` >>> +* `<ctype.h>` >>> +* `<errno.h>` >>> +* `<fenv.h>` // deprecated since C++11 >>> +* `<float.h>` >>> +* `<inttypes.h>` >>> +* `<iso646.h>` >>> +* `<limits.h>` >>> +* `<locale.h>` >>> +* `<math.h>` >>> +* `<setjmp.h>` >>> +* `<signal.h>` >>> +* `<stdalign.h>` // deprecated since C++11 >>> +* `<stdarg.h>` >>> +* `<stdbool.h>` // deprecated since C++11 >>> +* `<stddef.h>` >>> +* `<stdint.h>` >>> +* `<stdio.h>` >>> +* `<stdlib.h>` >>> +* `<string.h>` >>> +* `<tgmath.h>` // deprecated since C++11 >>> +* `<time.h>` >>> +* `<uchar.h>` // deprecated since C++11 >>> +* `<wchar.h>` >>> +* `<wctype.h>` >>> + >>> +If the specified standard is older than C++11 the check will only >>> replace >>> +headers deprecated before C++11, otherwise -- every header that >>> appeared in >>> +the list. >>> >>> Added: >>> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp?rev=261738&view=auto >>> >>> ============================================================================== >>> --- >>> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp >>> (added) >>> +++ >>> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp >>> Wed Feb 24 07:36:34 2016 >>> @@ -0,0 +1,147 @@ >>> +// RUN: %check_clang_tidy %s modernize-deprecated-headers %t -- -- >>> -std=c++03 -isystem %S/Inputs/Headers >>> + >>> +#include <assert.h> >>> +#include <complex.h> >>> +#include <ctype.h> >>> +#include <errno.h> >>> +#include <float.h> >>> +#include <inttypes.h> >>> +#include <iso646.h> >>> +#include <limits.h> >>> +#include <locale.h> >>> +#include <math.h> >>> +#include <setjmp.h> >>> +#include <signal.h> >>> +#include <stdarg.h> >>> +#include <stddef.h> >>> +#include <stdint.h> >>> +#include <stdio.h> >>> +#include <stdlib.h> >>> +#include <string.h> >>> +#include <time.h> >>> +#include <wchar.h> >>> +#include <wctype.h> >>> + >>> +// Headers deprecated since C++11: expect no diagnostics. >>> +#include <fenv.h> >>> +#include <stdalign.h> >>> +#include <stdbool.h> >>> +#include <tgmath.h> >>> +#include <uchar.h> >>> + >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'assert.h'; consider using 'cassert' instead >>> [modernize-deprecated-headers] >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'complex.h'; consider using 'ccomplex' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'ctype.h'; consider using 'cctype' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'errno.h'; consider using 'cerrno' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'float.h'; consider using 'cfloat' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'inttypes.h'; consider using 'cinttypes' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'iso646.h'; consider using 'ciso646' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'limits.h'; consider using 'climits' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'locale.h'; consider using 'clocale' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'math.h'; consider using 'cmath' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'setjmp.h'; consider using 'csetjmp' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'signal.h'; consider using 'csignal' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'stdarg.h'; consider using 'cstdarg' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'stddef.h'; consider using 'cstddef' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'stdint.h'; consider using 'cstdint' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'stdio.h'; consider using 'cstdio' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'stdlib.h'; consider using 'cstdlib' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'string.h'; consider using 'cstring' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'time.h'; consider using 'ctime' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'wchar.h'; consider using 'cwchar' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'wctype.h'; consider using 'cwctype' instead >>> + >>> +// CHECK-FIXES: #include <cassert> >>> +// CHECK-FIXES: #include <ccomplex> >>> +// CHECK-FIXES: #include <cctype> >>> +// CHECK-FIXES: #include <cerrno> >>> +// CHECK-FIXES: #include <cfloat> >>> +// CHECK-FIXES: #include <cinttypes> >>> +// CHECK-FIXES: #include <ciso646> >>> +// CHECK-FIXES: #include <climits> >>> +// CHECK-FIXES: #include <clocale> >>> +// CHECK-FIXES: #include <cmath> >>> +// CHECK-FIXES: #include <csetjmp> >>> +// CHECK-FIXES: #include <csignal> >>> +// CHECK-FIXES: #include <cstdarg> >>> +// CHECK-FIXES: #include <cstddef> >>> +// CHECK-FIXES: #include <cstdint> >>> +// CHECK-FIXES: #include <cstdio> >>> +// CHECK-FIXES: #include <cstdlib> >>> +// CHECK-FIXES: #include <cstring> >>> +// CHECK-FIXES: #include <ctime> >>> +// CHECK-FIXES: #include <cwchar> >>> +// CHECK-FIXES: #include <cwctype> >>> + >>> +#include "assert.h" >>> +#include "complex.h" >>> +#include "ctype.h" >>> +#include "errno.h" >>> +#include "float.h" >>> +#include "inttypes.h" >>> +#include "iso646.h" >>> +#include "limits.h" >>> +#include "locale.h" >>> +#include "math.h" >>> +#include "setjmp.h" >>> +#include "signal.h" >>> +#include "stdarg.h" >>> +#include "stddef.h" >>> +#include "stdint.h" >>> +#include "stdio.h" >>> +#include "stdlib.h" >>> +#include "string.h" >>> +#include "time.h" >>> +#include "wchar.h" >>> +#include "wctype.h" >>> + >>> +// Headers deprecated since C++11; expect no diagnostics >>> +#include "fenv.h" >>> +#include "stdalign.h" >>> +#include "stdbool.h" >>> +#include "tgmath.h" >>> +#include "uchar.h" >>> + >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'assert.h'; consider using 'cassert' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'complex.h'; consider using 'ccomplex' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'ctype.h'; consider using 'cctype' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'errno.h'; consider using 'cerrno' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'float.h'; consider using 'cfloat' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'inttypes.h'; consider using 'cinttypes' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'iso646.h'; consider using 'ciso646' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'limits.h'; consider using 'climits' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'locale.h'; consider using 'clocale' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'math.h'; consider using 'cmath' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'setjmp.h'; consider using 'csetjmp' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'signal.h'; consider using 'csignal' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'stdarg.h'; consider using 'cstdarg' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'stddef.h'; consider using 'cstddef' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'stdint.h'; consider using 'cstdint' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'stdio.h'; consider using 'cstdio' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'stdlib.h'; consider using 'cstdlib' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'string.h'; consider using 'cstring' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'time.h'; consider using 'ctime' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'wchar.h'; consider using 'cwchar' instead >>> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >>> C++ header 'wctype.h'; consider using 'cwctype' instead >>> + >>> +// CHECK-FIXES: #include <cassert> >>> +// CHECK-FIXES: #include <ccomplex> >>> +// CHECK-FIXES: #include <cctype> >>> +// CHECK-FIXES: #include <cerrno> >>> +// CHECK-FIXES: #include <cfloat> >>> +// CHECK-FIXES: #include <cinttypes> >>> +// CHECK-FIXES: #include <ciso646> >>> +// CHECK-FIXES: #include <climits> >>> +// CHECK-FIXES: #include <clocale> >>> +// CHECK-FIXES: #include <cmath> >>> +// CHECK-FIXES: #include <csetjmp> >>> +// CHECK-FIXES: #include <csignal> >>> +// CHECK-FIXES: #include <cstdarg> >>> +// CHECK-FIXES: #include <cstddef> >>> +// CHECK-FIXES: #include <cstdint> >>> +// CHECK-FIXES: #include <cstdio> >>> +// CHECK-FIXES: #include <cstdlib> >>> +// CHECK-FIXES: #include <cstring> >>> +// CHECK-FIXES: #include <ctime> >>> +// CHECK-FIXES: #include <cwchar> >>> +// CHECK-FIXES: #include <cwctype> >>> >>> Added: >>> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp?rev=261738&view=auto >>> >>> ============================================================================== >>> --- >>> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp >>> (added) >>> +++ >>> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp >>> Wed Feb 24 07:36:34 2016 >>> @@ -0,0 +1,163 @@ >>> +// RUN: %check_clang_tidy %s modernize-deprecated-headers %t -- -- >>> -std=c++11 -isystem %S/Inputs/Headers >>> + >>> +#include <assert.h> >>> +#include <complex.h> >>> +#include <ctype.h> >>> +#include <errno.h> >>> +#include <fenv.h> >>> +#include <float.h> >>> +#include <inttypes.h> >>> +#include <iso646.h> >>> +#include <limits.h> >>> +#include <locale.h> >>> +#include <math.h> >>> +#include <setjmp.h> >>> +#include <signal.h> >>> +#include <stdalign.h> >>> +#include <stdarg.h> >>> +#include <stdbool.h> >>> +#include <stddef.h> >>> +#include <stdint.h> >>> +#include <stdio.h> >>> +#include <stdlib.h> >>> +#include <string.h> >>> +#include <tgmath.h> >>> +#include <time.h> >>> +#include <uchar.h> >>> +#include <wchar.h> >>> +#include <wctype.h> >>> + >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'assert.h'; consider using 'cassert' instead >>> [modernize-deprecated-headers] >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'complex.h'; consider using 'ccomplex' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'ctype.h'; consider using 'cctype' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'errno.h'; consider using 'cerrno' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'fenv.h'; consider using 'cfenv' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'float.h'; consider using 'cfloat' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'inttypes.h'; consider using 'cinttypes' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'iso646.h'; consider using 'ciso646' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'limits.h'; consider using 'climits' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'locale.h'; consider using 'clocale' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'math.h'; consider using 'cmath' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'setjmp.h'; consider using 'csetjmp' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'signal.h'; consider using 'csignal' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stdalign.h'; consider using 'cstdalign' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stdarg.h'; consider using 'cstdarg' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stdbool.h'; consider using 'cstdbool' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stddef.h'; consider using 'cstddef' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stdint.h'; consider using 'cstdint' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stdio.h'; consider using 'cstdio' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stdlib.h'; consider using 'cstdlib' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'string.h'; consider using 'cstring' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'tgmath.h'; consider using 'ctgmath' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'time.h'; consider using 'ctime' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'uchar.h'; consider using 'cuchar' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'wchar.h'; consider using 'cwchar' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'wctype.h'; consider using 'cwctype' instead >>> + >>> +// CHECK-FIXES: #include <cassert> >>> +// CHECK-FIXES: #include <ccomplex> >>> +// CHECK-FIXES: #include <cctype> >>> +// CHECK-FIXES: #include <cerrno> >>> +// CHECK-FIXES: #include <cfenv> >>> +// CHECK-FIXES: #include <cfloat> >>> +// CHECK-FIXES: #include <cinttypes> >>> +// CHECK-FIXES: #include <ciso646> >>> +// CHECK-FIXES: #include <climits> >>> +// CHECK-FIXES: #include <clocale> >>> +// CHECK-FIXES: #include <cmath> >>> +// CHECK-FIXES: #include <csetjmp> >>> +// CHECK-FIXES: #include <csignal> >>> +// CHECK-FIXES: #include <cstdalign> >>> +// CHECK-FIXES: #include <cstdarg> >>> +// CHECK-FIXES: #include <cstdbool> >>> +// CHECK-FIXES: #include <cstddef> >>> +// CHECK-FIXES: #include <cstdint> >>> +// CHECK-FIXES: #include <cstdio> >>> +// CHECK-FIXES: #include <cstdlib> >>> +// CHECK-FIXES: #include <cstring> >>> +// CHECK-FIXES: #include <ctgmath> >>> +// CHECK-FIXES: #include <ctime> >>> +// CHECK-FIXES: #include <cuchar> >>> +// CHECK-FIXES: #include <cwchar> >>> +// CHECK-FIXES: #include <cwctype> >>> + >>> +#include "assert.h" >>> +#include "complex.h" >>> +#include "ctype.h" >>> +#include "errno.h" >>> +#include "fenv.h" >>> +#include "float.h" >>> +#include "inttypes.h" >>> +#include "iso646.h" >>> +#include "limits.h" >>> +#include "locale.h" >>> +#include "math.h" >>> +#include "setjmp.h" >>> +#include "signal.h" >>> +#include "stdalign.h" >>> +#include "stdarg.h" >>> +#include "stdbool.h" >>> +#include "stddef.h" >>> +#include "stdint.h" >>> +#include "stdio.h" >>> +#include "stdlib.h" >>> +#include "string.h" >>> +#include "tgmath.h" >>> +#include "time.h" >>> +#include "uchar.h" >>> +#include "wchar.h" >>> +#include "wctype.h" >>> + >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'assert.h'; consider using 'cassert' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'complex.h'; consider using 'ccomplex' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'ctype.h'; consider using 'cctype' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'errno.h'; consider using 'cerrno' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'fenv.h'; consider using 'cfenv' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'float.h'; consider using 'cfloat' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'inttypes.h'; consider using 'cinttypes' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'iso646.h'; consider using 'ciso646' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'limits.h'; consider using 'climits' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'locale.h'; consider using 'clocale' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'math.h'; consider using 'cmath' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'setjmp.h'; consider using 'csetjmp' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'signal.h'; consider using 'csignal' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stdalign.h'; consider using 'cstdalign' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stdarg.h'; consider using 'cstdarg' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stdbool.h'; consider using 'cstdbool' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stddef.h'; consider using 'cstddef' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stdint.h'; consider using 'cstdint' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stdio.h'; consider using 'cstdio' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'stdlib.h'; consider using 'cstdlib' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'string.h'; consider using 'cstring' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'tgmath.h'; consider using 'ctgmath' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'time.h'; consider using 'ctime' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'uchar.h'; consider using 'cuchar' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'wchar.h'; consider using 'cwchar' instead >>> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >>> C++ header 'wctype.h'; consider using 'cwctype' instead >>> + >>> +// CHECK-FIXES: #include <cassert> >>> +// CHECK-FIXES: #include <ccomplex> >>> +// CHECK-FIXES: #include <cctype> >>> +// CHECK-FIXES: #include <cerrno> >>> +// CHECK-FIXES: #include <cfenv> >>> +// CHECK-FIXES: #include <cfloat> >>> +// CHECK-FIXES: #include <cinttypes> >>> +// CHECK-FIXES: #include <ciso646> >>> +// CHECK-FIXES: #include <climits> >>> +// CHECK-FIXES: #include <clocale> >>> +// CHECK-FIXES: #include <cmath> >>> +// CHECK-FIXES: #include <csetjmp> >>> +// CHECK-FIXES: #include <csignal> >>> +// CHECK-FIXES: #include <cstdalign> >>> +// CHECK-FIXES: #include <cstdarg> >>> +// CHECK-FIXES: #include <cstdbool> >>> +// CHECK-FIXES: #include <cstddef> >>> +// CHECK-FIXES: #include <cstdint> >>> +// CHECK-FIXES: #include <cstdio> >>> +// CHECK-FIXES: #include <cstdlib> >>> +// CHECK-FIXES: #include <cstring> >>> +// CHECK-FIXES: #include <ctgmath> >>> +// CHECK-FIXES: #include <ctime> >>> +// CHECK-FIXES: #include <cuchar> >>> +// CHECK-FIXES: #include <cwchar> >>> +// CHECK-FIXES: #include <cwctype> >>> >>> >>> _______________________________________________ >>> cfe-commits mailing list >>> cfe-commits@lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >>> >> >> >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits