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