[clang] [Coverage][Expansion] handle nested macros in scratch space (PR #89869)

NAKAMURA Takumi via cfe-commits cfe-commits at lists.llvm.org
Wed May 22 16:01:41 PDT 2024


================
@@ -339,8 +365,18 @@ class CoverageMappingBuilder {
 
     llvm::SmallSet<FileID, 8> Visited;
     SmallVector<std::pair<SourceLocation, unsigned>, 8> FileLocs;
-    for (const auto &Region : SourceRegions) {
+    for (auto &Region : SourceRegions) {
       SourceLocation Loc = Region.getBeginLoc();
+
+      // Replace Region with its definition if it is in <scratch space>.
+      auto NonScratchExpansionLoc = getNonScratchExpansionLoc(Loc);
+      Loc = NonScratchExpansionLoc.first;
----------------
chapuni wrote:

I think updating Loc should be sunk into `then` clause explicitly, even if Loc is immutable when !EndLoc.

https://github.com/llvm/llvm-project/pull/89869


More information about the cfe-commits mailing list