mangle-subst-std.cpp revision 91f8860de5f4280607e74c9d653751cd3f891ca7
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_istream { };
36  template<typename, typename> struct basic_ostream { };
37  template<typename, typename> struct basic_iostream { };
38}
39
40// CHECK: _Z1fSi
41void f(std::basic_istream<char, std::char_traits<char> >) { }
42
43// CHECK: _Z1fSo
44void f(std::basic_ostream<char, std::char_traits<char> >) { }
45
46// CHECK: _Z1fSd
47void f(std::basic_iostream<char, std::char_traits<char> >) { }
48
49extern "C++" {
50namespace std
51{
52  typedef void (*terminate_handler) ();
53
54  // CHECK: _ZSt13set_terminatePFvvE
55  terminate_handler set_terminate(terminate_handler) { return 0; }
56}
57}
58