mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-15 12:09:51 +00:00
[clangd] Disable backend-releated filelist compiler options.
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. Differential Revision: https://reviews.llvm.org/D140960
This commit is contained in:
parent
6ff87fed44
commit
68fe067418
@ -80,6 +80,15 @@ void disableUnsupportedOptions(CompilerInvocation &CI) {
|
||||
CI.getFrontendOpts().PluginArgs.clear();
|
||||
CI.getFrontendOpts().ProgramAction = frontend::ParseSyntaxOnly;
|
||||
CI.getFrontendOpts().ActionName.clear();
|
||||
|
||||
// These options mostly affect codegen, and aren't relevant to clangd. 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>
|
||||
|
@ -824,6 +824,19 @@ TEST(DiagnosticsTest, IgnoreVerify) {
|
||||
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(
|
||||
|
Loading…
Reference in New Issue
Block a user