[PATCH] D147073: [Coverage] Handle invalid end location of an expression/statement.

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 12 08:44:57 PDT 2023


aaron.ballman added a comment.

In D147073#4261633 <https://reviews.llvm.org/D147073#4261633>, @zequanwu wrote:

> In D147073#4258981 <https://reviews.llvm.org/D147073#4258981>, @aaron.ballman wrote:
>
>> Perhaps a way to split the middle would be to assert that the source locations are valid in coverage mapping, but then do the right thing in non-asserts builds instead of crashing. This way, we don't lose the benefit of knowing the issues happen in development builds, but we don't punish users of coverage mapping with the released product. WDYT?
>
> Won't this still cause assertion failure on assert builds?

Yes, it will, but that's the goal in this case. I think we want the loud failure to tell us when we've

> I don't quite understand "do the right thing in non-asserts builds instead of crashing".

For example:

  // If either of these locations is invalid, something elsewhere in the compiler has broken...
  assert(StartLoc && StartLoc->isInvalid() && "Start location is not valid");
  assert(EndLoc && EndLoc->isInvalid() && "End location is not valid");
  
  // ... however, we can still recover without crashing.
  if (StartLoc && StartLoc->isInvalid())
    StartLoc = std::nullopt;
  if (EndLoc && EndLoc->isInvalid())
    EndLoc = std::nullopt;


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D147073



More information about the cfe-commits mailing list