forked from OSchip/llvm-project
parent
2325273641
commit
3605f319dd
|
@ -1347,7 +1347,7 @@ object pointer. The corresponding actual sequence executed is the
|
|||
However, under certain circumstances, ARC is permitted to re-order and
|
||||
eliminate operations in a manner which may alter the overall
|
||||
computation history beyond what is permitted by the general "as if"
|
||||
rule of C/C++ and the :ref:`restrictions <_arc.objects.retains>` on
|
||||
rule of C/C++ and the :ref:`restrictions <arc.objects.retains>` on
|
||||
the implementation of ``retain`` and ``release``.
|
||||
|
||||
.. admonition:: Rationale
|
||||
|
@ -1359,6 +1359,7 @@ the implementation of ``retain`` and ``release``.
|
|||
example, consider the following code:
|
||||
|
||||
.. code-block:: objc
|
||||
|
||||
id x = _ivar;
|
||||
[x foo];
|
||||
|
||||
|
@ -1450,7 +1451,7 @@ dependency is not carried by values that are stored to objects.
|
|||
itself cause dependence, but since generally the optimizer will not
|
||||
be able to prove that the function doesn't depend on that parameter,
|
||||
it will be forced to conservatively assume it does.
|
||||
|
||||
|
||||
Dependency propagates to values loaded from a pointer because those
|
||||
values might be invalidated by deallocating the object. For
|
||||
example, given the code ``__strong id x = p->ivar;``, ARC must not
|
||||
|
|
Loading…
Reference in New Issue