1 | // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s |
2 | |
3 | struct Foo { |
4 | Foo(); |
5 | Foo(const Foo&); |
6 | }; |
7 | |
8 | struct Bar { |
9 | Bar(); |
10 | operator const Foo&() const; |
11 | }; |
12 | |
13 | void f(Foo); |
14 | |
15 | // CHECK-LABEL: define void @_Z1g3Foo(%struct.Foo* %foo) |
16 | void g(Foo foo) { |
17 | // CHECK: call void @_ZN3BarC1Ev |
18 | // CHECK: @_ZNK3BarcvRK3FooEv |
19 | // CHECK: call void @_Z1f3Foo |
20 | f(Bar()); |
21 | // CHECK: call void @_ZN3FooC1Ev |
22 | // CHECK: call void @_Z1f3Foo |
23 | f(Foo()); |
24 | // CHECK: call void @_ZN3FooC1ERKS_ |
25 | // CHECK: call void @_Z1f3Foo |
26 | f(foo); |
27 | // CHECK: ret |
28 | } |
29 | |
30 | |