search for: tddatastructures

Displaying 20 results from an estimated 22 matches for "tddatastructures".

2002 Nov 03
2
[LLVMdev] getAnalysis()
I'm having trouble with using getAnalysis() to access the results of one pass from within another. I require the pass to be previously executed as follows: void MyPass::getAnalysisUsage(AnalysisUsage &Info) const { Info.addRequired<TDDataStructures>(); } Then I try to use it as follows: bool MyPass::doInitialization(Module &M) { TDDataStructures &dsgraph = getAnalysis<TDDataStructures>(); return false; } When I run my pass via opt, I get the following assertion error: Assertion failed: i != AnalysisImpls.s...
2002 Nov 21
2
[LLVMdev] get TopDown DSGraph
Dear LLVM, I was wondering if this is the right way to get TopDown DSGraph? TDDataStructures &TD = getAnalysis<TDDataStructures>(); F is some function DSGraph &dsg = TD.getDSGraph(F); I found out the DSGraph I got using this method is actually bottom up DSGraph, can you let me know why? Thanks, xiaodong
2002 Nov 21
1
[LLVMdev] get TopDown DSGraph
...p() are different? Besides, each time I call the getAnaysis<TDDataStructure>(), it writes out some bu_funname.dot files to the disk. Why is that? Thanks, xiaodong On Thu, 21 Nov 2002, Chris Lattner wrote: > > I was wondering if this is the right way to get TopDown DSGraph? > > TDDataStructures &TD = getAnalysis<TDDataStructures>(); > > F is some function > > DSGraph &dsg = TD.getDSGraph(F); > > Yes, that's the right way. > > > I found out the DSGraph I got using this method is actually bottom up > > DSGraph, can you let me know why? >...
2015 May 15
2
[LLVMdev] DSA / poolalloc: incorrect callgraph for indirect call
...int (*fptr)(int, int), int arg1, int arg2) { return (*fptr)(arg1, arg2); } __attribute__((noinline)) static int foo() { return run_func(&f1, 1, 2); } int main(int argc, char *argv[]) { printf("Main: %p\n", &main); printf("Sum: %d\n", foo()); } Using the TDDataStructures, I would expect that the callgraph of above program shows that run_func can only call f1. However, it seems that DSA is falling back to an address-taken approach and tells us it can also call main. I attached the bitcode of above C program, as well as the LLVM pass that generates a callgraph. I...
2011 Aug 11
0
[LLVMdev] incorrect DSCallGraph for simple indirect call with vtable nearby
...behavior for EQTD :). In short, EQTD (and CBU) are useful for program-transforming passes like pool allocation, but are _not_ good for alias analysis queries. If you switch to TD you'll get better alias-analysis information, and in this example the correct result. I changed both instances of EQTDDataStructures to TDDataStructures in your example code, and got the desired result (and confirmed that I get the results you report when using EQTD). Give that change a shot and let us know if you have any further questions/issues. FWIW at the moment DSA doesn't give good results for vtable-heavy code, mar...
2011 Aug 11
2
[LLVMdev] incorrect DSCallGraph for simple indirect call with vtable nearby
Will Dietz wrote: > This is actually the expected behavior for EQTD :). Expected by you, maybe. :-D > If you switch to TD you'll get better alias-analysis information, and > in this example the correct result. OK, I have switched to TDDataStructures as well, and I am also seeing much better (for my purposes) results in simple tests. I'll keep poking at this some more and let you folks know if I hit any other surprises. There is no mention of TDDataStructures in "poolalloc/dsa-manual/manual.tex", which is why I did not consid...
2002 Nov 03
0
[LLVMdev] getAnalysis()
...ott Mikula wrote: > I'm having trouble with using getAnalysis() to access the results of one > pass from within another. I require the pass to be previously executed > as follows: > > void MyPass::getAnalysisUsage(AnalysisUsage &Info) const { > Info.addRequired<TDDataStructures>(); > } Is that the only line you have? There may be some trouble if you also include a pass that invalidates TDDS before your pass can get to it. Unfortunately we don't have good diagnostics for this case yet. > Then I try to use it as follows: > bool MyPass::doInitialization(Mo...
2002 Nov 03
1
[LLVMdev] getAnalysis()
...#39;m having trouble with using getAnalysis() to access the results of one > > pass from within another. I require the pass to be previously executed > > as follows: > > > > void MyPass::getAnalysisUsage(AnalysisUsage &Info) const { > > Info.addRequired<TDDataStructures>(); > > } > > Is that the only line you have? There may be some trouble if you also > include a pass that invalidates TDDS before your pass can get to it. > Unfortunately we don't have good diagnostics for this case yet. > > > Then I try to use it as follows: >...
2011 Aug 10
2
[LLVMdev] incorrect DSCallGraph for simple indirect call with vtable nearby
John Criswell wrote: > 1) I'll try out your example C++ code below and see if I can get the > same results that you do. However, I'm at a conference right now (Usenix > Security), so I don't know exactly when I'll get to it. Excellent. Thanks, John! > 2) DSA can get pessimistic results when dealing with external code (as > Andrew described). It is designed for
2002 Nov 21
0
[LLVMdev] get TopDown DSGraph
> I was wondering if this is the right way to get TopDown DSGraph? > TDDataStructures &TD = getAnalysis<TDDataStructures>(); > F is some function > DSGraph &dsg = TD.getDSGraph(F); Yes, that's the right way. > I found out the DSGraph I got using this method is actually bottom up > DSGraph, can you let me know why? Why do you think it's a BU graph...
2005 Feb 21
2
[LLVMdev] DSG Visualization
Hello, Is it possible to display the data structure graphs created by the Data Structure Analysis using a visualization tool? Thanks --------------------------------- Do you Yahoo!? Yahoo! Search presents - Jib Jab's 'Second Term' -------------- next part -------------- An HTML attachment was scrubbed... URL:
2005 Feb 21
0
[LLVMdev] DSG Visualization
On Mon, 21 Feb 2005, xavier wrote: > Hello, > > Is it possible to display the data structure graphs created by the Data Structure Analysis using a visualization tool? yes. Just run one of these commands: analyze -datastructure x.bc -- local DSGs analyze -budatastructure x.bc -- BU DSGs analyze -tddatastructure x.bc -- TD DSGs These commands will output one
2006 Dec 01
1
[LLVMdev] DSGraph::computeCalleeCallerMapping failing
...le&)+0x23)[0x850b125] ../../../../../../old_obj/Debug/bin/opt(main+0x8d6)[0x843194a] /lib/tls/libc.so.6(__libc_start_main+0xf0)[0x9ea770] ../../../../../../old_obj/Debug/bin/opt(std::__throw_logic_error(char const*)+0x5d)[0x8430ee1] Aborted (core dumped) My code looks something like this: TDDataStructures &TDD = getAnalysis<TDDataStructures>(); for(unsigned int i=0;i<SCC.size();i++) // Go through the functions in the SCC { Function *fun = SCC[i]->getFunction(); if( fun == NULL || fun->isExternal() ) { MYWARN( true, "Encountered a null function p...
2011 Aug 11
0
[LLVMdev] incorrect DSCallGraph for simple indirect call with vtable nearby
I wrote: > I'll keep poking at this some more and let you folks know if I hit any other surprises. Well, that didn't take long. :-) I have found two new surprises in DSCallGraph as built by TDDataStructures. Consider the following program, which is complete and self-contained and which has one simple indirect call site: volatile int unknown; static void red() { } static void blue() { } int main() { (unknown ? red : blue)(); return 0; } If I save this as "test.c", compile i...
2007 Jul 10
1
[LLVMdev] A question about LLVM and pool allocation
HI guys. I'm trying to build the poolalloc on llvm-2.0 but there exist some errors. Can you tell me which version of llvm is known to make the poolalloc build and install successful? Thanks. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20070710/4ab5e155/attachment.html>
2008 Apr 23
0
[LLVMdev] how to dump DSA graph in gdb?
Tianwei wrote: > On Wed, Apr 23, 2008 at 11:59 PM, John Criswell <criswell at cs.uiuc.edu<mailto:criswell at cs.uiuc.edu>> wrote: > Dear Tianwei, > > You can use the -analyze option to the opt tool to tell the DSA passes > to store their results in files. When you use the -analyze option, the > DSA passes will create a separate file for each function (and possible
2002 Oct 30
1
[LLVMdev] help interpreting DSGraph->dump
> > First off, make sure you are sending the graphs through the "dot" > > utility. It turns them into a nice format that is much easier to > > visualize than the text format... :) > > hmmm... how do I get to use the magical "dot" utility? It sounds > pretty much like what I'm looking for, and I found it in >
2002 Nov 12
0
[LLVMdev] (no subject)
P.S. If anyone can take a little time to write a GraphTraits class for the call graph, using the call sites returned by the TDGraph, that would be great. Then you could directly use the PostOrderIterator, ReversePostOrderIterator, and TarjanSCCIterator on this call graph, without having to do any extra work. You can also do other things like print out the call graph to dot files and view them.
2006 Apr 10
1
[LLVMdev] Debugging Output from DSA Analysis
Dear All, Is there a simple way to print the results of the various DSA analysis passes (similar to the ones found in the Pool Allocation papers)? I'm working with a modified DSA analysis pass and would like to know DSNodes it's creating on a particular function. Thanks in advance. -- John T. -- John T. Criswell Research Programmer University of Illinois at Urbana-Champaign
2002 Nov 12
2
[LLVMdev] (no subject)
Dear LLVM, I need to do interprocedural analysis for my project. I was wondering if you can tell me how to create Bottom Up DSGraph and Call Graph in the program. I know DSGraph *dsg = new DSGraph( F ) can create a DSGraph, but looks like that's only local DSGraph. I also need to know how to create the call graph for the whole module in the program. Thanks, xiaodong