virtual-destructor-calls.cpp revision 8e51a1f5da6ef4a1a168d14116c6eed3a578a263
1// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin10 | FileCheck %s
2
3struct A {
4  virtual ~A();
5};
6
7struct B : A {
8  virtual ~B();
9};
10
11// Complete dtor: just defers to base dtor because there are no vbases.
12// CHECK: define void @_ZN1BD1Ev
13// CHECK: call void @_ZN1BD2Ev
14
15// Deleting dtor: defers to the complete dtor.
16// CHECK: define void @_ZN1BD0Ev
17// CHECK: call void @_ZN1BD1Ev
18// CHECK: call void @_ZdlPv
19
20// Base dtor: actually calls A's base dtor.
21// CHECK: define void @_ZN1BD2Ev
22// CHECK: call void @_ZN1AD2Ev
23
24B::~B() { }
25