[cfe-dev] constexpr bit_cast status?
Erik Pilkington via cfe-dev
cfe-dev at lists.llvm.org
Wed Oct 31 16:19:28 PDT 2018
I think its mostly just for ease of implementation. Looks like LLVM
already optimizes __bulitin_memcpy -> bitcast, and piggybacking on the
existing builtin saves us from from having to write custom
Parse/Sema/IRGen for a new construct. Also, I think we'd
(hypothetically) have to fallback to IRGenning __builtin_memcpy in
general since IR bitcast doesn't support IR aggregates, but C++ bit_cast
does.
On 10/31/18 4:05 PM, JF Bastien wrote:
> It seems simpler to map it directly to the existing IR construct
> (bitcast) instead of the odd IR memcpy. But 🤷‍♂️
>
> On Oct 31, 2018, at 3:40 PM, Erik Pilkington
> <erik.pilkington at gmail.com <mailto:erik.pilkington at gmail.com>> wrote:
>
>>
>>
>> On 10/31/18 3:23 PM, Richard Smith via cfe-dev wrote:
>>> On Mon, 29 Oct 2018 at 13:09, JF Bastien via cfe-dev
>>> <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>>>
>>> Richard recently made __builtin_memcpy constexpr in some cases:
>>> https://reviews.llvm.org/rL338941
>>> His patch currently disallows all type-puns.
>>>
>>> Erik is looking at implementing a bit_cast intrinsic for clang,
>>>
>>>
>>> Is there a reason to make it a new builtin (which I think is what
>>> you're suggesting) rather than extending the existing
>>> __builtin_memcpy support to cover all the bit_cast cases? (Eg, is
>>> the idea to make it exactly cover the cases that std::bit_cast
>>> supports?) If we want both, it'd be good to at least make the two
>>> share code.
>>
>> No real reason I guess, I suppose that approach would lead to a lot
>> less boilerplate, so it probably makes more sense. I'll have a chance
>> to really dig into this in a week or two, so hopefully I'll can put a
>> patch up soon.
>>
>>> at which point libc++ can use it. ADT won’t be able to do so
>>> until we migrate to C++20 (and toolchains support it).
>>>
>>> We also want to reach out to the RedHat maintainers of libstdc++
>>> to make sure we don’t adopt a weirdly different builtin.
>>>
>>>
>>>
>>>> On Oct 29, 2018, at 12:56 PM, will wray via cfe-dev
>>>> <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>>>>
>>>> std::bit_cast was added to the C++ 20 draft this summer:
>>>> http://eel.is/c++draft/bit.cast
>>>>
>>>> In September JFB added a header with implementation (in llvm
>>>> namespace):
>>>> llvm/include/llvm/ADT/bit.h
>>>>
>>>> Â // This file implements the C++20 <bit> header.
>>>> Â ...
>>>> Â // - It isn't constexpr because that requires compiler support.
>>>>
>>>> What compiler support is it waiting on? What's the status?
>>>>
>>>> _______________________________________________
>>>> cfe-dev mailing list
>>>> cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>
>>>
>>>
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20181031/ed8f15bf/attachment.html>
More information about the cfe-dev
mailing list