[llvm-dev] [LICM][MemorySSA] Converting LICM pass to use MemorySSA to avoid AliasSet collapse issue

Geoff Berry via llvm-dev llvm-dev at lists.llvm.org
Mon Apr 11 12:03:36 PDT 2016

Hi All,


I'm looking into converting LICM to use MemorySSA instead of AliasSets to
determine when it is safe to hoist/sink/promote loads and stores to get
around the issue of alias set collapse (see discussion [1]).  I have a
prototype implementation, but have run into two issues that I could use
input from the designers of MemorySSA to resolve:

1)      Is MemorySSA intended to be maintained across passes?  More
specifically how is it intended to interact with the Pass Manager?  In my
current prototype I'm just building it at the start of LICM.

2)      What is the intended method for dealing with changes to the function
that invalidate the MemorySSA form?  I see that there is a way to remove
nodes from the MemorySSA graph, but for other transformations (e.g. hoisting
a load) am I supposed to just update the MemorySSA graph myself?



[1] http://lists.llvm.org/pipermail/llvm-dev/2015-April/084881.html



Geoff Berry

Employee of Qualcomm Innovation Center, Inc.

Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux
Foundation Collaborative Project


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160411/f6a2ee70/attachment.html>

More information about the llvm-dev mailing list