dtors-in-dtor-cfg-output.cpp revision 7c625d8ffc20b92fff9e1690cd2484fcb6498183
1// RUN: %clang_cc1 -analyze -cfg-dump -cfg-add-implicit-dtors %s 2>&1 | FileCheck %s 2// XPASS: * 3 4class A { 5public: 6 ~A() {} 7}; 8 9class B : public virtual A { 10public: 11 ~B() {} 12}; 13 14class C : public virtual A { 15public: 16 ~C() {} 17}; 18 19class TestOrder : public C, public B, public virtual A { 20 A a; 21 int i; 22 A *p; 23public: 24 ~TestOrder(); 25}; 26 27TestOrder::~TestOrder() {} 28 29// CHECK: [ B2 (ENTRY) ] 30// CHECK: Predecessors (0): 31// CHECK: Successors (1): B1 32// CHECK: [ B1 ] 33// CHECK: 1: this->a.~A() (Member object destructor) 34// CHECK: 2: ~B() (Base object destructor) 35// CHECK: 3: ~C() (Base object destructor) 36// CHECK: 4: ~A() (Base object destructor) 37// CHECK: Predecessors (1): B2 38// CHECK: Successors (1): B0 39// CHECK: [ B0 (EXIT) ] 40// CHECK: Predecessors (1): B1 41// CHECK: Successors (0): 42