On 4/30/11 4:39 AM, Wenhan Gu wrote:> Hi all,
>
> in this case:
>
> ...
> int* p = ...
> int* q = p;
> ...
>
> How can I know that data-flow from p to q,
> i.e., which LLVM pass of header files could I use?
It's not completely clear what sort of analysis you want.  If you want 
reaching definitions for just SSA virtual register values, then you only 
need to follow the explicit def-use chains in the SSA graph (see the 
use_iterator of class llvm::Value, IIRC).
If you need to know if p and q point to the same memory object (assuming 
that the memory object is not eliminated by the mem2reg pass), then you 
need to either use the AliasAnalysis analysis group or a points-to 
analysis like DSA.
If you need reaching definitions analysis for all values (including 
those that travel into/out of memory objects), then you need a points-to 
analysis combined with a reaching definitions analysis.  I do not think 
anyone has implemented such an analysis for LLVM yet, although a 
(relatively) simple one could probably be written on top of DSA.
-- John T.
>
> Thank you all.
>
> -- 
> Best regards,
> Wen-Han
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20110501/fe9fab5e/attachment.html>