mangle-subst-std.cpp revision 189d59cfc762d0f683b9253ddec2cf519ec85b65
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 {
12189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlsson  template<typename T> struct allocator { };
138c0315563f05a9face7209221325019e272075fbAnders Carlsson}
148c0315563f05a9face7209221325019e272075fbAnders Carlsson
158c0315563f05a9face7209221325019e272075fbAnders Carlsson// FIXME: typename is really not allowed here, but it's kept
168c0315563f05a9face7209221325019e272075fbAnders Carlsson// as a workaround for PR5061.
178c0315563f05a9face7209221325019e272075fbAnders Carlsson// CHECK: define void @_Z1fSaIcESaIiE
188c0315563f05a9face7209221325019e272075fbAnders Carlssonvoid f(typename std::allocator<char>, typename std::allocator<int>) { }
19189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlsson
20189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlssonnamespace std {
21189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlsson  template<typename T> struct basic_string { };
22189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlsson}
23189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlsson
24189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlsson// FIXME: typename is really not allowed here, but it's kept
25189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlsson// as a workaround for PR5061.
26189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlsson// CHECK: define void @_Z1fSbIcESbIiE
27189d59cfc762d0f683b9253ddec2cf519ec85b65Anders Carlssonvoid f(typename std::basic_string<char>, typename std::basic_string<int>) { }
28