diff --git a/clang-tools-extra/clangd/unittests/CompilerTests.cpp b/clang-tools-extra/clangd/unittests/CompilerTests.cpp --- a/clang-tools-extra/clangd/unittests/CompilerTests.cpp +++ b/clang-tools-extra/clangd/unittests/CompilerTests.cpp @@ -113,6 +113,13 @@ // No crash. EXPECT_EQ(buildCompilerInvocation(Inputs, Diags), nullptr); } + +TEST(BuildCompilerInvocation, SplitSwarfSingleCrash) { + TestTU TU; + TU.ExtraArgs = {"-gdwarf-4", "-gsplit-dwarf=single"}; + TU.build(); // no-crash +} + } // namespace } // namespace clangd } // namespace clang diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1271,7 +1271,7 @@ F += ".dwo"; }; if (Arg *A = Args.getLastArg(options::OPT_gsplit_dwarf_EQ)) - if (StringRef(A->getValue()) == "single") + if (StringRef(A->getValue()) == "single" && Output.isFilename()) return Args.MakeArgString(Output.getFilename()); SmallString<128> T;