[PATCH] D82316: [LangRef] Add `noundef` attribute to documentation
Gui Andrade via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 25 10:14:24 PDT 2020
guiand updated this revision to Diff 273427.
guiand retitled this revision from "[LangRef] Add `frozen` attribute to documentation" to "[LangRef] Add `noundef` attribute to documentation".
guiand edited the summary of this revision.
guiand added a comment.
Changed attribute name from frozen to noundef, addressed comments
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D82316/new/
https://reviews.llvm.org/D82316
Files:
llvm/docs/BitCodeFormat.rst
llvm/docs/LangRef.rst
Index: llvm/docs/LangRef.rst
===================================================================
--- llvm/docs/LangRef.rst
+++ llvm/docs/LangRef.rst
@@ -1252,6 +1252,12 @@
only valid on intrinsic declarations and cannot be applied to a
call site or arbitrary function.
+``noundef``
+ This attribute applies to parameters and return values. If the value contains
+ any uninitialized or poison bits, the behavior is undefined. This constraint does
+ not apply to inferrable uninitialized bits, such as the 24 bits of
+ padding in `{ i8, i32 }`.
+
.. _gc:
Garbage Collector Strategy Names
@@ -3656,6 +3662,11 @@
- The condition operand of a :ref:`br <i_br>` instruction.
- The callee operand of a :ref:`call <i_call>` or :ref:`invoke <i_invoke>`
instruction.
+- The parameter operand of a :ref:`call <i_call>` or :ref:`invoke <i_invoke>`
+ instruction, when the function or invoking call site has a ``noundef``
+ attribute in the corresponding position.
+- The operand of a :ref:`ret <i_ret>` instruction if the function or invoking
+ call site has a `noundef` attribute in the return value position.
Here are some examples:
Index: llvm/docs/BitCodeFormat.rst
===================================================================
--- llvm/docs/BitCodeFormat.rst
+++ llvm/docs/BitCodeFormat.rst
@@ -1058,7 +1058,16 @@
* code 56: ``nocf_check``
* code 57: ``optforfuzzing``
* code 58: ``shadowcallstack``
+* code 59: ``speculative_load_hardening``
+* code 60: ``immarg``
+* code 61: ``willreturn``
+* code 62: ``nofree``
+* code 63: ``nosync``
* code 64: ``sanitize_memtag``
+* code 65: ``preallocated``
+* code 66: ``no_merge``
+* code 67: ``null_pointer_is_valid``
+* code 68: ``noundef``
.. note::
The ``allocsize`` attribute has a special encoding for its arguments. Its two
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D82316.273427.patch
Type: text/x-patch
Size: 1831 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200625/261bfe7a/attachment.bin>
More information about the llvm-commits
mailing list