<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi!<div class=""><br class=""></div><div class="">Sorry for a late response: I was away for a while.</div><div class=""><br class=""></div><div class="">Alexander, thank you for the message forwarding, I wasn’t subscribed to cfe-commits, I guess I should do it now not to miss the comments on some of my patches!</div><div class=""><br class=""></div><div class="">Richard, thank you for the valuable feedback!</div><div class=""><br class=""></div><div class="">I’ve created a patch, which changes check behaviour as you proposed.</div><div class="">D17990 is up for a review.</div><div class=""><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Kind regards,</div><div class="">Kirill Bobyrev</div><div class=""><br class=""></div></div><br class="Apple-interchange-newline">

</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On 02 Mar 2016, at 4:40 AM, Alexander Kornienko <<a href="mailto:alexfh@google.com" class="">alexfh@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Kirill, FYI.</div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Thu, Feb 25, 2016 at 3:21 AM, Richard Smith <span dir="ltr" class=""><<a href="mailto:richard@metafoo.co.uk" target="_blank" class="">richard@metafoo.co.uk</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Wed, Feb 24, 2016 at 5:36 AM, Alexander Kornienko via cfe-commits<br class="">
<<a href="mailto:cfe-commits@lists.llvm.org" class="">cfe-commits@lists.llvm.org</a>> wrote:<br class="">
> Author: alexfh<br class="">
> Date: Wed Feb 24 07:36:34 2016<br class="">
> New Revision: 261738<br class="">
><br class="">
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=261738&view=rev" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=261738&view=rev</a><br class="">
> Log:<br class="">
> [clang-tidy] introduce modernize-deprecated-headers check<br class="">
><br class="">
> Summary:<br class="">
> This patch introduces the modernize-deprecated-headers check, which is supposed to replace deprecated C library headers with the C++ STL-ones.<br class="">
><br class="">
> For information see documentation; for exmaples see the test cases.<br class="">
><br class="">
> Reviewers: Eugene.Zelenko, LegalizeAdulthood, alexfh<br class="">
><br class="">
> Subscribers: cfe-commits<br class="">
><br class="">
> Patch by Kirill Bobyrev!<br class="">
><br class="">
> Differential Revision: <a href="http://reviews.llvm.org/D17484" rel="noreferrer" target="_blank" class="">http://reviews.llvm.org/D17484</a><br class="">
><br class="">
> Added:<br class="">
>     clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp<br class="">
>     clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h<br class="">
>     clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst<br class="">
>     clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp<br class="">
>     clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp<br class="">
> Modified:<br class="">
>     clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt<br class="">
>     clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp<br class="">
>     clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst<br class="">
><br class="">
> Modified: clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt<br class="">
> URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt?rev=261738&r1=261737&r2=261738&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt?rev=261738&r1=261737&r2=261738&view=diff</a><br class="">
> ==============================================================================<br class="">
> --- clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt (original)<br class="">
> +++ clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt Wed Feb 24 07:36:34 2016<br class="">
> @@ -1,6 +1,7 @@<br class="">
>  set(LLVM_LINK_COMPONENTS support)<br class="">
><br class="">
>  add_clang_library(clangTidyModernizeModule<br class="">
> +  DeprecatedHeadersCheck.cpp<br class="">
>    LoopConvertCheck.cpp<br class="">
>    LoopConvertUtils.cpp<br class="">
>    MakeUniqueCheck.cpp<br class="">
><br class="">
> Added: clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp<br class="">
> URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp?rev=261738&view=auto" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp?rev=261738&view=auto</a><br class="">
> ==============================================================================<br class="">
> --- clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp (added)<br class="">
> +++ clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp Wed Feb 24 07:36:34 2016<br class="">
> @@ -0,0 +1,110 @@<br class="">
> +//===--- DeprecatedHeadersCheck.cpp - clang-tidy---------------------------===//<br class="">
> +//<br class="">
> +//                     The LLVM Compiler Infrastructure<br class="">
> +//<br class="">
> +// This file is distributed under the University of Illinois Open Source<br class="">
> +// License. See LICENSE.TXT for details.<br class="">
> +//<br class="">
> +//===----------------------------------------------------------------------===//<br class="">
> +<br class="">
> +#include "DeprecatedHeadersCheck.h"<br class="">
> +#include "clang/Frontend/CompilerInstance.h"<br class="">
> +#include "clang/Lex/PPCallbacks.h"<br class="">
> +#include "clang/Lex/Preprocessor.h"<br class="">
> +#include "llvm/ADT/StringMap.h"<br class="">
> +<br class="">
> +#include <vector><br class="">
> +<br class="">
> +namespace clang {<br class="">
> +namespace tidy {<br class="">
> +namespace modernize {<br class="">
> +<br class="">
> +namespace {<br class="">
> +class IncludeModernizePPCallbacks : public PPCallbacks {<br class="">
> +public:<br class="">
> +  explicit IncludeModernizePPCallbacks(ClangTidyCheck &Check,<br class="">
> +                                       LangOptions LangOpts);<br class="">
> +<br class="">
> +  void InclusionDirective(SourceLocation HashLoc, const Token &IncludeTok,<br class="">
> +                          StringRef FileName, bool IsAngled,<br class="">
> +                          CharSourceRange FilenameRange, const FileEntry *File,<br class="">
> +                          StringRef SearchPath, StringRef RelativePath,<br class="">
> +                          const Module *Imported) override;<br class="">
> +<br class="">
> +private:<br class="">
> +  ClangTidyCheck &Check;<br class="">
> +  LangOptions LangOpts;<br class="">
> +  llvm::StringMap<std::string> CStyledHeaderToCxx;<br class="">
> +};<br class="">
> +} // namespace<br class="">
> +<br class="">
> +void DeprecatedHeadersCheck::registerPPCallbacks(CompilerInstance &Compiler) {<br class="">
> +  if (this->getLangOpts().CPlusPlus) {<br class="">
> +    Compiler.getPreprocessor().addPPCallbacks(<br class="">
> +        ::llvm::make_unique<IncludeModernizePPCallbacks>(*this,<br class="">
> +                                                         this->getLangOpts()));<br class="">
> +  }<br class="">
> +}<br class="">
> +<br class="">
> +IncludeModernizePPCallbacks::IncludeModernizePPCallbacks(ClangTidyCheck &Check,<br class="">
> +                                                         LangOptions LangOpts)<br class="">
> +    : Check(Check), LangOpts(LangOpts),<br class="">
> +      CStyledHeaderToCxx({{"assert.h", "cassert"},<br class="">
> +                          {"complex.h", "ccomplex"},<br class="">
<br class="">
</div></div>It'd be better to convert this one to <complex>, or leave it alone.<br class="">
<ccomplex> is an unnecessary wart.<br class="">
<br class="">
(The contents of C++11's <complex.h> / <ccomplex> / <complex> (all of<br class="">
which are identical) aren't comparable to C99's <complex.h>, so if<br class="">
this was C++98 code using the C99 header, the code will be broken with<br class="">
or without this transformation.)<br class="">
<span class=""><br class="">
> +                          {"ctype.h", "cctype"},<br class="">
> +                          {"errno.h", "cerrno"},<br class="">
> +                          {"float.h", "cfloat"},<br class="">
> +                          {"inttypes.h", "cinttypes"},<br class="">
<br class="">
> +                          {"iso646.h", "ciso646"},<br class="">
<br class="">
</span>Just delete #includes of this one. <ciso646> does nothing.<br class="">
<span class=""><br class="">
> +                          {"limits.h", "climits"},<br class="">
> +                          {"locale.h", "clocale"},<br class="">
> +                          {"math.h", "cmath"},<br class="">
> +                          {"setjmp.h", "csetjmp"},<br class="">
> +                          {"signal.h", "csignal"},<br class="">
> +                          {"stdarg.h", "cstdarg"},<br class="">
> +                          {"stddef.h", "cstddef"},<br class="">
> +                          {"stdint.h", "cstdint"},<br class="">
> +                          {"stdio.h", "cstdio"},<br class="">
> +                          {"stdlib.h", "cstdlib"},<br class="">
> +                          {"string.h", "cstring"},<br class="">
> +                          {"time.h", "ctime"},<br class="">
> +                          {"wchar.h", "cwchar"},<br class="">
> +                          {"wctype.h", "cwctype"}}) {<br class="">
> +  // Add C++ 11 headers.<br class="">
> +  if (LangOpts.CPlusPlus11) {<br class="">
> +    for (const auto &it : std::vector<std::pair<std::string, std::string>>(<br class="">
> +             {{"fenv.h", "cfenv"},<br class="">
<br class="">
> +              {"stdalign.h", "cstdalign"},<br class="">
> +              {"stdbool.h", "cstdbool"},<br class="">
<br class="">
</span>We should just delete these two includes. These headers do nothing in C++.<br class="">
<span class=""><br class="">
> +              {"tgmath.h", "ctgmath"},<br class="">
<br class="">
</span>This one is pretty broken, but transitioning to <ctgmath> is better<br class="">
than nothing.<br class="">
<div class="HOEnZb"><div class="h5"><br class="">
> +              {"uchar.h", "cuchar"}})) {<br class="">
> +      CStyledHeaderToCxx.insert(it);<br class="">
> +    }<br class="">
> +  }<br class="">
> +}<br class="">
> +<br class="">
> +void IncludeModernizePPCallbacks::InclusionDirective(<br class="">
> +    SourceLocation HashLoc, const Token &IncludeTok, StringRef FileName,<br class="">
> +    bool IsAngled, CharSourceRange FilenameRange, const FileEntry *File,<br class="">
> +    StringRef SearchPath, StringRef RelativePath, const Module *Imported) {<br class="">
> +  // FIXME: Take care of library symbols from the global namespace.<br class="">
> +  //<br class="">
> +  // Reasonable options for the check:<br class="">
> +  //<br class="">
> +  // 1. Insert std prefix for every such symbol occurance.<br class="">
> +  // 2. Insert `using namespace std;` to the beginning of TU.<br class="">
> +  // 3. Do nothing and let the user deal with the migration himself.<br class="">
> +  if (CStyledHeaderToCxx.count(FileName) != 0) {<br class="">
> +    std::string Replacement =<br class="">
> +        (llvm::Twine("<") + CStyledHeaderToCxx[FileName] + ">").str();<br class="">
> +    Check.diag(FilenameRange.getBegin(),<br class="">
> +               "inclusion of deprecated C++ header '%0'; consider using '%1' instead")<br class="">
> +        << FileName << CStyledHeaderToCxx[FileName]<br class="">
> +        << FixItHint::CreateReplacement(FilenameRange.getAsRange(),<br class="">
> +                                        Replacement);<br class="">
> +  }<br class="">
> +}<br class="">
> +<br class="">
> +} // namespace modernize<br class="">
> +} // namespace tidy<br class="">
> +} // namespace clang<br class="">
><br class="">
> Added: clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h<br class="">
> URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h?rev=261738&view=auto" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h?rev=261738&view=auto</a><br class="">
> ==============================================================================<br class="">
> --- clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h (added)<br class="">
> +++ clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h Wed Feb 24 07:36:34 2016<br class="">
> @@ -0,0 +1,42 @@<br class="">
> +//===--- DeprecatedHeadersCheck.h - clang-tidy-------------------*- C++ -*-===//<br class="">
> +//<br class="">
> +//                     The LLVM Compiler Infrastructure<br class="">
> +//<br class="">
> +// This file is distributed under the University of Illinois Open Source<br class="">
> +// License. See LICENSE.TXT for details.<br class="">
> +//<br class="">
> +//===----------------------------------------------------------------------===//<br class="">
> +<br class="">
> +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_C_HEADERS_TO_CXX_H<br class="">
> +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_C_HEADERS_TO_CXX_H<br class="">
> +<br class="">
> +#include "../ClangTidy.h"<br class="">
> +<br class="">
> +namespace clang {<br class="">
> +namespace tidy {<br class="">
> +namespace modernize {<br class="">
> +<br class="">
> +/// This check replaces deprecated C library headers with their C++ STL<br class="">
> +/// alternatives.<br class="">
> +///<br class="">
> +/// Before:<br class="">
> +///   #include <header.h><br class="">
> +/// After:<br class="">
> +///   #include <cheader><br class="">
> +///<br class="">
> +/// Example: <stdio.h> => <cstdio><br class="">
> +///<br class="">
> +/// For the user-facing documentation see:<br class="">
> +/// <a href="http://clang.llvm.org/extra/clang-tidy/checks/modernize-deprecated-headers.html" rel="noreferrer" target="_blank" class="">http://clang.llvm.org/extra/clang-tidy/checks/modernize-deprecated-headers.html</a><br class="">
> +class DeprecatedHeadersCheck : public ClangTidyCheck {<br class="">
> +public:<br class="">
> +  DeprecatedHeadersCheck(StringRef Name, ClangTidyContext *Context)<br class="">
> +      : ClangTidyCheck(Name, Context) {}<br class="">
> +  void registerPPCallbacks(CompilerInstance &Compiler) override;<br class="">
> +};<br class="">
> +<br class="">
> +} // namespace modernize<br class="">
> +} // namespace tidy<br class="">
> +} // namespace clang<br class="">
> +<br class="">
> +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_C_HEADERS_TO_CXX_H<br class="">
><br class="">
> Modified: clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp<br class="">
> URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp?rev=261738&r1=261737&r2=261738&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp?rev=261738&r1=261737&r2=261738&view=diff</a><br class="">
> ==============================================================================<br class="">
> --- clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp (original)<br class="">
> +++ clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp Wed Feb 24 07:36:34 2016<br class="">
> @@ -10,6 +10,7 @@<br class="">
>  #include "../ClangTidy.h"<br class="">
>  #include "../ClangTidyModule.h"<br class="">
>  #include "../ClangTidyModuleRegistry.h"<br class="">
> +#include "DeprecatedHeadersCheck.h"<br class="">
>  #include "LoopConvertCheck.h"<br class="">
>  #include "MakeUniqueCheck.h"<br class="">
>  #include "PassByValueCheck.h"<br class="">
> @@ -30,6 +31,8 @@ namespace modernize {<br class="">
>  class ModernizeModule : public ClangTidyModule {<br class="">
>  public:<br class="">
>    void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {<br class="">
> +    CheckFactories.registerCheck<DeprecatedHeadersCheck>(<br class="">
> +        "modernize-deprecated-headers");<br class="">
>      CheckFactories.registerCheck<LoopConvertCheck>("modernize-loop-convert");<br class="">
>      CheckFactories.registerCheck<MakeUniqueCheck>("modernize-make-unique");<br class="">
>      CheckFactories.registerCheck<PassByValueCheck>("modernize-pass-by-value");<br class="">
><br class="">
> Modified: clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst<br class="">
> URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst?rev=261738&r1=261737&r2=261738&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst?rev=261738&r1=261737&r2=261738&view=diff</a><br class="">
> ==============================================================================<br class="">
> --- clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst (original)<br class="">
> +++ clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst Wed Feb 24 07:36:34 2016<br class="">
> @@ -74,6 +74,7 @@ Clang-Tidy Checks<br class="">
>     misc-unused-parameters<br class="">
>     misc-unused-raii<br class="">
>     misc-virtual-near-miss<br class="">
> +   modernize-deprecated-headers<br class="">
>     modernize-loop-convert<br class="">
>     modernize-make-unique<br class="">
>     modernize-pass-by-value<br class="">
><br class="">
> Added: clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst<br class="">
> URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst?rev=261738&view=auto" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst?rev=261738&view=auto</a><br class="">
> ==============================================================================<br class="">
> --- clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst (added)<br class="">
> +++ clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst Wed Feb 24 07:36:34 2016<br class="">
> @@ -0,0 +1,45 @@<br class="">
> +.. title:: clang-tidy - modernize-deprecated-headers<br class="">
> +<br class="">
> +modernize-deprecated-headers<br class="">
> +==========================<br class="">
> +<br class="">
> +Some headers from C library were deprecated in C++ and are no longer welcome in<br class="">
> +C++ codebases. For more details refer to the C++ 14 Standard [depr.c.headers]<br class="">
> +section.<br class="">
> +<br class="">
> +This check replaces C standard library headers with their C++ alternatives.<br class="">
> +<br class="">
> +Improtant note: the Standard doesn't guarantee that the C++ headers declare all<br class="">
> +the same functions in the global namespace. The check in its current form can<br class="">
> +break the code that uses library symbols from the global namespace.<br class="">
> +<br class="">
> +* `<assert.h>`<br class="">
> +* `<complex.h>`<br class="">
> +* `<ctype.h>`<br class="">
> +* `<errno.h>`<br class="">
> +* `<fenv.h>`     // deprecated since C++11<br class="">
> +* `<float.h>`<br class="">
> +* `<inttypes.h>`<br class="">
> +* `<iso646.h>`<br class="">
> +* `<limits.h>`<br class="">
> +* `<locale.h>`<br class="">
> +* `<math.h>`<br class="">
> +* `<setjmp.h>`<br class="">
> +* `<signal.h>`<br class="">
> +* `<stdalign.h>` // deprecated since C++11<br class="">
> +* `<stdarg.h>`<br class="">
> +* `<stdbool.h>`  // deprecated since C++11<br class="">
> +* `<stddef.h>`<br class="">
> +* `<stdint.h>`<br class="">
> +* `<stdio.h>`<br class="">
> +* `<stdlib.h>`<br class="">
> +* `<string.h>`<br class="">
> +* `<tgmath.h>`   // deprecated since C++11<br class="">
> +* `<time.h>`<br class="">
> +* `<uchar.h>`    // deprecated since C++11<br class="">
> +* `<wchar.h>`<br class="">
> +* `<wctype.h>`<br class="">
> +<br class="">
> +If the specified standard is older than C++11 the check will only replace<br class="">
> +headers deprecated before C++11, otherwise -- every header that appeared in<br class="">
> +the list.<br class="">
><br class="">
> Added: clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp<br class="">
> URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp?rev=261738&view=auto" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp?rev=261738&view=auto</a><br class="">
> ==============================================================================<br class="">
> --- clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp (added)<br class="">
> +++ clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp Wed Feb 24 07:36:34 2016<br class="">
> @@ -0,0 +1,147 @@<br class="">
> +// RUN: %check_clang_tidy %s modernize-deprecated-headers %t -- -- -std=c++03 -isystem %S/Inputs/Headers<br class="">
> +<br class="">
> +#include <assert.h><br class="">
> +#include <complex.h><br class="">
> +#include <ctype.h><br class="">
> +#include <errno.h><br class="">
> +#include <float.h><br class="">
> +#include <inttypes.h><br class="">
> +#include <iso646.h><br class="">
> +#include <limits.h><br class="">
> +#include <locale.h><br class="">
> +#include <math.h><br class="">
> +#include <setjmp.h><br class="">
> +#include <signal.h><br class="">
> +#include <stdarg.h><br class="">
> +#include <stddef.h><br class="">
> +#include <stdint.h><br class="">
> +#include <stdio.h><br class="">
> +#include <stdlib.h><br class="">
> +#include <string.h><br class="">
> +#include <time.h><br class="">
> +#include <wchar.h><br class="">
> +#include <wctype.h><br class="">
> +<br class="">
> +// Headers deprecated since C++11: expect no diagnostics.<br class="">
> +#include <fenv.h><br class="">
> +#include <stdalign.h><br class="">
> +#include <stdbool.h><br class="">
> +#include <tgmath.h><br class="">
> +#include <uchar.h><br class="">
> +<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead [modernize-deprecated-headers]<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'ccomplex' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'ctype.h'; consider using 'cctype' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'errno.h'; consider using 'cerrno' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'float.h'; consider using 'cfloat' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'inttypes.h'; consider using 'cinttypes' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'iso646.h'; consider using 'ciso646' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'limits.h'; consider using 'climits' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'locale.h'; consider using 'clocale' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'math.h'; consider using 'cmath' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'setjmp.h'; consider using 'csetjmp' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'signal.h'; consider using 'csignal' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'stdarg.h'; consider using 'cstdarg' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'stddef.h'; consider using 'cstddef' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'stdint.h'; consider using 'cstdint' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'stdio.h'; consider using 'cstdio' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'stdlib.h'; consider using 'cstdlib' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'string.h'; consider using 'cstring' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'time.h'; consider using 'ctime' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'wchar.h'; consider using 'cwchar' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'wctype.h'; consider using 'cwctype' instead<br class="">
> +<br class="">
> +// CHECK-FIXES: #include <cassert><br class="">
> +// CHECK-FIXES: #include <ccomplex><br class="">
> +// CHECK-FIXES: #include <cctype><br class="">
> +// CHECK-FIXES: #include <cerrno><br class="">
> +// CHECK-FIXES: #include <cfloat><br class="">
> +// CHECK-FIXES: #include <cinttypes><br class="">
> +// CHECK-FIXES: #include <ciso646><br class="">
> +// CHECK-FIXES: #include <climits><br class="">
> +// CHECK-FIXES: #include <clocale><br class="">
> +// CHECK-FIXES: #include <cmath><br class="">
> +// CHECK-FIXES: #include <csetjmp><br class="">
> +// CHECK-FIXES: #include <csignal><br class="">
> +// CHECK-FIXES: #include <cstdarg><br class="">
> +// CHECK-FIXES: #include <cstddef><br class="">
> +// CHECK-FIXES: #include <cstdint><br class="">
> +// CHECK-FIXES: #include <cstdio><br class="">
> +// CHECK-FIXES: #include <cstdlib><br class="">
> +// CHECK-FIXES: #include <cstring><br class="">
> +// CHECK-FIXES: #include <ctime><br class="">
> +// CHECK-FIXES: #include <cwchar><br class="">
> +// CHECK-FIXES: #include <cwctype><br class="">
> +<br class="">
> +#include "assert.h"<br class="">
> +#include "complex.h"<br class="">
> +#include "ctype.h"<br class="">
> +#include "errno.h"<br class="">
> +#include "float.h"<br class="">
> +#include "inttypes.h"<br class="">
> +#include "iso646.h"<br class="">
> +#include "limits.h"<br class="">
> +#include "locale.h"<br class="">
> +#include "math.h"<br class="">
> +#include "setjmp.h"<br class="">
> +#include "signal.h"<br class="">
> +#include "stdarg.h"<br class="">
> +#include "stddef.h"<br class="">
> +#include "stdint.h"<br class="">
> +#include "stdio.h"<br class="">
> +#include "stdlib.h"<br class="">
> +#include "string.h"<br class="">
> +#include "time.h"<br class="">
> +#include "wchar.h"<br class="">
> +#include "wctype.h"<br class="">
> +<br class="">
> +// Headers deprecated since C++11; expect no diagnostics<br class="">
> +#include "fenv.h"<br class="">
> +#include "stdalign.h"<br class="">
> +#include "stdbool.h"<br class="">
> +#include "tgmath.h"<br class="">
> +#include "uchar.h"<br class="">
> +<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'ccomplex' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'ctype.h'; consider using 'cctype' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'errno.h'; consider using 'cerrno' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'float.h'; consider using 'cfloat' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'inttypes.h'; consider using 'cinttypes' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'iso646.h'; consider using 'ciso646' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'limits.h'; consider using 'climits' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'locale.h'; consider using 'clocale' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'math.h'; consider using 'cmath' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'setjmp.h'; consider using 'csetjmp' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'signal.h'; consider using 'csignal' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'stdarg.h'; consider using 'cstdarg' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'stddef.h'; consider using 'cstddef' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'stdint.h'; consider using 'cstdint' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'stdio.h'; consider using 'cstdio' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'stdlib.h'; consider using 'cstdlib' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'string.h'; consider using 'cstring' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'time.h'; consider using 'ctime' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'wchar.h'; consider using 'cwchar' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'wctype.h'; consider using 'cwctype' instead<br class="">
> +<br class="">
> +// CHECK-FIXES: #include <cassert><br class="">
> +// CHECK-FIXES: #include <ccomplex><br class="">
> +// CHECK-FIXES: #include <cctype><br class="">
> +// CHECK-FIXES: #include <cerrno><br class="">
> +// CHECK-FIXES: #include <cfloat><br class="">
> +// CHECK-FIXES: #include <cinttypes><br class="">
> +// CHECK-FIXES: #include <ciso646><br class="">
> +// CHECK-FIXES: #include <climits><br class="">
> +// CHECK-FIXES: #include <clocale><br class="">
> +// CHECK-FIXES: #include <cmath><br class="">
> +// CHECK-FIXES: #include <csetjmp><br class="">
> +// CHECK-FIXES: #include <csignal><br class="">
> +// CHECK-FIXES: #include <cstdarg><br class="">
> +// CHECK-FIXES: #include <cstddef><br class="">
> +// CHECK-FIXES: #include <cstdint><br class="">
> +// CHECK-FIXES: #include <cstdio><br class="">
> +// CHECK-FIXES: #include <cstdlib><br class="">
> +// CHECK-FIXES: #include <cstring><br class="">
> +// CHECK-FIXES: #include <ctime><br class="">
> +// CHECK-FIXES: #include <cwchar><br class="">
> +// CHECK-FIXES: #include <cwctype><br class="">
><br class="">
> Added: clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp<br class="">
> URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp?rev=261738&view=auto" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp?rev=261738&view=auto</a><br class="">
> ==============================================================================<br class="">
> --- clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp (added)<br class="">
> +++ clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp Wed Feb 24 07:36:34 2016<br class="">
> @@ -0,0 +1,163 @@<br class="">
> +// RUN: %check_clang_tidy %s modernize-deprecated-headers %t -- -- -std=c++11 -isystem %S/Inputs/Headers<br class="">
> +<br class="">
> +#include <assert.h><br class="">
> +#include <complex.h><br class="">
> +#include <ctype.h><br class="">
> +#include <errno.h><br class="">
> +#include <fenv.h><br class="">
> +#include <float.h><br class="">
> +#include <inttypes.h><br class="">
> +#include <iso646.h><br class="">
> +#include <limits.h><br class="">
> +#include <locale.h><br class="">
> +#include <math.h><br class="">
> +#include <setjmp.h><br class="">
> +#include <signal.h><br class="">
> +#include <stdalign.h><br class="">
> +#include <stdarg.h><br class="">
> +#include <stdbool.h><br class="">
> +#include <stddef.h><br class="">
> +#include <stdint.h><br class="">
> +#include <stdio.h><br class="">
> +#include <stdlib.h><br class="">
> +#include <string.h><br class="">
> +#include <tgmath.h><br class="">
> +#include <time.h><br class="">
> +#include <uchar.h><br class="">
> +#include <wchar.h><br class="">
> +#include <wctype.h><br class="">
> +<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead [modernize-deprecated-headers]<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'ccomplex' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'ctype.h'; consider using 'cctype' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'errno.h'; consider using 'cerrno' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'fenv.h'; consider using 'cfenv' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'float.h'; consider using 'cfloat' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'inttypes.h'; consider using 'cinttypes' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'iso646.h'; consider using 'ciso646' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'limits.h'; consider using 'climits' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'locale.h'; consider using 'clocale' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'math.h'; consider using 'cmath' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'setjmp.h'; consider using 'csetjmp' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'signal.h'; consider using 'csignal' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdalign.h'; consider using 'cstdalign' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdarg.h'; consider using 'cstdarg' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdbool.h'; consider using 'cstdbool' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stddef.h'; consider using 'cstddef' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdint.h'; consider using 'cstdint' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdio.h'; consider using 'cstdio' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdlib.h'; consider using 'cstdlib' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'string.h'; consider using 'cstring' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'tgmath.h'; consider using 'ctgmath' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'time.h'; consider using 'ctime' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'uchar.h'; consider using 'cuchar' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'wchar.h'; consider using 'cwchar' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'wctype.h'; consider using 'cwctype' instead<br class="">
> +<br class="">
> +// CHECK-FIXES: #include <cassert><br class="">
> +// CHECK-FIXES: #include <ccomplex><br class="">
> +// CHECK-FIXES: #include <cctype><br class="">
> +// CHECK-FIXES: #include <cerrno><br class="">
> +// CHECK-FIXES: #include <cfenv><br class="">
> +// CHECK-FIXES: #include <cfloat><br class="">
> +// CHECK-FIXES: #include <cinttypes><br class="">
> +// CHECK-FIXES: #include <ciso646><br class="">
> +// CHECK-FIXES: #include <climits><br class="">
> +// CHECK-FIXES: #include <clocale><br class="">
> +// CHECK-FIXES: #include <cmath><br class="">
> +// CHECK-FIXES: #include <csetjmp><br class="">
> +// CHECK-FIXES: #include <csignal><br class="">
> +// CHECK-FIXES: #include <cstdalign><br class="">
> +// CHECK-FIXES: #include <cstdarg><br class="">
> +// CHECK-FIXES: #include <cstdbool><br class="">
> +// CHECK-FIXES: #include <cstddef><br class="">
> +// CHECK-FIXES: #include <cstdint><br class="">
> +// CHECK-FIXES: #include <cstdio><br class="">
> +// CHECK-FIXES: #include <cstdlib><br class="">
> +// CHECK-FIXES: #include <cstring><br class="">
> +// CHECK-FIXES: #include <ctgmath><br class="">
> +// CHECK-FIXES: #include <ctime><br class="">
> +// CHECK-FIXES: #include <cuchar><br class="">
> +// CHECK-FIXES: #include <cwchar><br class="">
> +// CHECK-FIXES: #include <cwctype><br class="">
> +<br class="">
> +#include "assert.h"<br class="">
> +#include "complex.h"<br class="">
> +#include "ctype.h"<br class="">
> +#include "errno.h"<br class="">
> +#include "fenv.h"<br class="">
> +#include "float.h"<br class="">
> +#include "inttypes.h"<br class="">
> +#include "iso646.h"<br class="">
> +#include "limits.h"<br class="">
> +#include "locale.h"<br class="">
> +#include "math.h"<br class="">
> +#include "setjmp.h"<br class="">
> +#include "signal.h"<br class="">
> +#include "stdalign.h"<br class="">
> +#include "stdarg.h"<br class="">
> +#include "stdbool.h"<br class="">
> +#include "stddef.h"<br class="">
> +#include "stdint.h"<br class="">
> +#include "stdio.h"<br class="">
> +#include "stdlib.h"<br class="">
> +#include "string.h"<br class="">
> +#include "tgmath.h"<br class="">
> +#include "time.h"<br class="">
> +#include "uchar.h"<br class="">
> +#include "wchar.h"<br class="">
> +#include "wctype.h"<br class="">
> +<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'ccomplex' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'ctype.h'; consider using 'cctype' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'errno.h'; consider using 'cerrno' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'fenv.h'; consider using 'cfenv' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'float.h'; consider using 'cfloat' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'inttypes.h'; consider using 'cinttypes' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'iso646.h'; consider using 'ciso646' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'limits.h'; consider using 'climits' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'locale.h'; consider using 'clocale' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'math.h'; consider using 'cmath' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'setjmp.h'; consider using 'csetjmp' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'signal.h'; consider using 'csignal' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdalign.h'; consider using 'cstdalign' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdarg.h'; consider using 'cstdarg' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdbool.h'; consider using 'cstdbool' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stddef.h'; consider using 'cstddef' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdint.h'; consider using 'cstdint' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdio.h'; consider using 'cstdio' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdlib.h'; consider using 'cstdlib' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'string.h'; consider using 'cstring' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'tgmath.h'; consider using 'ctgmath' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'time.h'; consider using 'ctime' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'uchar.h'; consider using 'cuchar' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'wchar.h'; consider using 'cwchar' instead<br class="">
> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'wctype.h'; consider using 'cwctype' instead<br class="">
> +<br class="">
> +// CHECK-FIXES: #include <cassert><br class="">
> +// CHECK-FIXES: #include <ccomplex><br class="">
> +// CHECK-FIXES: #include <cctype><br class="">
> +// CHECK-FIXES: #include <cerrno><br class="">
> +// CHECK-FIXES: #include <cfenv><br class="">
> +// CHECK-FIXES: #include <cfloat><br class="">
> +// CHECK-FIXES: #include <cinttypes><br class="">
> +// CHECK-FIXES: #include <ciso646><br class="">
> +// CHECK-FIXES: #include <climits><br class="">
> +// CHECK-FIXES: #include <clocale><br class="">
> +// CHECK-FIXES: #include <cmath><br class="">
> +// CHECK-FIXES: #include <csetjmp><br class="">
> +// CHECK-FIXES: #include <csignal><br class="">
> +// CHECK-FIXES: #include <cstdalign><br class="">
> +// CHECK-FIXES: #include <cstdarg><br class="">
> +// CHECK-FIXES: #include <cstdbool><br class="">
> +// CHECK-FIXES: #include <cstddef><br class="">
> +// CHECK-FIXES: #include <cstdint><br class="">
> +// CHECK-FIXES: #include <cstdio><br class="">
> +// CHECK-FIXES: #include <cstdlib><br class="">
> +// CHECK-FIXES: #include <cstring><br class="">
> +// CHECK-FIXES: #include <ctgmath><br class="">
> +// CHECK-FIXES: #include <ctime><br class="">
> +// CHECK-FIXES: #include <cuchar><br class="">
> +// CHECK-FIXES: #include <cwchar><br class="">
> +// CHECK-FIXES: #include <cwctype><br class="">
><br class="">
><br class="">
> _______________________________________________<br class="">
> cfe-commits mailing list<br class="">
> <a href="mailto:cfe-commits@lists.llvm.org" class="">cfe-commits@lists.llvm.org</a><br class="">
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br class="">
</div></div></blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></div></body></html>