[llvm-dev] Where does doInitialization() fit into the new PassManager model?

Arthur Eubanks via llvm-dev
Tue, 09 Nov 2021 18:10:35 -0000

Yeah there's currently no equivalent of doInitialization() in the new pass
manager. Creating a per-module RNG to work on functions seems a bit weird
to me. Module::createRNG() attempts to be consistent based on the module
name + a per-call site salt, but that makes so changes in one function
affect functions visited after. It would make more sense to me to use a
per-function RNG salted with the module name and function name. Or if you
really want a per-module RNG you could just lazily initialize it in the
run(Function &). (Also Module::createRNG() isn't used in tree AFAICT)

On Mon, Nov 8, 2021 at 7:59 PM Zhang via llvm-dev <llvm-dev at
lists.llvm.org>
wrote:

> Hi:
> In my legacy pass, I usually use doInitialization() to call
> Module::createRNG() to create a RandomNumberGenerator, which my
> FunctionPass later uses.
> How does this model fit into the new PassManager interface? Creating my
> new pass as run(Function&F ....) and re-create my RNG each time
doesn't
> preserve its internal state, but using run(Module& M) seems a bit
overkill
> to me?
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20211109/3cef0708/attachment.html>