[llvm-dev] [RFC] Pass return status
Hal Finkel via llvm-dev
llvm-dev at lists.llvm.org
Wed Jul 15 07:45:51 PDT 2020
On 7/15/20 3:33 AM, Serge Guelton via llvm-dev wrote:
> Hi folks,
>
> some more information on this feature - as a reminder I started one
> month ago to work on an expensive check that would verify that pass
> return status is correctly reported by passes, i.e. no pass return «
> IR not modified » while actually modifying it.
> It took ~20 pass fixes to achieve that goal, as many passes were not
> respectful of that contract, but as
> of 3667d87a33d3c8d4072a41fd84bb880c59347dc0,
> https://reviews.llvm.org/D80916 <https://reviews.llvm.org/D80916> has
> been merged in master and the check is active, which should prevent
> further regression on that topic.
>
> Thanks a lot to @foad, @jdoerfert, @fhahn, @calixte (and others I'm
> sorry to forgot) for their help during the reviews.
This is great news!
Some years ago, we did some experiments on whether we could develop more
fixed-point optimization within LLVM's pipeline. This was not the only
impediment we identified, but it was a major one.
Out of curiosity, does change here include changes to names, and other
semantically-irrelevant changes (e.g., changing the order of operands in
a PHI)?
-Hal
>
>
>
>
> On Fri, Jun 12, 2020 at 11:24 PM Mehdi AMINI <joker.eph at gmail.com
> <mailto:joker.eph at gmail.com>> wrote:
>
>
>
> On Thu, Jun 11, 2020 at 8:42 AM Serge Guelton via llvm-dev
> <llvm-dev at lists.llvm.org <mailto: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
> <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 <https://reviews.llvm.org/D80707>.
>
>
> Awesome feature! I am really fond of these pieces of
> infrastructure that can defend against human mistakes and save
> countless hours of debugging when subtle issues arise.
>
> Thanks Serge,
>
> --
> Mehdi
>
>
>
> [0]
> https://llvm.org/docs/WritingAnLLVMPass.html#the-runonmodule-method
> <https://llvm.org/docs/WritingAnLLVMPass.html#the-runonmodule-method>
> [1] https://reviews.llvm.org/D81230
> <https://reviews.llvm.org/D81230>
> https://reviews.llvm.org/D81236 <https://reviews.llvm.org/D81236>
> https://reviews.llvm.org/D81256 <https://reviews.llvm.org/D81256>
> https://reviews.llvm.org/D81238 <https://reviews.llvm.org/D81238>
> https://reviews.llvm.org/D81225 <https://reviews.llvm.org/D81225>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> <https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200715/d96d1169/attachment.html>
More information about the llvm-dev
mailing list