diff --git a/llvm/docs/BitCodeFormat.rst b/llvm/docs/BitCodeFormat.rst --- a/llvm/docs/BitCodeFormat.rst +++ b/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: ``frozen`` .. note:: The ``allocsize`` attribute has a special encoding for its arguments. Its two diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -1252,6 +1252,12 @@ only valid on intrinsic declarations and cannot be applied to a call site or arbitrary function. +``"frozen"`` + This attribute indicates that every bit of the parameter is required by + the ABI to be initialized and never poison. Values that would violate this + requirement include structures with padding bits, unions with active + members smaller than their size, and scalars which were never initialized. + .. _gc: Garbage Collector Strategy Names @@ -3656,6 +3662,8 @@ - The condition operand of a :ref:`br ` instruction. - The callee operand of a :ref:`call ` or :ref:`invoke ` instruction. +- Arguments and return values of function calls, when those operands + are marked with the ``frozen`` attribute. Here are some examples: