[LLVMdev] DSA - LocalDataStructures pass does not create DSGraphs

sebald.ziegler.maillist at ikolus.de sebald.ziegler.maillist at ikolus.de
Thu Aug 8 07:30:50 PDT 2013


On Wednesday, August 07, 2013 18:57:16 sebald.ziegler.maillist at ikolus.de 
wrote:
> Hallo.
> 
> I wanted to use the DSA from the poolalloc project as a starting point for
> static C code analysis (for me it has some benefits to work on LLVM-IR
> (generated by clang) instead of C code).
> 
> Currently there is no poolalloc version 3.3. Therefore I wrote a quick
> patch to make poolalloc 3.2 compile with llvm 3.3 (mostly adaptions to
> file relocations were necessary). The patch is attached as it is quite
> small.
> 
> With the foundations working a simple test before getting serious seemed to
> be a good idea. So I tried to perform the LocalAnalysis
> (LocalDataStructures pass in poolalloc) on the running example (LLVM-IR
> obtained by clang) of Chris Lattner's PHD thesis (p. 44) (code attached).
> 
> When this pass(LocalDataStructures) is run I can call dumpCallGraph() on it
> and get the correct result. But calls to hasDSGraph(const Function &F) all
> return false although they should not. DSGraphs should have been built.
> 
> Does anyone see what I am doing wrong? Or is this a bug?

Found out what I did wrong:
- PassManager performs cleanup operations (I thought this would only happen if 
the PM's dtor gets called)
- stuff gets deleted but parts are still accessible (call graph information)

So this question has actually nothing to do with DSA.

Solution:
Acknowledge the existence of the PassManager environment -> write own pass 
that consumes the information of LocalDataStructures pass...

> 
> Thank you for any help and comments!
> 
> Sebald



More information about the llvm-dev mailing list