llvm.org GIT mirror llvm / 11eaa16
[Docs] More MemorySSA doc updates! Thanks again to Michael Kuperstein for the feedback. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@279032 91177308-0d34-0410-b5e6-96231b3b80d8 George Burgess IV 3 years ago
1 changed file(s) with 5 addition(s) and 5 deletion(s). Raw diff Collapse all Expand all
5252 inside ``MemorySSA``, whereas ``Instruction``\ s are mapped to ``MemoryUse``\ s
5353 and ``MemoryDef``\ s.
5454
55 Note also that in SSA, Phi nodes merge must-reach definitions (that
56 is, definite new versions of variables). In MemorySSA, PHI nodes merge
57 may-reach definitions (that is, until disambiguated, the versions that
58 reach a phi node may or may not clobber a given variable)
55 Note also that in SSA, Phi nodes merge must-reach definitions (that is,
56 definitions that *must* be new versions of variables). In MemorySSA, PHI nodes
57 merge may-reach definitions (that is, until disambiguated, the versions that
58 reach a phi node may or may not clobber a given variable).
5959
6060 ``MemoryUse``\ s are operations which use but don't modify memory. An example of
6161 a ``MemoryUse`` is a ``load``, or a ``readonly`` function call.
6262
6363 ``MemoryDef``\ s are operations which may either modify memory, or which
64 otherwise clobber memory in unquantifiable ways. Examples of ``MemoryDef``\ s
64 introduce some kind of ordering constraints. Examples of ``MemoryDef``\ s
6565 include ``store``\ s, function calls, ``load``\ s with ``acquire`` (or higher)
6666 ordering, volatile operations, memory fences, etc.
6767