[llvm-dev] [RFC] Pass return status

Chris Lattner via llvm-dev llvm-dev at lists.llvm.org
Thu Jun 11 17:43:20 PDT 2020



> On Jun 11, 2020, at 8:42 AM, Serge Guelton via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> Hi folks,
> 
> Per the documentation[0], whenever an LLVM pass doesn't modify the IR it's run on, it
> should return `false`--it's okay to return `true` if no change happen, just less
> optimal. In the New PM area, this is generally translated into a `PreservedAnalyses::all()`.
> 
> https://reviews.llvm.org/D80916 provides an `EXPENSIVE_CHECK` that computes a
> hash of the IR before and after the pass, and checks that any change is
> correctly reported. The hash is currently incomplete (on purpose, let's start
> small), but it turns out a dozen of passes do not satisfy that
> requirement.
> 
> This could lead to various category of bugs (dangling references, inconsistent
> state, etc). This affects both New and Legacy PM, as passes tend to wrap functions
> that report their status.
> 
> I wrote a bunch of patches for all failure detected by this check, as I cannot land the
> check now, it would break the buildbots :-) Any help to review the remaining
> ones [1] is appreciated.
> 
> Once that check lands and we're relatively confident on the quality of the
> return status, some more optimizations could be triggered, like
> https://reviews.llvm.org/D80707.

Wow, this is really cool.  Thank you for working on this!

-Chris

> 
> 
> [0] https://llvm.org/docs/WritingAnLLVMPass.html#the-runonmodule-method
> [1] https://reviews.llvm.org/D81230
>    https://reviews.llvm.org/D81236
>    https://reviews.llvm.org/D81256
>    https://reviews.llvm.org/D81238
>    https://reviews.llvm.org/D81225
> 
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev



More information about the llvm-dev mailing list