Home | History | Annotate | Download | only in CodeGenCXX
      1 // RUN: %clang_cc1 %s -triple %itanium_abi_triple -std=c++11 -emit-llvm -o - | FileCheck %s
      2 
      3 // PR5021
      4 namespace PR5021 {
      5 
      6 struct A {
      7   virtual void f(char);
      8 };
      9 
     10 void f(A *a) {
     11   // CHECK: call {{.*}}void %
     12   a->f('c');
     13 }
     14 
     15 struct B : virtual A {
     16   virtual void f();
     17 };
     18 
     19 void f(B * b) {
     20   b->f();
     21 }
     22 
     23 }
     24 
     25 namespace Test1 {
     26   struct A {
     27     virtual ~A();
     28   };
     29 
     30   struct B : A {
     31     virtual ~B();
     32     virtual void f();
     33   };
     34 
     35   void f(B *b) {
     36     b->f();
     37   }
     38 }
     39 
     40 namespace VirtualNoreturn {
     41   struct A {
     42     [[noreturn]] virtual void f();
     43   };
     44 
     45   // CHECK: @_ZN15VirtualNoreturn1f
     46   void f(A *p) {
     47     p->f();
     48     // CHECK: call {{.*}}void %{{[^#]*$}}
     49     // CHECK-NOT: unreachable
     50   }
     51 }
     52