[LLVMdev] globals in DS graph

Vikram Adve vadve at cs.uiuc.edu
Mon Nov 25 12:36:01 PST 2002


Ganesh,

I modified DataStructure.cpp so that global nodes are no longer
removed from any graphs.  Only that file has changed.

Chris, if you get a chance to do this, it would be nice if you could
take a quick look at the change I made and make sure that's all that's
needed. 

Thanks,

--Vikram
http://www.cs.uiuc.edu/~vadve


> From: Chris Lattner <sabre at nondot.org>
> Subject: Re: [LLVMdev] globals in DS graph
> Sender: llvmdev-admin at cs.uiuc.edu
> Date: Mon, 25 Nov 2002 01:34:14 -0600 (CST)
> 
> > Specifically, I wrote the following simple program:
> > List *g;
> > void alloc_func(){
> >   g = ( List* ) malloc( sizeof( List ) );
> > }
> > void free_func(){
> >   free( g );
> > }
> 
> I don't have an LLVM tree available to me right now (as
> tank/llvm.cs.uiuc.edu) is down, so take this with a grain of salt...
> 
> > I noticed that the DSnode for g in alloc_func is different from that of
> > free_func and NEITHER of them had GlobalNode bit set in their types. Only
> > the malloc bit and the incomplete bit have been set. I am completely
> > clueless how to figure out if it is a global node or not. I used
> > getGlobals and found that the returned map had size 0.
> 
> There may be a few different things going on here.  First of all, the
> "globals" graph is only partially implemented currently.  Right now, nodes
> eligable to be moved to the globals graph are properly removed from the
> individual function graphs, but they are never reinserted into the globals
> graph.  This can cause some funny disappearances that don't make a lot of
> sense, and...
> 
> > How can I get the "common" global node of g?
> 
> ... the common node in this case never gets unified.  This is one of the
> top priorities for me when I get back to Illinois (after thanksgiving
> break), but it is unlikely to make much progress in the mean time.  If you
> would like to disable this behavior, look in the DSGraph::removeDeadNodes
> (or similar) in DataStructure.cpp.  In it you will see the code that marks
> nodes as being "alive" in the current graph.  All you have to do is add
> code to mark all globals as alive, and they will be propogated up to main.
> Alternatively, take a look at the CVS revisions a few checkins back to see
> when the globals graph stuff was added... and revert it.
> 
> I hope this helps some :)
> 
> -Chris
> 
> -- 
> http://llvm.cs.uiuc.edu/
> http://www.nondot.org/~sabre/Projects/
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
> 





More information about the llvm-dev mailing list