[llvm-branch-commits] [llvm] [DataLayout][LangRef] Split non-integral and unstable pointer properties (PR #105735)
Alexander Richardson via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sun Sep 21 14:07:27 PDT 2025
================
@@ -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.
----------------
arichardson wrote:
Hopefully the new wording is better.
https://github.com/llvm/llvm-project/pull/105735
More information about the llvm-branch-commits
mailing list