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