mangle-subst-std.cpp revision 8f8fd8ea7e5c5d04f95a3cf4af95aa93225bc2b4
1// RUN: clang-cc -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s
2
3namespace std {
4  struct A { A(); };
5
6  // CHECK: define void @_ZNSt1AC1Ev
7  // CHECK: define void @_ZNSt1AC2Ev
8  A::A() { }
9};
10
11namespace std {
12  template<typename> struct allocator { };
13}
14
15// CHECK: define void @_Z1fSaIcESaIiE
16void f(std::allocator<char>, std::allocator<int>) { }
17
18namespace std {
19  template<typename, typename, typename> struct basic_string { };
20}
21
22// CHECK: define void @_Z1fSbIcciE
23void f(std::basic_string<char, char, int>) { }
24
25namespace std {
26  template<typename> struct char_traits { };
27
28  typedef std::basic_string<char, std::char_traits<char>, std::allocator<char> > string;
29}
30
31// CHECK: _Z1fSs
32void f(std::string) { }
33
34namespace std {
35  template<typename, typename> struct basic_ostream { };
36}
37
38// CHECK: _Z1fSo
39void f(std::basic_ostream<char, std::char_traits<char> >) { }
40