1// RUN: %clang_cc1 %s -std=c++11 -emit-llvm -o - | FileCheck %s 2 3// PR5021 4namespace PR5021 { 5 6struct A { 7 virtual void f(char); 8}; 9 10void f(A *a) { 11 // CHECK: call void % 12 a->f('c'); 13} 14 15struct B : virtual A { 16 virtual void f(); 17}; 18 19void f(B * b) { 20 b->f(); 21} 22 23} 24 25namespace 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 40namespace 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