diff options
author | Vedant Kumar <vsk@apple.com> | 2017-11-09 02:33:40 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2017-11-09 02:33:40 +0000 |
commit | f9a0d44eea28ada1adf75e5e63274055fccd65ab (patch) | |
tree | c6b6444c5496a74345c70f3f8e373b493540687d /clang/lib/CodeGen/CoverageMappingGen.cpp | |
parent | 8046d22a36eeed2bf38d17006daf486acf520f7e (diff) | |
download | llvm-f9a0d44eea28ada1adf75e5e63274055fccd65ab.zip llvm-f9a0d44eea28ada1adf75e5e63274055fccd65ab.tar.gz llvm-f9a0d44eea28ada1adf75e5e63274055fccd65ab.tar.bz2 |
[Coverage] Emit deferred regions in headers
There are some limitations with emitting regions in macro expansions
because we don't gather file IDs within the expansions. Fix the check
that prevents us from emitting deferred regions in expansions to make an
exception for headers, which is something we can handle.
rdar://35373009
llvm-svn: 317760
Diffstat (limited to 'clang/lib/CodeGen/CoverageMappingGen.cpp')
-rw-r--r-- | clang/lib/CodeGen/CoverageMappingGen.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/clang/lib/CodeGen/CoverageMappingGen.cpp b/clang/lib/CodeGen/CoverageMappingGen.cpp index 26236b7..6e0099b 100644 --- a/clang/lib/CodeGen/CoverageMappingGen.cpp +++ b/clang/lib/CodeGen/CoverageMappingGen.cpp @@ -496,12 +496,14 @@ struct CounterCoverageMappingBuilder DeferredRegion = None; // If the region ends in an expansion, find the expansion site. - if (SM.getFileID(DeferredEndLoc) != SM.getMainFileID()) { - FileID StartFile = SM.getFileID(DR.getStartLoc()); + FileID StartFile = SM.getFileID(DR.getStartLoc()); + if (SM.getFileID(DeferredEndLoc) != StartFile) { if (isNestedIn(DeferredEndLoc, StartFile)) { do { DeferredEndLoc = getIncludeOrExpansionLoc(DeferredEndLoc); } while (StartFile != SM.getFileID(DeferredEndLoc)); + } else { + return Index; } } @@ -591,7 +593,7 @@ struct CounterCoverageMappingBuilder if (!DeferredRegion.hasValue() && // File IDs aren't gathered within macro expansions, so it isn't // useful to try and create a deferred region inside of one. - (SM.getFileID(EndLoc) == SM.getMainFileID())) + !EndLoc.isMacroID()) DeferredRegion = SourceMappingRegion(Counter::getZero(), EndLoc, None); } |