diff options
| -rw-r--r-- | clang/lib/CodeGen/CoverageMappingGen.cpp | 8 | ||||
| -rw-r--r-- | clang/test/CoverageMapping/system_macro.c | 3 |
2 files changed, 9 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CoverageMappingGen.cpp b/clang/lib/CodeGen/CoverageMappingGen.cpp index 7055e3a3568..b4dd1a93032 100644 --- a/clang/lib/CodeGen/CoverageMappingGen.cpp +++ b/clang/lib/CodeGen/CoverageMappingGen.cpp @@ -172,6 +172,10 @@ public: if (!Visited.insert(File).second) continue; + // Do not map FileID's associated with system headers. + if (SM.isInSystemHeader(SM.getSpellingLoc(Loc))) + continue; + unsigned Depth = 0; for (SourceLocation Parent = getIncludeOrExpansionLoc(Loc); Parent.isValid(); Parent = getIncludeOrExpansionLoc(Parent)) @@ -251,6 +255,10 @@ public: SourceLocation LocStart = Region.getStartLoc(); assert(SM.getFileID(LocStart).isValid() && "region in invalid file"); + // Ignore regions from system headers. + if (SM.isInSystemHeader(SM.getSpellingLoc(LocStart))) + continue; + auto CovFileID = getCoverageFileID(LocStart); // Ignore regions that don't have a file, such as builtin macros. if (!CovFileID) diff --git a/clang/test/CoverageMapping/system_macro.c b/clang/test/CoverageMapping/system_macro.c index f199612f8d6..bddc822b0d9 100644 --- a/clang/test/CoverageMapping/system_macro.c +++ b/clang/test/CoverageMapping/system_macro.c @@ -13,9 +13,8 @@ // CHECK-LABEL: doSomething: void doSomething(int x) { // CHECK: File 0, [[@LINE]]:25 -> {{[0-9:]+}} = #0 - Func(x); // CHECK: Expansion,File 0, [[@LINE]]:3 -> [[@LINE]]:7 + Func(x); return; - // CHECK: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:11 SomeType *f; // CHECK: File 0, [[@LINE]]:11 -> {{[0-9:]+}} = 0 } |

