<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJzNVk2P8jYQ_jXhYi0KDiFw4MDCIr3S0suit0fkOA5x5djUdmDpr--MEyDsst1W7aGR8-HYno9nnhk7N8V5vrVnqffEG8JNfZBKEF9JR5ysD_C9jOgzNHKwZm9ZHSWLKF5F8eU5idvG22ndX5pIzVVTCBIlSy1OUfLSX-UFiGY-jBKpPamE3Fc-om3vJAtfYcefD0KzWpAtzFyRUhnmyVWW87bhnjAl95q5iE7JaEIiOiNr-S6KN_mHKDbMW_neqc466whcjUOXNz2xux3zMDlvvNjtQBjKq8PyHZqB3QRtSoIKuLEln0QemWpEWBFkb69Tonh2m7shdW_g8veT3aATTKQTaMSZxnIRlGsj3rk4ABTZM6mDnnYUZMK_1QOFrIHwFsyz4NkMIq2dvxdkhW-shheEQNgDdHecOY8h2nbzI7oI8INdYFJNWghuKh9paq-_r6m9vtN003fHpSthhsMh-YmhcDe-fAVxNw-XHLslPZBva-8IhJfzzEu-Y84J61GSA8GmBEHY6cmCCGGQWpYH3wLFyUcK3Wi0sJadQ2RvhIrS5wci0tUnEZBwBC3oRQHvIBPx7-y-YH5H2Zd704Mvy4B7X8stDr2B9okJXDOpW8UfUg84-SkCYAFFHRS1Q16AgaNhGf60r6R9jYcluVf3nSwd8mNYf1zW8S--_bu6cylnfY-MBqx1YU6uDQ6UQPKwBrZdrpjeP3EF8K3DN8x_KoGWuRJPbUW5G3K-gDjvddNWUMqA0s4P-eHwFzaVTCoHZgEDfCVIaZQyJySOsNbYr4r0pfp24ul0lAFaaaDh4rqULJnWBqOo95fNoLM7kOQs_H-UUOlLlP0_2tdIbwFe2PsgeDUBIDhrnChIDsmZPm8kt8aZ0m8CVAgqQeQqdsRYhA20FhrTDUhUGkuuK1p0cZYpSeBCH2OHaU2nlfcHh8Gka2h7iHaTD2GTho5Sx8vrCcz7TXCoQOtcmRxeE56lLE_LySQfx0mZcTbJxHTChCgSlk5ZLkZxmsX5lYYgSGJv8baF5wO3YEd_TUYJxZLQR2dhkSACnkyfCRRi7fAgcfU8sCdK1v01v1Z4xmBFEU4dAC8gWQoGOSkCRj8807KpO_7ZR1BYcZTi5Ibo_tBYdGCVUeBz2JeXnUkn5sjvjYS9gZFCOt44h3GAVpnTvZncWAsQ3kXFNbzqogEiYYk4gjXwuXm72BZU4KlJCS_UmcBJxFhR3EH0I6JZTdiJBagY7rqd6Cok7Lt03sG5B8T-XAKMRTsrPFA8kg9qxzlAZQVzHZWQaFcHAt3CAQoOMGBRo4o2cXN0fm9MQYQ2zb7qS3h9_bkh--YcQhZRKvURRMHHFzC0DL46j9oAEk1k2RUJgeFnHLO8jS24EJaXjeaYA1iylIIIgDtgGZ4qmhoLIyZUmwXdGdQiawbFPClmyYwN4FRRGTtfmZV5-WU7aKya_-PkkM41GMt1mozS6aCal2PGBU1m5TibjuJxysZZwVNOeZyknKXpQEGmKDcHfgIouKsGEfANnBz8ewvknMaUxqMRHY1pEk-GeTGazmg-y_JMjCaijMaxgL1UXXk-sPMgMm_2DgYVUuc2CAcRIKAQwWCw0EuvxHzZ7UdY2fm3lX0QbJwHA_8ExUqkCw>53158</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Clang-cl: cannot mangle this matrix type yet
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    Trying to compile this simple C++ program:

```c++
#include <new>

template < int height, int width, typename T = float >
struct alignas( 16 ) FixedSizedMatrix
{
    using M = float __attribute__(( matrix_type( 3, 3 ) ));
    using value_type = T;
        
    M m;

    FixedSizedMatrix( M && source ) noexcept { m = source; }
        
    auto data() const noexcept { return reinterpret_cast< T const * >( &m ); }
    auto data()       noexcept { return reinterpret_cast< T       * >( &m ); }

    template < typename ... Values >
    FixedSizedMatrix( Values ... values ) noexcept
    {
        static_assert( sizeof...( values ) == height * width );
        using Array = value_type[ height * width ];
        new ( data() ) Array{ static_cast< value_type >( values )..., };
    }
};

int main()
{
        FixedSizedMatrix< 2, 2 > m{ 1.f, 2.f, 3.f, 4.f };
        FixedSizedMatrix< 2, 2 > n{ m.m };
        return 0;
}
```

on windows using: 

```
clang-cl /clang:-fenable-matrix /clang:-std=gnu++2a test.cpp
```

fails with the following error:

```
test.cpp(17,5): error: Cannot mangle this matrix type yet
    FixedSizedMatrix( Values ... values ) noexcept
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```

The problem is caused by [MicrosoftMangle.cpp not having implementation for Microsoft mangling of clang matrix types](https://github.com/llvm/llvm-project/blob/6c75ab5f66b403f7ca67e86aeed3a58abe10570b/clang/lib/AST/MicrosoftMangle.cpp#L3132).

Are there any plans to implement this?

While adding the [feature for Itanium mangler](https://reviews.llvm.org/D72281), there was quite a discussion on how to implement correct mangling of such types, however, MS mangler was completely ignored.

I'm aware that no such thing exists in MSVC and that that was probably the reason for not implementing it, but could this be a good enough reason for LLVM guys to "invent" mangling of such types for MS mangler, even if this means accepting that such functions will only be consumable by clang compilers?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNVk2P8jYQ_jXhYi1KHELgwIGFRXqlpZdFb4_ISZzElWNT24Glv74zToCwy77bSj00cj4c2_PxzDNjZ7o4L3bmLFRFnCa5bg5CcuJqYYkVzQG-VwF9hkYORleGNUG8DMJ1EF6e07BreTet_0tjoXLZFpwE8UrxUxC_DFc5DqKZ86NEKEdqLqraBbTrnUThauy484Er1nCyg5lrUkrNHLnKss60uSNMikoxG9AZiaYkoHOyEe-8eBN_8WLLnBHvveq0t47A1Vp0eTsQu98zB5Oz1vH9HoShvMYv36MZ2I3RptirgBtb_EnkkcmW-xVe9u46JQjnt7lb0gwGLn8_2Q06wUQ6hUasbk3OvXKl-XvODwBF-kwar6cbBZnwb_1AIWshvAVzzHs2h0gr6-4FGe5ao-AFIeDmAN19zqzDEO36-QFdevjBLjCpIR0EN5WPNHXXP9fUXd9puum749KVMOPxmPzEUNgbX76CuJ-HS479kgHIt7V3BMLLOuZEvmfWcuNQkgXBugRB2BnIgghhkDqWe988xclHCt1otDSGnX1kb4QKkucHIpL1JxGQcAQtGEQBby8T8e_tvmB-R9mXe9O9LyuP-1DLLQ6Dge6JCdwwoTrFH1IPOPkpAmABRR0UtUNegIHRuPR_ulfcvSbjktyr-06W8vkxbj4u6_kX3v5d3bmUs6FHWgHWqtAn2wUHSiB5WAO7bi6Zqp5yCfBt_DfMfyqBlpnkT11FuRuyroA4V6rtKihlQGnrxvnh8AubSiakBbOAAa7mpNRS6hMShxujzVdF-lJ9e_F0FqWAVuJpuLwuJSumlMYoquqyGfR2e5KcufuPEip5CdL_R_sa6R3AC3sfBK8hAETOWssLkkFyJs9bkRttdem2HioElSByNTtiLPwG2nCF6QYkKrUh1xUdujhLl8RzYYixxbSms9q5g8Vg0g20CqLdZmPYpKEj5fHyegLz_uA5VKBNJnUGr2meJixLyuk0m4RxmeZsmvLZlHFexCyZsYxHYZKG2ZWGIEhgb_m2g-cDt2BHf42jmGJJGKKzNEgQDk-mzgQKsbJ4kLh67tkTxJvhmt9rPGOwovCnDoAXkCw5g5zkHqMfjinRNj3_zCMoDD8KfrJjdH-sDTqwTinw2e_Lq96kE7Pkz1bA3sBIIWzeWotxgFbr072ZuTYGILyLim3zuo8GiIQl_AjWwOf27WKbV4GnJskdl2cCJxFteHEH0Y-Apg1hJ-ahYrjr9qJrn7DvwjoL5x4Q-3MFMBbdLP9A8Ug-qB1nD5XhzPZUQqJdHfB08wcoOMCARa0susTN0PlK64JwpduqHkp4ff25JVV79iELKBXqCKLg4wsYOgZfnUdtAIkiouyLBMfwsxyzvIstuOCXl63KMQewZEkJEQB3wDI8VbQNFkZMqC4L-jOoQdaMikVczOM5GznhJF-s-tKKRSr_tkiNWiMX_zqFhLUtRnyTxFEyG9WLNEkpfE-iyawoyjIvo2k0KSfFbMLnszDiIwn5JO0CWAzQ4d7rRcA3MHckFjSkNIwiGk1oHE7HWRHN5jSbp1nKoykvg0nIYb-UVy6PzMKblLWVhUGJ9LgNwmEDSMa5Vwfy4bhVa7NY67V--W038qoX3vS_ASwKjko">