[PATCH] D97101: [Coverage] Emit gap region between statements if first statements contains terminate statements.

Vedant Kumar via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 3 09:43:59 PST 2021


vsk accepted this revision.
vsk added a comment.
This revision is now accepted and ready to land.

Thanks, this looks great.



================
Comment at: clang/test/CoverageMapping/switch.cpp:62
   default:          // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #4
     break;          // CHECK-NEXT: Branch,File 0, [[@LINE-1]]:3 -> [[@LINE-1]]:10 = #4, (#0 - #4)
+  }
----------------
zequanwu wrote:
> vsk wrote:
> > The blank space after `default: break;` and before the closing '}' should have the same count as the switch condition, I thought (this goes for all of the unreachable code within a switch body)? The idea is to prevent 'not-executed' regions from appearing after the `break` stmt.
> Yes, they are unreachable. So, shouldn't they always have zero count instead of same count as switch condition?
I see, you're right. We use a gap region with zero count to cover the area after break. That's actually documented here: https://clang.llvm.org/docs/SourceBasedCodeCoverage.html#switch-statements. One interesting point is that there's only one gap region that covers the whole body; in this example, that would be `Gap,File 0, [[@LINE]]:13 -> [[@LINE+8]]:10 = 0`. So, perhaps the new gaps emitted in switches are redundant, but getting rid of them is just a performance optimization.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D97101



More information about the cfe-commits mailing list