[IR] Avoid the need to prefix MS C++ symbols with '\01'
authorReid Kleckner <rnk@google.com>
Fri, 16 Mar 2018 20:13:32 +0000 (20:13 +0000)
committerReid Kleckner <rnk@google.com>
Fri, 16 Mar 2018 20:13:32 +0000 (20:13 +0000)
commitf8b51c5f90c60aceedef9ed185eeac58f501075a
treed08c0ba7c58042894bbc7c617da3456e555034cd
parent2aeb930a9f5761e39fb321ad61710683fb49009d
[IR] Avoid the need to prefix MS C++ symbols with '\01'

Now the Windows mangling modes ('w' and 'x') do not do any mangling for
symbols starting with '?'. This means that clang can stop adding the
hideous '\01' leading escape. This means LLVM debug logs are less likely
to contain ASCII escape characters and it will be easier to copy and
paste MS symbol names from IR.

Finally.

For non-Windows platforms, names starting with '?' still get IR
mangling, so once clang stops escaping MS C++ names, we will get extra
'_' prefixing on MachO. That's fine, since it is currently impossible to
construct a triple that uses the MS C++ ABI in clang and emits macho
object files.

Differential Revision: https://reviews.llvm.org/D7775

llvm-svn: 327734
llvm/docs/LangRef.rst
llvm/docs/ReleaseNotes.rst
llvm/include/llvm/IR/DataLayout.h
llvm/lib/IR/Mangler.cpp
llvm/test/CodeGen/X86/mangle-question-mark.ll [new file with mode: 0644]
llvm/test/MC/COFF/symbol-mangling.ll [deleted file]
llvm/unittests/IR/CMakeLists.txt
llvm/unittests/IR/ManglerTest.cpp [new file with mode: 0644]