vsk added inline comments.

================
Comment at: clang/lib/CodeGen/CoverageMappingGen.cpp:559
 
-  /// Location of the last terminated region.
-  Optional<std::pair<SourceLocation, size_t>> LastTerminatedRegion;
+  /// If there is a return, co_return, goto or throw inside.
+  bool HasTerminateStmt = false;
----------------
nit: Whether the visitor is at a ... stmt?


================
Comment at: clang/lib/CodeGen/CoverageMappingGen.cpp:593
       MostRecentLocation = *StartLoc;
-      completeDeferred(Count, MostRecentLocation);
     }
 
----------------
Does this mean a deferred gap region following a `break;` statement won't be 
completed before the next region is pushed?


================
Comment at: clang/lib/CodeGen/CoverageMappingGen.cpp:942
     pushRegion(Counter::getZero());
-    auto &ZeroRegion = getRegion();
-    ZeroRegion.setDeferred(true);
-    LastTerminatedRegion = {EndLoc, RegionStack.size()};
+    if (!HasTerminateStmt) {
+      auto &ZeroRegion = getRegion();
----------------
What's supposed to be the difference between the zero region pushed after a 
`return;` vs. after a `break;`?


================
Comment at: clang/lib/CodeGen/CoverageMappingGen.cpp:1057
+    if (SaveTerminateStmt)
+      HasTerminateStmt = true;
     handleFileExit(getEnd(S));
----------------
Can this replace all of the machinery around DeferredRegions? It'd be nice to 
just have one way to set up gaps between statements.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D97101/new/

https://reviews.llvm.org/D97101

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to