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

llvm-svn: 300033
This commit is contained in:
Piotr Padlewski 2017-04-12 07:59:35 +00:00
parent 927d8e610a
commit f8486e31ca
2 changed files with 11 additions and 1 deletions

View File

@ -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
-----------------------------

View File

@ -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
^^^^^^^^^^^^^^^^^^^