mangle-subst.cpp revision d99edc44300b36732a14c294c93899ba28d479ea
17ed5ea9146cc0c61ab8ce94feff1153c2e8cd6dbAnders Carlsson// RUN: clang-cc -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s
27696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlsson
37696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlssonstruct X {};
47696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlsson
56862fc720b8e35ee4408822b2390020f263646b2Anders Carlsson// CHECK: define void @_Z1f1XS_(
67696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlssonvoid f(X, X) { }
77696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlsson
86862fc720b8e35ee4408822b2390020f263646b2Anders Carlsson// CHECK: define void @_Z1fR1XS0_(
97696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlssonvoid f(X&, X&) { }
107696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlsson
116862fc720b8e35ee4408822b2390020f263646b2Anders Carlsson// CHECK: define void @_Z1fRK1XS1_(
127696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlssonvoid f(const X&, const X&) { }
137696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlsson
147696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlssontypedef void T();
157696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlssonstruct S {};
167696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlsson
176862fc720b8e35ee4408822b2390020f263646b2Anders Carlsson// CHECK: define void @_Z1fPFvvEM1SFvvE(
187696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlssonvoid f(T*, T (S::*)) {}
197696737d41321cf20aef1aab1454872f2ff7a1c8Anders Carlsson
206862fc720b8e35ee4408822b2390020f263646b2Anders Carlssonnamespace A {
216862fc720b8e35ee4408822b2390020f263646b2Anders Carlsson  struct A { };
226862fc720b8e35ee4408822b2390020f263646b2Anders Carlsson  struct B { };
236862fc720b8e35ee4408822b2390020f263646b2Anders Carlsson};
246862fc720b8e35ee4408822b2390020f263646b2Anders Carlsson
256862fc720b8e35ee4408822b2390020f263646b2Anders Carlsson// CHECK: define void @_Z1fN1A1AENS_1BE(
266862fc720b8e35ee4408822b2390020f263646b2Anders Carlssonvoid f(A::A a, A::B b) { }
27d99edc44300b36732a14c294c93899ba28d479eaAnders Carlsson
28d99edc44300b36732a14c294c93899ba28d479eaAnders Carlssonstruct C {
29d99edc44300b36732a14c294c93899ba28d479eaAnders Carlsson  struct D { };
30d99edc44300b36732a14c294c93899ba28d479eaAnders Carlsson};
31d99edc44300b36732a14c294c93899ba28d479eaAnders Carlsson
32d99edc44300b36732a14c294c93899ba28d479eaAnders Carlsson// CHECK: define void @_Z1fN1C1DERS_PS_S1_(
33d99edc44300b36732a14c294c93899ba28d479eaAnders Carlssonvoid f(C::D, C&, C*, C&) { }
34