Page MenuHomePhabricator

No OneTemporary

File Metadata

Thu, Oct 17, 1:21 AM


Index: docs/LangRef.rst
--- docs/LangRef.rst
+++ docs/LangRef.rst
@@ -9689,9 +9689,19 @@
``ptrval`` to type ``pty2``. It can be a *no-op cast* or a complex
value modification, depending on the target and the address space
pair. Pointer conversions within the same address space must be
-performed with the ``bitcast`` instruction. Note that if the address space
-conversion is legal then both result and operand refer to the same memory
+performed with the ``bitcast`` instruction. Note that if the address
+space conversion produces a dereferencable result then both result and
+operand refer to the same memory location. The conversion must have no
+side effects, or capture the value of the pointer.
+If the source is :ref:`poison <poisonvalues>`, the result is
+:ref:`poison <poisonvalues>`.
+If the source is not :ref:`poison <poisonvalues>`, and both source and
+destination address spaces are :ref:`integral pointers
+<nointptrtype>`, and the result pointer is dereferencable, the cast is
+assumed to be reversible (i.e. casting the result back to the original
+address space should yield the original bit pattern).

Event Timeline