dtors-in-dtor-cfg-output.cpp revision 682060c5d95f6e4f79536013781ab0870cdd3850
1// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCFG -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 29class TestArray { 30 A a[2]; 31 A b[0]; 32public: 33 ~TestArray(); 34}; 35 36TestArray::~TestArray() {} 37 38// CHECK: [B2 (ENTRY)] 39// CHECK: Succs (1): B1 40// CHECK: [B1] 41// CHECK: 1: this->a.~A() (Member object destructor) 42// CHECK: 2: ~B() (Base object destructor) 43// CHECK: 3: ~C() (Base object destructor) 44// CHECK: 4: ~A() (Base object destructor) 45// CHECK: Preds (1): B2 46// CHECK: Succs (1): B0 47// CHECK: [B0 (EXIT)] 48// CHECK: Preds (1): B1 49// CHECK: [B2 (ENTRY)] 50// CHECK: Succs (1): B1 51// CHECK: [B1] 52// CHECK: 1: this->a.~A() (Member object destructor) 53// CHECK: Preds (1): B2 54// CHECK: Succs (1): B0 55// CHECK: [B0 (EXIT)] 56// CHECK: Preds (1): B1 57