[PATCH] D21387: [CFLAA] Remove non-pointer values from CFLGraph
Daniel Berlin via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 15 09:51:29 PDT 2016
It's not clear to me why you don't, long term, end up with attributes both
for edges and nodes.
For example, for edges, to support field-sensitive analysis, you will
either need the offset or something as an edge attribute, so you can
differentiate what edge to follow for a given offset.
(unless y'all know another way)
On Wed, Jun 15, 2016 at 9:24 AM, Jia Chen via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> grievejia created this revision.
> grievejia added reviewers: george.burgess.iv, hfinkel.
> grievejia added a subscriber: llvm-commits.
> This patch introduces no functionality changes.
> The goal is to only let CFLAA track pointer values. Non-pointer values do
> not need to be added to CFLGraph, and any alias queries involving at least
> one non-pointer value can be answered with "NoAlias" (basicaa does this so
> I guess with the introduction of AttrEscape it would be fine for CFLAA to
> do it as well).
> One more change has to be done to achieve this goal, though. For
> instructions like ptrtoint, the operand is a pointer yet the result is not.
> Ideally we would want to add the operand to CFLGraph and tag it as
> AttrEscape, and just ignore the result. However, without this patch we
> cannot do that since StratifiedAttrs are attached to CFLGrpah's edges, not
> nodes. All we can do there was to add an edge from the operand to the
> result with AttrEscape attached to the edge, but then we have to add a
> non-pointer value (the result) as a node to the graph. This patch fix this
> issue by moving StratifiedAttrs from edges to nodes.
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-commits