[LLVMdev] Type strengthening and type weakening

Vikram S. Adve vadve at illinois.edu
Wed Sep 16 08:52:22 PDT 2009

On Sep 16, 2009, at 1:15 AM, Talin wrote:

> Has anyone done any experiments with regards to type strengthening or
> weakening in the context of LLVM?
> For example, the GWT compiler does type strengthening - that is, if  
> you
> are calling a method on an interface or abstract type, and the  
> compiler
> determines through live variable analysis what the concrete type is,
> then it goes ahead and re-writes the type information to be the  
> stronger
> type. The advantage is that it may then be able to do additional
> optimizations, such as inlining the method or avoiding indirect  
> dispatch.

Data Structure Analysis (DSA), available through the llvm-poolalloc  
download, attempts to infer subsets of pointers that are always used  
in a type-consistent manner.  More info is here:


This can be used to perform the above kind of optimization and several  
others.  DSA is flow-insensitive so it could be strengthened further  
by flow-sensitive analyses built on top of it.

And on Sep 16, 2009, at 2:12 AM, Sebastian Redl wrote:

> Given that LLVM doesn't have much information about the relationships
> between types, would this be worth it? Such an optimization should IMO
> be done by the front-end, which has higher-level information about
> types, such as class hierarchies.

Optimizations that require information in the front-end should be done  
there.  But there are some that can be done effectively at the LLVM  
level, e.g., see:


Associate Professor, Computer Science
University of Illinois at Urbana-Champaign

More information about the llvm-dev mailing list