[PATCH] D78861: [Attributor] [WIP] Track AA dependency using dependency graph

Luofan Chen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 2 23:57:31 PDT 2020


bbn marked an inline comment as done.
bbn added inline comments.


================
Comment at: llvm/include/llvm/Transforms/IPO/Attributor.h:863
              CallGraphUpdater &CGUpdater,
+             AADepGraphNode &SynDGN,
              DenseSet<const char *> *Allowed = nullptr)
----------------
kuter wrote:
> bbn wrote:
> > kuter wrote:
> > > Why ? 
> > > 
> > > Currently you are passing a synthetic node reference from outside
> > > and doing 
> > > A.DG =  ... 
> > > in  `runAttributorOnFunctions`
> > > 
> > > Since the graph is now so light weight why don't we do it like `Attributor::getDepGraph()` ? 
> > > `getDepGraph()` would just return a `AADepGraph` with a reference to the `SynDGN`
> > > Doing it this way you wouldn't have to set the DG from outside + you wouldn't need 
> > > to store a `AADepGraphNode` reference.
> > > 
> > Thanks for the idea. I have updated my patch and moved the synthetic node to the dependency graph, does that make sense?
> 
> From what I know the `Attributor` is also intended to be used as external component to make other deductions. I think it is weird for someone to pass a `AADepGraph` reference to the constructor that they are probably not going to use. 
> 
> Also the `AADepGraph` just holds the SynDGN right ?
> IMHO If we make it hold a pointer to the SynDGN instead we can pass it around by value. 
> 
> That way we could have a 
> ```
> AADepGraph Attributor::getDepGraph() {
>   return AADepGraph(&SynDGN);
> }
> ```
> 
> Only potential problem with that would be that it would be holding a pointer to a member of the `Attributor` so the `Attributor` would have to out live the `AADepGraph`.
> 
> Considering that most `AbstractAttribute`'s are not safe to print after manifestation this should not be a huge problem.
> (print functions of many `AbstractAttribute`'s print `Value`'s that might be freed)
> 
Oh, I see. What about directly declare the dep graph in the attributor struct as `AADepGraph DG` instead of a reference or a pointer?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D78861/new/

https://reviews.llvm.org/D78861





More information about the llvm-commits mailing list