diff options
author | Justin Bogner <mail@justinbogner.com> | 2014-02-04 06:41:43 +0000 |
---|---|---|
committer | Justin Bogner <mail@justinbogner.com> | 2014-02-04 06:41:43 +0000 |
commit | f69557e6702c167a04d8866ce08a19c34699695a (patch) | |
tree | fa6ca4f8edd1859824ec2e8c1c01badba0d5a7fa /llvm/tools/llvm-cov/llvm-cov.cpp | |
parent | 93d1edbb7d2cf8fcbf00490e330b886018c8c267 (diff) | |
download | llvm-f69557e6702c167a04d8866ce08a19c34699695a.zip llvm-f69557e6702c167a04d8866ce08a19c34699695a.tar.gz llvm-f69557e6702c167a04d8866ce08a19c34699695a.tar.bz2 |
llvm-cov: Implement the object-directory flag
llvm-svn: 200741
Diffstat (limited to 'llvm/tools/llvm-cov/llvm-cov.cpp')
-rw-r--r-- | llvm/tools/llvm-cov/llvm-cov.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/llvm/tools/llvm-cov/llvm-cov.cpp b/llvm/tools/llvm-cov/llvm-cov.cpp index be8d1c9..61bee43 100644 --- a/llvm/tools/llvm-cov/llvm-cov.cpp +++ b/llvm/tools/llvm-cov/llvm-cov.cpp @@ -12,10 +12,12 @@ //===----------------------------------------------------------------------===// #include "llvm/ADT/OwningPtr.h" +#include "llvm/ADT/SmallString.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/GCOV.h" #include "llvm/Support/ManagedStatic.h" #include "llvm/Support/MemoryObject.h" +#include "llvm/Support/Path.h" #include "llvm/Support/PrettyStackTrace.h" #include "llvm/Support/Signals.h" #include "llvm/Support/system_error.h" @@ -41,6 +43,10 @@ static cl::opt<bool> FuncSummary("f", cl::init(false), cl::desc("Show coverage for each function")); static cl::alias FuncSummaryA("function-summaries", cl::aliasopt(FuncSummary)); +static cl::opt<std::string> ObjectDir("o", cl::value_desc("DIR"), cl::init(""), + cl::desc("Search for objects in DIR")); +static cl::alias ObjectDirA("object-directory", cl::aliasopt(ObjectDir)); + static cl::opt<bool> UncondBranch("u", cl::init(false), cl::desc("Display unconditional branch info " "(requires -b)")); @@ -64,10 +70,15 @@ int main(int argc, char **argv) { cl::ParseCommandLineOptions(argc, argv, "LLVM code coverage tool\n"); + SmallString<128> CoverageFileStem(ObjectDir); + if (CoverageFileStem.empty()) + CoverageFileStem = sys::path::parent_path(SourceFile); + sys::path::append(CoverageFileStem, sys::path::stem(SourceFile)); + if (InputGCNO.empty()) - InputGCNO = SourceFile.substr(0, SourceFile.rfind(".")) + ".gcno"; + InputGCNO = (CoverageFileStem.str() + ".gcno").str(); if (InputGCDA.empty()) - InputGCDA = SourceFile.substr(0, SourceFile.rfind(".")) + ".gcda"; + InputGCDA = (CoverageFileStem.str() + ".gcda").str(); GCOVFile GF; |