diff --git a/llvm/docs/MemorySSA.rst b/llvm/docs/MemorySSA.rst index dcb0881d8c6c..944df2972759 100644 --- a/llvm/docs/MemorySSA.rst +++ b/llvm/docs/MemorySSA.rst @@ -53,16 +53,16 @@ concrete operation. As such, ``BasicBlock``\ s are mapped to ``MemoryPhi``\ s inside ``MemorySSA``, whereas ``Instruction``\ s are mapped to ``MemoryUse``\ s and ``MemoryDef``\ s. -Note also that in SSA, Phi nodes merge must-reach definitions (that -is, definite new versions of variables). In MemorySSA, PHI nodes merge -may-reach definitions (that is, until disambiguated, the versions that -reach a phi node may or may not clobber a given variable) +Note also that in SSA, Phi nodes merge must-reach definitions (that is, +definitions that *must* be new versions of variables). In MemorySSA, PHI nodes +merge may-reach definitions (that is, until disambiguated, the versions that +reach a phi node may or may not clobber a given variable). ``MemoryUse``\ s are operations which use but don't modify memory. An example of a ``MemoryUse`` is a ``load``, or a ``readonly`` function call. ``MemoryDef``\ s are operations which may either modify memory, or which -otherwise clobber memory in unquantifiable ways. Examples of ``MemoryDef``\ s +introduce some kind of ordering constraints. Examples of ``MemoryDef``\ s include ``store``\ s, function calls, ``load``\ s with ``acquire`` (or higher) ordering, volatile operations, memory fences, etc.