virtual-destructor-calls.cpp revision 3b47733ceac33306bd54ce9d6c7d8eeeae52c7ca
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 an alias because there are no virtual bases.
12// CHECK: @_ZN1BD1Ev = alias {{.*}} @_ZN1BD2Ev
13
14// Deleting dtor: defers to the complete dtor.
15// CHECK: define void @_ZN1BD0Ev
16// CHECK: call void @_ZN1BD1Ev
17// CHECK: call void @_ZdlPv
18
19// Base dtor: actually calls A's base dtor.
20// CHECK: define void @_ZN1BD2Ev
21// CHECK: call void @_ZN1AD2Ev
22
23B::~B() { }
24