diff --git a/clang-tools-extra/clangd/SystemIncludeExtractor.cpp b/clang-tools-extra/clangd/SystemIncludeExtractor.cpp --- a/clang-tools-extra/clangd/SystemIncludeExtractor.cpp +++ b/clang-tools-extra/clangd/SystemIncludeExtractor.cpp @@ -184,13 +184,18 @@ const llvm::StringRef FlagsToPreserve[] = { "-nostdinc", "--no-standard-includes", "-nostdinc++", "-nobuiltininc"}; // Preserves these flags and their values, either as separate args or with an - // equalsbetween them + // equals between them const llvm::StringRef ArgsToPreserve[] = {"--sysroot", "-isysroot"}; for (size_t I = 0, E = CommandLine.size(); I < E; ++I) { llvm::StringRef Arg = CommandLine[I]; if (llvm::is_contained(FlagsToPreserve, Arg)) { Args.push_back(Arg); + } else if (Arg.startswith("--target=")) { + Args.push_back(Arg); + } else if (I + 1 < E && Arg.equals("-target")) { + Args.push_back(CommandLine[I]); + Args.push_back(CommandLine[++I]); } else { const auto *Found = llvm::find_if(ArgsToPreserve, [&Arg](llvm::StringRef S) {