@@ -1474,11 +1474,9 @@ Currently, only the following parameter attributes are defined:
1474
1474
``null_pointer_is_valid`` function attribute is present.
1475
1475
``n`` should be a positive number. The pointer should be well defined,
1476
1476
otherwise it is undefined behavior. This means ``dereferenceable(<n>)``
1477
- implies ``noundef``. When ``dereferenceable(<n>)`` is used in an
1478
- :ref:`assume operand bundls <assume_opbundles>`, the pointer is only
1479
- guaranteed to be dereferenceable at the point of the assumption and
1480
- may not be dereferenceable at later pointers, e.g. because it could have
1481
- been freed.
1477
+ implies ``noundef``. When used in an assume operand bundle, more restricted
1478
+ semantics apply. See :ref:`assume operand bundles <assume_opbundles>` for
1479
+ more details.
1482
1480
1483
1481
``dereferenceable_or_null(<n>)``
1484
1482
This indicates that the parameter or return value isn't both
@@ -2930,6 +2928,11 @@ the behavior is undefined, unless one of the following exceptions applies:
2930
2928
(including a zero alignment). If this is the case, then the pointer value
2931
2929
must be a null pointer, otherwise the behavior is undefined.
2932
2930
2931
+ * ``dereferenceable(<n>)`` operand bundles only guarantee the pointer is
2932
+ dereferenceable at the point of the assumption and may not be
2933
+ dereferenceable at later pointers, e.g. because it could have been
2934
+ freed.
2935
+
2933
2936
In addition to allowing operand bundles encoding function and parameter
2934
2937
attributes, an assume operand bundle my also encode a ``separate_storage``
2935
2938
operand bundle. This has the form:
0 commit comments