Question about DSA analysis


I am working on one DSA related project. Got several questions about LLVM’s DSA analysis:

  1. I looked through the llvm doc, it seems “-ds-aa” option is the one I should use. ( however based on the poolalloc’s svn history, this option was removed on (or before) 2011. May I know why this one was removed ? and is there any equivalent option (or options combination) in current poolalloc project ?

  2. I checked the svn history of poolalloc. there is no update to trunk since last Nov. the release_32 branch was updated this March. I am wondering which one is good to use ? and are they compatible with latest llvm trunk or llvm release_3_3 branch ?

thank you in advance

btw: I am not in the llvmdev email alias, please include my email address in your reply.


We removed ds-aa because it had bit-rotted and very few people were using it. There was a patch to resurrect it, but it didn’t apply cleanly (I think we moved from LLVM 3.0 to 3.2 between the time the patch was submitted and the time I got around to looking at it), and there was only 1 user of ds-aa, so making it work was low priority. How you should use the DSA analysis depends on what you’re doing. For intra-procedural alias analysis queries, you can use the DSGraph straight from the BottomUp or TopDown DSA analysis passes. For both intra- and inter-procedural alias analysis queries, you can use the DSNodeEquivs pass. If you need a shape graph, you can use the DSGraph interface directly. If you could tell me how you want to use DSA, I can explain which approach to use and how to make it work. The release_32 branch is the actively maintained branch at the moment. When we’re ready to to move to LLVM 3.3, we’ll merge the release_32 branch back into trunk and then update the code to compile with LLVM 3.3. While I don’t have a timeline yet for when the update to LLVM 3.3 will happen, I think the earliest date that we’d begin an update would be July or August. – John T.

Hi John,

Thanks for the reply. The project that Jing is working on is for a class that I’m TAing for and it involves evaluating the effectiveness of the alias analysis support in LLVM. We’ve modified the project so that it doesn’t require looking at -ds-aa or -steens-aa since it sounds like those aren’t available anymore (originally we had included that as a requirement because of what’s in the documentation).

Do you think those passes might be added back in the future? If not would it make sense to remove them from the documentation (we saw them listed in the current documentation so that is why we thought they should work).

Also I’m working on another project with someone that is using DSA. I had a couple of questions about DSA based on your response.

  1. What happens if we specify running multiple DSA passes, such as: -dsa-td -dsa-local

  2. If we are interested in both intra- and inter-procedural alias analysis would switching from -dsa-td to -dsa-eq get that for us.

Thanks for your help.