From: Piotr Padlewski Date: Wed, 12 Apr 2017 07:59:35 +0000 (+0000) Subject: Invariant.group and mustalias docs fixes X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3512d22fea43d45b3851c7aad057a2853947345e;p=llvm Invariant.group and mustalias docs fixes Summary: Alias analysis would like to know that invariant.group.barrier returns pointer that mustalias, but this can't imply that we can replace one pointer with another Reviewers: dberlin, sanjoy Subscribers: llvm-commits, chandlerc, hfinkel, nlewycky, amharc Differential Revision: https://reviews.llvm.org/D31758 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300033 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/AliasAnalysis.rst b/docs/AliasAnalysis.rst index 02b749ffb91..e201333f300 100644 --- a/docs/AliasAnalysis.rst +++ b/docs/AliasAnalysis.rst @@ -136,7 +136,7 @@ be overlapping in some way, but do not start at the same address. 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 does not imply that the pointers compare equal. The ``getModRefInfo`` methods ----------------------------- diff --git a/docs/LangRef.rst b/docs/LangRef.rst index c65c9eef776..1d0b9068d31 100644 --- a/docs/LangRef.rst +++ b/docs/LangRef.rst @@ -5121,6 +5121,16 @@ Examples: !0 = !{!"magic ptr"} !1 = !{!"other ptr"} +The invariant.group metadata must be dropped when replacing one pointer by +another based on aliasing information. This is because invariant.group is tied +to the SSA value of the pointer operand. + +.. 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 + + '``type``' Metadata ^^^^^^^^^^^^^^^^^^^