[llvm-dev] optnone/skipping passes in the new pass manager

Arthur Eubanks via llvm-dev llvm-dev at lists.llvm.org
Sun Jun 7 16:58:53 PDT 2020


Looking through some of the remaining test failures under the new pass
manager, I've narrowed down one of the failures in GWPAsan(!) to the fact
that the new pass manager doesn't properly skip passes like the old pass
manager. For example, when a function is marked optnone, or when using
https://llvm.org/docs/OptBisect.html.

Lots of passes (e.g. SROA) will do the following under the legacy pass
manager:

  bool runOnFunction(Function &F) override {
    if (skipFunction(F))
      return false;
    // do pass
  }

What's the right way to proceed with this? There are 50-100 calls to
skipFunction() in legacy passes. This doesn't even account for other types
of IR units, like skipModule(Module&).

I suppose it's possible to manually go in and add in the same check in the
new passes, but that seems tedious (and how do you test that at scale?
clearly there aren't many tests for it right now since check-llvm passes
under the new pass manager). An alternative of skipping passes at the pass
manager level would require marking each pass as necessary/optional (I
think...).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200607/5c5ec1a2/attachment.html>


More information about the llvm-dev mailing list