[PATCH] D62825: [C++2a] Add __builtin_bit_cast, used to implement std::bit_cast

John McCall via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 13 11:32:42 PDT 2019


rjmccall added a comment.

In D62825#1542301 <https://reviews.llvm.org/D62825#1542301>, @rsmith wrote:

> In D62825#1542247 <https://reviews.llvm.org/D62825#1542247>, @rjmccall wrote:
>
> > In what sense is the bit-pattern of a null pointer indeterminate?
>
>
> The problem is not null pointers, it's `nullptr_t`, which is required to have the same size and alignment as `void*` but which comprises only padding bits. (Loads of `nullptr_t` are not even permitted to touch memory...).


I mean, I know this is C++ and the committee loves tying itself in knots to make the language unnecessarily unusable, but surely the semantics of bitcasting an r-value of type `nullptr_t` are intended to be equivalent to bitcasting an r-value of type `void*` that happens to be a null pointer.


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D62825/new/

https://reviews.llvm.org/D62825





More information about the llvm-commits mailing list