diff options
| author | Ryan Taylor <rtayl@amd.com> | 2019-07-23 17:19:56 +0000 |
|---|---|---|
| committer | Ryan Taylor <rtayl@amd.com> | 2019-07-23 17:19:56 +0000 |
| commit | 6f13637a3e130980456f37647f7628aa7fa7a2b6 (patch) | |
| tree | cb880b1c37739767967d7ba5dfd1c46275066dc2 /llvm/docs/LangRef.rst | |
| parent | 404551ac64efca14d865e40e62ee9ba871d864af (diff) | |
| download | bcm5719-llvm-6f13637a3e130980456f37647f7628aa7fa7a2b6.tar.gz bcm5719-llvm-6f13637a3e130980456f37647f7628aa7fa7a2b6.zip | |
[IR][Verifier] Allow IntToPtrInst to be !dereferenceable
Summary:
Allow IntToPtrInst to carry !dereferenceable metadata tag.
This is valid since !dereferenceable can be only be applied to
pointer type values.
Change-Id: If8a6e3c616f073d51eaff52ab74535c29ed497b4
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D64954
llvm-svn: 366826
Diffstat (limited to 'llvm/docs/LangRef.rst')
| -rw-r--r-- | llvm/docs/LangRef.rst | 57 |
1 files changed, 42 insertions, 15 deletions
diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst index 87e8a557504..f3b28029936 100644 --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -5303,6 +5303,29 @@ optimizations related to compare and branch instructions. The metadata is treated as a boolean value; if it exists, it signals that the branch or switch that it is attached to is completely unpredictable. +.. _md_dereferenceable: + +'``dereferenceable``' Metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The existence of the ``!dereferenceable`` metadata on the instruction +tells the optimizer that the value loaded is known to be dereferenceable. +The number of bytes known to be dereferenceable is specified by the integer +value in the metadata node. This is analogous to the ''dereferenceable'' +attribute on parameters and return values. + +.. _md_dereferenceable_or_null: + +'``dereferenceable_or_null``' Metadata +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The existence of the ``!dereferenceable_or_null`` metadata on the +instruction tells the optimizer that the value loaded is known to be either +dereferenceable or null. +The number of bytes known to be dereferenceable is specified by the integer +value in the metadata node. This is analogous to the ''dereferenceable_or_null'' +attribute on parameters and return values. + .. _llvm.loop: '``llvm.loop``' @@ -5807,6 +5830,8 @@ the irreducible loop) of 100: Irreducible loop header weights are typically based on profile data. +.. _md_invariant.group: + '``invariant.group``' Metadata ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -8602,7 +8627,7 @@ otherwise, the behavior is undefined. The optional ``!invariant.group`` metadata must reference a single metadata name ``<index>`` corresponding to a metadata node with no entries. - See ``invariant.group`` metadata. + See ``invariant.group`` metadata :ref:`invariant.group <md_invariant.group>` The optional ``!nonnull`` metadata must reference a single metadata name ``<index>`` corresponding to a metadata node with no @@ -8614,22 +8639,14 @@ values. This metadata can only be applied to loads of a pointer type. The optional ``!dereferenceable`` metadata must reference a single metadata name ``<deref_bytes_node>`` corresponding to a metadata node with one ``i64`` -entry. The existence of the ``!dereferenceable`` metadata on the instruction -tells the optimizer that the value loaded is known to be dereferenceable. -The number of bytes known to be dereferenceable is specified by the integer -value in the metadata node. This is analogous to the ''dereferenceable'' -attribute on parameters and return values. This metadata can only be applied -to loads of a pointer type. +entry. +See ``dereferenceable`` metadata :ref:`dereferenceable <md_dereferenceable>` The optional ``!dereferenceable_or_null`` metadata must reference a single metadata name ``<deref_bytes_node>`` corresponding to a metadata node with one -``i64`` entry. The existence of the ``!dereferenceable_or_null`` metadata on the -instruction tells the optimizer that the value loaded is known to be either -dereferenceable or null. -The number of bytes known to be dereferenceable is specified by the integer -value in the metadata node. This is analogous to the ''dereferenceable_or_null'' -attribute on parameters and return values. This metadata can only be applied -to loads of a pointer type. +``i64`` entry. +See ``dereferenceable_or_null`` metadata :ref:`dereferenceable_or_null +<md_dereferenceable_or_null>` The optional ``!align`` metadata must reference a single metadata name ``<align_node>`` corresponding to a metadata node with one ``i64`` entry. @@ -9626,7 +9643,7 @@ Syntax: :: - <result> = inttoptr <ty> <value> to <ty2> ; yields ty2 + <result> = inttoptr <ty> <value> to <ty2>[, !dereferenceable !<deref_bytes_node>][, !dereferenceable_or_null !<deref_bytes_node] ; yields ty2 Overview: """"""""" @@ -9641,6 +9658,16 @@ The '``inttoptr``' instruction takes an :ref:`integer <t_integer>` value to cast, and a type to cast it to, which must be a :ref:`pointer <t_pointer>` type. +The optional ``!dereferenceable`` metadata must reference a single metadata +name ``<deref_bytes_node>`` corresponding to a metadata node with one ``i64`` +entry. +See ``dereferenceable`` metadata. + +The optional ``!dereferenceable_or_null`` metadata must reference a single +metadata name ``<deref_bytes_node>`` corresponding to a metadata node with one +``i64`` entry. +See ``dereferenceable_or_null`` metadata. + Semantics: """""""""" |

