# Itanium C++ names that each exposed a distinct defect. Every one must stay fixed.
#
# One row per name, in the llvm style: the mangled name, a tab, the expected spelling.
# There is no count to update; CONTRIBUTING.md has the format.
#
# The first thirty were curated from the symbol tables of libLLVM, libclang-cpp and the
# system libstdc++, which together are far too large to check in: substitution
# numbering for pack expansions, cv-qualified function types and embedded mangled names;
# <unresolved-name>; <template-param-decl>; empty and multi-member packs; local names
# used as types; multi-dimensional arrays; operator precedence in expressions;
# abbreviations scoping a constructor; the thread-local special names; and a vector's
# dependent size and pixel element, from clang++ 18.1.3 over the sources named in
# tests/test_types.py.
#
# reference: llvm-cxxfilt Ubuntu LLVM version 18.1.3   Optimized build.
_Z1fIXaantLb1ELb0EEEvv	void f<!true && false>()
_Z1fIXmlplLi1ELi2ELi3EEEvv	void f<(1 + 2) * 3>()
_Z1fIXntntLb1EEEvv	void f<!(!true)>()
_Z1fIXooaaLb1ELb0ELb1EEEvv	void f<true && false || true>()
_Z1fIXplLi1EmiLi2ELi3EEEvv	void f<1 + (2 - 3)>()
_Z1fIXplLi1EmlLi2ELi3EEEvv	void f<1 + 2 * 3>()
_Z1fIXplmiLi1ELi2ELi3EEEvv	void f<1 - 2 + 3>()
_Z1fM1AKFbvE	f(bool (A::*)() const)
_Z1fZ1gvEUlvE_S_	f(g()::'lambda'(), g()::'lambda'())
_ZN17NewPMDebugifyPass3runERN4llvm6ModuleERNS0_15AnalysisManagerIS1_JEEE	NewPMDebugifyPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&)
_ZN4llvm10AccelTableINS_20DWARF5AccelTableDataEE7addNameIJjSt8optionalImENS_5dwarf3TagEjEEEvNS_23DwarfStringPoolEntryRefEDpOT_	void llvm::AccelTable<llvm::DWARF5AccelTableData>::addName<unsigned int, std::optional<unsigned long>, llvm::dwarf::Tag, unsigned int>(llvm::DwarfStringPoolEntryRef, unsigned int&&, std::optional<unsigned long>&&, llvm::dwarf::Tag&&, unsigned int&&)
_ZN4llvm10checkedAddIiEENSt9enable_ifIXsr3stdE11is_signed_vIT_EESt8optionalIS2_EE4typeES2_S2_	std::enable_if<std::is_signed_v<int>, std::optional<int>>::type llvm::checkedAdd<int>(int, int)
_ZN4llvm10hash_valueIiEENSt9enable_ifIXsr19is_integral_or_enumIT_EE5valueENS_9hash_codeEE4typeES2_	std::enable_if<is_integral_or_enum<int>::value, llvm::hash_code>::type llvm::hash_value<int>(int)
_ZN4llvm12simple_ilistINS_17MachineBasicBlockEJEE4sortINS_12function_refIFbRKS1_S6_EEEEEvT_	void llvm::simple_ilist<llvm::MachineBasicBlock>::sort<llvm::function_ref<bool (llvm::MachineBasicBlock const&, llvm::MachineBasicBlock const&)>>(llvm::function_ref<bool (llvm::MachineBasicBlock const&, llvm::MachineBasicBlock const&)>)
_ZN4llvm15callDefaultCtorI18GCEmptyBasicBlocksTnNSt9enable_ifIXtlSt24is_default_constructibleIT_EEEbE4typeELb1EEEPNS_4PassEv	llvm::Pass* llvm::callDefaultCtor<GCEmptyBasicBlocks, true>()
_ZN4llvm20getBestSimplifyQueryINS_8FunctionEJEEEKNS_13SimplifyQueryERNS_15AnalysisManagerIT_JDpT0_EEERS1_	llvm::SimplifyQuery const llvm::getBestSimplifyQuery<llvm::Function>(llvm::AnalysisManager<llvm::Function>&, llvm::Function&)
_ZN4llvm5RTLIB22getOutlineAtomicHelperERA5_A4_KNS0_7LibcallENS_14AtomicOrderingEm	llvm::RTLIB::getOutlineAtomicHelper(llvm::RTLIB::Libcall const (&) [5][4], llvm::AtomicOrdering, unsigned long)
_ZN4llvm6detail18UniqueFunctionBaseIvJNS_9StringRefENS_3AnyEEE15CallbacksHolderIZNS_14ChangeReporterINS_7IRDataTINS_6DCDataEEEE25registerRequiredCallbacksERNS_28PassInstrumentationCallbacksEEUlS2_S3_E_SD_vE9CallbacksE	llvm::detail::UniqueFunctionBase<void, llvm::StringRef, llvm::Any>::CallbacksHolder<llvm::ChangeReporter<llvm::IRDataT<llvm::DCData>>::registerRequiredCallbacks(llvm::PassInstrumentationCallbacks&)::'lambda'(llvm::StringRef, llvm::Any), llvm::ChangeReporter<llvm::IRDataT<llvm::DCData>>::registerRequiredCallbacks(llvm::PassInstrumentationCallbacks&)::'lambda'(llvm::StringRef, llvm::Any), void>::Callbacks
_ZN4llvmlsINS_18raw_string_ostreamEA2_cEENSt9enable_ifIXaantsr3stdE14is_reference_vIT_Esr3stdE12is_base_of_vINS_11raw_ostreamES4_EEOS4_E4typeES6_RKT0_	std::enable_if<!std::is_reference_v<llvm::raw_string_ostream> && std::is_base_of_v<llvm::raw_ostream, llvm::raw_string_ostream>, llvm::raw_string_ostream&&>::type llvm::operator<<<llvm::raw_string_ostream, char [2]>(llvm::raw_string_ostream&&, char const (&) [2])
_ZNSdC1EOSd	std::basic_iostream<char, std::char_traits<char>>::basic_iostream(std::iostream&&)
_ZNSs5c_strEv	std::string::c_str()
_ZNSsC1Ev	std::basic_string<char, std::char_traits<char>, std::allocator<char>>::basic_string()
_ZNSt6vectorIN4llvm15BitstreamWriter9BlockInfoESaIS2_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_	void std::vector<llvm::BitstreamWriter::BlockInfo, std::allocator<llvm::BitstreamWriter::BlockInfo>>::_M_realloc_insert<>(__gnu_cxx::__normal_iterator<llvm::BitstreamWriter::BlockInfo*, std::vector<llvm::BitstreamWriter::BlockInfo, std::allocator<llvm::BitstreamWriter::BlockInfo>>>)
_ZNSt8_Rb_treeIN4llvm11logicalview10LVLineKindESt4pairIKS2_MNS1_6LVLineEKFbvEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E	std::_Rb_tree<llvm::logicalview::LVLineKind, std::pair<llvm::logicalview::LVLineKind const, bool (llvm::logicalview::LVLine::*)() const>, std::_Select1st<std::pair<llvm::logicalview::LVLineKind const, bool (llvm::logicalview::LVLine::*)() const>>, std::less<llvm::logicalview::LVLineKind>, std::allocator<std::pair<llvm::logicalview::LVLineKind const, bool (llvm::logicalview::LVLine::*)() const>>>::_M_erase(std::_Rb_tree_node<std::pair<llvm::logicalview::LVLineKind const, bool (llvm::logicalview::LVLine::*)() const>>*)
_ZNSt8_Rb_treeIPKN4llvm10sampleprof21ProfiledCallGraphEdgeES4_St9_IdentityIS4_EZNS0_19scc_member_iteratorIPNS1_17ProfiledCallGraphENS0_11GraphTraitsIS9_EEEC1ERKSt6vectorIPNS1_21ProfiledCallGraphNodeESaISF_EEE12EdgeComparerSaIS4_EE8_M_eraseEPSt13_Rb_tree_nodeIS4_E	std::_Rb_tree<llvm::sampleprof::ProfiledCallGraphEdge const*, llvm::sampleprof::ProfiledCallGraphEdge const*, std::_Identity<llvm::sampleprof::ProfiledCallGraphEdge const*>, llvm::scc_member_iterator<llvm::sampleprof::ProfiledCallGraph*, llvm::GraphTraits<llvm::sampleprof::ProfiledCallGraph*>>::scc_member_iterator(std::vector<llvm::sampleprof::ProfiledCallGraphNode*, std::allocator<llvm::sampleprof::ProfiledCallGraphNode*>> const&)::EdgeComparer, std::allocator<llvm::sampleprof::ProfiledCallGraphEdge const*>>::_M_erase(std::_Rb_tree_node<llvm::sampleprof::ProfiledCallGraphEdge const*>*)
_ZTHN4llvm8parallel11threadIndexE	thread-local initialization routine for llvm::parallel::threadIndex
_ZTWN4llvm8parallel11threadIndexE	thread-local wrapper routine for llvm::parallel::threadIndex
_Z16templateTemplateIN5outer5inner6HolderEiET_IT0_Li3EES5_	outer::inner::Holder<int, 3> templateTemplate<outer::inner::Holder, int>(outer::inner::Holder<int, 3>)
_Z1gILi2EEvDvmlT_Li4E_i	void g<2>(int vector[2 * 4])
_Z1hDv8_p	h(pixel vector[8])
# A PE import thunk, `__imp_` before a whole mangled name, as MinGW and clang targeting
# Windows write it; `__imp___Z` is i386's, which adds its own underscore. Added with the
# feature rather than reported.
__imp__Z3foov	import thunk for foo()
__imp___Z3foov	import thunk for foo()
__imp__ZN2ns3barIiEEvT_	import thunk for void ns::bar<int>(int)
__imp__ZNSt6vectorIiSaIiEE9push_backERKi	import thunk for std::vector<int, std::allocator<int>>::push_back(int const&)
