<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJytVMlu2zAQ_RrpQsTQalsHHbzEQM8JUPQkkNTIZkOTqjhy4nx9h_ImNG4OTQVq4_C9ebOQwtbHMphGpyGDZOlHtA6iRZCkykjd18CCdCUUBunjPQseW6iw4wrdbcXwRNi3muN1leF7YGvo1AHqIFmx69wzfVyxDrteIuNabQ13QTJ36h1sQx_DsqSgwUhO1SjQ9dnf7CJ6tg7S5VjEme6JRCxGsHT15CUoMwrrQsLoEtZqxgdQfGVkN7u0xiG8tR0jnrmXZCy8SWiRMGtWQ8N7jTfkBwh5ZmqM8668gTkkeQsaXq3kDgexpJJsinnIcJNaCvavUXNUsuLOQYfjHD4N2HTtRV4nfRaGvF5ZPuAvmpSjWquD4lofK2nbIxcaqsNV4pcoztUYkZyeo8wxx4cER2_R6fLVoYRsaPg-c7bvJJyylcSe6sRzafEx7Q6xdV7TgN7aWliNE9tt6e_d30VxSAsT_xiD_mC61GiyI6KUxCzixFfSWAT_vkm_rKSeO1h9UGbrpx6GdmTKeQQ7AjLXt63tEOpb53SAfWdYVYleaVSmunZGMq-e7WlfrMjedHY_Th-7XUH--EkqvoPWnkKA5L0DZhuGOzhFQdPf6E-ZF_90XitnL8a-Gvp0PUzYmGnZIy2Xtte1CZIZskYZig8ZFZxtFe56cYI5T-wsLa5BqhpqhpbJDvyBwZmBV2YNTD6p18A1kT7ijdaHy-uh7exPkJSbzdlPuvlFLXMve0tFKvJ0Yekg-n-e7vOHdZnWRVrwkPe4s13ZOJFRA4d9p8t_dZhs8iyK5-GujKaFKNJaJuRE5PNplIlZIbM6F01RiHkUai5AuzLIl0G-Dr_uUpVJlPiRxnGcxekky3IKRzRSTudJOq2DLII9V3riefy2CrtyoBT91pFRK4fuZqSDgk58gItCVKihvO0f6tg7JZxG9_ZTOGgtB6G_ARIBFco>54018</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            constexpr `__builtin_bit_cast` involving bit-field
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          fsb4000
      </td>
    </tr>
</table>

<pre>
    ```c++
#include <bit>
#include <type_traits>

template <typename Derived, typename Type>
struct alignas(sizeof(Type)) bit_field
{
};

struct S : bit_field<S, int>
{
    bool a : 1;
 
    constexpr S() noexcept = default;
    constexpr S(int i) noexcept: S( std::bit_cast<S>( i ) ) {}
};

static_assert(sizeof(S) == sizeof(int));
static_assert(std::is_trivially_copyable_v<S>);
static_assert(std::is_trivially_copyable_v<int>);

constexpr S sa = 0x00000001; // <source>(21)
```

https://godbolt.org/z/z99v39n1Y

```
bit_cast.h:31:12: note: constexpr bit_cast involving bit-field is not yet supported
    return __builtin_bit_cast(_ToType, __from);
           ^
```

Well, because of the note, I think this is a known issue. 

But I couldn't find it via github issues, so I decided to create a new one.

https://github.com/llvm/llvm-project/issues?q=__builtin_bit_cast+is%3Aopen

https://github.com/llvm/llvm-project/issues?q=bit_cast+is%3Aopen
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVE2PmzAQ_TVwsTYCE_Jx4JCPjdTzrlT1hIwZEncdm-Ihu-mv7xgWgrrpHtqiwRiP3_PzzNiFLa9ZsIh6kwHfeov2QbQJeKKM1G0JLEh2hcIgebznwWsNOTZCobvN6FqEc60FjrOMOAPbQ6MuUAZ8x8axZ-qMWIdNK5EJrY5GuICvnPoJtqJON42vyRjJySsFunxfbzmIXu6DZDsV8U73RCI2E1iye_ISlJlsayBh9BTWaiY6UDwysptfWuMQ3uqGEc_KSzIW3iTUSJg9K6ESrcYb8gOEVmZqivNLeQdzSPI2ZF6tFA47saSSfIp5SPeSWtrsH3ctUMlcOAcNTmP41GGTvRc5DvoodHEdWT7gB03KUa7VRQmtr7m09VUUGvLLKPGfKN6zMSHp20nkmBNdgKO3qH98diggBzJfZ862jYQ-Wjz2VD3PUOJT2hNi7bymDn20ZWE1zmxzpL-f_l2vL8naxN-moN-YhhzNTkSUkJhNzH0mjUXw35v0YSbV3MXqizJHP_TQlSNTziPYFZC5tq5tg1DeKqcBbBvD8rxolUZl8rEy-Cp_tv252JG_aux5Gj52e4L08ZNQfAWtPUUBUrQOmK0YnqDfBQ1_oT9lXnzrvFbBXox9NdR1LczYlGnbIk2XttWlCfgSWaUM7Q8ZJZwdFZ7aooc5T-wsTS5BqhJKhpbJBvyFIZiBV2YNzD7JV8c1k37HB60vw-ehbux3kBSbw_s6yeEHlcy96G0VqUiTjaWL6P-tdJ8_LLOkXCdrEaJCDdmtMigXd8QtonuVEraNzv5WHj-k8yhehadsyRe8FFFULlOexrFcVkXK41W6mEcigtU61KIA7bIg3QbpPlQZj7i3JI7jeZzM5vOUzl5RSblY8WRRBvMIzkLpmV_YH6GwyToNRXt05NTKobs56VKg2x1g4BctnmyTVa6YE23Yyc06rb8AFk3_nA">