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