1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00

[Docs][NewPM] Add note about required passes

Reviewed By: ychen

Differential Revision: https://reviews.llvm.org/D88342
This commit is contained in:
Arthur Eubanks 2020-09-25 15:21:54 -07:00
parent 4bab0c4016
commit ee468fc3e5

View File

@ -207,3 +207,32 @@ test at ``llvm/test/Transforms/HelloNew/helloworld.ll``. See
$ ninja -C build check-llvm
# runs our new test alongside all other llvm lit tests
FAQs
====
Required passes
---------------
A pass that defines a static ``isRequired()`` method that returns true is a required pass. For example:
.. code-block:: c++
class HelloWorldPass : public PassInfoMixin<HelloWorldPass> {
public:
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
static bool isRequired() { return true; }
};
A required pass is a pass that may not be skipped. An example of a required
pass is ``AlwaysInlinerPass``, which must always be run to preserve
``alwaysinline`` semantics. Pass managers are required since they may contain
other required passes.
An example of how a pass can be skipped is the ``optnone`` function
attribute, which specifies that optimizations should not be run on the
function. Required passes will still be run on ``optnone`` functions.
For more implementation details, see
``PassInstrumentation::runBeforePass()``.