[PATCH] D140960: [clangd] Disable backend-releated filelist compiler options.
Haojian Wu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jan 4 01:44:49 PST 2023
hokein created this revision.
hokein added a reviewer: sammccall.
Herald added subscribers: kadircet, arphaman.
Herald added a project: All.
hokein requested review of this revision.
Herald added subscribers: MaskRay, ilya-biryukov.
Herald added a project: clang-tools-extra.
These options doesn't affect the AST generation, and clang will crash
(CreateOrDie in ASTContext) immedidately when the provided file are not existed.
Disable them in clangd to make clangd more robust.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D140960
Files:
clang-tools-extra/clangd/Compiler.cpp
clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp
Index: clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp
+++ clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp
@@ -824,6 +824,19 @@
EXPECT_THAT(*TU.build().getDiagnostics(), IsEmpty());
}
+TEST(DiagnosticTest, IgnoreBEFilelistOptions) {
+ auto TU = TestTU::withCode("");
+ TU.ExtraArgs.push_back("-Xclang");
+ for (const auto *DisableOption :
+ {"-fsanitize-ignorelist=null", "-fprofile-list=null",
+ "-fxray-always-instrument=null", "-fxray-never-instrument=null",
+ "-fxray-attr-list=null"}) {
+ TU.ExtraArgs.push_back(DisableOption);
+ EXPECT_THAT(*TU.build().getDiagnostics(), IsEmpty());
+ TU.ExtraArgs.pop_back();
+ }
+}
+
// Recursive main-file include is diagnosed, and doesn't crash.
TEST(DiagnosticsTest, RecursivePreamble) {
auto TU = TestTU::withCode(R"cpp(
Index: clang-tools-extra/clangd/Compiler.cpp
===================================================================
--- clang-tools-extra/clangd/Compiler.cpp
+++ clang-tools-extra/clangd/Compiler.cpp
@@ -80,6 +80,15 @@
CI.getFrontendOpts().PluginArgs.clear();
CI.getFrontendOpts().ProgramAction = frontend::ParseSyntaxOnly;
CI.getFrontendOpts().ActionName.clear();
+
+ // These options only affect the codegen in the backend, and clang will die
+ // immediately when these files are not existed.
+ // Disable these uninteresting options to make clangd more robust.
+ CI.getLangOpts()->NoSanitizeFiles.clear();
+ CI.getLangOpts()->XRayAttrListFiles.clear();
+ CI.getLangOpts()->ProfileListFiles.clear();
+ CI.getLangOpts()->XRayAlwaysInstrumentFiles.clear();
+ CI.getLangOpts()->XRayNeverInstrumentFiles.clear();
}
std::unique_ptr<CompilerInvocation>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D140960.486199.patch
Type: text/x-patch
Size: 1822 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230104/e56b38f0/attachment.bin>
More information about the cfe-commits
mailing list