[llvm-dev] Issues with DummyCGSCCPass used for IPRA

vivek pandya via llvm-dev llvm-dev at lists.llvm.org
Wed Dec 7 21:46:44 PST 2016


>
> Hello,
>
> I'm trying to enable interprocedural register allocation (IPRA).

Hi Maxime,

I don't understand here why you need to enable IPRA as that is already
scheduled based on option -mllvm -enable-ipra. So I think easy way to make
IPRA execute every time is to set default value of EnableIPRA option to
true.
you can find this option defined in lib/CodeGen/TargetMachine.cpp and you
may also need to change its initialization to true in  TargetOptions
constructor in include/llvm/Target/TargetOptions.h

- Vivek

> In order to do this, I’ve added the DummyCGSCCPass to our pipeline, as is
> done in TargetPassConfig::addISelPrepare. My understanding is that this
> pass wraps the following passes into an SCC pass manager, so that they are
> run in bottom-up order, which is necessary to enable register allocation
> info from callees to be available at call sites.
>
> The problem I’m running into is that we have an ImmutablePass which is run
> early in our pipeline (and needed in later machine code generation stages),
> and for some reason, this pass gets finalized and re-run multiple times,
> destroying the information we need in the process. I’m really not sure what
> is happening. The pass is clearly marked as required by later passes, but
> somehow it is found to be “dead”, finalized, and then re-run. To make
> matters more confusing, we have another ImmutablePass which is run early
> and used late, but this one doesn’t get finalized. My coworkers and I are
> really not sure what the difference might be.
>
> Could someone more familiar with IPRA or the PassManager provide some
> hints as to what might be happening?
>
> Regards,
>
> - Maxime
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161208/c6f3299f/attachment.html>


More information about the llvm-dev mailing list