aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorDan Albert <danalbert@google.com>2014-10-10 01:01:29 +0000
committerDan Albert <danalbert@google.com>2014-10-10 01:01:29 +0000
commitb8e7eaedcb7152046237cc80b76d181d59e22234 (patch)
tree9f4f4ae2f520e6e3304a88220ed4b46481b112ac /clang/lib/Driver/Tools.cpp
parent2754dbb4ab2eef0d3a94914732a04350871f81f8 (diff)
downloadllvm-b8e7eaedcb7152046237cc80b76d181d59e22234.zip
llvm-b8e7eaedcb7152046237cc80b76d181d59e22234.tar.gz
llvm-b8e7eaedcb7152046237cc80b76d181d59e22234.tar.bz2
PR21195: Emit .gcno files to the proper location.
When building with coverage, -no-integrated-as, and -c, the driver was emitting -cc1 -coverage-file pointing at a file in /tmp. Ensure the coverage file is emitted in the same directory as the output file. llvm-svn: 219460
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index bb9efaf..abcbb5c 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -3241,7 +3241,13 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
C.getArgs().hasArg(options::OPT_S)) {
if (Output.isFilename()) {
CmdArgs.push_back("-coverage-file");
- SmallString<128> CoverageFilename(Output.getFilename());
+ SmallString<128> CoverageFilename;
+ Arg *FinalOutput = C.getArgs().getLastArg(options::OPT_o);
+ if (FinalOutput) {
+ CoverageFilename = FinalOutput->getValue();
+ } else {
+ CoverageFilename = llvm::sys::path::filename(Output.getBaseInput());
+ }
if (llvm::sys::path::is_relative(CoverageFilename.str())) {
SmallString<128> Pwd;
if (!llvm::sys::fs::current_path(Pwd)) {