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

    <tr>
        <th>Summary</th>
        <td>
            cxxfilt produces inconsistent output
        </td>
    </tr>

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

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

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

<pre>
    I am using `cxxfilt` on macos:
```
/opt/local/libexec/llvm-14/bin/llvm-cxxfilt
LLVM (http://llvm.org/):
  LLVM version 14.0.5
  Optimized build.
  Default target: x86_64-apple-darwin21.5.0
  Host CPU: skylake
```

This command:
```
llvm-cxxfilt-mp-14 __ZZN5Arith4fmapIZN3Z4c8z4c_varsINS_4simdIdEEEC1EbRKS4_S7_S7_S7_S7_S7_RKNS_3vecIS4_Li3ELNS_6dnup_tE0EEERKNS_4gmatIS4_Li3ELS9_0ELS9_0ELNS_6symm_tE1EEESH_RKNSD_ISA_Li3ELS9_0ELS9_0ELSE_1EEERKNSD_ISF_Li3ELS9_0ELS9_0ELSE_1EEES7_SC_SH_SK_RKNS8_IS4_Li3ELS9_1EEERKNS8_ISA_Li3ELS9_1EEES7_SC_S7_SC_SH_SQ_ST_RKNS8_ISF_Li3ELS9_1EEES7_SC_SH_EUliiE4_JiES4_EENS_4vectIT1_Li6EEERKT_RKNSY_IiLi6EEEDpRKNSY_IT0_Li6EEEENKUliE_clEi
```

produces inconsistent output:
```
Arith::vect<Arith::simd<double>, 6> Arith::fmap<Z4c::z4c_vars<Arith::simd<double> >::z4c_vars(bool, Arith::simd<double> const&, Arith::simd<double> const&, Arith::simd<double> const&, Arith::simd<double> const&, Arith::simd<double> const&, Arith::simd<double> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const&, Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::gmat<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::gmat<Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::simd<double> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const&, Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::gmat<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)1> const&, Arith::vec<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3, (Arith::dnup_t)1> const&, Arith::simd<double> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const&, Arith::simd<double> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const&, Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)1> const&, Arith::vec<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3, (Arith::dnup_t)1> const&, Arith::vec<Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1>, 3, (Arith::dnup_t)1> const&, Arith::simd<double> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const&, Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&)::'lambda4'(int, int), int, Arith::simd<double> >(Z4c::z4c_vars<Arith::simd<double> >::z4c_vars(bool, Arith::simd<double> const&, Arith::simd<double> const&, Arith::simd<double> const&, Arith::simd<double> const&, Arith::simd<double> const&, Arith::simd<double> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const&, Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::gmat<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::gmat<Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::simd<double> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const&, Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::gmat<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)1> const&, Arith::vec<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3, (Arith::dnup_t)1> const&, Arith::simd<double> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const&, Arith::simd<double> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const&, Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)1> const&, Arith::vec<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3, (Arith::dnup_t)1> const&, Arith::vec<Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1>, 3, (Arith::dnup_t)1> const&, Arith::simd<double> const&, Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const&, Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const&)::'lambda4'(int, int) const&, Arith::vect<int, 6> const&, Arith::vect<int, 6> const&)::'lambda'(int)::operator()(int) const
```

There are not enough closing parentheses.

If you run `clang-format` on this output you see:
```
Arith::vect<Arith::simd<double>, 6> Arith::fmap<
    Z4c::z4c_vars<Arith::simd<double>>::z4c_vars(
        bool, Arith::simd<double> const &, Arith::simd<double> const &,
        Arith::simd<double> const &, Arith::simd<double> const &,
        Arith::simd<double> const &, Arith::simd<double> const &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const &,
        Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0,
                    (Arith::symm_t)1> const &,
        Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0,
                    (Arith::symm_t)1> const &,
        Arith::gmat<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3,
                    (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const
            &,
        Arith::gmat<Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0,
                                (Arith::dnup_t)0, (Arith::symm_t)1>,
                    3, (Arith::dnup_t)0, (Arith::dnup_t)0,
                    (Arith::symm_t)1> const &,
        Arith::simd<double> const &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const &,
        Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0,
                    (Arith::symm_t)1> const &,
        Arith::gmat<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3,
                    (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const
            &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)1> const &,
        Arith::vec<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3,
                   (Arith::dnup_t)1> const &,
        Arith::simd<double> const &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const &,
        Arith::simd<double> const &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const &,
        Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0,
                    (Arith::symm_t)1> const &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)1> const &,
        Arith::vec<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3,
                   (Arith::dnup_t)1> const &,
        Arith::vec<Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0,
                               (Arith::dnup_t)0, (Arith::symm_t)1>,
                   3, (Arith::dnup_t)1> const &,
        Arith::simd<double> const &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const &,
        Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0,
                    (Arith::symm_t)1> const &)::'lambda4'(int, int),
    int, Arith::simd<double>>(
    Z4c::z4c_vars<Arith::simd<double>>::z4c_vars(
        bool, Arith::simd<double> const &, Arith::simd<double> const &,
        Arith::simd<double> const &, Arith::simd<double> const &,
        Arith::simd<double> const &, Arith::simd<double> const &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const &,
        Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0,
                    (Arith::symm_t)1> const &,
        Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0,
                    (Arith::symm_t)1> const &,
        Arith::gmat<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3,
                    (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const
            &,
        Arith::gmat<Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0,
                                (Arith::dnup_t)0, (Arith::symm_t)1>,
                    3, (Arith::dnup_t)0, (Arith::dnup_t)0,
                    (Arith::symm_t)1> const &,
        Arith::simd<double> const &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const &,
        Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0,
                    (Arith::symm_t)1> const &,
        Arith::gmat<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3,
                    (Arith::dnup_t)0, (Arith::dnup_t)0, (Arith::symm_t)1> const
            &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)1> const &,
        Arith::vec<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3,
                   (Arith::dnup_t)1> const &,
        Arith::simd<double> const &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const &,
        Arith::simd<double> const &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const &,
        Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0,
                    (Arith::symm_t)1> const &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)1> const &,
        Arith::vec<Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0>, 3,
                   (Arith::dnup_t)1> const &,
        Arith::vec<Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0,
                               (Arith::dnup_t)0, (Arith::symm_t)1>,
                   3, (Arith::dnup_t)1> const &,
        Arith::simd<double> const &,
        Arith::vec<Arith::simd<double>, 3, (Arith::dnup_t)0> const &,
        Arith::gmat<Arith::simd<double>, 3, (Arith::dnup_t)0, (Arith::dnup_t)0,
                    (Arith::symm_t)1> const &)::'lambda4'(int, int) const &,
    Arith::vect<int, 6> const &,
    Arith::vect<int, 6> const &)::'lambda'(int)::operator()(int) const
```

At least one closing parenthesis is missing, maybe more text is cut off.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztW91z2jgQ_2vMiyYefwceeOASZ8Ill7sr6c00Lx7ZFqBWtjyWnCb9628lcAJNINCQ1AEzYOtjtfvTaldoZ0cxT-_7Q4QzVAmaT5ARWMnd3ZgyCSXEc5ThhAvDHRjWqWENoHH-nVWdM15IeDKeYKbeNCZ3JFEldpsd2R6UYprX9Zq1Hnx5-d9fyHC6UykLJcA5m5OZvJzoWu9BLkKa-paUggIo2zMt06-7_i4kzegPkqK4oiw16_ZTMsYVk0jickIk8EJ33SAKvCNcFIwcpbj8TnPHNn3TqoeccyHRyT-fFbH4ds_wN_L8xPXzekoFSniW4TxdpaLFeR9lBagERdHNzZU_KKmceuMMF8ObK_fGS7o_vCS6xaUYXo0iT9AsHaZhGJ7YYfzpYuRFo-Ol76cLIHNvSTKEvkvqhpdQD9K8KiIZWjBQE3iTDMsHilEvsuqnohb3WQbUNlCPzjXH02g4GjwlHoWRPWepKM5WUihsJxEwG11oft1oUXjNo7skZWHcw-h_o9H1A4Oz50jPo_AzozT0oj9pCDLCUE0X9CGH1zYMCLSsGZMv0ZDOWk6Lef3amtOEVxfAJ4wSFtI1a12UPK0SIhDNE54LKiTJJeKVLCq5au31EqtOd6BwGe7JQotaYGhJeRUzYrih4ZygAN5ogUZZB9CAcczqtYWs54QUt2V6pxtzzpSIdePUxMCbgz2lgzV4eQlc9QB9LZDNfAq2I2sNc-Vnr-W-Vd_Md6HP3gNUO1maZkzl96r8d-ig9b9DsPRXA9-K-buoqfFG3QgQzfSsAzPHJwCa_TfTeM9qjFH3Zt2Gc8xwFqcYIuZjGElzqXjoV--htF6PGnS3DRbaYKENFhp5hGqDhdb_DsPSD-x01gijbgSIZnrWgZljGyzsqVFvEiys0ZCaxJw2WK_L1ZQ_Q1hAMO_iBSmx5CU069ilu4RrXTaNlARh-OVcIpLzajJFCeM6L1lAey6nRBBhLg4ajtE9r1BZ5Tp1yXA-ORrzUi3YLH8pVY5ulqbRlIIQBfMt0zV1MhGhLWOx50KxR2bqs3FghjZ1pTnhspi9Yb_DbeElUW-_SSyLXvy8uHscGPid_gNvinyXm_0TkVurYDcrunruv6aHn88Fq_k31Nbabaj15Df15B2GKluLeh9lvxp3432w8QA_9CbResj2uN_xNPAGh4HdLGbrla_3yg2zlY9yXk5bzrKWbczcGPatxR8k-IM7abcxcxszt568D57cRgQf3wcbD_BDbxKth7Qx815uGx_AKzdP2j-Z7LJOn03K__qYt8vkDyRiBIMcnpOnGXwqEHwzKlSzApbh-5igjJcESXInVW9SweDx2OykfTftuT3ckVQy0p9fpEXrbmN2qpL11aVifW1Z3yqegEqq2Ex4Nr9iXF9IBj5flZKcM4BTEQEFP7ACrzPtd30vdTxv7BD72Eld7DtxGqeeZ8HTtsZeh-GYMNE3_D8Mx8nJd6RZQNnwTzu071iOYwV2YPu269im1e26aeq7vjs-9vw4MTyLZJgys77x3Cn7GlJcTQR0MpiTeOzEoK1JTogWB_xxJae87BORTHMiZUfL7mvs_wNGoCBJ">