diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 766a9b91e3c0ad..44d18acd25a589 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -802,6 +802,10 @@ static void addPGOAndCoverageFlags(const ToolChain &TC, Compilation &C, } else if (Arg *FinalOutput = C.getArgs().getLastArg(options::OPT__SLASH_Fo)) { CoverageFilename = FinalOutput->getValue(); + StringRef V = FinalOutput->getValue(); + if (llvm::sys::path::is_separator(V.back())) { + CoverageFilename += llvm::sys::path::filename(Output.getBaseInput()); + } } else if (Arg *FinalOutput = C.getArgs().getLastArg(options::OPT_o)) { CoverageFilename = FinalOutput->getValue(); } else {