[PATCH] D57982: [SanitizierCoverage] Avoid splitting critical edges when destination is a basic block containing unreachable

Vitaly Buka via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 27 10:54:56 PST 2019


vitalybuka added a comment.

In D57982#1412322 <https://reviews.llvm.org/D57982#1412322>, @morehouse wrote:

> In D57982#1412282 <https://reviews.llvm.org/D57982#1412282>, @craig.topper wrote:
>
> > A block can end in unreachable, but still have reachable code at the beginning. If the block calls a function that is known not to return, the next instruction after the call will be UnreachableInst. For example https://godbolt.org/z/6AGtOf
>
>
> Sure, but that block is generally still not useful to instrument (for fuzzing).  When fuzzing, we save all inputs that either (1) increase coverage as measured by SanitizerCoverage, or (2) crash.  So if case 2 happens every time we touch a block that ends in unreachable, there's no point in instrumenting it so that case 1 happens too.


This explanation looks reasonable to me.


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

https://reviews.llvm.org/D57982





More information about the llvm-commits mailing list