diff --git a/lib/CodeGen/CoverageMappingGen.cpp b/lib/CodeGen/CoverageMappingGen.cpp index 7055e3a356867a8ac7ee5839b566f29b904b2e03..b4dd1a930325f9d67db318b631823518f63ee874 100644 --- a/lib/CodeGen/CoverageMappingGen.cpp +++ b/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/test/CoverageMapping/system_macro.c b/test/CoverageMapping/system_macro.c index f199612f8d6efbc81e424630d8cce973dd98cf96..bddc822b0d90bd73833bc8f3580a3d5e0ce69136 100644 --- a/test/CoverageMapping/system_macro.c +++ b/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 }