r271976 - Revert [Coverage] Fix an assertion failure if the definition of an unused function spans multiple files.
Igor Kudrin via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 6 21:11:51 PDT 2016
Author: ikudrin
Date: Mon Jun 6 23:11:51 2016
New Revision: 271976
URL: http://llvm.org/viewvc/llvm-project?rev=271976&view=rev
Log:
Revert [Coverage] Fix an assertion failure if the definition of an unused function spans multiple files.
r271969 The test case fails on Windows.
Removed:
cfe/trunk/test/CoverageMapping/Inputs/ends_a_scope_only
cfe/trunk/test/CoverageMapping/Inputs/starts_a_scope_only
cfe/trunk/test/CoverageMapping/unused_function.cpp
Modified:
cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp
Modified: cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp?rev=271976&r1=271975&r2=271976&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp (original)
+++ cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp Mon Jun 6 23:11:51 2016
@@ -130,16 +130,6 @@ public:
return strcmp(SM.getBufferName(SM.getSpellingLoc(Loc)), "<built-in>") == 0;
}
- /// \brief Check whether \c Loc is included or expanded from \c Parent.
- bool isNestedIn(SourceLocation Loc, FileID Parent) {
- do {
- Loc = getIncludeOrExpansionLoc(Loc);
- if (Loc.isInvalid())
- return false;
- } while (!SM.isInFileID(Loc, Parent));
- return true;
- }
-
/// \brief Get the start of \c S ignoring macro arguments and builtin macros.
SourceLocation getStart(const Stmt *S) {
SourceLocation Loc = S->getLocStart();
@@ -320,27 +310,7 @@ struct EmptyCoverageMappingBuilder : pub
if (!D->hasBody())
return;
auto Body = D->getBody();
- SourceLocation Start = getStart(Body);
- SourceLocation End = getEnd(Body);
- if (!SM.isWrittenInSameFile(Start, End)) {
- // Walk up to find the common ancestor.
- // Correct the locations accordingly.
- FileID StartFileID = SM.getFileID(Start);
- FileID EndFileID = SM.getFileID(End);
- while (StartFileID != EndFileID && !isNestedIn(End, StartFileID)) {
- Start = getIncludeOrExpansionLoc(Start);
- assert(Start.isValid() &&
- "Declaration start location not nested within a known region");
- StartFileID = SM.getFileID(Start);
- }
- while (StartFileID != EndFileID) {
- End = getPreciseTokenLocEnd(getIncludeOrExpansionLoc(End));
- assert(End.isValid() &&
- "Declaration end location not nested within a known region");
- EndFileID = SM.getFileID(End);
- }
- }
- SourceRegions.emplace_back(Counter(), Start, End);
+ SourceRegions.emplace_back(Counter(), getStart(Body), getEnd(Body));
}
/// \brief Write the mapping data to the output stream
@@ -501,6 +471,16 @@ struct CounterCoverageMappingBuilder
MostRecentLocation = getIncludeOrExpansionLoc(MostRecentLocation);
}
+ /// \brief Check whether \c Loc is included or expanded from \c Parent.
+ bool isNestedIn(SourceLocation Loc, FileID Parent) {
+ do {
+ Loc = getIncludeOrExpansionLoc(Loc);
+ if (Loc.isInvalid())
+ return false;
+ } while (!SM.isInFileID(Loc, Parent));
+ return true;
+ }
+
/// \brief Adjust regions and state when \c NewLoc exits a file.
///
/// If moving from our most recently tracked location to \c NewLoc exits any
Removed: cfe/trunk/test/CoverageMapping/Inputs/ends_a_scope_only
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CoverageMapping/Inputs/ends_a_scope_only?rev=271975&view=auto
==============================================================================
--- cfe/trunk/test/CoverageMapping/Inputs/ends_a_scope_only (original)
+++ cfe/trunk/test/CoverageMapping/Inputs/ends_a_scope_only (removed)
@@ -1 +0,0 @@
-}
Removed: cfe/trunk/test/CoverageMapping/Inputs/starts_a_scope_only
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CoverageMapping/Inputs/starts_a_scope_only?rev=271975&view=auto
==============================================================================
--- cfe/trunk/test/CoverageMapping/Inputs/starts_a_scope_only (original)
+++ cfe/trunk/test/CoverageMapping/Inputs/starts_a_scope_only (removed)
@@ -1 +0,0 @@
-{
Removed: cfe/trunk/test/CoverageMapping/unused_function.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CoverageMapping/unused_function.cpp?rev=271975&view=auto
==============================================================================
--- cfe/trunk/test/CoverageMapping/unused_function.cpp (original)
+++ cfe/trunk/test/CoverageMapping/unused_function.cpp (removed)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s | FileCheck %s
-
-#define START_SCOPE {
-#define END_SCOPE }
-
-// CHECK: _Z2f0v:
-// CHECK-NEXT: File 0, [[@LINE+1]]:18 -> [[@LINE+1]]:20 = 0
-inline void f0() {}
-
-// CHECK: _Z2f1v:
-// CHECK-NEXT: File 0, [[@LINE+1]]:18 -> [[@LINE+1]]:31 = 0
-inline void f1() START_SCOPE }
-
-// CHECK: _Z2f2v:
-// CHECK-NEXT: File 0, [[@LINE+1]]:18 -> [[@LINE+1]]:29 = 0
-inline void f2() { END_SCOPE
-
-// CHECK: _Z2f3v:
-// CHECK-NEXT: File 0, [[@LINE+1]]:18 -> [[@LINE+1]]:39 = 0
-inline void f3() START_SCOPE END_SCOPE
-
-// CHECK: _Z2f4v:
-// CHECK-NEXT: File 0, [[@LINE+2]]:10 -> [[@LINE+3]]:2 = 0
-inline void f4()
-#include "Inputs/starts_a_scope_only"
-}
-
-// CHECK: _Z2f5v:
-// CHECK-NEXT: File 0, [[@LINE+1]]:18 -> [[@LINE+2]]:36 = 0
-inline void f5() {
-#include "Inputs/ends_a_scope_only"
-
-// CHECK: _Z2f6v:
-// CHECK-NEXT: File 0, [[@LINE+2]]:10 -> [[@LINE+3]]:36 = 0
-inline void f6()
-#include "Inputs/starts_a_scope_only"
-#include "Inputs/ends_a_scope_only"
More information about the cfe-commits
mailing list