[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