The runtime calls MaybeDemangleGlobalName for error reporting and
__cxxabiv1::__cxa_demangle is called if available, so demanging Itanium
mangled names in global metadata is unnecessary and wastes data size.
Add MaybeDemangleGlobalName in ODR violation detection to support demangled
names in a suppressions file. MaybeDemangleGlobalName may call
DemangleCXXABI and leak memory. Use an internal allocation to prevent lsan
leak (in case there is no fatal asan error).
The debug feature report_globals=2 prints information for all instrumented
global variables. MaybeDemangleGlobalName would be slow, so don't do that.
The output looks like Added Global[0x56448f092d60]: beg=0x56448fa66d60 size=4/32 name=_ZL13test_global_2
and I think the mangled name is fine.
Other mangled schemes e.g. Windows (see win-string-literal.ll) remain the
current behavior.
nit: if you're here, can you change these parameters to nullptr?