summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/mangle-ms-md5.cpp
Commit message (Collapse)AuthorAgeFilesLines
* clang-cl: Fix mangling of catchable types with names longer than 4kiBNico Weber2019-05-291-0/+15
| | | | | | | | | | | | | | | The mangling used to contain the MD5 name of both the RTTI type descriptor and the name of the copy ctor in MSVC2013, but it changed to just the former in 2015. It looks like it changed back to the old mangling in VS2017 version 15.7 and onwards, including VS2019 (version 16.0). VS2017 version 15.0 still has the VS2015 mangling. Versions between 15.0 and 15.7 are't on godbolt. I found 15.4 (_MSC_VER 1911) locally and that uses the 15.0 mangling still, but I didn't find 15.5 or 15.6, so I'm not sure where exactly it changed back. Differential Revision: https://reviews.llvm.org/D62490 llvm-svn: 361959
* [MS] Don't escape MS C++ names with \01Reid Kleckner2018-03-161-3/+3
| | | | | | | It is not needed after LLVM r327734. Now it will be easier to copy-paste IR symbol names from Clang. llvm-svn: 327738
* Bring r325915 back.Rafael Espindola2018-02-231-1/+1
| | | | | | | | | | | | | | | The tests that failed on a windows host have been fixed. Original message: Start setting dso_local for COFF. With this there are still some GVs where we don't set dso_local because setGVProperties is never called. I intend to fix that in followup commits. This is just the bare minimum to teach shouldAssumeDSOLocal what it should do for COFF. llvm-svn: 325940
* Revert "Start setting dso_local for COFF."Rafael Espindola2018-02-231-1/+1
| | | | | | | | This reverts commit r325915. It will take some time to fix the failures on a windows host. llvm-svn: 325929
* Start setting dso_local for COFF.Rafael Espindola2018-02-231-1/+1
| | | | | | | | | With this there are still some GVs where we don't set dso_local because setGVProperties is never called. I intend to fix that in followup commits. This is just the bare minimum to teach shouldAssumeDSOLocal what it should do for COFF. llvm-svn: 325915
* [MS ABI] Mangle symbols names longer than 4096 characters correctlyDavid Majnemer2016-03-071-0/+11
Really long symbols are hashed using MD5 and prefixed/suffixed with the usual sigils. There is an additional reason beyond the usual compatibility with MSVC, it is important to keep COFF symbols shorter than 0xFFFF because the CodeView debugging format has a maximum symbol/record size of 0xFFFF. There are some quirks worth noting: - Some mangled names reference other entities which are mangled separately. A quick example: int I; template <int *> struct S {}; S<I> s; In this case, the mangling for 's' doesn't depend directly on the mangling for 'I'. While 's' would need an MD5 hash if 'I' also needed one, the hash for 's' applied to the fully realized mangled name. In other words, the mangled name for 's' will not depend on the MD5 of the mangled name for 'I'. - Some mangled names, like the venerable CatchableType, embed the MD5 verbatim. - Finally, the complete object locator is handled as a special case. A complete object locators are mangled exactly like a VFTable except for a small deviation in the prefix sigils. However, complete object locators for hashed vftables result in a complete object locator whose name is identical to the vftable except for an additional suffix. llvm-svn: 262818
OpenPOWER on IntegriCloud