<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/77786>77786</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Clang doesn't define the typeinfo for _Float16
        </td>
    </tr>

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

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

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

<pre>
    When libc++ defines `~__fundamental_type_info()`, Clang is supposed to emit the typeinfos for all fundamental types, which should include `_Float16`. But this doesn’t happen, as can be seen here: https://godbolt.org/z/EKTe8z3cf

Self-standing repro:

```
$ cat <<EOF | clang++ -xc++ - -c -o typeinfos.o && nm -omg typeinfos.o | c++filt | grep _Float16
namespace __cxxabiv1 {
    struct __fundamental_type_info {
        virtual ~__fundamental_type_info();
    };

    // This miraculously (compiler magic) emits the type_info's for:
    //   1. all of the fundamental types
    //   2. pointers to all of the fundamental types
    //   3. pointers to all of the const fundamental types
    __fundamental_type_info::~__fundamental_type_info()
    {
    }
}
EOF
```

Output is: nothing
Ouput should be: Something like

```
typeinfos.o: 0000000000000580 (__DATA,__const) external typeinfo for _Float16 const*
typeinfos.o: 0000000000000560 (__DATA,__const) external typeinfo for _Float16*
typeinfos.o: 0000000000000550 (__DATA,__const) external typeinfo for _Float16
typeinfos.o: 0000000000000927 (__TEXT,__const) external typeinfo name for _Float16 const*
typeinfos.o: 0000000000000924 (__TEXT,__const) external typeinfo name for _Float16*
typeinfos.o: 0000000000000922 (__TEXT,__const) external typeinfo name for _Float16
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVU9zo7gT_TTtS5ddIP6ZAwfbMZffIYdx1W9vlBANaFdIFBLZZA772bcETsaZmUyyGcqFLXe_1-L1E82tlZ0mKiA5QnK34bPrzVSoRhqtaVOb5qn4f08alawFsCOwIzbUSk0WIQ3-qap21g0fSDuuKvc0UiV1a4DtgeWQBsBOeFJcdygt2nkcjaUGnUEapEPXE3qMh1hszYRcKbxhXKLWk_zdS9Gj7c2sGpRaqLkhv4OqVIa7MIU02OFx9pzSYmPIajgz2AeQ5w57Po6kPQ-3KLjGmtASaexpIogO2Ds3WogOwEpgZWea2ii3M1MHrPwKrDz_70L7r5FoIbiD4LDev5Bqt9Zx3Ujd4UTjZDzFTYZXYP2sSxaj4A4hOkF0Ot-XCNkJhdfnqu328VnlLW4Fbs03fXYGgaXAUtQDbs3QvQ55ohXaSuWWdTfRiC8CLTvQfCA7ckFYVeLxkdfyIUTIjmsUEdG6aRYO32js61x_PcjJzVzhO1aIbmCQ3b2sb_5dpMeL798gJy5mZWarnhDYXphhlIomHHgnBbB88Y99MdC1UraY6KUHN6yI4W4xl2kX0I8e-xHBdjgaqR1N1jv2P6KjN9HCaOt-xfGWktEBosM7Ot-I_J3iq9zPP8735c8tutzvZzfODqU_EqiN66XuniM-cD2H9XJ2vpiBlgxU8i_6hf1v_Opxwe2V7APf6Kq6O1wOwE5Vtci0tPrR0aSvMi0m9G-KZ1_jNe_wgRrpJ2t8jD35LPu71DnLVurL-Y_Le9T-iH9WoZzFv1HogyXY75T4ma82TRE1eZTzDRVhFsT5PkuyeNMXTZIGMWuzNt03gYjimvImatosCyjjvEk2smABi4MwDMMkyqN4l9Rt20ZhWNdhG9VZDHFAA5dqp9TD4OfBRlo7U5Fl2T7dKF6TssvsZOz6Gmd-jE6Fz9_Wc2chDpS0zn5jcNIpKtapuA4qlrnrVH01El89-WaeVPHdmJKun-udMAOw0tNfv7bjZP4k4YCVy24tsHLZ8L8BAAD__9U-bgg">