[llvm-dev] How to ask MustAlias queries from DSA results

John Criswell via llvm-dev llvm-dev at lists.llvm.org
Sat Dec 17 10:50:49 PST 2016


On 12/16/16 9:53 PM, 杨至轩(Zhixuan Yang) via llvm-dev wrote:
> Hello, everyone!
>
> I'm writing an automatic memory leak fixing tool recently. For my 
> task, I'm using the DSA (Data Structure Analysis) for alias analysis. 
> In my task, when I detect a memory leak, I need to find a pointer (in 
> C) 'must-alias' with the corresponding resource.

If I understand correctly, if you find memory leak, you want to find the 
corresponding call(s) to malloc() that allocated the memory object, 
correct?  Can you more completely explain what you are trying to accomplish?

>
> In DSA, I think if two Value* point to the same DSNode, they 
> 'may-alias'. If two Value* point to different DSNode, they 
> 'not-alias'. However, is it possible to know whether two Value* 
> 'must-alias'?

No.  DSA does not track must-alias information.

>
> I checked the AliasAnalysis interface before it was removed from DSA, 
> the interface never returns MustAlias results. I guess it may not be 
> possible to get 'MustAlias' results from DSA. Will it be possible to 
> modify the DSA code so that every heap DSNode tracks all possible 
> malloc() calls it comes from?

Interesting question.  You could add a "Must-Alias" flag that is 
originally set on a DSNode.  Whenever two DSNodes are merged due to a 
"may-alias" relationship, you could flip the "Must-Alias" flag off.

However, DSA is a unification-based analysis, so I would think that the 
accuracy of a must-alias feature would be pretty weak.  Also, DSA loses 
precision as it performs more inter-procedural analysis (the local 
analysis will be the most precise but will have many Incomplete DSNodes; 
the Bottom-Up and Top-Down propagate information up and down the call 
graph but will cause further DSNode merging).

It may be that you will need a more accurate points-to analysis 
algorithm for your work.

Regards,

John Criswell

>
> Thanks for your help.
>
> Best regards, Zhixuan Yang
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


-- 
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
http://www.cs.rochester.edu/u/criswell

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161217/f890eeaa/attachment.html>


More information about the llvm-dev mailing list