================
@@ -660,42 +660,122 @@ Non-Integral Pointer Type
 Note: non-integral pointer types are a work in progress, and they should be
 considered experimental at this time.
 
-LLVM IR optionally allows the frontend to denote pointers in certain address
-spaces as "non-integral" via the :ref:`datalayout string<langref_datalayout>`.
-Non-integral pointer types represent pointers that have an *unspecified* 
bitwise
-representation; that is, the integral representation may be target dependent or
-unstable (not backed by a fixed integer).
+For most targets, the pointer representation is a direct mapping from the
+bitwise representation to the address of the underlying memory allocation.
+Such pointers are considered "integral", and any pointers where the
+representation is not just an integer address are called "non-integral".
+
+In most cases pointers with a non-integral representation behave exactly the
+same as an integral pointer, the only difference is that it is not possible to
+create a pointer just from an address unless all the non-address bits were
+also recreated correctly in a target-specific way.
+Since the address width of a non-integral pointer is not equal to the bitwise
+representation, extracting the address will need to truncate to the index width
+of the pointer.
----------------
nikic wrote:

The description here makes it sounds like *all* non-integral pointers have 
address width != pointer width.

I'd probably give this case a separate heading, and basically say that a 
"non-integral pointer" is one that has one or more of the following properties. 
(addr width != pointer width, unstable representation, external state).

https://github.com/llvm/llvm-project/pull/105735
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to