[LLVMdev] interprocedural live value analysis

Chris Lattner clattner at apple.com
Mon Nov 8 10:42:32 PST 2010


On Nov 8, 2010, at 7:19 AM, Gordon Haak wrote:

> Hello,
> 
> I had a look at the global variable optimizer. In my opinion it
> handles a few special cases, when global variables can be replaced by
> local variables or be removed completely. Basically I think that this
> problem could be solved with an interprocedural live value analysis
> for global variables more generally. An assignment to a global
> variable can be removed, if this global variable is dead at this
> assignment. I know that this kind of analysis is not trivial to
> implement and may have a significant performance impact. However it
> might be useful.
> 
> What is your opinion about this analysis and transformation?

I'm a bit skeptical that it will have widespread impact, but it is very hard to tell and  more surprising things have been discovered :)

> Am I
> right regarding the usefulness and the effort? What level of precision
> would be reasonable (e.g. the depth of a calling context or no context
> sensitivity at all)? What kind of fixpoint solver would be the best
> choice for this purpose? Are their any reasons against my proposal?

I'd suggest by starting simple: find a case that you think the transform should handle (ideally in real world code) and build it up to be sufficient to handle that one case.  When you have that, run it on a variety of code to see what else it kicks in on.  If it is looking promising, keep incrementally making it smarter.

Once you have something that works, we can evaluate whether it makes sense to turn it on by default.  This is a balance between how much improvement it gives vs the compile time cost.

-Chris



More information about the llvm-dev mailing list