This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG6d9fcc2ad874: [clang][clangd] Don't crash/assert on -gsplit-dwarf=single without output (authored by DmitryPolukhin).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D154602/new/ https://reviews.llvm.org/D154602 Files: clang/lib/Driver/ToolChains/CommonArgs.cpp clang/unittests/Driver/ToolChainTest.cpp Index: clang/unittests/Driver/ToolChainTest.cpp =================================================================== --- clang/unittests/Driver/ToolChainTest.cpp +++ clang/unittests/Driver/ToolChainTest.cpp @@ -367,6 +367,16 @@ EXPECT_TRUE(CallbackHasCalled); } +TEST(CompilerInvocation, SplitSwarfSingleCrash) { + static constexpr const char *Args[] = { + "clang", "--target=arm-linux-gnueabi", + "-gdwarf-4", "-gsplit-dwarf=single", + "-c", "foo.cpp"}; + CreateInvocationOptions CIOpts; + std::unique_ptr<CompilerInvocation> CI = createInvocation(Args, CIOpts); + EXPECT_TRUE(CI); // no-crash +} + TEST(GetDriverMode, PrefersLastDriverMode) { static constexpr const char *Args[] = {"clang-cl", "--driver-mode=foo", "--driver-mode=bar", "foo.cpp"}; Index: clang/lib/Driver/ToolChains/CommonArgs.cpp =================================================================== --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1274,7 +1274,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;
Index: clang/unittests/Driver/ToolChainTest.cpp =================================================================== --- clang/unittests/Driver/ToolChainTest.cpp +++ clang/unittests/Driver/ToolChainTest.cpp @@ -367,6 +367,16 @@ EXPECT_TRUE(CallbackHasCalled); } +TEST(CompilerInvocation, SplitSwarfSingleCrash) { + static constexpr const char *Args[] = { + "clang", "--target=arm-linux-gnueabi", + "-gdwarf-4", "-gsplit-dwarf=single", + "-c", "foo.cpp"}; + CreateInvocationOptions CIOpts; + std::unique_ptr<CompilerInvocation> CI = createInvocation(Args, CIOpts); + EXPECT_TRUE(CI); // no-crash +} + TEST(GetDriverMode, PrefersLastDriverMode) { static constexpr const char *Args[] = {"clang-cl", "--driver-mode=foo", "--driver-mode=bar", "foo.cpp"}; Index: clang/lib/Driver/ToolChains/CommonArgs.cpp =================================================================== --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1274,7 +1274,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;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits