ArcsinX created this revision. Herald added subscribers: cfe-commits, usaxena95, kadircet, arphaman, jkorous. Herald added a project: clang. ArcsinX requested review of this revision. Herald added subscribers: MaskRay, ilya-biryukov.
Currently, clangd crashes when opening a file with `#pragma clang __debug parser_crash` (e.g. clang/test/Modules/Inputs/crash.h). This patch disables these crashes. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D86279 Files: clang-tools-extra/clangd/Compiler.cpp clang-tools-extra/clangd/unittests/CompilerTests.cpp Index: clang-tools-extra/clangd/unittests/CompilerTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/CompilerTests.cpp +++ clang-tools-extra/clangd/unittests/CompilerTests.cpp @@ -51,6 +51,11 @@ IsEmpty()); } +TEST(BuildCompilerInvocation, PragmaDebugCrash) { + TestTU TU = TestTU::withCode("#pragma clang __debug parser_crash"); + TU.build(); // no-crash +} + } // namespace } // namespace clangd } // namespace clang Index: clang-tools-extra/clangd/Compiler.cpp =================================================================== --- clang-tools-extra/clangd/Compiler.cpp +++ clang-tools-extra/clangd/Compiler.cpp @@ -78,6 +78,8 @@ CI->getPreprocessorOpts().PCHThroughHeader.clear(); CI->getPreprocessorOpts().PCHWithHdrStop = false; CI->getPreprocessorOpts().PCHWithHdrStopCreate = false; + // Don't crash on `#pragma clang __debug parser_crash` + CI->getPreprocessorOpts().DisablePragmaDebugCrash = true; // Recovery expression currently only works for C++. if (CI->getLangOpts()->CPlusPlus) {
Index: clang-tools-extra/clangd/unittests/CompilerTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/CompilerTests.cpp +++ clang-tools-extra/clangd/unittests/CompilerTests.cpp @@ -51,6 +51,11 @@ IsEmpty()); } +TEST(BuildCompilerInvocation, PragmaDebugCrash) { + TestTU TU = TestTU::withCode("#pragma clang __debug parser_crash"); + TU.build(); // no-crash +} + } // namespace } // namespace clangd } // namespace clang Index: clang-tools-extra/clangd/Compiler.cpp =================================================================== --- clang-tools-extra/clangd/Compiler.cpp +++ clang-tools-extra/clangd/Compiler.cpp @@ -78,6 +78,8 @@ CI->getPreprocessorOpts().PCHThroughHeader.clear(); CI->getPreprocessorOpts().PCHWithHdrStop = false; CI->getPreprocessorOpts().PCHWithHdrStopCreate = false; + // Don't crash on `#pragma clang __debug parser_crash` + CI->getPreprocessorOpts().DisablePragmaDebugCrash = true; // Recovery expression currently only works for C++. if (CI->getLangOpts()->CPlusPlus) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits