mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
llvm-cov: Expect a source file as a positional parameter
Currently, llvm-cov isn't command-line compatible with gcov, which accepts a source file name as its first parameter and infers the gcno and gcda file names from that. This change keeps our -gcda and -gcno options available for convenience in overriding this behaviour, but adds the required parameter and inference behaviour as a compatible default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200417 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
94b3a88395
commit
5119fd5e0f
@ -5,34 +5,34 @@ RUN: mkdir %t
|
|||||||
RUN: cd %t
|
RUN: cd %t
|
||||||
RUN: cp %p/Inputs/test* .
|
RUN: cp %p/Inputs/test* .
|
||||||
|
|
||||||
RUN: llvm-cov -gcno=test.gcno -gcda=test.gcda | diff test_no_options.output -
|
RUN: llvm-cov test.c | diff test_no_options.output -
|
||||||
RUN: llvm-cov -gcno=test.gcno -gcda=test.gcda -f | diff test_-f.output -
|
RUN: llvm-cov test.c -f | diff test_-f.output -
|
||||||
RUN: diff -aub test_no_options.cpp.gcov test.cpp.gcov
|
RUN: diff -aub test_no_options.cpp.gcov test.cpp.gcov
|
||||||
RUN: diff -aub test_no_options.h.gcov test.h.gcov
|
RUN: diff -aub test_no_options.h.gcov test.h.gcov
|
||||||
|
|
||||||
RUN: llvm-cov -gcno=test.gcno -gcda=test.gcda -a
|
RUN: llvm-cov test.c -a
|
||||||
RUN: diff -aub test_-a.cpp.gcov test.cpp.gcov
|
RUN: diff -aub test_-a.cpp.gcov test.cpp.gcov
|
||||||
RUN: diff -aub test_-a.h.gcov test.h.gcov
|
RUN: diff -aub test_-a.h.gcov test.h.gcov
|
||||||
|
|
||||||
RUN: llvm-cov -gcno=test.gcno -gcda=test.gcda -a -b | diff test_-b.output -
|
RUN: llvm-cov test.c -a -b | diff test_-b.output -
|
||||||
# This is expected to fail because gcov doesn't actually output real branch or
|
# This is expected to fail because gcov doesn't actually output real branch or
|
||||||
# call statistics on a per function basis.
|
# call statistics on a per function basis.
|
||||||
RUN: llvm-cov -gcno=test.gcno -gcda=test.gcda -a -b -f | not diff test_-b_-f.output -
|
RUN: llvm-cov test.c -a -b -f | not diff test_-b_-f.output -
|
||||||
RUN: diff -aub test_-a_-b.cpp.gcov test.cpp.gcov
|
RUN: diff -aub test_-a_-b.cpp.gcov test.cpp.gcov
|
||||||
RUN: diff -aub test_-a_-b.h.gcov test.h.gcov
|
RUN: diff -aub test_-a_-b.h.gcov test.h.gcov
|
||||||
|
|
||||||
RUN: llvm-cov -gcno=test.gcno -gcda=test.gcda -a -b -u
|
RUN: llvm-cov test.c -a -b -u
|
||||||
RUN: diff -aub test_-a_-b_-u.cpp.gcov test.cpp.gcov
|
RUN: diff -aub test_-a_-b_-u.cpp.gcov test.cpp.gcov
|
||||||
RUN: diff -aub test_-a_-b_-u.h.gcov test.h.gcov
|
RUN: diff -aub test_-a_-b_-u.h.gcov test.h.gcov
|
||||||
|
|
||||||
RUN: llvm-cov -gcno=test.gcno -gcda=test.gcda -a -b -c -u
|
RUN: llvm-cov test.c -a -b -c -u
|
||||||
RUN: diff -aub test_-a_-b_-c_-u.cpp.gcov test.cpp.gcov
|
RUN: diff -aub test_-a_-b_-c_-u.cpp.gcov test.cpp.gcov
|
||||||
RUN: diff -aub test_-a_-b_-c_-u.h.gcov test.h.gcov
|
RUN: diff -aub test_-a_-b_-c_-u.h.gcov test.h.gcov
|
||||||
|
|
||||||
RUN: not llvm-cov -gcno=test_read_fail.gcno -gcda=test.gcda
|
RUN: not llvm-cov test.c -gcno=test_read_fail.gcno
|
||||||
|
|
||||||
RUN: not llvm-cov -gcno=test.gcno -gcda=test_file_checksum_fail.gcda
|
RUN: not llvm-cov test.c -gcda=test_file_checksum_fail.gcda
|
||||||
|
|
||||||
RUN: not llvm-cov -gcno=test.gcno -gcda=test_func_checksum_fail.gcda
|
RUN: not llvm-cov test.c -gcda=test_func_checksum_fail.gcda
|
||||||
|
|
||||||
XFAIL: powerpc64, s390x, mips, sparc
|
XFAIL: powerpc64, s390x, mips, sparc
|
||||||
|
@ -21,6 +21,9 @@
|
|||||||
#include "llvm/Support/system_error.h"
|
#include "llvm/Support/system_error.h"
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
|
||||||
|
static cl::opt<std::string> SourceFile(cl::Positional, cl::Required,
|
||||||
|
cl::desc("SOURCEFILE"));
|
||||||
|
|
||||||
static cl::opt<bool>
|
static cl::opt<bool>
|
||||||
DumpGCOV("dump", cl::init(false), cl::desc("dump gcov file"));
|
DumpGCOV("dump", cl::init(false), cl::desc("dump gcov file"));
|
||||||
|
|
||||||
@ -56,9 +59,12 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
cl::ParseCommandLineOptions(argc, argv, "llvm coverage tool\n");
|
cl::ParseCommandLineOptions(argc, argv, "llvm coverage tool\n");
|
||||||
|
|
||||||
GCOVFile GF;
|
|
||||||
if (InputGCNO.empty())
|
if (InputGCNO.empty())
|
||||||
errs() << " " << argv[0] << ": No gcov input file!\n";
|
InputGCNO = SourceFile.substr(0, SourceFile.rfind(".")) + ".gcno";
|
||||||
|
if (InputGCDA.empty())
|
||||||
|
InputGCDA = SourceFile.substr(0, SourceFile.rfind(".")) + ".gcda";
|
||||||
|
|
||||||
|
GCOVFile GF;
|
||||||
|
|
||||||
OwningPtr<MemoryBuffer> GCNO_Buff;
|
OwningPtr<MemoryBuffer> GCNO_Buff;
|
||||||
if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputGCNO, GCNO_Buff)) {
|
if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputGCNO, GCNO_Buff)) {
|
||||||
@ -71,7 +77,6 @@ int main(int argc, char **argv) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!InputGCDA.empty()) {
|
|
||||||
OwningPtr<MemoryBuffer> GCDA_Buff;
|
OwningPtr<MemoryBuffer> GCDA_Buff;
|
||||||
if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputGCDA, GCDA_Buff)) {
|
if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputGCDA, GCDA_Buff)) {
|
||||||
errs() << InputGCDA << ": " << ec.message() << "\n";
|
errs() << InputGCDA << ": " << ec.message() << "\n";
|
||||||
@ -82,7 +87,6 @@ int main(int argc, char **argv) {
|
|||||||
errs() << "Invalid .gcda File!\n";
|
errs() << "Invalid .gcda File!\n";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (DumpGCOV)
|
if (DumpGCOV)
|
||||||
GF.dump();
|
GF.dump();
|
||||||
|
Loading…
Reference in New Issue
Block a user