Index: docs/AliasAnalysis.rst =================================================================== --- docs/AliasAnalysis.rst +++ docs/AliasAnalysis.rst @@ -136,7 +136,7 @@ The ``MustAlias`` response may only be returned if the two memory objects are guaranteed to always start at exactly the same location. A ``MustAlias`` -response implies that the pointers compare equal. +response not implies that the pointers compare equal. The ``getModRefInfo`` methods ----------------------------- Index: docs/LangRef.rst =================================================================== --- docs/LangRef.rst +++ docs/LangRef.rst @@ -5118,6 +5118,19 @@ !0 = !{!"magic ptr"} !1 = !{!"other ptr"} +Because `invariant.group` is tied to the SSA value of the pointer operand, +replacing one pointer by another based on `mustalias` returned from Alias +Analysis can't be done without discarding the `invariant.group` metadata. +.. code-block:: llvm + %v = load i8, i8* %x, !invariant.group !0 + ; if %x mustalias %y then we can replace the above instruction with + %v = load i8, i8* %y + +Where replacing by SSA values equivalence is not required to discard +`invariant.group` metadata. + + + '``type``' Metadata ^^^^^^^^^^^^^^^^^^^