Dear John,
Thank you so much for your reply!
Please kindly correct me if my understanding is wrong.
From your reply, I learn that there could be mainly four reasons why DSA's precision is low:
1. type inference
2. influence of external code
3. bug in handling function pointers
4. using the wrong DSA pass
As you mentioned in your previous mail, LLVM changes a lot.
So I was wondering if DSA's algorithm (presented in PLDI '07) can achieve a comparable precision on top of LLVM 3.5+ after implementing the improvements.
Also, I have diff the DSA code in poolalloc release_19 and release_32. It seems to me that the changes in DSA mainly comes from the aspects as below:
1. release_32 introduces the DataLayout to do some type inference;
2. release_32 replaces some data structures with LLVM built-in data structures;
3. release_32 handles different types of LLVM IR instructions, and in a different way.
4. the inheritance of Analysis Passes has changed a bit.
Therefore, I was wondering if the introduction of DataLayout and changes in LLVM IR cause the imprecision as well.
Thank you!
Regards,
Zhiyuan Wan