PiotrZSL updated this revision to Diff 543641. PiotrZSL retitled this revision from "[clang-tidy] Add --disable-modular-headers-expansion option" to "[clang-tidy] Add --experimental-disable-module-headers-parsing option". PiotrZSL added a comment.
Rename of option + cleanup Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D156024/new/ https://reviews.llvm.org/D156024 Files: clang-tools-extra/clang-tidy/ClangTidy.cpp clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp Index: clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp =================================================================== --- clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp +++ clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp @@ -263,6 +263,11 @@ cl::init(false), cl::Hidden, cl::cat(ClangTidyCategory)); +static cl::opt<bool> + DisableModuleHeadersParsing("experimental-disable-module-headers-parsing", + cl::init(false), cl::Hidden, + cl::cat(ClangTidyCategory)); + static cl::opt<std::string> ExportFixes("export-fixes", desc(R"( YAML file to store suggested fixes in. The stored fixes can be applied to the input source @@ -659,7 +664,8 @@ llvm::InitializeAllAsmParsers(); ClangTidyContext Context(std::move(OwningOptionsProvider), - AllowEnablingAnalyzerAlphaCheckers); + AllowEnablingAnalyzerAlphaCheckers, + DisableModuleHeadersParsing); std::vector<ClangTidyError> Errors = runClangTidy(Context, OptionsParser->getCompilations(), PathList, BaseFS, FixNotes, EnableCheckProfile, ProfilePrefix); Index: clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h =================================================================== --- clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h +++ clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h @@ -70,7 +70,8 @@ public: /// Initializes \c ClangTidyContext instance. ClangTidyContext(std::unique_ptr<ClangTidyOptionsProvider> OptionsProvider, - bool AllowEnablingAnalyzerAlphaCheckers = false); + bool AllowEnablingAnalyzerAlphaCheckers = false, + bool DisableModuleHeadersParsing = false); /// Sets the DiagnosticsEngine that diag() will emit diagnostics to. // FIXME: this is required initialization, and should be a constructor param. // Fix the context -> diag engine -> consumer -> context initialization cycle. @@ -198,6 +199,10 @@ return AllowEnablingAnalyzerAlphaCheckers; } + bool canEnableModuleHeadersParsing() const { + return !DisableModuleHeadersParsing; + } + void setSelfContainedDiags(bool Value) { SelfContainedDiags = Value; } bool areDiagsSelfContained() const { return SelfContainedDiags; } @@ -245,6 +250,7 @@ std::string ProfilePrefix; bool AllowEnablingAnalyzerAlphaCheckers; + bool DisableModuleHeadersParsing; bool SelfContainedDiags; Index: clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp =================================================================== --- clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp +++ clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp @@ -161,10 +161,11 @@ ClangTidyContext::ClangTidyContext( std::unique_ptr<ClangTidyOptionsProvider> OptionsProvider, - bool AllowEnablingAnalyzerAlphaCheckers) + bool AllowEnablingAnalyzerAlphaCheckers, bool DisableModuleHeadersParsing) : DiagEngine(nullptr), OptionsProvider(std::move(OptionsProvider)), Profile(false), AllowEnablingAnalyzerAlphaCheckers(AllowEnablingAnalyzerAlphaCheckers), + DisableModuleHeadersParsing(DisableModuleHeadersParsing), SelfContainedDiags(false) { // Before the first translation unit we can get errors related to command-line // parsing, use empty string for the file name in this case. Index: clang-tools-extra/clang-tidy/ClangTidy.cpp =================================================================== --- clang-tools-extra/clang-tidy/ClangTidy.cpp +++ clang-tools-extra/clang-tidy/ClangTidy.cpp @@ -418,7 +418,8 @@ Preprocessor *PP = &Compiler.getPreprocessor(); Preprocessor *ModuleExpanderPP = PP; - if (Context.getLangOpts().Modules && OverlayFS != nullptr) { + if (Context.canEnableModuleHeadersParsing() && + Context.getLangOpts().Modules && OverlayFS != nullptr) { auto ModuleExpander = std::make_unique<ExpandModularHeadersPPCallbacks>( &Compiler, OverlayFS); ModuleExpanderPP = ModuleExpander->getPreprocessor();
Index: clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp =================================================================== --- clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp +++ clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp @@ -263,6 +263,11 @@ cl::init(false), cl::Hidden, cl::cat(ClangTidyCategory)); +static cl::opt<bool> + DisableModuleHeadersParsing("experimental-disable-module-headers-parsing", + cl::init(false), cl::Hidden, + cl::cat(ClangTidyCategory)); + static cl::opt<std::string> ExportFixes("export-fixes", desc(R"( YAML file to store suggested fixes in. The stored fixes can be applied to the input source @@ -659,7 +664,8 @@ llvm::InitializeAllAsmParsers(); ClangTidyContext Context(std::move(OwningOptionsProvider), - AllowEnablingAnalyzerAlphaCheckers); + AllowEnablingAnalyzerAlphaCheckers, + DisableModuleHeadersParsing); std::vector<ClangTidyError> Errors = runClangTidy(Context, OptionsParser->getCompilations(), PathList, BaseFS, FixNotes, EnableCheckProfile, ProfilePrefix); Index: clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h =================================================================== --- clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h +++ clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h @@ -70,7 +70,8 @@ public: /// Initializes \c ClangTidyContext instance. ClangTidyContext(std::unique_ptr<ClangTidyOptionsProvider> OptionsProvider, - bool AllowEnablingAnalyzerAlphaCheckers = false); + bool AllowEnablingAnalyzerAlphaCheckers = false, + bool DisableModuleHeadersParsing = false); /// Sets the DiagnosticsEngine that diag() will emit diagnostics to. // FIXME: this is required initialization, and should be a constructor param. // Fix the context -> diag engine -> consumer -> context initialization cycle. @@ -198,6 +199,10 @@ return AllowEnablingAnalyzerAlphaCheckers; } + bool canEnableModuleHeadersParsing() const { + return !DisableModuleHeadersParsing; + } + void setSelfContainedDiags(bool Value) { SelfContainedDiags = Value; } bool areDiagsSelfContained() const { return SelfContainedDiags; } @@ -245,6 +250,7 @@ std::string ProfilePrefix; bool AllowEnablingAnalyzerAlphaCheckers; + bool DisableModuleHeadersParsing; bool SelfContainedDiags; Index: clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp =================================================================== --- clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp +++ clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp @@ -161,10 +161,11 @@ ClangTidyContext::ClangTidyContext( std::unique_ptr<ClangTidyOptionsProvider> OptionsProvider, - bool AllowEnablingAnalyzerAlphaCheckers) + bool AllowEnablingAnalyzerAlphaCheckers, bool DisableModuleHeadersParsing) : DiagEngine(nullptr), OptionsProvider(std::move(OptionsProvider)), Profile(false), AllowEnablingAnalyzerAlphaCheckers(AllowEnablingAnalyzerAlphaCheckers), + DisableModuleHeadersParsing(DisableModuleHeadersParsing), SelfContainedDiags(false) { // Before the first translation unit we can get errors related to command-line // parsing, use empty string for the file name in this case. Index: clang-tools-extra/clang-tidy/ClangTidy.cpp =================================================================== --- clang-tools-extra/clang-tidy/ClangTidy.cpp +++ clang-tools-extra/clang-tidy/ClangTidy.cpp @@ -418,7 +418,8 @@ Preprocessor *PP = &Compiler.getPreprocessor(); Preprocessor *ModuleExpanderPP = PP; - if (Context.getLangOpts().Modules && OverlayFS != nullptr) { + if (Context.canEnableModuleHeadersParsing() && + Context.getLangOpts().Modules && OverlayFS != nullptr) { auto ModuleExpander = std::make_unique<ExpandModularHeadersPPCallbacks>( &Compiler, OverlayFS); ModuleExpanderPP = ModuleExpander->getPreprocessor();
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits