I just wrapped up some fairly major changes to the AliasAnalysis infrastructure in LLVM, and thought LLVMdev should know about it. In particular, here are the highlights: 1. AliasAnalysis can now take into consideration the size of a memory access to determine whether or not something aliases. This is crucial for a field-sensitive analysis to not cause bad transformations to happen. 2. Mod/Ref information is now a first class part of the AliasAnalysis interface. The IPModRef class does not yet implement the AliasAnalysis interface, but it should probably be changed to at some point. 3. A new pair of classes (AliasSetTracker & AliasSet) can be used to build alias sets for transformations that like to think of things that way. The LICM pass, for example, is dramatically simplified due to these classes. 4. There is a new document describing AliasAnalysis related stuff, available here: http://llvm.cs.uiuc.edu/docs/AliasAnalysis.html If you are planning on doing anything with Alias Analysis in LLVM, I would recommend taking a look. Also, the LICM pass has been enhanced to perform scalar promotion in addition simple hoisting of load instructions. This is capable of changing something like this: for (...) T->data += ... into: tmp = T->data; // tmp is an SSA register for (...) tmp += ... T->data = tmp; ... which stress tests the alias analyses a bit more. -Chris -- http://llvm.cs.uiuc.edu/ http://www.nondot.org/~sabre/Projects/