================ @@ -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 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
