mangle-subst-std.cpp revision 91f8860de5f4280607e74c9d653751cd3f891ca7
1e7c8cb6b2728aa98258288d221b09bc66cc05543Anders Carlsson// RUN: clang-cc -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s
2e7c8cb6b2728aa98258288d221b09bc66cc05543Anders Carlsson
3e7c8cb6b2728aa98258288d221b09bc66cc05543Anders Carlssonnamespace std {
4e7c8cb6b2728aa98258288d221b09bc66cc05543Anders Carlsson  struct A { A(); };
5e7c8cb6b2728aa98258288d221b09bc66cc05543Anders Carlsson
6e7c8cb6b2728aa98258288d221b09bc66cc05543Anders Carlsson  // CHECK: define void @_ZNSt1AC1Ev
7e7c8cb6b2728aa98258288d221b09bc66cc05543Anders Carlsson  // CHECK: define void @_ZNSt1AC2Ev
8e7c8cb6b2728aa98258288d221b09bc66cc05543Anders Carlsson  A::A() { }
9e7c8cb6b2728aa98258288d221b09bc66cc05543Anders Carlsson};
108c0315563f05a9face7209221325019e272075fbAnders Carlsson
118c0315563f05a9face7209221325019e272075fbAnders Carlssonnamespace std {
128f8fd8ea7e5c5d04f95a3cf4af95aa93225bc2b4Anders Carlsson  template<typename> struct allocator { };
138c0315563f05a9face7209221325019e272075fbAnders Carlsson}
148c0315563f05a9face7209221325019e272075fbAnders Carlsson
158c0315563f05a9face7209221325019e272075fbAnders Carlsson// CHECK: define void @_Z1fSaIcESaIiE
16fcd0029a4ccd1380e0148b846de3bd85d2fa8ab4Anders Carlssonvoid f(std::allocator<char>, std::allocator<int>) { }
17189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlsson
18189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlssonnamespace std {
198f8fd8ea7e5c5d04f95a3cf4af95aa93225bc2b4Anders Carlsson  template<typename, typename, typename> struct basic_string { };
20189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlsson}
21189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlsson
22f514b544b24926834adbfe8265a72ed8b9b09d81Anders Carlsson// CHECK: define void @_Z1fSbIcciE
23fcd0029a4ccd1380e0148b846de3bd85d2fa8ab4Anders Carlssonvoid f(std::basic_string<char, char, int>) { }
24f514b544b24926834adbfe8265a72ed8b9b09d81Anders Carlsson
25f514b544b24926834adbfe8265a72ed8b9b09d81Anders Carlssonnamespace std {
268f8fd8ea7e5c5d04f95a3cf4af95aa93225bc2b4Anders Carlsson  template<typename> struct char_traits { };
27f514b544b24926834adbfe8265a72ed8b9b09d81Anders Carlsson
28f514b544b24926834adbfe8265a72ed8b9b09d81Anders Carlsson  typedef std::basic_string<char, std::char_traits<char>, std::allocator<char> > string;
29f514b544b24926834adbfe8265a72ed8b9b09d81Anders Carlsson}
30f514b544b24926834adbfe8265a72ed8b9b09d81Anders Carlsson
31f514b544b24926834adbfe8265a72ed8b9b09d81Anders Carlsson// CHECK: _Z1fSs
32f514b544b24926834adbfe8265a72ed8b9b09d81Anders Carlssonvoid f(std::string) { }
338f8fd8ea7e5c5d04f95a3cf4af95aa93225bc2b4Anders Carlsson
348f8fd8ea7e5c5d04f95a3cf4af95aa93225bc2b4Anders Carlssonnamespace std {
3591f8860de5f4280607e74c9d653751cd3f891ca7Anders Carlsson  template<typename, typename> struct basic_istream { };
368f8fd8ea7e5c5d04f95a3cf4af95aa93225bc2b4Anders Carlsson  template<typename, typename> struct basic_ostream { };
3791f8860de5f4280607e74c9d653751cd3f891ca7Anders Carlsson  template<typename, typename> struct basic_iostream { };
388f8fd8ea7e5c5d04f95a3cf4af95aa93225bc2b4Anders Carlsson}
398f8fd8ea7e5c5d04f95a3cf4af95aa93225bc2b4Anders Carlsson
4091f8860de5f4280607e74c9d653751cd3f891ca7Anders Carlsson// CHECK: _Z1fSi
4191f8860de5f4280607e74c9d653751cd3f891ca7Anders Carlssonvoid f(std::basic_istream<char, std::char_traits<char> >) { }
4291f8860de5f4280607e74c9d653751cd3f891ca7Anders Carlsson
438f8fd8ea7e5c5d04f95a3cf4af95aa93225bc2b4Anders Carlsson// CHECK: _Z1fSo
448f8fd8ea7e5c5d04f95a3cf4af95aa93225bc2b4Anders Carlssonvoid f(std::basic_ostream<char, std::char_traits<char> >) { }
4547846d2b4c19972e57563bb05a777748939bfb47Anders Carlsson
4691f8860de5f4280607e74c9d653751cd3f891ca7Anders Carlsson// CHECK: _Z1fSd
4791f8860de5f4280607e74c9d653751cd3f891ca7Anders Carlssonvoid f(std::basic_iostream<char, std::char_traits<char> >) { }
4891f8860de5f4280607e74c9d653751cd3f891ca7Anders Carlsson
4947846d2b4c19972e57563bb05a777748939bfb47Anders Carlssonextern "C++" {
5047846d2b4c19972e57563bb05a777748939bfb47Anders Carlssonnamespace std
5147846d2b4c19972e57563bb05a777748939bfb47Anders Carlsson{
5247846d2b4c19972e57563bb05a777748939bfb47Anders Carlsson  typedef void (*terminate_handler) ();
5347846d2b4c19972e57563bb05a777748939bfb47Anders Carlsson
5447846d2b4c19972e57563bb05a777748939bfb47Anders Carlsson  // CHECK: _ZSt13set_terminatePFvvE
5547846d2b4c19972e57563bb05a777748939bfb47Anders Carlsson  terminate_handler set_terminate(terminate_handler) { return 0; }
5647846d2b4c19972e57563bb05a777748939bfb47Anders Carlsson}
5747846d2b4c19972e57563bb05a777748939bfb47Anders Carlsson}
58