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

    <tr>
        <th>Summary</th>
        <td>
            llvm-cxxfilt build configurations can show formatting differences for floating point literals
        </td>
    </tr>

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

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

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

<pre>
    ```
namespace cxx20 {
  template<auto> struct A {};
  void f(A<1.0>) {}
};
```
Is mangled as `_ZN5cxx201fENS_1AILd3ff0000000000000EEE`.

For a Visual Studio 2019 build llvm-cxxfilt demangles as `cxx20::f(cxx20::A<0x1.0000000000000p+0>)` however for a Linux build with glibc it is demanged as: `cxx20::f(cxx20::A<0x1p+0>)`. This occurs as the implementation calls snprintf and the differing implementations have minor output variations. See: https://github.com/llvm/llvm-project/blob/023cdfcc1a5bdef7f12bb6da9328f93b477c38b8/llvm/include/llvm/Demangle/ItaniumDemangle.h#L2575

Ideally, the output of the llvm-cxxfilt should be consistent.

One solution might be just to dump the hexadecimal string from the mangled name. This would match what GNU appears to do. For example GNU cxxfilt demangles to: `cxx20::f(cxx20::A<(double)[3ff0000000000000]>)`. See: https://github.com/llvm/llvm-project/issues/92081 for, possibly, more motivation for just dumping the hexadecimal string.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVE1v4zYQ_TX0ZbACRVlfBx2ctV0ECNJD2h56WfDT4oIiBZG0vf--IK00dtrDojUMG-KM5s1784bUe32yUg6ofkL1fkNjGN0yMFH2bcMW7TfMiR8DavD6xXuEd5ZO0s-US-DXK8GA2qdbACDIaTY0SFR9pTE4VB3AhyXyALuc1u5R9Xfy2WkBCpFuh6qvZYFRdUCkf8_LSfcvfOri2cNE7clIAdQDavC3P1_r3FCpDq9v38rd84uolML3n8PhgBpcrAXz79EtQOEP7SM18Bai0A4ILntgURsBxpynL_x6VdoEEPIG6VfIDIeqHap2icfdY6KEr2XxgD4j8rSyRA2G0V3kWS6gcgcv2sbrCnrRYYST0YyDDqD9Cpypomr3U9CPYAX8NmoPjvO45O7DKEFPs5GTtIEG7SxwaowHb-dF26CAWpGzhFZKLtqePuV7GOlZwqStW8DFMMcAZ7roW7CANylTr2MIc2oakSMix5MOY2QFdxMix6Tt-vdlXtx3yQMiR2YcQ-SIScWF4rykNRNStaokjDWC9hXpVF-xbdvyqmPdRx1tuYlCfhzs13EhcnwO1Oo4vZ8UIyLVC6nb-t4Kz0JSY34g8jUTXzk5lZ8ejOBHF40AJoE767UP0oYHV_1qJXhnYhZ20qcxpOTv0QcIDkSc5lx0lFcqJNcTNWlRkshqcVOOvbs7rds6vktGnWjgI1xGGuCX19-BzrOki891XQHJz_JK06hy-J_eTXv5Ex5CpBMusiRfj-qnz6uE6v2du_7rsLX3UXpEjj3BXZlWIak_O-81u01icouEyQV9vrk0bUvWMYmYBPt3HYuNGCrRVz3dyKFsy7ppW9x1m3EoO9mIsml6Vm5rxRgRhIiaUrpVtG3abqMHgskW1-UWd3WHu6LGjRAdFhhXjFDVoS2WE9WmSGQKt5w2mcaQOLQbQ5k0Pl-phFh5gRxEhKQbdhmyACyePNpio33wH1WCDkYOD0a73QfcWaVPcVn3jlObHHhJWkw0hKTCbUul5dJniZRxNAdmp20Ao4NcqPGbuJjh_02p_SsAAP__FNb3AQ">