Hi @MarisaKirisame , I currently have a question about representing "location 
inside the program" because when the users want to query about the 
Dataflow-Info, they will need to use "location".

**TLDR**: Pointers to ASTNodes are not one-to-one correspondent to "locations 
in the program". Can the usage/development of AAM/ADI lead to a good enough 
data representation of "location" for the compiler-pass developer to easily use 
it to query about Dataflow-Info or other info?

**Detailed Version**:
I notice that both in HalideIR and RelayIR, we don't explicitly require AST to 
really be a tree but a DAG. That means a pointer to an ASTNode cannot easily 
represent a precise location in the program. For example, in HalideIR, 
`add(x,x)` might be a node with two pointers pointing to one node,  however, 
using the pointer to `x` will lead to ambiguity of position -- is the user 
asking for the Dataflow-Info right before the first `x` or the second `x`?

The part in HalideIR is still fixable, at least a brutal way in mind is to just 
make DAG into a real tree; I also have another idea to fix that but the 
modification is not as simple as the current proposal, and I am currently 
concerned about how well-adapt this another solution is in this context of 
IRFunctor. However, I think the first brutal solution cannot adapt to RelayIR 
because it seems like (from the documentation) the semantic of DAG and Tree is 
different?

Basically, when the current compiler-pass developer wants to get Dataflow-info, 
in the current context, the signature of IRMutator/IRFunctor/IRVisitor only 
provides "NodeRef" as default. As above suggested (the ambiguity using NodeRef 
to represent location) **I tend to believe this signature will have to extend 
if the compiler-pass developer wants to get Dataflow-Info.**

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/apache/incubator-tvm/issues/4468#issuecomment-565901356

Reply via email to