Home | History | Annotate | Download | only in CodeGenCXX
      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