In the MemoryDependenceAnalysis::getNonLocalPointerDependency overload that takes a pointer value, it is currently creating an AliasAnalysis::Location from just the pointer, which pessimistically assumes unknown size. I added code to use AliasAnalysis::getTypeStoreSize to create an AliasAnalysis::Location with a more accurate size (when target data is available) and ran it through the nightly test suite, comparing it to the nightly test suite run of the unmodified version. I did this on a 32bit Linux x86 machine. The results were all over the map. Some tests ran faster, others ran slower, and it's hard to get an overall sense of whether the change can be expected to improve or degraded the code. Since the only change (as far as I can tell) was to make getNonLocalPointerDependency more likely to succeed, and allow GVN to eliminate more reloads from memory, my only guess as to why it would pessimize *any* testcases is that it has to do with the register allocator/spiller behavior in the presence of extra live virtual registers or extra live PHI nodes. I saw from recent posts that new heuristics and a new live range splitter are under development... what's the status on that? Is there anything else that might explain these results? (I repeated the test a few times and saw the same thing) The patch for the change I made for the test is attached in order to provide context for my questions. -------------- next part -------------- A non-text attachment was scrubbed... Name: MemDep.patch Type: application/octet-stream Size: 977 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20101109/694529f7/attachment.obj>