diff options
author | Jonas Toth <jonas.toth@gmail.com> | 2018-11-27 17:28:38 +0000 |
---|---|---|
committer | Jonas Toth <jonas.toth@gmail.com> | 2018-11-27 17:28:38 +0000 |
commit | 1b2ead17d6292e6813f9a934f4f62d65f171964d (patch) | |
tree | 39ab70440cc11557cc01fc2d006f95c588f3e2aa /clang/lib/Driver/ToolChains/CommonArgs.cpp | |
parent | b406701f66b242c8878b3f2ada7ec1327c05cacf (diff) | |
download | bcm5719-llvm-1b2ead17d6292e6813f9a934f4f62d65f171964d.tar.gz bcm5719-llvm-1b2ead17d6292e6813f9a934f4f62d65f171964d.zip |
Revert "[clang] - Simplify tools::SplitDebugName."
This reverts commit r347035 as it introduced assertion failures under
certain conditions. More information can be found here:
https://reviews.llvm.org/rL347035
llvm-svn: 347676
Diffstat (limited to 'clang/lib/Driver/ToolChains/CommonArgs.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChains/CommonArgs.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 03298a17c37..e802ce7a8c0 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -808,15 +808,26 @@ bool tools::areOptimizationsEnabled(const ArgList &Args) { return false; } -const char *tools::SplitDebugName(const ArgList &Args, +const char *tools::SplitDebugName(const ArgList &Args, const InputInfo &Input, const InputInfo &Output) { if (Arg *A = Args.getLastArg(options::OPT_gsplit_dwarf_EQ)) if (StringRef(A->getValue()) == "single") return Args.MakeArgString(Output.getFilename()); - SmallString<128> T(Output.getFilename()); - llvm::sys::path::replace_extension(T, "dwo"); - return Args.MakeArgString(T); + Arg *FinalOutput = Args.getLastArg(options::OPT_o); + if (FinalOutput && Args.hasArg(options::OPT_c)) { + SmallString<128> T(FinalOutput->getValue()); + llvm::sys::path::replace_extension(T, "dwo"); + return Args.MakeArgString(T); + } else { + // Use the compilation dir. + SmallString<128> T( + Args.getLastArgValue(options::OPT_fdebug_compilation_dir)); + SmallString<128> F(llvm::sys::path::stem(Input.getBaseInput())); + llvm::sys::path::replace_extension(F, "dwo"); + T += F; + return Args.MakeArgString(F); + } } void tools::SplitDebugInfo(const ToolChain &TC, Compilation &C, const Tool &T, |