1 // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s 2 3 struct A { 4 virtual void f(); 5 virtual void f_const() const; 6 7 A h(); 8 }; 9 10 A g(); 11 12 void f(A a, A *ap, A& ar) { 13 // This should not be a virtual function call. 14 15 // CHECK: call void @_ZN1A1fEv(%struct.A* %a) 16 a.f(); 17 18 // CHECK: call void % 19 ap->f(); 20 21 // CHECK: call void % 22 ar.f(); 23 24 // CHECK: call void @_ZN1A1fEv 25 A().f(); 26 27 // CHECK: call void @_ZN1A1fEv 28 g().f(); 29 30 // CHECK: call void @_ZN1A1fEv 31 a.h().f(); 32 33 // CHECK: call void @_ZNK1A7f_constEv 34 a.f_const(); 35 36 // CHECK: call void @_ZN1A1fEv 37 (a).f(); 38 } 39 40 struct B { 41 virtual void f(); 42 ~B(); 43 44 B h(); 45 }; 46 47 48 void f() { 49 // CHECK: call void @_ZN1B1fEv 50 B().f(); 51 52 // CHECK: call void @_ZN1B1fEv 53 B().h().f(); 54 } 55 56