Author: steveire Date: Mon Oct 1 13:24:22 2018 New Revision: 343528 URL: http://llvm.org/viewvc/llvm-project?rev=343528&view=rev Log: [clang-tidy] Build it even without static analyzer
Conditionally compile the parts of clang-tidy which depend on the static analyzer. Funnily enough, I made the patch to exclude this from the build in 2013, and it was committed with the comment that the tool should not be fully excluded, but only the parts of it which depend on the analyzer should be excluded. http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20130617/081797.html This commit implements that idea. Reviewed By: aaron.ballman Tags: #clang-tools-extra Differential Revision: https://reviews.llvm.org/D52334 Modified: clang-tools-extra/trunk/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp clang-tools-extra/trunk/clang-tidy/plugin/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/plugin/ClangTidyPlugin.cpp clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp clang-tools-extra/trunk/docs/clang-tidy/index.rst clang-tools-extra/trunk/test/CMakeLists.txt clang-tools-extra/trunk/test/clang-tidy/enable-alpha-checks.cpp clang-tools-extra/trunk/test/clang-tidy/mpi-buffer-deref.cpp clang-tools-extra/trunk/test/clang-tidy/mpi-type-mismatch.cpp clang-tools-extra/trunk/test/clang-tidy/nolint.cpp clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp clang-tools-extra/trunk/test/clang-tidy/static-analyzer-config.cpp clang-tools-extra/trunk/test/clang-tidy/static-analyzer.cpp clang-tools-extra/trunk/test/clang-tidy/temporaries.cpp clang-tools-extra/trunk/test/lit.cfg clang-tools-extra/trunk/unittests/CMakeLists.txt Modified: clang-tools-extra/trunk/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/CMakeLists.txt?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/CMakeLists.txt (original) +++ clang-tools-extra/trunk/CMakeLists.txt Mon Oct 1 13:24:22 2018 @@ -1,10 +1,8 @@ add_subdirectory(clang-apply-replacements) add_subdirectory(clang-reorder-fields) add_subdirectory(modularize) -if(CLANG_ENABLE_STATIC_ANALYZER) add_subdirectory(clang-tidy) add_subdirectory(clang-tidy-vs) -endif() add_subdirectory(change-namespace) add_subdirectory(clang-doc) Modified: clang-tools-extra/trunk/clang-tidy/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/CMakeLists.txt?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clang-tidy/CMakeLists.txt Mon Oct 1 13:24:22 2018 @@ -21,12 +21,17 @@ add_clang_library(clangTidy clangLex clangRewrite clangSema - clangStaticAnalyzerCore - clangStaticAnalyzerFrontend clangTooling clangToolingCore ) +if(CLANG_ENABLE_STATIC_ANALYZER) + target_link_libraries(clangTidy PRIVATE + clangStaticAnalyzerCore + clangStaticAnalyzerFrontend + ) +endif() + add_subdirectory(android) add_subdirectory(abseil) add_subdirectory(boost) @@ -39,7 +44,9 @@ add_subdirectory(hicpp) add_subdirectory(llvm) add_subdirectory(misc) add_subdirectory(modernize) -add_subdirectory(mpi) +if(CLANG_ENABLE_STATIC_ANALYZER) + add_subdirectory(mpi) +endif() add_subdirectory(objc) add_subdirectory(performance) add_subdirectory(plugin) Modified: clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp Mon Oct 1 13:24:22 2018 @@ -23,6 +23,7 @@ #include "clang/AST/ASTContext.h" #include "clang/AST/Decl.h" #include "clang/ASTMatchers/ASTMatchFinder.h" +#include "clang/Config/config.h" #include "clang/Format/Format.h" #include "clang/Frontend/ASTConsumers.h" #include "clang/Frontend/CompilerInstance.h" @@ -34,8 +35,10 @@ #include "clang/Lex/Preprocessor.h" #include "clang/Rewrite/Frontend/FixItRewriter.h" #include "clang/Rewrite/Frontend/FrontendActions.h" +#if CLANG_ENABLE_STATIC_ANALYZER #include "clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h" #include "clang/StaticAnalyzer/Frontend/AnalysisConsumer.h" +#endif // CLANG_ENABLE_STATIC_ANALYZER #include "clang/Tooling/DiagnosticsYaml.h" #include "clang/Tooling/Refactoring.h" #include "clang/Tooling/ReplacementsYaml.h" @@ -56,6 +59,7 @@ namespace clang { namespace tidy { namespace { +#if CLANG_ENABLE_STATIC_ANALYZER static const char *AnalyzerCheckNamePrefix = "clang-analyzer-"; class AnalyzerDiagnosticConsumer : public ento::PathDiagnosticConsumer { @@ -87,6 +91,7 @@ public: private: ClangTidyContext &Context; }; +#endif // CLANG_ENABLE_STATIC_ANALYZER class ErrorReporter { public: @@ -296,6 +301,7 @@ ClangTidyASTConsumerFactory::ClangTidyAS } } +#if CLANG_ENABLE_STATIC_ANALYZER static void setStaticAnalyzerCheckerOpts(const ClangTidyOptions &Opts, AnalyzerOptionsRef AnalyzerOptions) { StringRef AnalyzerPrefix(AnalyzerCheckNamePrefix); @@ -339,6 +345,7 @@ static CheckersList getCheckersControlLi } return List; } +#endif // CLANG_ENABLE_STATIC_ANALYZER std::unique_ptr<clang::ASTConsumer> ClangTidyASTConsumerFactory::CreateASTConsumer( @@ -380,6 +387,7 @@ ClangTidyASTConsumerFactory::CreateASTCo if (!Checks.empty()) Consumers.push_back(Finder->newASTConsumer()); +#if CLANG_ENABLE_STATIC_ANALYZER AnalyzerOptionsRef AnalyzerOptions = Compiler.getAnalyzerOpts(); AnalyzerOptions->CheckersControlList = getCheckersControlList(Context, Context.canEnableAnalyzerAlphaCheckers()); @@ -395,6 +403,7 @@ ClangTidyASTConsumerFactory::CreateASTCo new AnalyzerDiagnosticConsumer(Context)); Consumers.push_back(std::move(AnalysisConsumer)); } +#endif // CLANG_ENABLE_STATIC_ANALYZER return llvm::make_unique<ClangTidyASTConsumer>( std::move(Consumers), std::move(Profiling), std::move(Finder), std::move(Checks)); @@ -407,9 +416,11 @@ std::vector<std::string> ClangTidyASTCon CheckNames.push_back(CheckFactory.first); } +#if CLANG_ENABLE_STATIC_ANALYZER for (const auto &AnalyzerCheck : getCheckersControlList( Context, Context.canEnableAnalyzerAlphaCheckers())) CheckNames.push_back(AnalyzerCheckNamePrefix + AnalyzerCheck.first); +#endif // CLANG_ENABLE_STATIC_ANALYZER std::sort(CheckNames.begin(), CheckNames.end()); return CheckNames; Modified: clang-tools-extra/trunk/clang-tidy/plugin/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/plugin/CMakeLists.txt?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/plugin/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clang-tidy/plugin/CMakeLists.txt Mon Oct 1 13:24:22 2018 @@ -20,7 +20,6 @@ add_clang_library(clangTidyPlugin clangTidyLLVMModule clangTidyMiscModule clangTidyModernizeModule - clangTidyMPIModule clangTidyObjCModule clangTidyPerformanceModule clangTidyPortabilityModule @@ -28,3 +27,9 @@ add_clang_library(clangTidyPlugin clangTidyZirconModule clangTooling ) + +if(CLANG_ENABLE_STATIC_ANALYZER) + target_link_libraries(clangTidyPlugin PRIVATE + clangTidyMPIModule + ) +endif() Modified: clang-tools-extra/trunk/clang-tidy/plugin/ClangTidyPlugin.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/plugin/ClangTidyPlugin.cpp?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/plugin/ClangTidyPlugin.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/plugin/ClangTidyPlugin.cpp Mon Oct 1 13:24:22 2018 @@ -9,6 +9,7 @@ #include "../ClangTidy.h" #include "../ClangTidyModule.h" +#include "clang/Config/config.h" #include "clang/Frontend/CompilerInstance.h" #include "clang/Frontend/FrontendPluginRegistry.h" #include "clang/Frontend/MultiplexConsumer.h" @@ -133,10 +134,12 @@ extern volatile int ModernizeModuleAncho static int LLVM_ATTRIBUTE_UNUSED ModernizeModuleAnchorDestination = ModernizeModuleAnchorSource; +#if CLANG_ENABLE_STATIC_ANALYZER // This anchor is used to force the linker to link the MPIModule. extern volatile int MPIModuleAnchorSource; static int LLVM_ATTRIBUTE_UNUSED MPIModuleAnchorDestination = MPIModuleAnchorSource; +#endif // This anchor is used to force the linker to link the ObjCModule. extern volatile int ObjCModuleAnchorSource; Modified: clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt Mon Oct 1 13:24:22 2018 @@ -29,7 +29,6 @@ target_link_libraries(clang-tidy clangTidyLLVMModule clangTidyMiscModule clangTidyModernizeModule - clangTidyMPIModule clangTidyObjCModule clangTidyPerformanceModule clangTidyPortabilityModule @@ -39,6 +38,12 @@ target_link_libraries(clang-tidy clangToolingCore ) +if(CLANG_ENABLE_STATIC_ANALYZER) + target_link_libraries(clang-tidy PRIVATE + clangTidyMPIModule + ) +endif() + install(PROGRAMS clang-tidy-diff.py DESTINATION share/clang COMPONENT clang-tidy) Modified: clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp Mon Oct 1 13:24:22 2018 @@ -16,6 +16,7 @@ //===----------------------------------------------------------------------===// #include "../ClangTidy.h" +#include "clang/Config/config.h" #include "clang/Tooling/CommonOptionsParser.h" #include "llvm/Support/Process.h" #include "llvm/Support/TargetSelect.h" @@ -534,10 +535,12 @@ extern volatile int ModernizeModuleAncho static int LLVM_ATTRIBUTE_UNUSED ModernizeModuleAnchorDestination = ModernizeModuleAnchorSource; +#if CLANG_ENABLE_STATIC_ANALYZER // This anchor is used to force the linker to link the MPIModule. extern volatile int MPIModuleAnchorSource; static int LLVM_ATTRIBUTE_UNUSED MPIModuleAnchorDestination = MPIModuleAnchorSource; +#endif // This anchor is used to force the linker to link the PerformanceModule. extern volatile int PerformanceModuleAnchorSource; Modified: clang-tools-extra/trunk/docs/clang-tidy/index.rst URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/index.rst?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/docs/clang-tidy/index.rst (original) +++ clang-tools-extra/trunk/docs/clang-tidy/index.rst Mon Oct 1 13:24:22 2018 @@ -337,6 +337,10 @@ There are a few tools particularly usefu * `clang-check`_ with the ``-ast-dump`` (and optionally ``-ast-dump-filter``) provides a convenient way to dump AST of a C++ program. +If CMake is configured with ``CLANG_ENABLE_STATIC_ANALYZER``, +:program:`clang-tidy` will not be built with support for the +``clang-analyzer-*`` checks or the ``mpi-*`` checks. + .. _AST Matchers: http://clang.llvm.org/docs/LibASTMatchers.html .. _PPCallbacks: http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html Modified: clang-tools-extra/trunk/test/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/CMakeLists.txt?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/test/CMakeLists.txt (original) +++ clang-tools-extra/trunk/test/CMakeLists.txt Mon Oct 1 13:24:22 2018 @@ -56,18 +56,14 @@ set(CLANG_TOOLS_TEST_DEPS # Unit tests ExtraToolsUnitTests - ) -if(CLANG_ENABLE_STATIC_ANALYZER) - list(APPEND CLANG_TOOLS_TEST_DEPS - # For the clang-tidy libclang integration test. - c-index-test - # clang-tidy tests require it. - clang-headers + # For the clang-tidy libclang integration test. + c-index-test + # clang-tidy tests require it. + clang-headers - clang-tidy - ) -endif() + clang-tidy + ) add_lit_testsuite(check-clang-tools "Running the Clang extra tools' regression tests" ${CMAKE_CURRENT_BINARY_DIR} Modified: clang-tools-extra/trunk/test/clang-tidy/enable-alpha-checks.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/enable-alpha-checks.cpp?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/enable-alpha-checks.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/enable-alpha-checks.cpp Mon Oct 1 13:24:22 2018 @@ -1,3 +1,5 @@ +// REQUIRES: static-analyzer + // Check if '-allow-enabling-analyzer-alpha-checkers' is visible for users. // RUN: clang-tidy -help | not grep 'allow-enabling-analyzer-alpha-checkers' Modified: clang-tools-extra/trunk/test/clang-tidy/mpi-buffer-deref.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/mpi-buffer-deref.cpp?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/mpi-buffer-deref.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/mpi-buffer-deref.cpp Mon Oct 1 13:24:22 2018 @@ -1,3 +1,4 @@ +// REQUIRES: static-analyzer // RUN: %check_clang_tidy %s mpi-buffer-deref %t -- -- -I %S/Inputs/mpi-type-mismatch #include "mpimock.h" Modified: clang-tools-extra/trunk/test/clang-tidy/mpi-type-mismatch.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/mpi-type-mismatch.cpp?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/mpi-type-mismatch.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/mpi-type-mismatch.cpp Mon Oct 1 13:24:22 2018 @@ -1,3 +1,4 @@ +// REQUIRES: static-analyzer // RUN: %check_clang_tidy %s mpi-type-mismatch %t -- -- -I %S/Inputs/mpi-type-mismatch #include "mpimock.h" Modified: clang-tools-extra/trunk/test/clang-tidy/nolint.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/nolint.cpp?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/nolint.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/nolint.cpp Mon Oct 1 13:24:22 2018 @@ -1,3 +1,4 @@ +// REQUIRES: static-analyzer // RUN: %check_clang_tidy %s google-explicit-constructor,clang-diagnostic-unused-variable,clang-analyzer-core.UndefinedBinaryOperatorResult %t -- -extra-arg=-Wunused-variable -- -I%S/Inputs/nolint #include "trigger_warning.h" Modified: clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp Mon Oct 1 13:24:22 2018 @@ -1,3 +1,4 @@ +// REQUIRES: static-analyzer // RUN: mkdir -p %T/read-file-config/ // RUN: cp %s %T/read-file-config/test.cpp // RUN: echo 'Checks: "-*,modernize-use-nullptr"' > %T/read-file-config/.clang-tidy Modified: clang-tools-extra/trunk/test/clang-tidy/static-analyzer-config.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/static-analyzer-config.cpp?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/static-analyzer-config.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/static-analyzer-config.cpp Mon Oct 1 13:24:22 2018 @@ -1,3 +1,4 @@ +// REQUIRES: static-analyzer // RUN: clang-tidy %s -checks='-*,clang-analyzer-unix.Malloc' -config='{CheckOptions: [{ key: "clang-analyzer-unix.Malloc:Optimistic", value: true}]}' -- | FileCheck %s typedef __typeof(sizeof(int)) size_t; void *malloc(size_t); Modified: clang-tools-extra/trunk/test/clang-tidy/static-analyzer.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/static-analyzer.cpp?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/static-analyzer.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/static-analyzer.cpp Mon Oct 1 13:24:22 2018 @@ -1,3 +1,4 @@ +// REQUIRES: static-analyzer // RUN: clang-tidy %s -checks='-*,clang-analyzer-*' -- | FileCheck %s extern void *malloc(unsigned long); extern void free(void *); Modified: clang-tools-extra/trunk/test/clang-tidy/temporaries.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/temporaries.cpp?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/temporaries.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/temporaries.cpp Mon Oct 1 13:24:22 2018 @@ -1,3 +1,4 @@ +// REQUIRES: static-analyzer // RUN: clang-tidy -checks='-*,clang-analyzer-core.NullDereference' %s -- | FileCheck %s struct NoReturnDtor { Modified: clang-tools-extra/trunk/test/lit.cfg URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/lit.cfg?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/test/lit.cfg (original) +++ clang-tools-extra/trunk/test/lit.cfg Mon Oct 1 13:24:22 2018 @@ -119,24 +119,22 @@ if platform.system() not in ['Windows']: if config.clang_staticanalyzer: config.available_features.add('static-analyzer') - check_clang_tidy = os.path.join( - config.test_source_root, "clang-tidy", "check_clang_tidy.py") - config.substitutions.append( - ('%check_clang_tidy', - '%s %s' % (config.python_executable, check_clang_tidy)) ) - clang_tidy_diff = os.path.join( - config.test_source_root, "..", "clang-tidy", "tool", "clang-tidy-diff.py") - config.substitutions.append( - ('%clang_tidy_diff', - '%s %s' % (config.python_executable, clang_tidy_diff)) ) - run_clang_tidy = os.path.join( - config.test_source_root, "..", "clang-tidy", "tool", "run-clang-tidy.py") - config.substitutions.append( - ('%run_clang_tidy', - '%s %s' % (config.python_executable, run_clang_tidy)) ) -else: - # exclude the clang-tidy test directory - config.excludes.append('clang-tidy') + +check_clang_tidy = os.path.join( + config.test_source_root, "clang-tidy", "check_clang_tidy.py") +config.substitutions.append( + ('%check_clang_tidy', + '%s %s' % (config.python_executable, check_clang_tidy)) ) +clang_tidy_diff = os.path.join( + config.test_source_root, "..", "clang-tidy", "tool", "clang-tidy-diff.py") +config.substitutions.append( + ('%clang_tidy_diff', + '%s %s' % (config.python_executable, clang_tidy_diff)) ) +run_clang_tidy = os.path.join( + config.test_source_root, "..", "clang-tidy", "tool", "run-clang-tidy.py") +config.substitutions.append( + ('%run_clang_tidy', + '%s %s' % (config.python_executable, run_clang_tidy)) ) clangd_benchmarks_dir = os.path.join(os.path.dirname(config.clang_tools_dir), "tools", "clang", "tools", "extra", Modified: clang-tools-extra/trunk/unittests/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/CMakeLists.txt?rev=343528&r1=343527&r2=343528&view=diff ============================================================================== --- clang-tools-extra/trunk/unittests/CMakeLists.txt (original) +++ clang-tools-extra/trunk/unittests/CMakeLists.txt Mon Oct 1 13:24:22 2018 @@ -18,8 +18,6 @@ add_subdirectory(change-namespace) add_subdirectory(clang-apply-replacements) add_subdirectory(clang-move) add_subdirectory(clang-query) -if(CLANG_ENABLE_STATIC_ANALYZER) - add_subdirectory(clang-tidy) -endif() +add_subdirectory(clang-tidy) add_subdirectory(clangd) add_subdirectory(include-fixer) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits