]> granicus.if.org Git - llvm/commitdiff
Merging r232443:
authorTom Stellard <thomas.stellard@amd.com>
Fri, 1 May 2015 02:43:16 +0000 (02:43 +0000)
committerTom Stellard <thomas.stellard@amd.com>
Fri, 1 May 2015 02:43:16 +0000 (02:43 +0000)
------------------------------------------------------------------------
r232443 | mail | 2015-03-16 20:18:51 -0400 (Mon, 16 Mar 2015) | 4 lines

llvm-cov: Warn instead of error if a .gcda has arcs from an exit block

Patch by Vanderson M. Rosario. Thanks!

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236304 91177308-0d34-0410-b5e6-96231b3b80d8

lib/IR/GCOV.cpp
test/tools/llvm-cov/Inputs/test_exit_block_arcs.gcda [new file with mode: 0644]
test/tools/llvm-cov/Inputs/test_exit_block_arcs.gcno [new file with mode: 0644]
test/tools/llvm-cov/llvm-cov.test

index 245c500cf6217f254f7329af90ba31dce8e82d18..88e0cd094ec2e768ff2f80ac0868b4273ffd64e2 100644 (file)
@@ -263,10 +263,12 @@ bool GCOVFunction::readGCDA(GCOVBuffer &Buff, GCOV::GCOVVersion Version) {
   // required to combine the edge counts that are contained in the GCDA file.
   for (uint32_t BlockNo = 0; Count > 0; ++BlockNo) {
     // The last block is always reserved for exit block
-    if (BlockNo >= Blocks.size()-1) {
+    if (BlockNo >= Blocks.size()) {
       errs() << "Unexpected number of edges (in " << Name << ").\n";
       return false;
     }
+    if (BlockNo == Blocks.size() - 1)
+      errs() << "(" << Name << ") has arcs from exit block.\n";
     GCOVBlock &Block = *Blocks[BlockNo];
     for (size_t EdgeNo = 0, End = Block.getNumDstEdges(); EdgeNo < End;
            ++EdgeNo) {
diff --git a/test/tools/llvm-cov/Inputs/test_exit_block_arcs.gcda b/test/tools/llvm-cov/Inputs/test_exit_block_arcs.gcda
new file mode 100644 (file)
index 0000000..3ca483d
Binary files /dev/null and b/test/tools/llvm-cov/Inputs/test_exit_block_arcs.gcda differ
diff --git a/test/tools/llvm-cov/Inputs/test_exit_block_arcs.gcno b/test/tools/llvm-cov/Inputs/test_exit_block_arcs.gcno
new file mode 100644 (file)
index 0000000..d453566
Binary files /dev/null and b/test/tools/llvm-cov/Inputs/test_exit_block_arcs.gcno differ
index 0d3eb6b8f81b4462c1b5e1bcc7cbac66406fbebc..bce80d2e2778b754fb2b867524c3453701de3858 100644 (file)
@@ -110,4 +110,8 @@ RUN: llvm-cov test.c -gcda=test_file_checksum_fail.gcda
 # Bad function checksum on gcda
 RUN: llvm-cov test.c -gcda=test_func_checksum_fail.gcda
 
+# Has arcs from exit blocks
+RUN: llvm-cov test_exit_block_arcs.c 2>&1 | FileCheck %s -check-prefix=EXIT_BLOCK_ARCS
+EXIT_BLOCK_ARCS: (main) has arcs from exit block.
+
 XFAIL: powerpc64-, s390x, mips-, mips64-, sparc