problem with using DSA for a side-effect analysis

Thanks guys!

I was looking into ModRef before, but I don't think that's exactly
what I need. ModRef API call getModRefInfo requires a Value to be
passed to it. However, some memory location M (which is a <DSNode,

pair) visible to the caller can be modified in the callee

without any Value in the caller actually pointing to that location. I
also need to capture those...

I would need a call similar to getModRefInfo, just where second
parameter is not a Value, but a DSNodeHandle pointing to the memory
location in the caller whose ModRef status I would like to find out.
Do you maybe have anything similar to that?

-- Zvonimir

What I was hoping is that the internal implementation of the ModRef API in DSAA has that kind of information. It needs to do exactly what you described with computeNodeMapping to implement the AliasAnalysis interface.

Andrew, my question was whether the ModRef info is computed by the -dsaa implementation. If so, that code might be reusable (either directly, by exposing it through a separate interface) or indirectly (by duplicating) for what Zvonimir wants.

–Vikram
http://www.cs.uiuc.edu/~vadve
http://llvm.org/

I haven't looked at the dsaaa implementation for quite a while, but
that would be the place to start. If the DSNodeHandle corrosponds to
anything in the current function, you could just use that as a value,
but it won't always. Eitherway, seeing how DSAaa does this would be
the best code to start from.

Andrew

Thanks!
I already had most of the code for it already written, staring at the
DSAaa helped me to fix a couple of problems. It seems to be working
perfectly now...
Btw, apart from the difference I already mentioned, DSAaa modref is
also not so good fit for me because it is not field-sensitive...

-- Zvonimir

Thanks!
I already had most of the code for it already written, staring at the
DSAaa helped me to fix a couple of problems. It seems to be working
perfectly now...
Btw, apart from the difference I already mentioned, DSAaa modref is
also not so good fit for me because it is not field-sensitive...

This is actually relatively easy to fix, at least for the nodes that are type-homogeneous. You just need to change the R/W flags to be one flag per field instead of one flag per node, and make the corresponding changes to compute them (on loads and stores), and propagate them (on node merges).

--Vikram
http://www.cs.uiuc.edu/~vadve
http://llvm.org/