DmitryPolukhin updated this revision to Diff 539281. DmitryPolukhin added a comment.
Use --target=arm-linux-gnueabi 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,18 @@ 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 @@ -1269,7 +1269,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,18 @@ 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 @@ -1269,7 +1269,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